[Scummvm-git-logs] scummvm master -> 939fc657b431147699efadf7becc44756ba82b17

aquadran noreply at scummvm.org
Sun May 25 14:57:34 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
939fc657b4 WINTERMUTE: Bump save version for 3d support and handle save game version for 3d games


Commit: 939fc657b431147699efadf7becc44756ba82b17
    https://github.com/scummvm/scummvm/commit/939fc657b431147699efadf7becc44756ba82b17
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-05-25T16:57:29+02:00

Commit Message:
WINTERMUTE: Bump save version for 3d support and handle save game version for 3d games

Changed paths:
    engines/wintermute/base/base_persistence_manager.cpp
    engines/wintermute/dcgf.h
    engines/wintermute/wintermute.cpp


diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp
index c0ac1ef7d78..d9be0d50162 100644
--- a/engines/wintermute/base/base_persistence_manager.cpp
+++ b/engines/wintermute/base/base_persistence_manager.cpp
@@ -151,6 +151,11 @@ void BasePersistenceManager::getSaveStateDesc(int slot, SaveStateDescriptor &des
 		debugC(kWintermuteDebugSaveGame, "getSavedDesc(%d) - Failed for %s", slot, filename.c_str());
 		return;
 	}
+	if (BaseEngine::instance().getFlags() & GF_3D) {
+		if (_savedVerMajor == 1 && _savedVerMinor < 5) {
+			return;
+		}
+	}
 	desc.setSaveSlot(slot);
 	desc.setDescription(_savedDescription);
 	desc.setDeletableFlag(true);
@@ -207,6 +212,11 @@ bool BasePersistenceManager::getSaveExists(int slot) {
 	if (DID_FAIL(readHeader(filename))) {
 		return false;
 	}
+	if (BaseEngine::instance().getFlags() & GF_3D) {
+		if (_savedVerMajor == 1 && _savedVerMinor < 5) {
+			return false;
+		}
+	}
 	return true;
 }
 
@@ -383,6 +393,14 @@ bool BasePersistenceManager::initLoad(const Common::String &filename) {
 		return STATUS_FAILED;
 	}
 
+	if (BaseEngine::instance().getFlags() & GF_3D) {
+		if (_savedVerMajor == 1 && _savedVerMinor < 5) {
+			debugC(kWintermuteDebugSaveGame, "ERROR: Saved game version is too old for 3D game");
+			cleanup();
+			return STATUS_FAILED;
+		}
+	}
+
 	// if save is newer version than we are, fail
 	if (_savedVerMajor >  DCGF_VER_MAJOR ||
 	        (_savedVerMajor == DCGF_VER_MAJOR && _savedVerMinor >  DCGF_VER_MINOR) ||
diff --git a/engines/wintermute/dcgf.h b/engines/wintermute/dcgf.h
index 2455be5ee51..92120bb055c 100644
--- a/engines/wintermute/dcgf.h
+++ b/engines/wintermute/dcgf.h
@@ -31,7 +31,7 @@
 
 //////////////////////////////////////////////////////////////////////////
 #define DCGF_VER_MAJOR 1
-#define DCGF_VER_MINOR 4
+#define DCGF_VER_MINOR 5
 #define DCGF_VER_BUILD 1
 #define DCGF_VER_SUFFIX "ScummVM"
 #define DCGF_VER_BETA true
diff --git a/engines/wintermute/wintermute.cpp b/engines/wintermute/wintermute.cpp
index d7aa2e4a56f..aa239d09ecd 100644
--- a/engines/wintermute/wintermute.cpp
+++ b/engines/wintermute/wintermute.cpp
@@ -264,7 +264,12 @@ int WintermuteEngine::init() {
 
 	if (ConfMan.hasKey("save_slot")) {
 		int slot = ConfMan.getInt("save_slot");
-		_game->loadGame(slot);
+		if (!_game->loadGame(slot)) {
+			_game->LOG(ret, "Error loading save game file.");
+			delete _game;
+			_game = nullptr;
+			return 2;
+		}
 	}
 
 	_game->_scEngine->attachMonitor(_dbgController);




More information about the Scummvm-git-logs mailing list