ScummVM 2.5.1 was 200ms per tick, I feel like 1000ms per tick is too slow but 200ms is too fast. This makes the biggest difference in T7G puzzles like the cake and knights.
Official releases differ and are not consistent. For example, Clandestiny on iOS uses a timer based on the OS suggested audio buffer size. Windows 95 T7G runs the timer incredibly fast, all of the queens dialog will play before you can even click anything.
Setting it to all 0s meant that the min function gave the wrong results. Needed to top and left to be large numbers so that the min function has the correct affect on them. 9999 is a better choice here than 640 and 480, because before it looked like a full screen rectangle until you realized it was inverted.
This fixes the graphical bug where when Samantha made a mode, especially in the cake puzzle, the background layer was empty. This is because switchToFullScreen was being called AFTER restoreScreen
Patch to play the Mr Death song when the skulls ask you to adjust your brightness. Normally this would play in the launcher for the game but that isn't written in Groovie script.
The 11th Hour has bugged scripts that sometimes don't set the variables for the GameBook thumbnails correctly, which causes even the original Win95 exe to crash. This happens occasionallyafter watching an end of chapter cutscene. Changing this to a warning means you don't crash, and the missing thumbnail is a minor compromise.
Some scripts, such as the boat puzzle in Clandestiny, were clearing variables right before the o_inputloopend instruction, which was causing a crash because we were deferring our input actions until then. This change means hotspots execute their actions immediately instead of deferring, this is how the old Win95 exe does it.
This commit fixes problems with commit acad766 which disabled the open house
savegame in The 7th Guest and The 11th Hour. These games use slot 0 to write a
special savegame when the game has been completed. This conflicts with ScummVM
autosave functionality, which also uses slot 0 by default. To fix this, the
autosave slot has been moved to slot 24, the last available save slot. The
workaround from commit acad766 for saving in slot 0 has been removed.
The intro music is now fixed by checking for a load of slot 0 and not stopping
the music in this case.
When The 11th Hour shows the load/restart dialog during the intro, it calls
loadgame with slot 0. It is not clear to me what this means, but it should not
load a savegame, because only slots 1-9 can be used with the original UI. In
ScummVM, this would load the autosave, which probably causes problems, though
the only thing I noticed is it stops the music, which does not happen in the
original interpreter.
This commit adds an exception for The 11th Hour to not load a savegame when
loadgame is called with slot 0. To still support loading the autosave form the
ScummVM UI, the slot is set to 0xFF in this case, which is interpreted by
loadgame to mean actually loading slot 0.
The 7th Guest uses the orchestra drumkit by setting it during initialization,
but not at the start of each track. Some tracks temporarily change the drumkit;
if these tracks are stopped at a bad moment, this changed drumkit remains in
effect. This commit sets the drumkit default to the orchestra drumkit to make
sure it is applied at the start of each track.
Some of the MIDI tracks of The 11th Hour use the modulation controller, but not
all tracks reset this controller at the start. This commit sets the modulation
default to 0 to make sure it is reset at the start of each track.
This prevents the 11th Hour MIDI control function from setting the user volume.
This volume setting is set by the user in the game config and the game should
not override this. For the playSong operation the volume setting is removed,
because playSong already sets the game volume. For case 3 the commented volume
setting has been replaced by an equivalent game volume call.
I've been unable to trigger either operation by playing through the first part
of the game, so these operations might not be used at all.
When playing a new song, ScummVM would update the volume to the standard value
before stopping playback of the current song. This would cause a volume change
right before stopping a song. This commit stops the current song before setting
the volume, which removes the unnecessary volume change.