[Scummvm-git-logs] scummvm master -> ec03fd52431ab7fa9d7675731d4b671acbd61daa

athrxx noreply at scummvm.org
Wed Sep 7 20:44:42 UTC 2022


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:
ec03fd5243 SCUMM: (SAMNMAX) - fix GM/AdLib distinction


Commit: ec03fd52431ab7fa9d7675731d4b671acbd61daa
    https://github.com/scummvm/scummvm/commit/ec03fd52431ab7fa9d7675731d4b671acbd61daa
Author: athrxx (athrxx at scummvm.org)
Date: 2022-09-07T22:43:54+02:00

Commit Message:
SCUMM: (SAMNMAX) - fix GM/AdLib distinction

In SAMNMAX the player wouldn't properly distinguish between GM and AdLib, because the sound all have the same 'Midi' tag. Now, this gets tested in a way than works for all targets.

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


diff --git a/engines/scumm/imuse/imuse_player.cpp b/engines/scumm/imuse/imuse_player.cpp
index 2184336ccee..d10011c0e2e 100644
--- a/engines/scumm/imuse/imuse_player.cpp
+++ b/engines/scumm/imuse/imuse_player.cpp
@@ -109,8 +109,10 @@ bool Player::startSound(int sound, MidiDriver *midi) {
 	_isMT32 = _se->isMT32(sound);
 	_isMIDI = _se->isMIDI(sound);
 	_supportsPercussion = _se->supportsPercussion(sound);
-	_isGM = (_supportsPercussion && !_isMT32); // Unlike IMuseInternal::isMIDI(), IMuseInternal::supportsPercussion() really filters out all non-MIDI things...
-	_isAdLibOrFMTowns = (_se->_midi_adlib && !_isMIDI);
+	// IMuseInternal::supportsPercussion() filters out more non-MIDI things than IMuseInternal::isMIDI(),
+	// but still not the AdLib in Samnmax, so we make an extra test for that...
+	_isGM = (_supportsPercussion && !(_se->_game_id == GID_SAMNMAX && !_se->_midi_native && _se->_midi_adlib) && !_isMT32);
+	_isAdLibOrFMTowns = (_se->_midi_adlib && !_isMT32 && !_isGM);
 
 	_parts = nullptr;
 	_active = true;
@@ -1032,8 +1034,10 @@ void Player::fixAfterLoad() {
 		_isMT32 = _se->isMT32(_id);
 		_isMIDI = _se->isMIDI(_id);
 		_supportsPercussion = _se->supportsPercussion(_id);
-		_isGM = (_supportsPercussion && !_isMT32); // Unlike IMuseInternal::isMIDI(), IMuseInternal::supportsPercussion() really filters out all non-MIDI things...
-		_isAdLibOrFMTowns = (_se->_midi_adlib && !_isMIDI);
+		// IMuseInternal::supportsPercussion() filters out more non-MIDI things than IMuseInternal::isMIDI(),
+		// but still not the AdLib in SAMNMAX, so we make an extra test for that...
+		_isGM = (_supportsPercussion && !(_se->_game_id == GID_SAMNMAX && !_se->_midi_native && _se->_midi_adlib) && !_isMT32);
+		_isAdLibOrFMTowns = (_se->_midi_adlib && !_isMT32 && !_isGM);
 	}
 }
 




More information about the Scummvm-git-logs mailing list