It is a regression from the recent Unicode font caching.
Do not store fonts that were not loaded (nullptr). Otherwise,
nullptr will be returned on a subsequent call.
Alerts and Message are shown on the screen by ScummVM using GUI dialog
boxes. They may have clickable buttons on them.
In Director, it may happen that the event of clicking or pressing the
button on the GUI dialog box (mouseUp, keyUp) get recorded as a movie
event, which may cause unpredictable change in the lingo script.
Prevent this by disabling all event processing in the Director movie
using a flag _inGuiMessageBox, which is set by the function that calls
the alert or dialog box and cleared once the dialog box dissappears
In this case that is the `b_alert()` function
Please refer to the pull request
https://github.com/scummvm/scummvm/pull/6548
Set the corner origin point in the QTVR decoder from
QTVR Xtra in order to make sure during the swing transition
the QTVR video decoder sets the image at the correct position
Previous approach used two Surface Objects to store the 1D and 2D
upscaled panorama used while projecting the panorama in higher
quailty respectively causing higher memory usage
Instead use only one Surface object to store the upscaled panorama
which stores both 1D and 2D upscaled panorama as and if needed.
Minor fixes and formatting
Add the swing Transition functionality using the transitionMode
variable as described in the original QTVR Xtra documentation
provided by Apple.
In the swing transition mode, make the video decoder internally
handle the animation of "swinging" panorama video from the
current position (described by _fov, _tiltAngle, _panAngle)
to the new position while taking the shortest path
There is a minor bug in QTVR decoder when zooming out when
Tilt Angle != 0, in warp mode 2, it causes distorion of the
panorama, in warp mode 1 and 0, it causes panorama image to
go out of bounds and the upper/lower (depending on whether
tilt angle is positive or negative) part of the image is
invalid
Check for out of bound values of tilt angle and pan angle
when setFOV() function is called during zooming in or out
which fixes the bug
Add the quality mode stubbed functionality using the
as described in the original QTVR Xtra documentation
provided by Apple.
Add two new functions:
upscalePanorama(): Upscales the original panorama movie
to 2x width or 2x width and 2x height, these upscaled
panorama are named (_1D/_2D)UpscaledConstructedPano and
used for projecting in quality mode 2.0f and 4.0f
boxAverage(): The panorama is rendered with 2x or 3x the
target size and then averaged to target size by averaging
in 2x2 or 3x3 box to apply anti-aliasing
Set three quality modes in the QTVR decoder
- Mode 1.0f: No quality upscaling, already present,
low quality
- Mode 2.0f: 1 dimensional upscaling and 2 times scaled
rendering followed by 2x2 box average, medium quality
- Mode 4.0f: 2 dimensinoal upscaling and 3 times scaled
rendering followed by 3x3 box average, high quality
- Mode 0: Dynamic quality mode, change between low
quality and high quality based on whether the user is
actively interacting with the panorama
Add the warping functionality using the warpMode variable
as described in the original QTVR Xtra documentation
provided by Apple.
Set three modes of warping in the qtvr decoder
- Mode 2: Already there, applies both planar projection as
well as perspective correction for perspectively correct
image
- Mode 1: Only apply planar projection, image becomes more
distorted as we move up or down from the midpoint
- Mode 0: No projection, blit the image as it is, exact
copy of the original QTVR movie
This reverts commit 0f85939bc5.
Embarrassingly, my benchmark code was broken. move16 very much does
help, both in VRAM<->TT RAM and TT RAM<->TT RAM copying.
If the engines directory contains plugins_table.h or detection_table.h
from an in-source build, when building out-of-source, these files from
the source directory were prioritized over build directory versions.
This caused issues when different plugins were enabled across builds.
The revised include order now matches the implementation in Makefile.
Regarding the `configure` script, we now have:
* default: add `-Werror=flag-name` for selected warnings where it's
important to fail early (just `-Werror=return-type` for now)
* --enable-Werror: use `-Werror` for all warnings
* --disable-Werror: don't any `-Werror` flag
For Xcode, `-Werror=return-type` is added to default flags.
For MSVC, equivalent flags have been added to the existing
`globalErrors` list.
Suggested by sluicebox.
Fixes triggering a startSound() assert in player_ad.cpp.
When fixing a regression with the macOS Steam releases, it was decided
to also reset the game MIDI options in ScummEngine::init(), but the
chosen values are incorrect for loom-steam-win.
Just rely on the ScummMetaEngine::createInstance() fix, instead, that
should be enough.
Bug introduced in commit 2193b80119.
This fixes the bug where pausing the game in the midst of actor's speech
causes that actor stay in one state forever (even after resuming the
game), repeating the same animation that was playing before the pause.
This happened because "paused" flag was never removed after resuming the
sound, so the sound and animation that were synced to that sound could not finish.