From 0ece527a694439666fa039dcc7995b97ce84ad65 Mon Sep 17 00:00:00 2001 From: Jamieson Christian Date: Fri, 16 May 2003 19:16:43 +0000 Subject: FINALLY got MI2 Woodtick music working! svn-id: r7577 --- scumm/imuse.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scumm/imuse.cpp b/scumm/imuse.cpp index c5bc46e91e..d5effa8f89 100644 --- a/scumm/imuse.cpp +++ b/scumm/imuse.cpp @@ -2042,6 +2042,8 @@ void Player::parse_sysex(byte *p, uint len) { // BYTE 05: Volume (upper 4 bits) [guessing] // BYTE 06: Volume (lower 4 bits) [guessing] // BYTE 09: BIT 04 (0x08): Percussion? (1 = yes) + // BYTE 15: Program (upper 4 bits) + // BYTE 16: Program (lower 4 bits) part = get_part (p[0] & 0x0F); if (part) { part->set_onoff (p[2] & 0x01); @@ -2053,6 +2055,12 @@ void Player::parse_sysex(byte *p, uint len) { _se->reallocateMidiChannels (_midi); } } else { + // Even in cases where a program does not seem to be specified, + // i.e. bytes 15 and 16 are 0, we send a program change because + // 0 is a valid program number. MI2 tests show that in such + // cases, a regular program change message always seems to follow + // anyway. + part->_instrument.program ((p[15] & 0x0F) << 4 | (p[16] & 0x0F), _mt32emulate); part->sendAll(); } } -- cgit v1.2.3