diff options
author | athrxx | 2019-07-20 19:31:54 +0200 |
---|---|---|
committer | athrxx | 2019-07-22 20:17:38 +0200 |
commit | aecf1948809805af51a2242fd1901afc4b03474d (patch) | |
tree | 03530de8820dd454a15f898ffc0a5a3709c51ddf | |
parent | 4d4c75475095c4f48ec343e8592d066d29ee2f8a (diff) | |
download | scummvm-rg350-aecf1948809805af51a2242fd1901afc4b03474d.tar.gz scummvm-rg350-aecf1948809805af51a2242fd1901afc4b03474d.tar.bz2 scummvm-rg350-aecf1948809805af51a2242fd1901afc4b03474d.zip |
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.
-rw-r--r-- | engines/scumm/imuse/imuse.cpp | 6 | ||||
-rw-r--r-- | engines/scumm/imuse/imuse_player.cpp | 3 |
2 files changed, 5 insertions, 4 deletions
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); |