diff options
author | Ben Castricum | 2017-06-16 08:16:30 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2017-07-30 22:10:54 +0200 |
commit | d58f594755449f6a0402fdf5dba61cfa5edcf58e (patch) | |
tree | 9cee72ab256942408a48b374fd9da61492fc8572 | |
parent | 392d8b44ff99d08eabe6007b259d26545f085583 (diff) | |
download | scummvm-rg350-d58f594755449f6a0402fdf5dba61cfa5edcf58e.tar.gz scummvm-rg350-d58f594755449f6a0402fdf5dba61cfa5edcf58e.tar.bz2 scummvm-rg350-d58f594755449f6a0402fdf5dba61cfa5edcf58e.zip |
SCUMM: MI2 kill tune 113 on start of next, Fixes bug #1410 / Booty Island
Fix the "MI2: Two soundtracks playing at once" bug from the bug tracker.
It's triggered when the player enters the kiosk for the second time and
leaves before tune 113 is started.
-rw-r--r-- | engines/scumm/imuse/imuse.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 78fd821f30..b7b72ba181 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -696,6 +696,23 @@ bool IMuseInternal::startSound_internal(int sound, int offset) { if (_game_id == GID_MONKEY2 && (sound == 100) && (getSoundStatus_internal(107, true) == 1)) IMuseInternal::stopSound_internal(107); + // Workaround for monkey2 bug #1410 / Booty Island + // + // Tunes involved + // 100 - Captain Dread's map + // 113 - Guard Kiosk / Mardi Grass + // 115 - Map of Booty Island / Ville de la Booty + // 118 - Ville de la Booty + // + // When you enter the Guard Kiosk tune 113 is added as trigger on song + // 115. Then if you leave, 113 is stopped and 115 is started again. + // If you leave quickly enough, the trigger occurs on the map and tune + // 113 will not stop. + // We kill 113 on entry of one of the other locations (Captain Dread + // or Ville de la Booty) because tune 115 is not always started. + if (_game_id == GID_MONKEY2 && (sound == 100 || sound == 115 || sound == 118) && (getSoundStatus_internal(113, true) == 1)) + IMuseInternal::stopSound_internal(113); + player->clear(); player->setOffsetNote(offset); return player->startSound(sound, driver); |