aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamieson Christian2006-03-09 03:29:12 +0000
committerJamieson Christian2006-03-09 03:29:12 +0000
commiteffed85448baa683ed5dafe2cf2c5531c092a951 (patch)
treea0e520f08c097a58f85e27f1beb3f6aaa2011c97
parentea26ccea4a3afc9e18d11f6e6e52119ae43fb68e (diff)
downloadscummvm-rg350-effed85448baa683ed5dafe2cf2c5531c092a951.tar.gz
scummvm-rg350-effed85448baa683ed5dafe2cf2c5531c092a951.tar.bz2
scummvm-rg350-effed85448baa683ed5dafe2cf2c5531c092a951.zip
Implemented SysEx command 1 for non-S&M SCUMM games, per the latest comment on Bug 1088045.
svn-id: r21156
-rw-r--r--engines/scumm/imuse/imuse_player.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/engines/scumm/imuse/imuse_player.cpp b/engines/scumm/imuse/imuse_player.cpp
index f271fddb92..fddba2fcc9 100644
--- a/engines/scumm/imuse/imuse_player.cpp
+++ b/engines/scumm/imuse/imuse_player.cpp
@@ -456,10 +456,16 @@ void Player::sysEx(const byte *p, uint16 len) {
break;
case 1:
- // This SysEx is used in Sam & Max for maybe_jump.
- if (_scanning)
- break;
- maybe_jump(p[0], p[1] - 1, (READ_BE_UINT16(p + 2) - 1) * 4 + p[4], ((p[5] * TICKS_PER_BEAT) >> 2) + p[6]);
+ if (_se->_game_id != GID_SAMNMAX) {
+ // Shut down a part. [Bug 1088045, comments]
+ part = getPart (p[0]);
+ if (part != NULL) part->uninit();
+ } else {
+ // Sam & Max: maybe_jump.
+ if (_scanning)
+ break;
+ maybe_jump(p[0], p[1] - 1, (READ_BE_UINT16(p + 2) - 1) * 4 + p[4], ((p[5] * TICKS_PER_BEAT) >> 2) + p[6]);
+ }
break;
case 2: // Start of song. Ignore for now.