[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