STARK: Detect TLJ Steam version to fix missing bg resource
An alternative fix for bug https://bugs.scummvm.org/ticket/12762 that replaces the previous fix.
This fix will set a flag at detection time (when adding the game to ScummVM)
so that the Steam version will skip trying to load a background image resource
from the exe file (game.exe), since that specific version is missing a valid version
of this resource which leads to an assertion fault.
It wont be necessary to re-add (redetect) the game, if it has already been added before this fix. The current AdvancedDetector implementation takes care of setting the flag at game launch. (As explained by sev) we run detection on every run and returning the relevant detection entry.
The previous fix was this commit which was based only on version info of the exe file:
565a0559ed
That one also works without having to re-add/re-detect the game, but perhaps just checking
version info is not the best approach.
In AGS, setting the channel for music, sfx, or voice
frequently happens after the call to play has already been done.
This poses a problem for ScummVM, since I need the sound type
directly for the playStream call. And it's not feasible to
refactor everywhere that plays a clip to set the channel first.
With this change, any play call sets a flag, and defers calling
playStream until the channel is set. Hopefully there aren't
any places that call play without setting the channel before/after.
Just something I came across in the disasm while doing something else. I also ran the original CJK interpreter in VirtualBox to confirm this weirdness...
Previously, we could right click (which reads the object description), then
left click, and the second click was treated as a double click if the object
happened to be an exit node at the same time. That led to a softlock of the
engine.
This fixes two bugs in one go:
- setting a cursor to 0 wasn't possible when a cast+mask cursor was used
- querying a sprite for cast+mask cursor returned 0 instead of the cast
ids.
Cursors can be set in two ways:
1) set cursor of sprite X to INT
2) set cursor of sprite X to [INT, INT]
A `cursor of sprite X` should return the same values that as were used
when setting the cursor.