[Scummvm-git-logs] scummvm master -> 2830455a7b84880d5eb1e7d9d7b55e120c9d1ba2

aquadran noreply at scummvm.org
Thu Aug 14 19:47:10 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:
2830455a7b WINTERMUTE: Restore original save/restore float/double in save game.


Commit: 2830455a7b84880d5eb1e7d9d7b55e120c9d1ba2
    https://github.com/scummvm/scummvm/commit/2830455a7b84880d5eb1e7d9d7b55e120c9d1ba2
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-08-14T21:47:04+02:00

Commit Message:
WINTERMUTE: Restore original save/restore float/double in save game.

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


diff --git a/engines/wintermute/base/base_persistence_manager.cpp b/engines/wintermute/base/base_persistence_manager.cpp
index f12f9c5586f..32b2789d30a 100644
--- a/engines/wintermute/base/base_persistence_manager.cpp
+++ b/engines/wintermute/base/base_persistence_manager.cpp
@@ -556,47 +556,51 @@ TimeDate BasePersistenceManager::getTimeDate() {
 }
 
 void BasePersistenceManager::putFloat(float val) {
-	int exponent = 0;
-	float significand = frexp(val, &exponent);
-	Common::String str = Common::String::format("FS%f", significand);
-	putString(str.c_str());
-	_saveStream->writeSint32LE(exponent);
+	if (checkVersion(1, 8, 1)) {
+		_saveStream->writeFloatLE(val);
+	}
 }
 
 float BasePersistenceManager::getFloat() {
-	char *str = getString();
-	float value = 0.0f;
-	float significand = 0.0f;
-	int32 exponent = _loadStream->readSint32LE();
-	int ret = sscanf(str, "FS%f", &significand);
-	value = ldexp(significand, exponent);
-	if (ret != 1) {
-		warning("%s not parsed as float", str);
+	if (checkVersion(1, 8, 1)) {
+		return _loadStream->readFloatLE();
+	} else {
+		char *str = getString();
+		float value = 0.0f;
+		float significand = 0.0f;
+		int32 exponent = _loadStream->readSint32LE();
+		int ret = sscanf(str, "FS%f", &significand);
+		value = ldexp(significand, exponent);
+		if (ret != 1) {
+			warning("%s not parsed as float", str);
+		}
+		delete[] str;
+		return value;
 	}
-	delete[] str;
-	return value;
 }
 
 void BasePersistenceManager::putDouble(double val) {
-	int exponent = 0;
-	double significand = frexp(val, &exponent);
-	Common::String str = Common::String::format("DS%f", significand);
-	putString(str.c_str());
-	_saveStream->writeSint32LE(exponent);
+	if (checkVersion(1, 8, 1)) {
+		_saveStream->writeDoubleLE(val);
+	}
 }
 
 double BasePersistenceManager::getDouble() {
-	char *str = getString();
-	double value = 0.0f;
-	float significand = 0.0f;
-	int32 exponent = _loadStream->readSint32LE();
-	int ret = sscanf(str, "DS%f", &significand);
-	value = ldexp(significand, exponent);
-	if (ret != 1) {
-		warning("%s not parsed as double", str);
-	}
-	delete[] str;
-	return value;
+	if (checkVersion(1, 8, 1)) {
+		return _loadStream->readDoubleLE();
+	} else {
+		char *str = getString();
+		double value = 0.0f;
+		float significand = 0.0f;
+		int32 exponent = _loadStream->readSint32LE();
+		int ret = sscanf(str, "DS%f", &significand);
+		value = ldexp(significand, exponent);
+		if (ret != 1) {
+			warning("%s not parsed as double", str);
+		}
+		delete[] str;
+		return value;
+	}
 }
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/engines/wintermute/dcgf.h b/engines/wintermute/dcgf.h
index d2bd46e1cef..b3d4d13e490 100644
--- a/engines/wintermute/dcgf.h
+++ b/engines/wintermute/dcgf.h
@@ -31,7 +31,7 @@
 
 //////////////////////////////////////////////////////////////////////////
 #define DCGF_VER_MAJOR 1
-#define DCGF_VER_MINOR 7
+#define DCGF_VER_MINOR 8
 #define DCGF_VER_BUILD 1
 #define DCGF_VER_SUFFIX "ScummVM"
 #define DCGF_VER_BETA true




More information about the Scummvm-git-logs mailing list