aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/imuse/imuse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/imuse/imuse.cpp')
-rw-r--r--engines/scumm/imuse/imuse.cpp17
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);