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 commit adds a feature to the multisource MIDI drivers which allows setting
a default value for most controllers. This default is then applied at the start
of every new track, which ensures controllers are in the correct state.
This can be used for games which use some controller, but do not reset it at
the start of each track, which can lead to incorrect playback.
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.