From aecf1948809805af51a2242fd1901afc4b03474d Mon Sep 17 00:00:00 2001 From: athrxx Date: Sat, 20 Jul 2019 19:31:54 +0200 Subject: SCUMM: (iMUSE/Amiga) - minor fixes - At at least one place in INDY4 the game attempts to send a Roland MT-32 patch to the Amiga driver. This will fail and thus not cause any harm, but I have added a check nonetheless. The original Amiga driver ignores sysex messages that don't have the iMuse manufacturer id 7D. - In INDY4 the iMuse player thinks it has a percussion channel due to the fact that it plays ROL resources. This should also be irrelevant for the actual playback, but I have added a check for that, too. --- engines/scumm/imuse/imuse.cpp | 6 +++--- engines/scumm/imuse/imuse_player.cpp | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'engines/scumm') diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index de592972aa..50a13308d8 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -241,11 +241,11 @@ bool IMuseInternal::supportsPercussion(int sound) { case MKTAG('S', 'P', 'K', ' '): return false; - case MKTAG('A', 'M', 'I', ' '): // Amiga + case MKTAG('A', 'M', 'I', ' '): // MI2 Amiga return false; - case MKTAG('R', 'O', 'L', ' '): - return true; + case MKTAG('R', 'O', 'L', ' '): // Roland LAPC/MT-32/CM32L track, but also used by INDY4 Amiga + return !_isAmiga; case MKTAG('M', 'A', 'C', ' '): // Occurs in the Mac version of FOA and MI2 // This is MIDI, i.e. uses MIDI style program changes, but without a diff --git a/engines/scumm/imuse/imuse_player.cpp b/engines/scumm/imuse/imuse_player.cpp index 7ec557a768..b251e153cb 100644 --- a/engines/scumm/imuse/imuse_player.cpp +++ b/engines/scumm/imuse/imuse_player.cpp @@ -375,7 +375,8 @@ void Player::sysEx(const byte *p, uint16 len) { if (a != IMUSE_SYSEX_ID) { if (a == ROLAND_SYSEX_ID) { // Roland custom instrument definition. - if (_isMIDI || _isMT32) { + // There is at least one (pointless) attempt in INDY4 Amiga to send this, too. + if ((_isMIDI && !_se->_isAmiga) || _isMT32) { part = getPart(p[0] & 0x0F); if (part) { part->_instrument.roland(p - 1); -- cgit v1.2.3