aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/sword1/control.cpp5
-rw-r--r--engines/sword1/sound.cpp10
2 files changed, 14 insertions, 1 deletions
diff --git a/engines/sword1/control.cpp b/engines/sword1/control.cpp
index 09d2197f2a..e5f3b9a04c 100644
--- a/engines/sword1/control.cpp
+++ b/engines/sword1/control.cpp
@@ -416,7 +416,10 @@ uint8 Control::runPanel(void) {
_system->copyRectToScreen(_screenBuf, 640, 0, 0, 640, 480);
free(_screenBuf);
_mouse->controlPanel(false);
- _music->startMusic(Logic::_scriptVars[CURRENT_MUSIC], 1);
+ if (retVal == CONTROL_NOTHING_DONE) {
+ _music->startMusic(Logic::_scriptVars[CURRENT_MUSIC], 1);
+ _sound->newScreen(Logic::_scriptVars[SCREEN]);
+ }
_panelShown = false;
return retVal;
}
diff --git a/engines/sword1/sound.cpp b/engines/sword1/sound.cpp
index 6ad946b28d..69db0ca40f 100644
--- a/engines/sword1/sound.cpp
+++ b/engines/sword1/sound.cpp
@@ -226,6 +226,16 @@ void Sound::newScreen(uint32 screen) {
closeCowSystem();
initCowSystem();
}
+
+ // Start the room's looping sounds.
+ for (uint16 cnt = 0; cnt < TOTAL_FX_PER_ROOM; cnt++) {
+ uint16 fxNo = _roomsFixedFx[screen][cnt];
+ if (fxNo) {
+ if (_fxList[fxNo].type == FX_LOOP)
+ addToQueue(fxNo);
+ } else
+ break;
+ }
}
void Sound::quitScreen(void) {