[Scummvm-git-logs] scummvm master -> 0ca9b1188b6a7848913fa3e08477a7d84403462a

sluicebox noreply at scummvm.org
Wed Mar 9 21:24:11 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:
0ca9b1188b SCI: Saving from GMM now works on more Mac games


Commit: 0ca9b1188b6a7848913fa3e08477a7d84403462a
    https://github.com/scummvm/scummvm/commit/0ca9b1188b6a7848913fa3e08477a7d84403462a
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-03-09T16:23:26-05:00

Commit Message:
SCI: Saving from GMM now works on more Mac games

Changed paths:
    engines/sci/engine/guest_additions.cpp
    engines/sci/engine/vm.h


diff --git a/engines/sci/engine/guest_additions.cpp b/engines/sci/engine/guest_additions.cpp
index f5b9083093f..1225801b35e 100644
--- a/engines/sci/engine/guest_additions.cpp
+++ b/engines/sci/engine/guest_additions.cpp
@@ -170,11 +170,16 @@ static Common::String getUserObject(SciGameId gameId) {
 
 bool GuestAdditions::userHasControl() {
 	const SciGameId gameId = g_sci->getGameId();
-	const reg_t user = _segMan->findObjectByName(getUserObject(gameId));
-	const Object *userObject = _segMan->getObject(user);
-	if (userObject == nullptr) {
+	reg_t user = _segMan->findObjectByName(getUserObject(gameId));
+	if (user.isNull()) {
+		// If the user object can't be found by name then try the object in
+		// global 80, as that's the usual location.
 		// Several Mac games like QFG1VGA don't contain object names, and some
 		// third party localizations like SQ1VGA Russian altered object names.
+		user = _state->variables[VAR_GLOBAL][kGlobalVarUser];
+	}
+	const Object *userObject = _segMan->getObject(user);
+	if (userObject == nullptr) {
 		warning("User object not found");
 		return false;
 	}
@@ -825,7 +830,7 @@ bool GuestAdditions::restoreFromLauncher() const {
 			// a handsOff sequence breaks the prompt and crashes the next room.
 			// We enable input by calling p2User:canInput(1).
 			reg_t canInputParams[] = { TRUE_REG };
-			invokeSelector(_state->variables[VAR_GLOBAL][kGlobalVarPhant2User], SELECTOR(canInput), 1, canInputParams);
+			invokeSelector(_state->variables[VAR_GLOBAL][kGlobalVarUser], SELECTOR(canInput), 1, canInputParams);
 
 			writeSelectorValue(_segMan, g_sci->getGameObject(), SELECTOR(num), _state->_delayedRestoreGameId - kSaveIdShift);
 			invokeSelector(g_sci->getGameObject(), SELECTOR(reallyRestore));
diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h
index a0f867d5dad..6faeed2f937 100644
--- a/engines/sci/engine/vm.h
+++ b/engines/sci/engine/vm.h
@@ -151,7 +151,7 @@ enum GlobalVar {
 	kGlobalVarVersion        = 27,
 	kGlobalVarGK2MusicVolume = 76, // 0 to 127
 	kGlobalVarPhant2SecondaryVolume = 76, // 0 to 127
-	kGlobalVarPhant2User           = 80,
+	kGlobalVarUser                 = 80,
 	kGlobalVarFastCast             = 84, // SCI16
 	kGlobalVarMessageType          = 90,
 	kGlobalVarTextSpeed            = 94, // SCI32; 0 is fastest, 8 is slowest




More information about the Scummvm-git-logs mailing list