From 70ca4218dfdc1a21682b98fd1ef540f965785c0b Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Wed, 16 Mar 2016 15:24:59 +0100 Subject: [PATCH] SCUMM: Check whether sound effects are active in Player_AD::getSoundStatus. This fixes bug #7076 "LOOM: AdLib sound effect not stopped at Cygna's grave.". Original SCUMM (I checked Monkey Island EGA) implemented Sound::isSoundRunning by checking whether the sound resource of the requested sound id is locked. We use actual sound state inside the player. --- NEWS | 1 + engines/scumm/players/player_ad.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 556e4019c8e..7dca707c6e8 100644 --- a/NEWS +++ b/NEWS @@ -34,6 +34,7 @@ For a more comprehensive changelog of the latest experimental code, see: SCUMM: - Fixed detection of Maniac Mansion from Day of the Tentacle in the Windows version of ScummVM. + - Fixed a sound effect not stopping in Loom EGA with AdLib. Broken Sword 2.5: - Added option to use English speech instead of German one when no speech is diff --git a/engines/scumm/players/player_ad.cpp b/engines/scumm/players/player_ad.cpp index 4d4be2c3c2a..ec297aa40ee 100644 --- a/engines/scumm/players/player_ad.cpp +++ b/engines/scumm/players/player_ad.cpp @@ -178,7 +178,17 @@ int Player_AD::getMusicTimer() { } int Player_AD::getSoundStatus(int sound) const { - return (sound == _soundPlaying); + if (sound == _soundPlaying) { + return true; + } + + for (int i = 0; i < ARRAYSIZE(_sfx); ++i) { + if (_sfx[i].resource == sound) { + return true; + } + } + + return false; } void Player_AD::saveLoadWithSerializer(Serializer *ser) {