[Scummvm-git-logs] scummvm master -> 3209bfb730807d4a82e535525c3612fe7786133b

bluegr bluegr at gmail.com
Fri Mar 29 20:37:19 CET 2019


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:
3209bfb730 SCI: Remove MidiDriver_AmigaMac platform inference


Commit: 3209bfb730807d4a82e535525c3612fe7786133b
    https://github.com/scummvm/scummvm/commit/3209bfb730807d4a82e535525c3612fe7786133b
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2019-03-29T21:37:15+02:00

Commit Message:
SCI: Remove MidiDriver_AmigaMac platform inference

Tell MidiDriver_AmigaMac the game's platform instead of it
attempting to infer this by which patch resources exist.

Fixes bug #10925 where SQ3 German Amiga is treated as Mac because
it happens to contain a patch 7 resource.

Changed paths:
    engines/sci/sound/drivers/amigamac.cpp
    engines/sci/sound/drivers/mididriver.h
    engines/sci/sound/music.cpp


diff --git a/engines/sci/sound/drivers/amigamac.cpp b/engines/sci/sound/drivers/amigamac.cpp
index 22950cb..3145af5 100644
--- a/engines/sci/sound/drivers/amigamac.cpp
+++ b/engines/sci/sound/drivers/amigamac.cpp
@@ -45,7 +45,7 @@ public:
 		kVoices = 4
 	};
 
-	MidiDriver_AmigaMac(Audio::Mixer *mixer) : MidiDriver_Emulated(mixer), _playSwitch(true), _masterVolume(15) { }
+	MidiDriver_AmigaMac(Audio::Mixer *mixer, Common::Platform platform) : MidiDriver_Emulated(mixer), _platform(platform), _playSwitch(true), _masterVolume(15) { }
 	virtual ~MidiDriver_AmigaMac() { }
 
 	// MidiDriver
@@ -134,8 +134,9 @@ private:
 		Common::Array<Instrument> instruments;
 	};
 
+	Common::Platform _platform;
 	bool _isSci1;
-	bool _isSci1Early; // KQ1/MUMG Amiga, patch 5
+	bool _isSci1Early; // KQ1/MUMG/SQ3-German Amiga, patch 5
 	bool _playSwitch;
 	int _masterVolume;
 	int _frequency;
@@ -592,14 +593,19 @@ int MidiDriver_AmigaMac::open() {
 	} else {
 		ResourceManager *resMan = g_sci->getResMan();
 
-		Resource *resource = resMan->findResource(ResourceId(kResourceTypePatch, 7), false); // Mac
-		if (!resource)
-			resource = resMan->findResource(ResourceId(kResourceTypePatch, 9), false);       // Amiga
+		Resource *resource = nullptr;
+		if (_platform == Common::kPlatformAmiga) {
+			resource = resMan->findResource(ResourceId(kResourceTypePatch, 9), false);
 
-		if (!resource) {
-			resource = resMan->findResource(ResourceId(kResourceTypePatch, 5), false);       // KQ1/MUMG Amiga
-			if (resource)
-				_isSci1Early = true;
+			if (!resource) {
+				// KQ1/MUM/SQ3-German Amiga
+				resource = resMan->findResource(ResourceId(kResourceTypePatch, 5), false);
+				if (resource) {
+					_isSci1Early = true;
+				}
+			}
+		} else if (_platform == Common::kPlatformMacintosh) {
+			resource = resMan->findResource(ResourceId(kResourceTypePatch, 7), false);
 		}
 
 		// If we have a patch by this point, it's SCI1
@@ -607,8 +613,11 @@ int MidiDriver_AmigaMac::open() {
 			_isSci1 = true;
 
 		// Check for the SCI0 Mac patch
-		if (!resource)
-			resource = resMan->findResource(ResourceId(kResourceTypePatch, 200), false);
+		if (_platform == Common::kPlatformMacintosh) {
+			if (!resource) {
+				resource = resMan->findResource(ResourceId(kResourceTypePatch, 200), false);
+			}
+		}
 
 		if (!resource) {
 			warning("Could not open patch for Amiga sound driver");
@@ -1006,7 +1015,9 @@ bool MidiDriver_AmigaMac::loadInstrumentsSCI1(Common::SeekableReadStream &file)
 
 class MidiPlayer_AmigaMac : public MidiPlayer {
 public:
-	MidiPlayer_AmigaMac(SciVersion version) : MidiPlayer(version) { _driver = new MidiDriver_AmigaMac(g_system->getMixer()); }
+	MidiPlayer_AmigaMac(SciVersion version, Common::Platform platform) : MidiPlayer(version) {
+		_driver = new MidiDriver_AmigaMac(g_system->getMixer(), platform);
+	}
 	byte getPlayId() const;
 	int getPolyphony() const { return MidiDriver_AmigaMac::kVoices; }
 	bool hasRhythmChannel() const { return false; }
@@ -1015,8 +1026,8 @@ public:
 	void loadInstrument(int idx, byte *data);
 };
 
-MidiPlayer *MidiPlayer_AmigaMac_create(SciVersion version) {
-	return new MidiPlayer_AmigaMac(version);
+MidiPlayer *MidiPlayer_AmigaMac_create(SciVersion version, Common::Platform platform) {
+	return new MidiPlayer_AmigaMac(version, platform);
 }
 
 byte MidiPlayer_AmigaMac::getPlayId() const {
diff --git a/engines/sci/sound/drivers/mididriver.h b/engines/sci/sound/drivers/mididriver.h
index f12d47f..c7c0198a 100644
--- a/engines/sci/sound/drivers/mididriver.h
+++ b/engines/sci/sound/drivers/mididriver.h
@@ -126,7 +126,7 @@ protected:
 };
 
 extern MidiPlayer *MidiPlayer_AdLib_create(SciVersion version);
-extern MidiPlayer *MidiPlayer_AmigaMac_create(SciVersion version);
+extern MidiPlayer *MidiPlayer_AmigaMac_create(SciVersion version, Common::Platform platform);
 extern MidiPlayer *MidiPlayer_PCJr_create(SciVersion version);
 extern MidiPlayer *MidiPlayer_PCSpeaker_create(SciVersion version);
 extern MidiPlayer *MidiPlayer_CMS_create(SciVersion version);
diff --git a/engines/sci/sound/music.cpp b/engines/sci/sound/music.cpp
index b2bd72e..0902ff8 100644
--- a/engines/sci/sound/music.cpp
+++ b/engines/sci/sound/music.cpp
@@ -113,7 +113,7 @@ void SciMusic::init() {
 	case MT_ADLIB:
 		// FIXME: There's no Amiga sound option, so we hook it up to AdLib
 		if (g_sci->getPlatform() == Common::kPlatformAmiga || platform == Common::kPlatformMacintosh)
-			_pMidiDrv = MidiPlayer_AmigaMac_create(_soundVersion);
+			_pMidiDrv = MidiPlayer_AmigaMac_create(_soundVersion, platform);
 		else
 			_pMidiDrv = MidiPlayer_AdLib_create(_soundVersion);
 		break;





More information about the Scummvm-git-logs mailing list