aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorFilippos Karapetis2014-10-29 11:19:15 +0200
committerFilippos Karapetis2014-10-29 11:23:59 +0200
commit40b224fc74337315dd485a7e8cdbf19bd37dc941 (patch)
tree14f326b0da54e509075d4e81c8995e1cf3dc2d9f /engines/scumm
parent5c91173337278d1d23d03efbeb4e6b6debba0d6d (diff)
downloadscummvm-rg350-40b224fc74337315dd485a7e8cdbf19bd37dc941.tar.gz
scummvm-rg350-40b224fc74337315dd485a7e8cdbf19bd37dc941.tar.bz2
scummvm-rg350-40b224fc74337315dd485a7e8cdbf19bd37dc941.zip
SCUMM: Disallow saving while a room 'prequel' is shown in v0-v3 games
These are cases where the screen is completely blank, showing text. In such cases, no room is set, thus no room resources are available. An example is the screen shown after the credits in the Zak FM-TOWNS intro ("The next day..."). Thanks to segrax for finding this case. This commit is based off pull request 522, but completely disallows saving in such scenes, instead of adding explicit checks for them
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/saveload.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/engines/scumm/saveload.cpp b/engines/scumm/saveload.cpp
index 7eadb042fb..0c0f6be73b 100644
--- a/engines/scumm/saveload.cpp
+++ b/engines/scumm/saveload.cpp
@@ -109,7 +109,12 @@ Common::Error ScummEngine::saveGameState(int slot, const Common::String &desc) {
}
bool ScummEngine::canSaveGameStateCurrently() {
- // FIXME: For now always allow loading in V0-V3 games
+ // Disallow saving in v0-v3 games when a 'prequel' to a cutscene is shown.
+ // This is a blank screen with text, and while this is shown, saving should
+ // be disabled, as no room is set.
+ if (_game.version <= 3 && _currentScript == 0xFF && _roomResource == 0 && _currentRoom == 0)
+ return false;
+
// TODO: Should we disallow saving in some more places,
// e.g. when a SAN movie is playing? Not sure whether the
// original EXE allowed this.