diff options
author | Torbjörn Andersson | 2007-02-18 09:10:50 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2007-02-18 09:10:50 +0000 |
commit | 1a6361038e5e6b5f7bfdb102578fa38c3d2b3c9b (patch) | |
tree | 7ed01cd8e060912b5b05e629e186cda5bc457dae /engines | |
parent | 4e6e57eb535c1b10430994db95947af30a8f4a1c (diff) | |
download | scummvm-rg350-1a6361038e5e6b5f7bfdb102578fa38c3d2b3c9b.tar.gz scummvm-rg350-1a6361038e5e6b5f7bfdb102578fa38c3d2b3c9b.tar.bz2 scummvm-rg350-1a6361038e5e6b5f7bfdb102578fa38c3d2b3c9b.zip |
Committed my fix for bug #1662549 ("SCUMM: MIDI music is broken"). Apparently,
'len' is now one less than it used to in sysexHandler_Scumm(). Let's hope I
changed all the cases that needed changing, and nothing else...
svn-id: r25671
Diffstat (limited to 'engines')
-rw-r--r-- | engines/scumm/imuse/sysex_scumm.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index 7d1aca6d4e..e3298fc85f 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -106,11 +106,11 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { ++p; // Skip hardware type part = player->getPart(a); if (part) { - if (len == 63) { - player->decode_sysex_bytes(p, buf, len - 3); + if (len == 62) { + player->decode_sysex_bytes(p, buf, len - 2); part->set_instrument((byte *)buf); } else { - // SPK tracks have len == 49 here, and are not supported + // SPK tracks have len == 48 here, and are not supported part->programChange(254); // Must be invalid, but not 255 (which is reserved) } } @@ -119,14 +119,14 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { case 17: // Adlib instrument definition(Global) p += 2; // Skip hardware type and... whatever came right before it a = *p++; - player->decode_sysex_bytes(p, buf, len - 4); + player->decode_sysex_bytes(p, buf, len - 3); se->setGlobalAdlibInstrument(a, buf); break; case 33: // Parameter adjust a = *p++ & 0x0F; ++p; // Skip hardware type - player->decode_sysex_bytes(p, buf, len - 3); + player->decode_sysex_bytes(p, buf, len - 2); part = player->getPart(a); if (part) part->set_param(READ_BE_UINT16(buf), READ_BE_UINT16(buf + 2)); @@ -135,49 +135,49 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { case 48: // Hook - jump if (player->_scanning) break; - player->decode_sysex_bytes(p + 1, buf, len - 2); + player->decode_sysex_bytes(p + 1, buf, len - 1); player->maybe_jump(buf[0], READ_BE_UINT16(buf + 1), READ_BE_UINT16(buf + 3), READ_BE_UINT16(buf + 5)); break; case 49: // Hook - global transpose - player->decode_sysex_bytes(p + 1, buf, len - 2); + player->decode_sysex_bytes(p + 1, buf, len - 1); player->maybe_set_transpose(buf); break; case 50: // Hook - part on/off buf[0] = *p++ & 0x0F; - player->decode_sysex_bytes(p, buf + 1, len - 2); + player->decode_sysex_bytes(p, buf + 1, len - 1); player->maybe_part_onoff(buf); break; case 51: // Hook - set volume buf[0] = *p++ & 0x0F; - player->decode_sysex_bytes(p, buf + 1, len - 2); + player->decode_sysex_bytes(p, buf + 1, len - 1); player->maybe_set_volume(buf); break; case 52: // Hook - set program buf[0] = *p++ & 0x0F; - player->decode_sysex_bytes(p, buf + 1, len - 2); + player->decode_sysex_bytes(p, buf + 1, len - 1); player->maybe_set_program(buf); break; case 53: // Hook - set transpose buf[0] = *p++ & 0x0F; - player->decode_sysex_bytes(p, buf + 1, len - 2); + player->decode_sysex_bytes(p, buf + 1, len - 1); player->maybe_set_transpose_part(buf); break; case 64: // Marker p++; - len -= 2; + len--; while (len--) { se->handle_marker(player->_id, *p++); } break; case 80: // Loop - player->decode_sysex_bytes(p + 1, buf, len - 2); + player->decode_sysex_bytes(p + 1, buf, len - 1); player->setLoop (READ_BE_UINT16(buf), READ_BE_UINT16(buf + 2), READ_BE_UINT16(buf + 4), READ_BE_UINT16(buf + 6), |