From 40b224fc74337315dd485a7e8cdbf19bd37dc941 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Wed, 29 Oct 2014 11:19:15 +0200 Subject: 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 --- engines/scumm/saveload.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'engines/scumm') 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. -- cgit v1.2.3