The windows specific test to open the FileIO XObject
doesn't test what it should test.
Since all lingo tests are ran as Mac D4.0.0 all the specific windows
checks aren't executed.
This fixes Fukuoka-Go-Round, which ends up passing the main EXE as a movie
to (re)open at runtime instead of a movie. Without this, clicking back to
the main menu crashes the disc.
Guard agains bug where the path is stripped incorrectly for:
`openXLib("C:\fileio.dll")`
The `.dll` part isn't stripped correctly when trying to open the files.
Previously, this would return the palette for the current frame (if it
was specified). Real Director behaviour is to return the current
palette in use, i.e. taking into account changes made in previous
frames.
When reading the palette ID from a BitmapCastMember, 0 or below
signifies a builtin palette and should be offset by -1. 1 or above
signifies a palette Cast ID.
Also make sure to compare like for like: a cast member ID needs to be
sent through resolvePaletteId to get the index in the actual palette
store.
Fixes palette swapping in the Lost Mind of Dr. Brain demo.
The resource fork in the Director 4 projector has a 16-color palette
right next to the 256-color System - Mac one, and the colors seem to
match the default System 4 palette. Nevertheless, this palette appears
to be reasonably different (both in colors and ordering) from the one
actually used. Included is a palette determined empirically from
DOSBox screenshots.
All of the builtin palette lookup tables have been reversed, to match
the original layout of the tables in the Director 4 projector executable.
This corresponds with the colour indexing used in Lingo.
Likewise, the code to load palettes from the cast no longer reads the
colours in reverse order, and shiftPalette no longer expects
the start index to be after the end index.
DirectorEngine::transformColor still exists to upgrade to 32-bit colour,
but no longer reverses the palette index.
The missing builtin 16-color palettes from Director 4 have been added.
This appears to be another space reclamation feature in Director;
there are examples of the property list being a -1 followed by
bytecode garbage from the previous field.
Previously, there was a workaround which would set score->_nextFrame to
the current frame. This meant that setting the stageColor in an
exitFrame handler would loop that single frame and softlock the movie.
The new approach re-renders the sprites and window inline, as we do
in several other spots.
Fixes frame progressions in Yaken Rodem.
Rodem tracks mouse movement outside the game window. It's not possible to
trigger Rodem's movement to the next screen to the left or right just by
moving the mouse cursor to the edge of the screen; it has to be tracked
outside the screen altogether.
This can be fixed by enabling ScummVM's desktop emulation. I've confirmed
this makes both the Mac and Windows versions playable. Since an existing
quirk already implemented this behaviour, I've renamed the existing
function and given it a more generic name.