diff options
Diffstat (limited to 'scumm/imuse_digi/dimuse_sndmgr.cpp')
-rw-r--r-- | scumm/imuse_digi/dimuse_sndmgr.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/scumm/imuse_digi/dimuse_sndmgr.cpp b/scumm/imuse_digi/dimuse_sndmgr.cpp index 0491340407..010283c916 100644 --- a/scumm/imuse_digi/dimuse_sndmgr.cpp +++ b/scumm/imuse_digi/dimuse_sndmgr.cpp @@ -23,6 +23,7 @@ #include "common/util.h" #include "sound/voc.h" #include "scumm/scumm.h" +#include "scumm/imuse_digi/dimuse.h" #include "scumm/imuse_digi/dimuse_sndmgr.h" #include "scumm/imuse_digi/dimuse_bndmgr.h" @@ -221,8 +222,12 @@ bool ImuseDigiSndMgr::openMusicBundle(int slot) { } else { char musicfile[20]; sprintf(musicfile, "musdisk%d.bun", _vm->VAR(_vm->VAR_CURRENTDISK)); - if (_disk != _vm->VAR(_vm->VAR_CURRENTDISK)) + if (_disk != _vm->VAR(_vm->VAR_CURRENTDISK)) { + _vm->_imuseDigital->parseScriptCmds(0x1000, 0, 0, 0, 0, 0, 0, 0); + _vm->_imuseDigital->parseScriptCmds(0x2000, 0, 0, 0, 0, 0, 0, 0); + _vm->_imuseDigital->stopAllSounds(true); _sounds[slot].bundle->closeFile(); + } result = _sounds[slot].bundle->openFile(musicfile, _vm->getGameDataPath()); @@ -248,8 +253,12 @@ bool ImuseDigiSndMgr::openVoiceBundle(int slot) { } else { char voxfile[20]; sprintf(voxfile, "voxdisk%d.bun", _vm->VAR(_vm->VAR_CURRENTDISK)); - if (_disk != _vm->VAR(_vm->VAR_CURRENTDISK)) + if (_disk != _vm->VAR(_vm->VAR_CURRENTDISK)) { + _vm->_imuseDigital->parseScriptCmds(0x1000, 0, 0, 0, 0, 0, 0, 0); + _vm->_imuseDigital->parseScriptCmds(0x2000, 0, 0, 0, 0, 0, 0, 0); + _vm->_imuseDigital->stopAllSounds(true); _sounds[slot].bundle->closeFile(); + } result = _sounds[slot].bundle->openFile(voxfile, _vm->getGameDataPath()); |