The framerate byte is now understood. A framerate byte of 0 means a
framerate of 3. Which is handled during framerate parsing.
The check for 0 is therefor redundant.
In Director 2 and 3 framerates are preset and referenced as: 0x0 to 0xF.
Some movies set a framerate of 0x10.
D2 and D3 interpret this as a framerate of 15.
Which was measured to be exactly the same as setting a framerate of 15.
In D4 it's shown as a framerate of 120.
Movies with a framerate of 0x10:
D2: DATA/WARLOCKSHIP/REUNION (spaceship warlock)
D4: ping.dir (chop suey)
The missing check can cause an issue in The Dig where the sound slots are being filled with the same sound file (background music) after causing a sequence of these two engine actions:
IMuseDigital::setDigMusicState(): Set music state: stateNoChange
IMuseDigital::setDigMusicState(): Set music state: <any valid state which corresponds to a loadable file>
As usual, thanks athrxx!
There is a special case for adjusting the padding in Widget::draw() that
is applied, among other things, to widgets whose name contains
"GameOptions". We want that special case to apply to the EGA Loom
options as well, so this is simply another renaming.
At some point, it would probably be a good idea for this special case to
go away.
Because if I constantly have to double-check which is which, even though
there are only three of them, I clearly made a mistake when I first
named them.
Don't try to update the _musicTimer in saveLoadWithSerializer(), because
we haven't yet loaded all of the savegame. Instead, do that in a new
restoreAfterLoad() method.
As an extra bonus, if an audio track was playing when the game was
saved, try to resume it from approximately that point.
Unfortunately, it turns out that _currentCDSound was not properly reset
when the song ended so loading a savegame made with an earlier version
of this feature may cause it to play music that it shouldn't. But that's
the kind of thing you should count on on the bleeding edge. Savegames
made after this change should be fine.
Now that we correctly pass direction key events to QFG4,
we need to patch the script bugs that they trigger.
These crashes also occur in the original game.
See: 1b4660a508