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