[Scummvm-git-logs] scummvm master -> 5c2a9bfcfac1503a55b46a4e5dabc1d25459f006

athrxx noreply at scummvm.org
Fri Jun 7 12:21:24 UTC 2024


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
5c2a9bfcfa SCUMM: (MI2) - fix regression


Commit: 5c2a9bfcfac1503a55b46a4e5dabc1d25459f006
    https://github.com/scummvm/scummvm/commit/5c2a9bfcfac1503a55b46a4e5dabc1d25459f006
Author: athrxx (athrxx at scummvm.org)
Date: 2024-06-07T14:20:17+02:00

Commit Message:
SCUMM: (MI2) - fix regression

(bug no.: 15152 - Wrong instruments used in MT-32 playback)

Changed paths:
    engines/scumm/imuse/imuse_part.cpp
    engines/scumm/imuse/imuse_player.cpp


diff --git a/engines/scumm/imuse/imuse_part.cpp b/engines/scumm/imuse/imuse_part.cpp
index 4c21f59ec88..7440752c61c 100644
--- a/engines/scumm/imuse/imuse_part.cpp
+++ b/engines/scumm/imuse/imuse_part.cpp
@@ -195,7 +195,7 @@ void Part::fix_after_load() {
 	set_pri(_pri);
 	set_pan(_pan);
 
-	if (!_se->_dynamicChanAllocation && !_mc) {
+	if (!_se->_dynamicChanAllocation && !_mc && !_percussion) {
 		_mc = _se->allocateChannel(_player->getMidiDriver(), _pri_eff);
 		if (!_mc)
 			_se->suspendPart(this);
@@ -341,6 +341,7 @@ void Part::uninit() {
 
 void Part::off() {
 	if (_mc) {
+		_mc->sustain(false);
 		_mc->allNotesOff();
 		if (!_se->reassignChannelAndResumePart(_mc))
 			_mc->release();
diff --git a/engines/scumm/imuse/imuse_player.cpp b/engines/scumm/imuse/imuse_player.cpp
index 4aa32035d2e..631308a4dda 100644
--- a/engines/scumm/imuse/imuse_player.cpp
+++ b/engines/scumm/imuse/imuse_player.cpp
@@ -477,7 +477,7 @@ uint16 Player::sysExNoDelay(const byte *msg, uint16 length) {
 	// just type 0, since that one leads to hardware messages. This is not a perfect solution, but it seems to work
 	// as intended.
 
-	if (_isMT32 && ((msg[0] == IMUSE_SYSEX_ID && msg[1] == 0) || msg[0] == ROLAND_SYSEX_ID))
+	if (_isMT32 && (!_scanning && (msg[0] == IMUSE_SYSEX_ID && msg[1] == 0) || msg[0] == ROLAND_SYSEX_ID))
 		return length >= 25 ? 70 : 20;
 
 	return 0;




More information about the Scummvm-git-logs mailing list