Otherwise, the cursor scaler and standard scaler may be different types,
which can lead to scaling the cursor with a scaler that normally doesn't
allow it. In this particular bug report, it caused ScummVM to crash.
This was previously removed in commit 5cb87c1eca
We removed it when nearing the (then) upcoming 2.7.1 release, Play Store blocked the apk publishing because of this category's inclusion.
At the time, Play Store's error message was:
The app is published as an apk that supports TV. In other words, it contains <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>
under one of the intent-filter of the main activity . It must be published as an app bundle instead.
Which was due to "Following June 30, 2023, Google Play will no longer support TV app updates in APK. All TV app updates must be published with Android App Bundles (AAB)."
Since 2.8.0 we publish to the Play Store in app bundle format, so it should be ok to restore the category. However, this does not necessarily mean
that the app will work on Android / Google TVs without issues. More testing and user feedback might be required.
_offsettedSurf must have the original screen dimensions, similar as done in
AtariGraphicsManager::Screen::reset().
Strangely, this bug was reproducible only in MagiC and not in FreeMiNT+MP.
This commit removes all instances of casts between
negative floats to unsigned int, which is UB. This fixes
the incorrect drawing of floors and ceilings on ARM
machines, as well as the occasional crashes it caused.
Changed the way keymaps are disabled/enabled to reduce
calls to the InputManager, and make sure secondary
keymaps are only enabled when needed, and kept disabled
the rest of the time.
This may have been a mistake; freezing isn't necessarily bad, it just
needs to pick up running the same script after loading the new frame.
Will have another go after writing a D4 test with all the known edge
cases. Makes The Dark Eye work again.
Reverts commit 331df0a138.
When `Score::loadFrame(frameNum)` is called with frameNum <=
_curFrameNumber it will start by resetting frame state, then loading
previous n-l frames and then updating `_curFrameNumber to` `frameNum`.
This is by design, to allow abribtrary script-based frame jumping and debug console commands.
Previous to this change `Score::update()` incrementing `_curFrameNumber` directly before
calling `Score::loadFrame(_curFrameNumber)`. In effect, this meant that
every time the playhead moved forward one frame, all previous frames
would first be loaded from the stream first. Any state built
up by previous scripting is lost and perhaps impacts performance at
suitably high frame counts and debug levels.
In this change, `Score::update()` instead makes changes to a local
variable and passes the result to `Score::loadFrame()`.
- GADGET: Invention Travel and Adventure (D3) has a race condition
where the intro movie won't transition to the title screen if the script
doesn't freeze on frame change.
- Cosmology of Kyoto (D4) has a race condition where the restore game
password screen won't allow a second attempt if the script freezes on
frame change.
From testing, it would seem that D4 doesn't do a script freeze on a "go
to frame" command. Both D3 and D4 do a script freeze if the target is a
different movie.