[Scummvm-git-logs] scummvm master -> 2193b80119678b6067d9ed8e3f6a22a077f22ca2

dwatteau noreply at scummvm.org
Wed Apr 16 09:49:27 UTC 2025


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

Summary:
2193b80119 SCUMM: Fix support of the macOS Steam releases using DOS resources (Trac#15849)


Commit: 2193b80119678b6067d9ed8e3f6a22a077f22ca2
    https://github.com/scummvm/scummvm/commit/2193b80119678b6067d9ed8e3f6a22a077f22ca2
Author: Donovan Watteau (contrib at dwatteau.fr)
Date: 2025-04-16T11:47:34+02:00

Commit Message:
SCUMM: Fix support of the macOS Steam releases using DOS resources (Trac#15849)

Back when modern macOS still had 32-bit support, Steam provided macOS
ports of some LEC titles, such as indy3-steam-mac.

Although marked as "Steam/Macintosh", they're not based on the
original Macintosh releases, but they're macOS ports of the original
DOS VGA releases.

Thus, we need to make sure not to override their midi settings with
MDT_MACINTOSH, since they use the usual DOS audio resources.

Fixes a fatal "IMuseDriver_Macintosh(): Unsupported game ID 3!" error,
when trying to start such games.

Changed paths:
    engines/scumm/metaengine.cpp
    engines/scumm/scumm.cpp


diff --git a/engines/scumm/metaengine.cpp b/engines/scumm/metaengine.cpp
index 288b8993d4b..9b20b8745de 100644
--- a/engines/scumm/metaengine.cpp
+++ b/engines/scumm/metaengine.cpp
@@ -440,12 +440,15 @@ Common::Error ScummMetaEngine::createInstance(OSystem *syst, Engine **engine,
 		res.language = Common::parseLanguage(ConfMan.get("language"));
 
 	// V3 FM-TOWNS games *always* should use the corresponding music driver,
-	// anything else makes no sense for them. Same for Mac (but not limited to V3).
+	// anything else makes no sense for them. Same for Mac (but not limited to V3),
+	// except for the Steam macOS releases actually using DOS content.
 	// TODO: Maybe allow the null driver, too?
 	if (res.game.platform == Common::kPlatformFMTowns && res.game.version == 3)
 		res.game.midi = MDT_TOWNS;
-	else if (res.game.platform == Common::kPlatformMacintosh && res.game.version < 7 && res.game.heversion == 0)
-		res.game.midi = MDT_MACINTOSH;
+	else if (res.game.platform == Common::kPlatformMacintosh && res.game.version < 7 && res.game.heversion == 0) {
+		if (!(res.extra && strcmp(res.extra, "Steam") == 0))
+			res.game.midi = MDT_MACINTOSH;
+	}
 
 	// Finally, we have massaged the GameDescriptor to our satisfaction, and can
 	// instantiate the appropriate game engine. Hooray!
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 614d3e0c6c9..5248bd44ab1 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1219,8 +1219,10 @@ Common::Error ScummEngine::init() {
 	// Steam Win and Mac versions share the same DOS data files. We show Windows or Mac
 	// for the platform the detector, but internally we force the platform to DOS, so that
 	// the code for handling the original DOS data files is used.
-	if (_filenamePattern.genMethod == kGenDiskNumSteam || _filenamePattern.genMethod == kGenRoomNumSteam)
+	if (_filenamePattern.genMethod == kGenDiskNumSteam || _filenamePattern.genMethod == kGenRoomNumSteam) {
 		_game.platform = Common::kPlatformDOS;
+		_game.midi = MDT_PCSPK | MDT_PCJR | MDT_CMS | MDT_ADLIB;
+	}
 
 	// Load CJK font, if present
 	// Load it earlier so _useCJKMode variable could be set




More information about the Scummvm-git-logs mailing list