aboutsummaryrefslogtreecommitdiff
path: root/scummvm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scummvm.cpp')
-rw-r--r--scummvm.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/scummvm.cpp b/scummvm.cpp
index 94aaa3a773..a7affcfe90 100644
--- a/scummvm.cpp
+++ b/scummvm.cpp
@@ -276,13 +276,16 @@ int Scumm::scummLoop(int delta)
if (_saveLoadFlag) {
if (_saveLoadFlag == 1) {
saveState(_saveLoadSlot, _saveLoadCompatible);
- if (_saveLoadCompatible)
+ // Ender: Disabled for small_header games, as
+ // can overwrite game variables (eg, Zak256 cashcards)
+ if (_saveLoadCompatible && !(features & GF_SMALL_HEADER)
_vars[VAR_GAME_LOADED] = 201;
} else {
loadState(_saveLoadSlot, _saveLoadCompatible);
- if (_saveLoadCompatible) {
+ // Ender: Disabled for small_header games, as
+ // can overwrite game variables (eg, Zak256 cashcards)
+ if (_saveLoadCompatible && !(features & GF_SMALL_HEADER))
_vars[VAR_GAME_LOADED] = 203;
- }
}
_saveLoadFlag = 0;
}
@@ -404,7 +407,9 @@ void Scumm::startScene(int room, Actor * a, int objectNr)
}
}
- _vars[VAR_NEW_ROOM] = room;
+ if (!(features & GF_SMALL_HEADER)) // Disable for SH games. Overwrites
+ _vars[VAR_NEW_ROOM] = room; // gamevars, eg Zak cashcards
+
runExitScript();
killScriptsAndResources();
clearEnqueue();