aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorathrxx2019-07-20 19:31:54 +0200
committerathrxx2019-07-22 20:17:38 +0200
commitaecf1948809805af51a2242fd1901afc4b03474d (patch)
tree03530de8820dd454a15f898ffc0a5a3709c51ddf
parent4d4c75475095c4f48ec343e8592d066d29ee2f8a (diff)
downloadscummvm-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.cpp6
-rw-r--r--engines/scumm/imuse/imuse_player.cpp3
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);