[Scummvm-git-logs] scummvm master -> bcdc92833b1fe5b5196b0777955ededa763eb1a7

aquadran noreply at scummvm.org
Mon Sep 1 13:39:05 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:
bcdc92833b WINTERMUTE: Initialize variables after resume from save game


Commit: bcdc92833b1fe5b5196b0777955ededa763eb1a7
    https://github.com/scummvm/scummvm/commit/bcdc92833b1fe5b5196b0777955ededa763eb1a7
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-09-01T15:38:59+02:00

Commit Message:
WINTERMUTE: Initialize variables after resume from save game

Changed paths:
    engines/wintermute/ad/ad_game.cpp
    engines/wintermute/ad/ad_scene_geometry.cpp
    engines/wintermute/ad/ad_talk_node.cpp
    engines/wintermute/base/base_region.cpp
    engines/wintermute/base/base_sub_frame.cpp
    engines/wintermute/base/font/base_font_truetype.cpp
    engines/wintermute/base/gfx/3dloader_3ds.cpp
    engines/wintermute/base/particles/part_particle.cpp
    engines/wintermute/base/scriptables/script_engine.cpp


diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index ac8b4ff58f3..05da76078e4 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -1559,6 +1559,11 @@ bool AdGame::persist(BasePersistenceManager *persistMgr) {
 
 	persistMgr->transferCharPtr(TMEMBER(_startupScene));
 
+	// TODO: update at next save version bump
+	//persistMgr->transferSint32(TMEMBER_INT(_videoSkipButton));
+	if (!persistMgr->getIsSaving()) {
+		_videoSkipButton = VIDEO_SKIP_LEFT;
+	}
 
 	return STATUS_OK;
 }
diff --git a/engines/wintermute/ad/ad_scene_geometry.cpp b/engines/wintermute/ad/ad_scene_geometry.cpp
index 41f4bdf6c5f..787c2f06797 100644
--- a/engines/wintermute/ad/ad_scene_geometry.cpp
+++ b/engines/wintermute/ad/ad_scene_geometry.cpp
@@ -1375,6 +1375,20 @@ bool AdSceneGeometry::persist(BasePersistenceManager *persistMgr) {
 		_maxLightsWarning = false;
 	}
 
+	// initialise to defaults
+	if (!persistMgr->getIsSaving()) {
+		memset(&_drawingViewport, 0, sizeof(DXViewport));
+
+		DXMatrixIdentity(&_lastWorldMat);
+		DXMatrixIdentity(&_lastViewMat);
+		DXMatrixIdentity(&_lastProjMat);
+
+		_lastOffsetX = _lastOffsetY = 0;
+		_lastScrollX = _lastScrollY = 0;
+
+		_PFAlternateDist = FLT_MAX; // this is not stored in original, lets restore to default
+	}
+
 	return true;
 }
 
diff --git a/engines/wintermute/ad/ad_talk_node.cpp b/engines/wintermute/ad/ad_talk_node.cpp
index 281a26f5182..5d07ebfe6e5 100644
--- a/engines/wintermute/ad/ad_talk_node.cpp
+++ b/engines/wintermute/ad/ad_talk_node.cpp
@@ -200,6 +200,11 @@ bool AdTalkNode::persist(BasePersistenceManager *persistMgr) {
 	persistMgr->transferPtr(TMEMBER_PTR(_spriteSet));
 	persistMgr->transferCharPtr(TMEMBER(_spriteSetFilename));
 
+	// initialise to default
+	if (!persistMgr->getIsSaving()) {
+		_preCache = false;
+	}
+
 	return STATUS_OK;
 }
 
diff --git a/engines/wintermute/base/base_region.cpp b/engines/wintermute/base/base_region.cpp
index 6f122e93512..1e67474a9e7 100644
--- a/engines/wintermute/base/base_region.cpp
+++ b/engines/wintermute/base/base_region.cpp
@@ -439,6 +439,11 @@ bool BaseRegion::persist(BasePersistenceManager *persistMgr) {
 	persistMgr->transferSint32(TMEMBER(_lastMimicY));
 	_points.persist(persistMgr);
 
+	// initialise to default
+	if (!persistMgr->getIsSaving()) {
+		BasePlatform::setRectEmpty(&_rect);
+	}
+
 	return STATUS_OK;
 }
 
diff --git a/engines/wintermute/base/base_sub_frame.cpp b/engines/wintermute/base/base_sub_frame.cpp
index 0a133f09e40..e1911bf7652 100644
--- a/engines/wintermute/base/base_sub_frame.cpp
+++ b/engines/wintermute/base/base_sub_frame.cpp
@@ -400,6 +400,11 @@ bool BaseSubFrame::persist(BasePersistenceManager *persistMgr) {
 	persistMgr->transferBool(TMEMBER(_mirrorY));
 	persistMgr->transferUint32(TMEMBER(_transparent));
 
+	// initialise to default
+	if (!persistMgr->getIsSaving()) {
+		_surface = nullptr;
+	}
+
 	return STATUS_OK;
 }
 
diff --git a/engines/wintermute/base/font/base_font_truetype.cpp b/engines/wintermute/base/font/base_font_truetype.cpp
index 80af9b9c301..80254f31c42 100644
--- a/engines/wintermute/base/font/base_font_truetype.cpp
+++ b/engines/wintermute/base/font/base_font_truetype.cpp
@@ -522,7 +522,13 @@ bool BaseFontTT::persist(BasePersistenceManager *persistMgr) {
 		for (int i = 0; i < NUM_CACHED_TEXTS; i++) {
 			_cachedTexts[i] = nullptr;
 		}
+	}
+
+	// initialise to defaults
+	if (!persistMgr->getIsSaving()) {
 		_fallbackFont = _font = _deletableFont = nullptr;
+		_lineHeight = 0;
+		_maxCharWidth = _maxCharHeight = 0;
 	}
 
 	return STATUS_OK;
diff --git a/engines/wintermute/base/gfx/3dloader_3ds.cpp b/engines/wintermute/base/gfx/3dloader_3ds.cpp
index fe72215c75c..03a34218b03 100644
--- a/engines/wintermute/base/gfx/3dloader_3ds.cpp
+++ b/engines/wintermute/base/gfx/3dloader_3ds.cpp
@@ -84,10 +84,13 @@ Loader3DS::FileObject3DS::FileObject3DS() {
 	_lightColor = 0;
 	_lightHotspot = false;
 	_lightFalloff = false;
+	_lightTarget._x = _lightTarget._y = _lightTarget._z = 0.0f;
+	_lightPos._x = _lightPos._y = _lightPos._z = 0.0f;
 
 	_cameraBank = 0;
 	_cameraLens = 0;
 	_cameraFOV = 0;
+	_cameraPos._x = _cameraPos._y = _cameraPos._z = 0.0f;
 
 	_hidden = false;
 }
diff --git a/engines/wintermute/base/particles/part_particle.cpp b/engines/wintermute/base/particles/part_particle.cpp
index 04f9b8477de..4eac02e1532 100644
--- a/engines/wintermute/base/particles/part_particle.cpp
+++ b/engines/wintermute/base/particles/part_particle.cpp
@@ -265,6 +265,11 @@ bool PartParticle::persist(BasePersistenceManager *persistMgr) {
 		filename = nullptr;
 	}
 
+	// initialise to default
+	if (!persistMgr->getIsSaving()) {
+		_fadeStartAlpha = 0;
+	}
+
 	return STATUS_OK;
 }
 
diff --git a/engines/wintermute/base/scriptables/script_engine.cpp b/engines/wintermute/base/scriptables/script_engine.cpp
index 59950c28e0c..0ec291036ed 100644
--- a/engines/wintermute/base/scriptables/script_engine.cpp
+++ b/engines/wintermute/base/scriptables/script_engine.cpp
@@ -527,6 +527,12 @@ bool ScEngine::persist(BasePersistenceManager *persistMgr) {
 	persistMgr->transferPtr(TMEMBER_PTR(_globals));
 	_scripts.persist(persistMgr);
 
+	// initialise to defaults
+	if (!persistMgr->getIsSaving()) {
+		_isProfiling = false;
+		_profilingStartTime = 0;
+	}
+
 	return STATUS_OK;
 }
 




More information about the Scummvm-git-logs mailing list