aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README29
-rw-r--r--engines/mohawk/myst_state.cpp16
-rw-r--r--engines/mohawk/riven_saveload.cpp3
3 files changed, 38 insertions, 10 deletions
diff --git a/README b/README
index b89b981d66..700811828d 100644
--- a/README
+++ b/README
@@ -964,6 +964,9 @@ Space: Pause the game
Esc: Skip cutscene
F5: Menu
+Myst will autosave to slot 0 if no save or an autosave is present in
+slot 0.
+
3.17) Nippon Safes Inc. Amiga notes:
----- ------------------------------
@@ -1010,6 +1013,9 @@ F5: Menu
Ctrl-o: Load game
Ctrl-s: Save game
+Riven will autosave to slot 0 if no save or an autosave is present in
+slot 0.
+
3.20) Simon the Sorcerer games notes:
----- -------------------------------
@@ -1985,11 +1991,24 @@ saved games from the old default location, to the new default location.
6.1) Autosaves:
---- ----------
-For some games (namely "Beneath a Steel Sky", "Flight of the Amazon
-Queen", all AGI games, and all SCUMM games), ScummVM will by default
-automatically save the current state every five minutes (adjustable via
-the "autosave_period" config setting). For the AGI and SCUMM engines, it
-will save in Slot 0. For the SCUMM engine, this saved game can then be
+For some games ScummVM will by default automatically save the current state
+every five minutes (adjustable via the "autosave_period" config setting).
+The default autosave slot for many engines is slot 0.
+
+The games/engines listed below have autosave support.
+
+AGI games
+Beneath a Steel Sky
+Bud Tucker in Double Trouble
+COMPOSER games
+Flight of the Amazon Queen
+Myst
+Riven
+SCUMM games
+The Legend of Kyrandia I (slot 999)
+ZVISION games
+
+For the SCUMM engine, this saved game can then be
loaded again via Ctrl-0, or the F5 menu.
diff --git a/engines/mohawk/myst_state.cpp b/engines/mohawk/myst_state.cpp
index efc5025de5..c65ece55d5 100644
--- a/engines/mohawk/myst_state.cpp
+++ b/engines/mohawk/myst_state.cpp
@@ -259,12 +259,19 @@ bool MystGameState::saveMetadata(int slot) {
bool MystGameState::isAutoSaveAllowed() {
// Open autosave slot and see if it an autosave
// Autosaving will be enabled if it is an autosave or if there is no save in that slot
- Common::String filename = buildMetadataFilename(kAutoSaveSlot);
- Common::ScopedPtr<Common::InSaveFile> metadataFile(g_system->getSavefileManager()->openForLoading(filename));
- if (!metadataFile) { // There is no save in the autosave slot, enable autosave
+
+ Common::String dataFilename = buildSaveFilename(kAutoSaveSlot);
+ Common::ScopedPtr<Common::InSaveFile> dataFile(g_system->getSavefileManager()->openForLoading(dataFilename));
+ if (!dataFile) { // Cannot load non-meta file, enable autosave
return true;
}
+ Common::String metaFilename = buildMetadataFilename(kAutoSaveSlot);
+ Common::ScopedPtr<Common::InSaveFile> metadataFile(g_system->getSavefileManager()->openForLoading(metaFilename));
+ if (!metadataFile) { // Can load non-meta file, but not metafile, could be a save from the original, disable autosave
+ return false;
+ }
+
Common::Serializer m(metadataFile.get(), nullptr);
// Read the metadata file
@@ -302,7 +309,8 @@ SaveStateDescriptor MystGameState::querySaveMetaInfos(int slot) {
desc.setSaveDate(metadata.saveYear, metadata.saveMonth, metadata.saveDay);
desc.setSaveTime(metadata.saveHour, metadata.saveMinute);
desc.setPlayTime(metadata.totalPlayTime);
- desc.setDeletableFlag(slot != kAutoSaveSlot);
+ if (metadata.autoSave) // Allow non-saves to be deleted, but not autosaves
+ desc.setDeletableFlag(slot != kAutoSaveSlot);
Graphics::Surface *thumbnail;
if (!Graphics::loadThumbnail(*metadataFile, thumbnail)) {
diff --git a/engines/mohawk/riven_saveload.cpp b/engines/mohawk/riven_saveload.cpp
index 5ba0e51f8c..e8d29a0c24 100644
--- a/engines/mohawk/riven_saveload.cpp
+++ b/engines/mohawk/riven_saveload.cpp
@@ -142,7 +142,8 @@ SaveStateDescriptor RivenSaveLoad::querySaveMetaInfos(const int slot) {
descriptor.setPlayTime(metadata.totalPlayTime);
descriptor.setSaveDate(metadata.saveYear, metadata.saveMonth, metadata.saveDay);
descriptor.setSaveTime(metadata.saveHour, metadata.saveMinute);
- descriptor.setDeletableFlag(slot != kAutoSaveSlot);
+ if (metadata.autoSave) // Allow non-saves to be deleted, but not autosaves
+ descriptor.setDeletableFlag(slot != kAutoSaveSlot);
delete metaStream;