[Scummvm-git-logs] scummvm master -> 279f53be1e051a1c411fde68b873b3e308fbccd8

eriktorbjorn noreply at scummvm.org
Sun May 25 09:50:33 UTC 2025


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

Summary:
18f705c3d9 SCUMM: Initial work on the PowerPC version of Fate of Atlantis
1ef3a83f76 SCUMM: Try to allow music in Mac PPC Fate of Atlantis
cd6ef19bc7 SCUMM: Initialize _isModernMacVersion before creating the Mac GUI
6bcbf2ddc0 SCUMM: Use the same sliders and borders for Fate of Atlantis as for DOTT
6a2440ed4e SCUMM: MACGUI: This should fix the Fate of Atlantis Sound menu
05734c61c1 SCUMM: MACGUI: This should fix the cursor in PPC Fate of Atlantis
2490e8d5b1 SCUMM: MACGUI: Fix detection of modern Mac ports
89afb34060 SCUMM: MACGUI: Two fixes from lman
a123fc2c9b SCUMM: MACGUI: Attempt to fix Fate of Atlantis PPC cursor
a5463b3619 SCUMM: MACGUI: Fix from lman to make the cursor show up in FoA PPC
6762b8db61 SCUMM: MACGUI: Handle V6 cursors like Indy 3 instead
b6dc110fc9 SCUMM: MACGUI: Fix sound menu regression
c83d8c9cfc SCUMM: MACGUI: Simplify version checks
ffb44d6cc7 SCUMM: MACGUI: Fix indentation
279f53be1e SCUMM: Another attempt at fixing the Music menu item for FoA PPC


Commit: 18f705c3d9b205cab346a0fb59e2cdf6a2d65691
    https://github.com/scummvm/scummvm/commit/18f705c3d9b205cab346a0fb59e2cdf6a2d65691
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: Initial work on the PowerPC version of Fate of Atlantis

It should presumably use the V6 GUI instead of V5, but there are some
differences. Unfortunately I don't own this version myself, so this may
be as far as I get.

Changed paths:
    engines/scumm/imuse/drivers/macintosh.cpp
    engines/scumm/macgui/macgui.cpp
    engines/scumm/macgui/macgui_v6.cpp
    engines/scumm/scumm.cpp


diff --git a/engines/scumm/imuse/drivers/macintosh.cpp b/engines/scumm/imuse/drivers/macintosh.cpp
index 5c8b9c85935..55141450f9b 100644
--- a/engines/scumm/imuse/drivers/macintosh.cpp
+++ b/engines/scumm/imuse/drivers/macintosh.cpp
@@ -1310,6 +1310,18 @@ IMuseDriver_Macintosh::IMuseDriver_Macintosh(ScummEngine *vm, Audio::Mixer *mixe
 		_device = new NewMacSoundSystem(vm, mixer);
 		break;
 	case GID_INDY4:
+		// TODO: Detect the PowerPC version. Should it be version 2,
+		// 3, or something completely different?
+		if (false) {
+			_version = 2;
+			_numChannels = 12;
+			_baseTempo = 46439;
+			_device = new NewMacSoundSystem(vm, mixer);
+		} else {
+			_version = 0;
+			_device = new DJMSoundSystem(mixer);
+		}
+		break;
 	case GID_MONKEY2:
 		_version = 0;
 		_device = new DJMSoundSystem(mixer);
@@ -1334,21 +1346,24 @@ int IMuseDriver_Macintosh::open() {
 
 	createChannels();
 
-	static const char *const fileNames[3][3] = {
+	static const char *const fileNames[3][4] = {
 		{
 			"iMUSE Setups",
 			nullptr,
+			nullptr,
 			nullptr
 		},
 		{
 			"Instruments",
 			"Day of the Tentacle Demo",
-			"Day of the Tentacle"
+			"Day of the Tentacle",
+			"Fate of Atlantis PowerPC"
 		},
 		{
 			"Instruments",
 			"Sam & Max Demo",
-			"Sam & Max"
+			"Sam & Max",
+			nullptr
 		}
 	};
 
diff --git a/engines/scumm/macgui/macgui.cpp b/engines/scumm/macgui/macgui.cpp
index 2096b4ebaaa..6d009f4046f 100644
--- a/engines/scumm/macgui/macgui.cpp
+++ b/engines/scumm/macgui/macgui.cpp
@@ -20,6 +20,7 @@
  */
 
 #include "common/str.h"
+#include "common/macresman.h"
 
 #include "scumm/scumm.h"
 #include "scumm/macgui/macgui.h"
@@ -32,6 +33,9 @@
 namespace Scumm {
 
 MacGui::MacGui(ScummEngine *vm, const Common::Path &resourceFile) {
+	Common::MacResManager resource;
+	Common::SeekableReadStream *mbar;
+
 	switch (vm->_game.id) {
 	case GID_INDY3:
 		_impl = new MacIndy3Gui(vm, resourceFile);
@@ -43,10 +47,22 @@ MacGui::MacGui(ScummEngine *vm, const Common::Path &resourceFile) {
 
 	case GID_MONKEY:
 	case GID_MONKEY2:
-	case GID_INDY4:
 		_impl = new MacV5Gui(vm, resourceFile);
 		break;
 
+	case GID_INDY4:
+		resource.open(resourceFile);
+		mbar = resource.getResource(MKTAG('M', 'B', 'A', 'R'), 128);
+
+		if (mbar) {
+			_impl = new MacV6Gui(vm, resourceFile);
+			delete mbar;
+		} else
+			_impl = new MacV5Gui(vm, resourceFile);
+
+		resource.close();
+		break;
+
 	case GID_TENTACLE:
 	case GID_MANIAC:
 	case GID_SAMNMAX:
diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index 55f3a65aefe..6549a67e609 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -187,6 +187,7 @@ void MacV6Gui::updateMenus() {
 		menu->getSubMenuItem(videoMenu, 3)->checked = _vm->_useMacGraphicsSmoothing;
 
 	Graphics::MacMenuItem *soundMenu = menu->getMenuItem(4);
+	int voiceMenuIndex = 5;
 
 #if ENABLE_SCUMM_7_8
 	if (_vm->_game.version >= 7) {
@@ -196,24 +197,27 @@ void MacV6Gui::updateMenus() {
 		}
 	} else
 #endif
-	{
+	if (_vm->_game.id == GID_INDY4) {
+		// TODO
+		menu->getSubMenuItem(soundMenu, 0)->checked = false; // Music
+		voiceMenuIndex = 4;
+	} else {
 		menu->getSubMenuItem(soundMenu, 0)->checked = (_vm->_soundEnabled & 2); // Music
 		menu->getSubMenuItem(soundMenu, 1)->checked = (_vm->_soundEnabled & 1); // Effects
 	}
 
-	menu->getSubMenuItem(soundMenu, 5)->checked = false; // Text Only
-	menu->getSubMenuItem(soundMenu, 6)->checked = false; // Voice Only
-	menu->getSubMenuItem(soundMenu, 7)->checked = false; // Text & Voice
+	for (int i = 0; i < 3; i++)
+		menu->getSubMenuItem(soundMenu, i)->checked = false;
 
 	switch (_vm->_voiceMode) {
 	case 0:	// Voice Only
-		menu->getSubMenuItem(soundMenu, 6)->checked = true;
+		menu->getSubMenuItem(soundMenu, voiceMenuIndex + 1)->checked = true;
 		break;
 	case 1: // Voice and Text
-		menu->getSubMenuItem(soundMenu, 7)->checked = true;
+		menu->getSubMenuItem(soundMenu, voiceMenuIndex + 2)->checked = true;
 		break;
 	case 2:	// Text Only
-		menu->getSubMenuItem(soundMenu, 5)->checked = true;
+		menu->getSubMenuItem(soundMenu, voiceMenuIndex)->checked = true;
 		break;
 	default:
 		warning("MacV6Gui::updateMenus(): Invalid voice mode %d", _vm->_voiceMode);
@@ -1028,6 +1032,8 @@ bool MacV6Gui::runOptionsDialog() {
 
 		checkboxSpoolMusic = (MacCheckbox *)window->getWidget(kWidgetCheckbox, 0);
 #endif
+	} else if (_vm->_game.id == GID_INDY4) {
+		// TODO
 	} else
 		error("MacV6Gui::runOptionsDialog: Unknown game");
 
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index efb52b75c11..0bbecc8ef15 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1273,6 +1273,7 @@ Common::Error ScummEngine::init() {
 			{ GID_INDY4,    "Indy 12-15-92"            },
 			{ GID_INDY4,    "Fate of Atlantis v1.5"    },
 			{ GID_INDY4,    "Fate of Atlantis v.1.5"   },
+			{ GID_INDY4,    "Fate of Atlantis PowerPC" },
 			{ GID_INDY4,    "Indy Demo"                },
 			{ GID_MONKEY2,  "LeChuck's Revenge"        },
 			{ GID_TENTACLE, "Day of the Tentacle"      },


Commit: 1ef3a83f7692d933e32ca567285f89ccb1340290
    https://github.com/scummvm/scummvm/commit/1ef3a83f7692d933e32ca567285f89ccb1340290
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: Try to allow music in Mac PPC Fate of Atlantis

I don't know if the music player is like Day of the Tentacle, Sam & Max,
or someting entirely different. But this should allow it to proceed for
now.

Changed paths:
    engines/scumm/imuse/drivers/macintosh.cpp
    engines/scumm/macgui/macgui.cpp
    engines/scumm/scumm.cpp
    engines/scumm/scumm.h


diff --git a/engines/scumm/imuse/drivers/macintosh.cpp b/engines/scumm/imuse/drivers/macintosh.cpp
index 55141450f9b..8e19075ba63 100644
--- a/engines/scumm/imuse/drivers/macintosh.cpp
+++ b/engines/scumm/imuse/drivers/macintosh.cpp
@@ -1310,11 +1310,10 @@ IMuseDriver_Macintosh::IMuseDriver_Macintosh(ScummEngine *vm, Audio::Mixer *mixe
 		_device = new NewMacSoundSystem(vm, mixer);
 		break;
 	case GID_INDY4:
-		// TODO: Detect the PowerPC version. Should it be version 2,
-		// 3, or something completely different?
-		if (false) {
-			_version = 2;
-			_numChannels = 12;
+		// TODO: Detect the PowerPC version. Which version should it be?
+		if (vm->_isModernMacVersion) {
+			_version = 1;
+			_numChannels = 16;
 			_baseTempo = 46439;
 			_device = new NewMacSoundSystem(vm, mixer);
 		} else {
diff --git a/engines/scumm/macgui/macgui.cpp b/engines/scumm/macgui/macgui.cpp
index 6d009f4046f..dd8776e08f5 100644
--- a/engines/scumm/macgui/macgui.cpp
+++ b/engines/scumm/macgui/macgui.cpp
@@ -20,7 +20,6 @@
  */
 
 #include "common/str.h"
-#include "common/macresman.h"
 
 #include "scumm/scumm.h"
 #include "scumm/macgui/macgui.h"
@@ -33,9 +32,6 @@
 namespace Scumm {
 
 MacGui::MacGui(ScummEngine *vm, const Common::Path &resourceFile) {
-	Common::MacResManager resource;
-	Common::SeekableReadStream *mbar;
-
 	switch (vm->_game.id) {
 	case GID_INDY3:
 		_impl = new MacIndy3Gui(vm, resourceFile);
@@ -51,16 +47,10 @@ MacGui::MacGui(ScummEngine *vm, const Common::Path &resourceFile) {
 		break;
 
 	case GID_INDY4:
-		resource.open(resourceFile);
-		mbar = resource.getResource(MKTAG('M', 'B', 'A', 'R'), 128);
-
-		if (mbar) {
+		if (vm->_isModernMacVersion)
 			_impl = new MacV6Gui(vm, resourceFile);
-			delete mbar;
-		} else
+		else
 			_impl = new MacV5Gui(vm, resourceFile);
-
-		resource.close();
 		break;
 
 	case GID_TENTACLE:
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 0bbecc8ef15..6d5681a6bb1 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1345,13 +1345,18 @@ Common::Error ScummEngine::init() {
 					return Common::Error(Common::kReadingFailed, Common::U32String::format(_("This game requires the '%s' Macintosh executable for its fonts."), gameName));
 				}
 
-				if (_game.id == GID_LOOM || _game.id == GID_TENTACLE || _game.id == GID_SAMNMAX) {
+				// Only the PPC version of Fate of Atlantis requires the
+				// executable for music, but without the executable we don't
+				// know which version it is. The message is a bit misleading
+				// because only Loom needs it for the fonts.
+
+				if (_game.id == GID_LOOM || _game.id == GID_TENTACLE || _game.id == GID_SAMNMAX || _game.id == GID_INDY4) {
 					return Common::Error(Common::kReadingFailed, Common::U32String::format(_("This game requires the '%s' Macintosh executable for its music and fonts."), gameName));
 				}
 
 				GUI::MessageDialog dialog(Common::U32String::format(
 					_("Could not find the '%s' Macintosh executable to read resources from. %s will be disabled."),
-						gameName, (_game.id == GID_INDY4 || _game.id == GID_MONKEY2 || _game.version > 6) ? _s("The Mac GUI") : _s("The music and the Mac GUI")), _("OK"));
+						gameName, (_game.id == GID_MONKEY2 || _game.version > 6) ? _s("The Mac GUI") : _s("The music and the Mac GUI")), _("OK"));
 				dialog.runModal();
 			} else if (isUsingOriginalGUI() || _game.id == GID_INDY3 || _game.id == GID_LOOM) {
 				// FIXME: THIS IS A TEMPORARY WORKAROUND!
@@ -1376,12 +1381,16 @@ Common::Error ScummEngine::init() {
 			if (!resource.hasResFork())
 				return Common::Error(Common::kReadingFailed, Common::U32String::format(_("Could not find resource fork in Macintosh resource file %s"), macResourceFile.toString().c_str()));
 
-			// The Dig is special, in that it has a smaller launcher
-			// executable that, I think, decides which one of the
-			// real executables to run. Check that the user didn't
-			// accidentally pick the launcher one.
+			// The Aaron Giles Mac ports have an MBAR resource. The older ones
+			// does not.
+
+			_isModernMacVersion = (resource.getResLength(MKTAG('M', 'B', 'A', 'R'), 128) > 0);
+
+			// The Dig is special, in that it has a smaller launcher executable
+			// that, I think, decides which one of the real executables to run.
+			// Check that the user didn't accidentally pick the launcher one.
 			if (_game.id == GID_DIG) {
-				if (resource.getResLength(MKTAG('M', 'B', 'A', 'R'), 128) == 0) {
+				if (!_isModernMacVersion) {
 					return Common::Error(Common::kReadingFailed, Common::U32String::format(_("'%s' appears to be the wrong Dig executable. It may be the launcher one found in the CD root, which does not contain any of the necessary menu and dialog definitions. Look for a 'The Dig f' folder on your CD. Any one from its sub-folders should be what you need."), filename));
 				}
 			}
diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index ceed7970d3d..10a409234ae 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -1597,6 +1597,7 @@ public:
 	Graphics::Surface _textSurface;
 	int _textSurfaceMultiplier = 0;
 
+	bool _isModernMacVersion = false;
 	bool _useGammaCorrection = true;
 
 	Graphics::Surface *_macScreen = nullptr;


Commit: cd6ef19bc787af247b17675974ba55357ee56963
    https://github.com/scummvm/scummvm/commit/cd6ef19bc787af247b17675974ba55357ee56963
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: Initialize _isModernMacVersion before creating the Mac GUI

Changed paths:
    engines/scumm/scumm.cpp


diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 6d5681a6bb1..cec81e75e0f 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1364,6 +1364,11 @@ Common::Error ScummEngine::init() {
 				// is because the engine will attempt to load Mac fonts from resources... using the
 				// _macGui object. This is not optimal, ideally we would want to decouple resource
 				// handling from the responsibilities of a simulated OS interface.
+
+				// The Aaron Giles Mac ports have an MBAR resource. The older
+				// ones do not.
+
+				_isModernMacVersion = (resource.getResLength(MKTAG('M', 'B', 'A', 'R'), 128) > 0);
 				_macGui = new MacGui(this, macResourceFile);
 			}
 
@@ -1381,11 +1386,6 @@ Common::Error ScummEngine::init() {
 			if (!resource.hasResFork())
 				return Common::Error(Common::kReadingFailed, Common::U32String::format(_("Could not find resource fork in Macintosh resource file %s"), macResourceFile.toString().c_str()));
 
-			// The Aaron Giles Mac ports have an MBAR resource. The older ones
-			// does not.
-
-			_isModernMacVersion = (resource.getResLength(MKTAG('M', 'B', 'A', 'R'), 128) > 0);
-
 			// The Dig is special, in that it has a smaller launcher executable
 			// that, I think, decides which one of the real executables to run.
 			// Check that the user didn't accidentally pick the launcher one.


Commit: 6bcbf2ddc078843a3457d7c854de4632a3a6b35d
    https://github.com/scummvm/scummvm/commit/6bcbf2ddc078843a3457d7c854de4632a3a6b35d
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: Use the same sliders and borders for Fate of Atlantis as for DOTT

Judging by screenshots, the borders are even misaligned in the same way,
so this should work.

Changed paths:
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index 6549a67e609..b5e8f608713 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -999,7 +999,7 @@ bool MacV6Gui::runOptionsDialog() {
 
 	window->setDefaultWidget(buttonOk);
 
-	if (_vm->_game.id == GID_TENTACLE) {
+	if (_vm->_game.id == GID_TENTACLE || _vm->_game.id == GID_INDY4) {
 		// Yes, the frames really are supposed to be slightly
 		// misaligned to match the original appearance.
 
@@ -1032,8 +1032,6 @@ bool MacV6Gui::runOptionsDialog() {
 
 		checkboxSpoolMusic = (MacCheckbox *)window->getWidget(kWidgetCheckbox, 0);
 #endif
-	} else if (_vm->_game.id == GID_INDY4) {
-		// TODO
 	} else
 		error("MacV6Gui::runOptionsDialog: Unknown game");
 


Commit: 6a2440ed4e3bab3a692b826f70319f2daea728f2
    https://github.com/scummvm/scummvm/commit/6a2440ed4e3bab3a692b826f70319f2daea728f2
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: This should fix the Fate of Atlantis Sound menu

This game doesn't have a menu item for Effects, so adjust the id of the
clicked item to pretend that it does.

Changed paths:
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index b5e8f608713..6bf085d67b1 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -236,6 +236,10 @@ bool MacV6Gui::handleMenu(int id, Common::String &name) {
 	if (_vm->_game.version > 6 && id >= 204 && id < 300)
 		id++;
 
+	// Fate of Atlantis doesn't have an Effects menu entry
+	if (_vm->_game.id == GID_INDY4 && id >= 501 && id < 600)
+		id++;
+
 	switch (id) {
 	case 100:	// About
 		runAboutDialog();


Commit: 05734c61c14d0bbcfb6ad6755c448140cb28a20f
    https://github.com/scummvm/scummvm/commit/05734c61c14d0bbcfb6ad6755c448140cb28a20f
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: This should fix the cursor in PPC Fate of Atlantis

I've also moved the code to read a CURS cursor to macgui_impl.cpp, so
that it can be shared between all the classes that use it.

Changed paths:
    engines/scumm/macgui/macgui_impl.cpp
    engines/scumm/macgui/macgui_impl.h
    engines/scumm/macgui/macgui_loom.cpp
    engines/scumm/macgui/macgui_v5.cpp
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/macgui/macgui_impl.cpp b/engines/scumm/macgui/macgui_impl.cpp
index ad75e283388..fa9604f5e97 100644
--- a/engines/scumm/macgui/macgui_impl.cpp
+++ b/engines/scumm/macgui/macgui_impl.cpp
@@ -26,6 +26,7 @@
 #include "common/str.h"
 
 #include "graphics/cursorman.h"
+#include "graphics/maccursor.h"
 #include "graphics/macgamma.h"
 #include "graphics/paletteman.h"
 #include "graphics/fonts/macfont.h"
@@ -607,6 +608,31 @@ Graphics::Surface *MacGuiImpl::createRemappedSurface(const Graphics::Surface *su
 	return s;
 }
 
+bool MacGuiImpl::setupResourceCursor(int id, int &width, int &height, int &hotspotX, int &hotspotY, int &animate) {
+	Common::MacResManager resource;
+	Graphics::MacCursor macCursor;
+	bool success = false;
+
+	resource.open(_resourceFile);
+
+	Common::SeekableReadStream *curs = resource.getResource(MKTAG('C', 'U', 'R', 'S'), id);
+
+	if (curs && macCursor.readFromStream(*curs)) {
+		width = macCursor.getWidth();
+		height = macCursor.getHeight();
+		hotspotX = macCursor.getHotspotX();
+		hotspotY = macCursor.getHotspotY();
+		animate = 0;
+
+		_windowManager->replaceCursor(Graphics::MacGUIConstants::kMacCursorCustom, &macCursor);
+		success = true;
+	}
+
+	delete curs;
+	resource.close();
+	return success;
+}
+
 // ---------------------------------------------------------------------------
 // Icon loader
 // ---------------------------------------------------------------------------
diff --git a/engines/scumm/macgui/macgui_impl.h b/engines/scumm/macgui/macgui_impl.h
index a5b5ccd6816..5685f1a30a7 100644
--- a/engines/scumm/macgui/macgui_impl.h
+++ b/engines/scumm/macgui/macgui_impl.h
@@ -245,6 +245,8 @@ protected:
 
 	Graphics::Surface *createRemappedSurface(const Graphics::Surface *surface, const byte *palette, uint colorCount);
 
+	bool setupResourceCursor(int id, int &width, int &height, int &hotspotX, int &hotspotY, int &animate);
+
 public:
 	class MacGuiObject {
 	protected:
diff --git a/engines/scumm/macgui/macgui_loom.cpp b/engines/scumm/macgui/macgui_loom.cpp
index 29f078e620d..6e3aacd740b 100644
--- a/engines/scumm/macgui/macgui_loom.cpp
+++ b/engines/scumm/macgui/macgui_loom.cpp
@@ -25,7 +25,6 @@
 
 #include "engines/engine.h"
 
-#include "graphics/maccursor.h"
 #include "graphics/macgui/macfontmanager.h"
 #include "graphics/macgui/macwindowmanager.h"
 #include "graphics/surface.h"
@@ -109,25 +108,7 @@ bool MacLoomGui::getFontParams(FontId fontId, int &id, int &size, int &slant) co
 }
 
 void MacLoomGui::setupCursor(int &width, int &height, int &hotspotX, int &hotspotY, int &animate) {
-	Common::MacResManager resource;
-	Graphics::MacCursor macCursor;
-
-	resource.open(_resourceFile);
-
-	Common::SeekableReadStream *curs = resource.getResource(MKTAG('C', 'U', 'R', 'S'), 1000);
-
-	if (macCursor.readFromStream(*curs)) {
-		width = macCursor.getWidth();
-		height = macCursor.getHeight();
-		hotspotX = macCursor.getHotspotX();
-		hotspotY = macCursor.getHotspotY();
-		animate = 0;
-
-		_windowManager->replaceCursor(Graphics::MacGUIConstants::kMacCursorCustom, &macCursor);
-	}
-
-	delete curs;
-	resource.close();
+	setupResourceCursor(1000, width, height, hotspotX, hotspotY, animate);
 }
 
 void MacLoomGui::updateMenus() {
diff --git a/engines/scumm/macgui/macgui_v5.cpp b/engines/scumm/macgui/macgui_v5.cpp
index 181972d7830..bbe3a5a6f9a 100644
--- a/engines/scumm/macgui/macgui_v5.cpp
+++ b/engines/scumm/macgui/macgui_v5.cpp
@@ -25,7 +25,6 @@
 
 #include "engines/engine.h"
 
-#include "graphics/maccursor.h"
 #include "graphics/macgui/macfontmanager.h"
 #include "graphics/macgui/macwindowmanager.h"
 #include "graphics/surface.h"
@@ -119,22 +118,7 @@ bool MacV5Gui::getFontParams(FontId fontId, int &id, int &size, int &slant) cons
 }
 
 void MacV5Gui::setupCursor(int &width, int &height, int &hotspotX, int &hotspotY, int &animate) {
-	Common::MacResManager resource;
-	Graphics::MacCursor macCursor;
-
-	resource.open(_resourceFile);
-
-	Common::SeekableReadStream *curs = resource.getResource(MKTAG('C', 'U', 'R', 'S'), 128);
-
-	if (curs && macCursor.readFromStream(*curs)) {
-		width = macCursor.getWidth();
-		height = macCursor.getHeight();
-		hotspotX = macCursor.getHotspotX();
-		hotspotY = macCursor.getHotspotY();
-		animate = 0;
-
-		_windowManager->replaceCursor(Graphics::MacGUIConstants::kMacCursorCustom, &macCursor);
-	} else {
+	if (!setupResourceCursor(128, width, height, hotspotX, hotspotY, animate)) {
 		// Monkey Island 1 uses the arrow cursor, and we have to use it
 		// for the Fate of Atlantis demo as well.
 		_windowManager->replaceCursor(Graphics::MacGUIConstants::kMacCursorArrow);
@@ -144,9 +128,6 @@ void MacV5Gui::setupCursor(int &width, int &height, int &hotspotX, int &hotspotY
 		hotspotY = 3;
 		animate = 0;
 	}
-
-	delete curs;
-	resource.close();
 }
 
 void MacV5Gui::updateMenus() {
diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index 6bf085d67b1..65b3eaef1f6 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -129,6 +129,11 @@ bool MacV6Gui::getFontParams(FontId fontId, int &id, int &size, int &slant) cons
 }
 
 void MacV6Gui::setupCursor(int &width, int &height, int &hotspotX, int &hotspotY, int &animate) {
+	if (_vm->_game.id == GID_INDY4) {
+		setupResourceCursor(128, width, height, hotspotX, hotspotY, animate);
+		return;
+	}
+
 	if (_vm->_game.id != GID_MANIAC)
 		return;
 


Commit: 2490e8d5b11a3787dbfeff7b5d9cab2282cca222
    https://github.com/scummvm/scummvm/commit/2490e8d5b11a3787dbfeff7b5d9cab2282cca222
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: Fix detection of modern Mac ports

Also, use that flag to detect if it's a game that blacks out the screen
or not.

Changed paths:
    engines/scumm/macgui/macgui_impl.cpp
    engines/scumm/scumm.cpp


diff --git a/engines/scumm/macgui/macgui_impl.cpp b/engines/scumm/macgui/macgui_impl.cpp
index fa9604f5e97..dc63a7517e7 100644
--- a/engines/scumm/macgui/macgui_impl.cpp
+++ b/engines/scumm/macgui/macgui_impl.cpp
@@ -807,7 +807,7 @@ MacGuiImpl::MacDialogWindow *MacGuiImpl::createDialog(int dialogId, Common::Rect
 	_macWhite = _windowManager->_colorWhite;
 	_macBlack = _windowManager->_colorBlack;
 
-	if (_vm->_game.version >= 6 || _vm->_game.id == GID_MANIAC) {
+	if (_vm->_isModernMacVersion) {
 		res = resource.getResource(MKTAG('D', 'I', 'T', 'L'), dialogId);
 		if (!res)
 			return nullptr;
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index cec81e75e0f..72d2674fcd6 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1366,9 +1366,13 @@ Common::Error ScummEngine::init() {
 				// handling from the responsibilities of a simulated OS interface.
 
 				// The Aaron Giles Mac ports have an MBAR resource. The older
-				// ones do not.
+				// ones do not. If opening the resource fails here, that will
+				// be flagged later.
 
-				_isModernMacVersion = (resource.getResLength(MKTAG('M', 'B', 'A', 'R'), 128) > 0);
+				if (resource.open(macResourceFile)) {
+					_isModernMacVersion = (resource.getResLength(MKTAG('M', 'B', 'A', 'R'), 128) > 0);
+					resource.close();
+				}
 				_macGui = new MacGui(this, macResourceFile);
 			}
 


Commit: 89afb34060e186ac9c6d430cb18ecd3c549d3833
    https://github.com/scummvm/scummvm/commit/89afb34060e186ac9c6d430cb18ecd3c549d3833
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: Two fixes from lman

The About menu for Fate of Atlantis should now show the correct name,
and the options dialog should apply the correct settings.

Changed paths:
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index 65b3eaef1f6..dc584fe1e16 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -70,6 +70,8 @@ MacV6Gui::MacV6Gui(ScummEngine *vm, const Common::Path &resourceFile) : MacGuiIm
 #endif
 	else if (_vm->_game.id == GID_MANIAC)
 		_gameName = "Maniac Mansion";
+	else if (_vm->_game.id == GID_INDY4)
+		_gameName = "Fate of Atlantis PowerPC";
 	else
 		_gameName = "Some Game I Do Not Know";
 
@@ -1101,7 +1103,7 @@ bool MacV6Gui::runOptionsDialog() {
 
 					if (_vm->_game.id == GID_MANIAC) {
 						effectVolume = musicVolume;
-					} else if (_vm->_game.id == GID_TENTACLE) {
+					} else if (_vm->_game.id == GID_TENTACLE || _vm->_game.id == GID_INDY4) {
 						musicVolume = sliderMusicVolume->getValue();
 						voiceVolume = sliderVoiceVolume->getValue();
 						effectVolume = voiceVolume;


Commit: a123fc2c9b49031467acf394402d16f34e77ee9e
    https://github.com/scummvm/scummvm/commit/a123fc2c9b49031467acf394402d16f34e77ee9e
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: Attempt to fix Fate of Atlantis PPC cursor

It's apparently not a Mac resource, as I had first surmised. In fact, it
may be the same as the DOS version, except not animated and high
resolution.

Changed paths:
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index dc584fe1e16..326af49ec13 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -132,38 +132,53 @@ bool MacV6Gui::getFontParams(FontId fontId, int &id, int &size, int &slant) cons
 
 void MacV6Gui::setupCursor(int &width, int &height, int &hotspotX, int &hotspotY, int &animate) {
 	if (_vm->_game.id == GID_INDY4) {
-		setupResourceCursor(128, width, height, hotspotX, hotspotY, animate);
-		return;
-	}
+		byte cross[15 * 15];
 
-	if (_vm->_game.id != GID_MANIAC)
-		return;
+		memset(cross, 0xFF, sizeof(cross));
 
-	byte invertedMacArrow[] = {
-		0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-		0x00, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-		0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-		0x00, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-		0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-		0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
-		0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
-		0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
-		0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF,
-		0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
-		0x00, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
-		0x00, 0x0F, 0x00, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
-		0x00, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
-		0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
-		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
-		0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF
-	};
+		for (int i = 0; i < 15; i++) {
+			if (i < 6 || i > 8) {
+				cross[i * 15 + 7] = 0x0F;
+				cross[7 * 15 + i] = 0x0F;
+			}
+		}
 
-	memcpy(_vm->_grabbedCursor, invertedMacArrow, sizeof(invertedMacArrow));
+		memcpy(_vm->_grabbedCursor, cross, sizeof(cross));
 
-	width = 11;
-	height = 16;
-	hotspotX = 1;
-	hotspotY = 1;
+		width = 15;
+		height = 15;
+		hotspotX = 7;
+		hotspotY = 7;
+		animate = false;
+		return;
+	} else if (_vm->_game.id == GID_MANIAC) {
+		byte invertedMacArrow[] = {
+			0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			0x00, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			0x00, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
+			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
+			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF,
+			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
+			0x00, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+			0x00, 0x0F, 0x00, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
+			0x00, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
+			0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
+			0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
+			0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF
+		};
+
+		memcpy(_vm->_grabbedCursor, invertedMacArrow, sizeof(invertedMacArrow));
+
+		width = 11;
+		height = 16;
+		hotspotX = 1;
+		hotspotY = 1;
+		animate = false;
+	}
 }
 
 void MacV6Gui::updateMenus() {


Commit: a5463b3619cbddcd1774ee6f82fd1e2d9dbf7f3c
    https://github.com/scummvm/scummvm/commit/a5463b3619cbddcd1774ee6f82fd1e2d9dbf7f3c
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: Fix from lman to make the cursor show up in FoA PPC

Changed paths:
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index 326af49ec13..e6c870f4b58 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -150,7 +150,8 @@ void MacV6Gui::setupCursor(int &width, int &height, int &hotspotX, int &hotspotY
 		hotspotX = 7;
 		hotspotY = 7;
 		animate = false;
-		return;
+
+		_vm->updateCursor();
 	} else if (_vm->_game.id == GID_MANIAC) {
 		byte invertedMacArrow[] = {
 			0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,


Commit: 6762b8db6184b94b99be1b12fc3548df5e679578
    https://github.com/scummvm/scummvm/commit/6762b8db6184b94b99be1b12fc3548df5e679578
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: Handle V6 cursors like Indy 3 instead

Calling updateCursor() where I did it crashed ScummVM. Calling it later
broke cursors in other Mac games. Third option: Use a Mac Window Manager
custom cursor instead, the same as Indy 3. This should just work.

Changed paths:
    engines/scumm/cursor.cpp
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/cursor.cpp b/engines/scumm/cursor.cpp
index 26ce381d2dd..37ab332d66c 100644
--- a/engines/scumm/cursor.cpp
+++ b/engines/scumm/cursor.cpp
@@ -896,6 +896,8 @@ void ScummEngine_v2::setBuiltinCursor(int idx) {
 		_cursor.height = height;
 		_cursor.hotspotX = hotspotX;
 		_cursor.hotspotY = hotspotY;
+
+		return;
 	} else {
 		_cursor.width = 23;
 		_cursor.height = 21;
diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index e6c870f4b58..75536fdcc99 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -134,51 +134,47 @@ void MacV6Gui::setupCursor(int &width, int &height, int &hotspotX, int &hotspotY
 	if (_vm->_game.id == GID_INDY4) {
 		byte cross[15 * 15];
 
-		memset(cross, 0xFF, sizeof(cross));
+		memset(cross, 3, sizeof(cross));
 
 		for (int i = 0; i < 15; i++) {
 			if (i < 6 || i > 8) {
-				cross[i * 15 + 7] = 0x0F;
-				cross[7 * 15 + i] = 0x0F;
+				cross[i * 15 + 7] = 1;
+				cross[7 * 15 + i] = 1;
 			}
 		}
 
-		memcpy(_vm->_grabbedCursor, cross, sizeof(cross));
-
-		width = 15;
-		height = 15;
-		hotspotX = 7;
-		hotspotY = 7;
+		width = height = 15;
+		hotspotX = hotspotY = 7;
 		animate = false;
 
-		_vm->updateCursor();
+		_windowManager->replaceCustomCursor(cross, width, height, hotspotX, hotspotY, 3);
 	} else if (_vm->_game.id == GID_MANIAC) {
-		byte invertedMacArrow[] = {
-			0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-			0x00, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-			0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-			0x00, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
-			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
-			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
-			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
-			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0xFF,
-			0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
-			0x00, 0x0F, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
-			0x00, 0x0F, 0x00, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
-			0x00, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF, 0xFF,
-			0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
-			0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 0x00, 0xFF, 0xFF,
-			0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF
+		byte invertedMacArrow[11 * 16] = {
+			0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+			0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3,
+			0, 1, 1, 0, 3, 3, 3, 3, 3, 3, 3,
+			0, 1, 1, 1, 0, 3, 3, 3, 3, 3, 3,
+			0, 1, 1, 1, 1, 0, 3, 3, 3, 3, 3,
+			0, 1, 1, 1, 1, 1, 0, 3, 3, 3, 3,
+			0, 1, 1, 1, 1, 1, 1, 0, 3, 3, 3,
+			0, 1, 1, 1, 1, 1, 1, 1, 0, 3, 3,
+			0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 3,
+			0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
+			0, 1, 1, 0, 1, 1, 0, 3, 3, 3, 3,
+			0, 1, 0, 3, 0, 1, 1, 0, 3, 3, 3,
+			0, 0, 3, 3, 0, 1, 1, 0, 3, 3, 3,
+			0, 3, 3, 3, 3, 0, 1, 1, 0, 3, 3,
+			3, 3, 3, 3, 3, 0, 1, 1, 0, 3, 3,
+			3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3
 		};
 
-		memcpy(_vm->_grabbedCursor, invertedMacArrow, sizeof(invertedMacArrow));
-
 		width = 11;
 		height = 16;
 		hotspotX = 1;
 		hotspotY = 1;
 		animate = false;
+
+		_windowManager->replaceCustomCursor(invertedMacArrow, width, height, hotspotX, hotspotY, 3);
 	}
 }
 


Commit: b6dc110fc9a9e42477df0f1b3ef892eb6faf1c69
    https://github.com/scummvm/scummvm/commit/b6dc110fc9a9e42477df0f1b3ef892eb6faf1c69
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: Fix sound menu regression

This should hopefully fix the Music menu item for Fate of Atlantis PPC
too.

Changed paths:
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index 75536fdcc99..85c9ed35bbf 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -217,8 +217,7 @@ void MacV6Gui::updateMenus() {
 	} else
 #endif
 	if (_vm->_game.id == GID_INDY4) {
-		// TODO
-		menu->getSubMenuItem(soundMenu, 0)->checked = false; // Music
+	  menu->getSubMenuItem(soundMenu, 0)->checked = (_vm->_soundEnabled & 2); // Music
 		voiceMenuIndex = 4;
 	} else {
 		menu->getSubMenuItem(soundMenu, 0)->checked = (_vm->_soundEnabled & 2); // Music
@@ -226,7 +225,7 @@ void MacV6Gui::updateMenus() {
 	}
 
 	for (int i = 0; i < 3; i++)
-		menu->getSubMenuItem(soundMenu, i)->checked = false;
+		menu->getSubMenuItem(soundMenu, i + voiceMenuIndex)->checked = false;
 
 	switch (_vm->_voiceMode) {
 	case 0:	// Voice Only


Commit: c83d8c9cfc383fb035e846746b29f883f21969da
    https://github.com/scummvm/scummvm/commit/c83d8c9cfc383fb035e846746b29f883f21969da
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: Simplify version checks

We don't really want to check which versin of the game is running, we
want to check if it's an Aaron Giles port or not. This should fix the
default size of Fate of Atlantis PowerPC's dialog windows.

Changed paths:
    engines/scumm/macgui/macgui_impl.cpp


diff --git a/engines/scumm/macgui/macgui_impl.cpp b/engines/scumm/macgui/macgui_impl.cpp
index dc63a7517e7..8886346b1ea 100644
--- a/engines/scumm/macgui/macgui_impl.cpp
+++ b/engines/scumm/macgui/macgui_impl.cpp
@@ -732,7 +732,7 @@ void MacGuiImpl::setMacGuiColors(Graphics::Palette &palette) {
 }
 
 MacGuiImpl::MacDialogWindow *MacGuiImpl::createWindow(Common::Rect bounds, MacDialogWindowStyle windowStyle, MacDialogMenuStyle menuStyle) {
-	if (_vm->_game.version < 6 && _vm->_game.id != GID_MANIAC) {
+	if (!_vm->_isModernMacVersion) {
 		updatePalette();
 		_macBlack = _windowManager->_colorBlack;
 		_macWhite = _windowManager->_colorWhite;
@@ -757,8 +757,7 @@ MacGuiImpl::MacDialogWindow *MacGuiImpl::createDialog(int dialogId) {
 	Common::Rect bounds;
 
 	// Default dialog sizes for dialogs without a DITL resource.
-
-	if (_vm->_game.version < 6 && _vm->_game.id != GID_MANIAC) {
+	if (!_vm->_isModernMacVersion) {
 		bounds.top = 0;
 		bounds.left = 0;
 		bounds.bottom = 86;


Commit: ffb44d6cc7d3ff807baef2f9505a1d453cb15b3c
    https://github.com/scummvm/scummvm/commit/ffb44d6cc7d3ff807baef2f9505a1d453cb15b3c
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: MACGUI: Fix indentation

Changed paths:
    engines/scumm/macgui/macgui_v6.cpp


diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index 85c9ed35bbf..651d3c96500 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -217,7 +217,7 @@ void MacV6Gui::updateMenus() {
 	} else
 #endif
 	if (_vm->_game.id == GID_INDY4) {
-	  menu->getSubMenuItem(soundMenu, 0)->checked = (_vm->_soundEnabled & 2); // Music
+		menu->getSubMenuItem(soundMenu, 0)->checked = (_vm->_soundEnabled & 2); // Music
 		voiceMenuIndex = 4;
 	} else {
 		menu->getSubMenuItem(soundMenu, 0)->checked = (_vm->_soundEnabled & 2); // Music


Commit: 279f53be1e051a1c411fde68b873b3e308fbccd8
    https://github.com/scummvm/scummvm/commit/279f53be1e051a1c411fde68b873b3e308fbccd8
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-05-25T11:50:24+02:00

Commit Message:
SCUMM: Another attempt at fixing the Music menu item for FoA PPC

Note that _isModernMacVersion also covers Maniac Mansion, but I don't
think that's going to be a problem.

Changed paths:
    engines/scumm/scumm.cpp


diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 72d2674fcd6..16d7897d8fc 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -2477,10 +2477,10 @@ void ScummEngine::syncSoundSettings() {
 
 	bool mute = (ConfMan.hasKey("mute") && ConfMan.getBool("mute"));
 
-	if (_game.version >= 6 && _game.platform == Common::kPlatformMacintosh) {
+	if (_isModernMacVersion) {
 		_soundEnabled = mute ? 8 : ((ConfMan.hasKey("music_mute") && ConfMan.getBool("music_mute") && _soundEnabled != 8) ? 0 : 2) | ((ConfMan.hasKey("sfx_mute") && ConfMan.getBool("sfx_mute") && _soundEnabled != 8) ? 0 : 1);
 
-		if (_game.version == 6) {
+		if (_game.version <= 6) {
 			if (!(_soundEnabled & 2))
 				soundVolumeMusic = 0;
 		} else {




More information about the Scummvm-git-logs mailing list