diff options
-rw-r--r-- | engines/scumm/imuse/imuse.cpp | 13 | ||||
-rw-r--r-- | engines/scumm/imuse/imuse_internal.h | 3 | ||||
-rw-r--r-- | engines/scumm/imuse/imuse_part.cpp | 10 | ||||
-rw-r--r-- | engines/scumm/imuse/sysex_scumm.cpp | 11 |
4 files changed, 13 insertions, 24 deletions
diff --git a/engines/scumm/imuse/imuse.cpp b/engines/scumm/imuse/imuse.cpp index 912ab71420..9fb6087e53 100644 --- a/engines/scumm/imuse/imuse.cpp +++ b/engines/scumm/imuse/imuse.cpp @@ -1673,15 +1673,12 @@ void IMuseInternal::reallocateMidiChannels(MidiDriver *midi) { } } -void IMuseInternal::setGlobalAdLibInstrument(byte slot, byte *data) { +void IMuseInternal::setGlobalInstrument(byte slot, byte *data) { if (slot < 32) { - _global_instruments[slot].adlib(data); - } -} - -void IMuseInternal::setGlobalPcSpkInstrument(byte slot, byte *data) { - if (slot < 32) { - _global_instruments[slot].pcspk(data); + if (_pcSpeaker) + _global_instruments[slot].pcspk(data); + else + _global_instruments[slot].adlib(data); } } diff --git a/engines/scumm/imuse/imuse_internal.h b/engines/scumm/imuse/imuse_internal.h index 8ac9e77535..4ab25907a4 100644 --- a/engines/scumm/imuse/imuse_internal.h +++ b/engines/scumm/imuse/imuse_internal.h @@ -500,8 +500,7 @@ protected: int setImuseMasterVolume(uint vol); void reallocateMidiChannels(MidiDriver *midi); - void setGlobalAdLibInstrument(byte slot, byte *data); - void setGlobalPcSpkInstrument(byte slot, byte *data); + void setGlobalInstrument(byte slot, byte *data); void copyGlobalInstrument(byte slot, Instrument *dest); bool isNativeMT32() { return _native_mt32; } diff --git a/engines/scumm/imuse/imuse_part.cpp b/engines/scumm/imuse/imuse_part.cpp index 630dd35442..53627f6a4a 100644 --- a/engines/scumm/imuse/imuse_part.cpp +++ b/engines/scumm/imuse/imuse_part.cpp @@ -194,13 +194,11 @@ void Part::set_onoff(bool on) { } void Part::set_instrument(byte * data) { - _instrument.adlib(data); - if (clearToTransmit()) - _instrument.send(_mc); -} + if (_se->_pcSpeaker) + _instrument.pcspk(data); + else + _instrument.adlib(data); -void Part::set_instrument_pcspk(byte *data) { - _instrument.pcspk(data); if (clearToTransmit()) _instrument.send(_mc); } diff --git a/engines/scumm/imuse/sysex_scumm.cpp b/engines/scumm/imuse/sysex_scumm.cpp index 035953f140..0987ab5553 100644 --- a/engines/scumm/imuse/sysex_scumm.cpp +++ b/engines/scumm/imuse/sysex_scumm.cpp @@ -121,12 +121,9 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { ++p; // Skip hardware type part = player->getPart(a); if (part) { - if (len == 62) { + if (len == 62 || len == 48) { player->decode_sysex_bytes(p, buf, len - 2); part->set_instrument((byte *)buf); - } else if (len == 48) { - player->decode_sysex_bytes(p, buf, len - 2); - part->set_instrument_pcspk((byte *)buf); } else { part->programChange(254); // Must be invalid, but not 255 (which is reserved) } @@ -137,10 +134,8 @@ void sysexHandler_Scumm(Player *player, const byte *msg, uint16 len) { p += 2; // Skip hardware type and... whatever came right before it a = *p++; player->decode_sysex_bytes(p, buf, len - 3); - if (len == 63) - se->setGlobalAdLibInstrument(a, buf); - else if (len == 49) - se->setGlobalPcSpkInstrument(a, buf); + if (len == 63 || len == 49) + se->setGlobalInstrument(a, buf); break; case 33: // Parameter adjust |