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

sev- sev at scummvm.org
Thu Jul 15 23:19:21 UTC 2021


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

Summary:
0fcb6aa3e5 METAENGINE: Add optional offset parameter for extended saves
71443dbc7f SAGA2: Properly write offset to the extened save header
b8c8432a46 SAGA2: Use conventional save names


Commit: 0fcb6aa3e57122994318da1482ac9358e1ec8edc
    https://github.com/scummvm/scummvm/commit/0fcb6aa3e57122994318da1482ac9358e1ec8edc
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2021-07-16T01:18:56+02:00

Commit Message:
METAENGINE: Add optional offset parameter for extended saves

Changed paths:
    engines/metaengine.cpp
    engines/metaengine.h


diff --git a/engines/metaengine.cpp b/engines/metaengine.cpp
index d9cf5898bb..1d7e02d049 100644
--- a/engines/metaengine.cpp
+++ b/engines/metaengine.cpp
@@ -176,10 +176,10 @@ void MetaEngine::appendExtendedSave(Common::OutSaveFile *saveFile, uint32 playti
 }
 
 void MetaEngine::appendExtendedSaveToStream(Common::WriteStream *saveFile, uint32 playtime,
-		Common::String desc, bool isAutosave) {
+		Common::String desc, bool isAutosave, uint32 posoffset) {
 	ExtendedSavegameHeader header;
 
-	uint headerPos = saveFile->pos();
+	uint headerPos = saveFile->pos() + posoffset;
 
 	strcpy(header.id, "SVMCR");
 	header.version = EXTENDED_SAVE_VERSION;
diff --git a/engines/metaengine.h b/engines/metaengine.h
index b79ddf3eec..8e7635b3f1 100644
--- a/engines/metaengine.h
+++ b/engines/metaengine.h
@@ -527,7 +527,7 @@ public:
 	/**
 	 * Write the extended savegame header to the given WriteStream.
 	 */
-	void appendExtendedSaveToStream(Common::WriteStream *saveFile, uint32 playtime, Common::String desc, bool isAutosave);
+	void appendExtendedSaveToStream(Common::WriteStream *saveFile, uint32 playtime, Common::String desc, bool isAutosave, uint32 offset = 0);
 
 	/**
 	 * Parse the extended savegame header to retrieve the SaveStateDescriptor information.


Commit: 71443dbc7f9d512bdbf56d93bc61ad9d1cc314e2
    https://github.com/scummvm/scummvm/commit/71443dbc7f9d512bdbf56d93bc61ad9d1cc314e2
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2021-07-16T01:18:56+02:00

Commit Message:
SAGA2: Properly write offset to the extened save header

Changed paths:
    engines/saga2/saga2.cpp


diff --git a/engines/saga2/saga2.cpp b/engines/saga2/saga2.cpp
index 78d6ff6633..021356850b 100644
--- a/engines/saga2/saga2.cpp
+++ b/engines/saga2/saga2.cpp
@@ -140,7 +140,9 @@ Common::Error Saga2Engine::saveGameState(int slot, const Common::String &desc, b
 
 	outS->write("SCVM", 4);
 	CHUNK_BEGIN;
-	getMetaEngine()->appendExtendedSaveToStream(out, g_vm->getTotalPlayTime() / 1000, desc, false);
+	uint32 pos = outS->pos() + 4;
+
+	getMetaEngine()->appendExtendedSaveToStream(out, g_vm->getTotalPlayTime() / 1000, desc, false, pos);
 	CHUNK_END;
 
 	outS->finalize();


Commit: b8c8432a4660c301594929fc6e2dc0d5eec1b37a
    https://github.com/scummvm/scummvm/commit/b8c8432a4660c301594929fc6e2dc0d5eec1b37a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2021-07-16T01:18:56+02:00

Commit Message:
SAGA2: Use conventional save names

Changed paths:
    engines/saga2/metaengine.cpp
    engines/saga2/saga2.cpp
    engines/saga2/saga2.h
    engines/saga2/saveload.cpp
    engines/saga2/saveload.h
    engines/saga2/uidialog.cpp


diff --git a/engines/saga2/metaengine.cpp b/engines/saga2/metaengine.cpp
index e033b10898..86ec894526 100644
--- a/engines/saga2/metaengine.cpp
+++ b/engines/saga2/metaengine.cpp
@@ -31,7 +31,6 @@ public:
 
 	Common::Error createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const override;
 	bool hasFeature(MetaEngineFeature f) const override;
-	Common::String getSavegameFile(int saveGameIdx, const char *target) const override;
 };
 
 bool Saga2MetaEngine::hasFeature(MetaEngineFeature f) const {
@@ -51,16 +50,6 @@ Common::Error Saga2MetaEngine::createInstance(OSystem *syst, Engine **engine, co
 	return Common::kNoError;
 }
 
-Common::String Saga2MetaEngine::getSavegameFile(int saveGameIdx, const char *target) const {
-	if (saveGameIdx == kSavegameFilePattern) {
-		// Pattern requested
-		return Common::String::format("###.SAV");
-	} else {
-		// Specific filename requested
-		return Common::String::format("%3.3d.SAV", saveGameIdx);
-	}
-}
-
 #if PLUGIN_ENABLED_DYNAMIC(SAGA2)
 REGISTER_PLUGIN_DYNAMIC(SAGA2, PLUGIN_TYPE_ENGINE, Saga2MetaEngine);
 #else
diff --git a/engines/saga2/saga2.cpp b/engines/saga2/saga2.cpp
index 021356850b..6f1a8fbcc0 100644
--- a/engines/saga2/saga2.cpp
+++ b/engines/saga2/saga2.cpp
@@ -129,10 +129,14 @@ Common::Error Saga2Engine::saveGameStream(Common::WriteStream *stream, bool isAu
 	return Common::kNoError;
 }
 
+Common::String Saga2Engine::getSavegameFile(int slot) {
+	return getMetaEngine()->getSavegameFile(slot, _targetName.c_str());
+}
+
 Common::Error Saga2Engine::saveGameState(int slot, const Common::String &desc, bool isAutosave) {
 	pauseTimer();
 
-	Common::OutSaveFile *outS = getSaveFileManager()->openForSaving(getSaveFileName(slot), false);
+	Common::OutSaveFile *outS = getSaveFileManager()->openForSaving(getSavegameFile(slot), false);
 	if (!outS)
 		return Common::kCreatingFileFailed;
 
diff --git a/engines/saga2/saga2.h b/engines/saga2/saga2.h
index cc42b8ee7e..1201191b91 100644
--- a/engines/saga2/saga2.h
+++ b/engines/saga2/saga2.h
@@ -91,6 +91,9 @@ public:
 	Common::Error saveGameStream(Common::WriteStream *stream, bool isAutosave = false) override;
 	Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave) override;
 	Common::Error loadGameState(int slot) override;
+
+	Common::String getSavegameFile(int num);
+
 	void syncGameStream(Common::Serializer &s);
 
 	void loadExeResources();
diff --git a/engines/saga2/saveload.cpp b/engines/saga2/saveload.cpp
index ad1872a417..e55954e19a 100644
--- a/engines/saga2/saveload.cpp
+++ b/engines/saga2/saveload.cpp
@@ -67,10 +67,6 @@ void SaveFileHeader::write(Common::OutSaveFile *out) {
 	debugC(1, kDebugSaveload, "Writing game header: gameID = %s, saveName = %s", tag2str(gameID), saveName.c_str());
 }
 
-Common::String getSaveFileName(int16 saveNo) {
-	return Common::String::format("%3.3d.SAV", saveNo);
-}
-
 /* ===================================================================== *
    Functions
  * ===================================================================== */
@@ -264,7 +260,7 @@ void loadSavedGameState(int16 saveNo) {
 
 	pauseTimer();
 
-	Common::InSaveFile *in = g_vm->getSaveFileManager()->openForLoading(getSaveFileName(saveNo));
+	Common::InSaveFile *in = g_vm->getSaveFileManager()->openForLoading(g_vm->getSavegameFile(saveNo));
 
 	ChunkID         id;
 	int32           chunkSize;
@@ -561,7 +557,7 @@ void cleanupGameState(void) {
 void checkRestartGame(const char *exeName) {
 #if 0
 	char saveRestart[260];
-	getSaveFileName(999, saveRestart);
+	g_vm->getSavegameFile(999, saveRestart);
 	if (!fileExists(saveRestart) ||
 	        (getFileDate(exeName) > getFileDate(saveRestart)))
 		saveGameState(999, saveRestart);
diff --git a/engines/saga2/saveload.h b/engines/saga2/saveload.h
index ea6bec28e5..0c65ab3bb0 100644
--- a/engines/saga2/saveload.h
+++ b/engines/saga2/saveload.h
@@ -71,8 +71,6 @@ void cleanupGameState(void);
 
 void checkRestartGame(const char *exeName);
 void loadRestartGame(void);
-void getSaveFileName(int16 saveNo, char *fileName);
-Common::String getSaveFileName(int16 saveNo);
 
 } // end of namespace Saga2
 
diff --git a/engines/saga2/uidialog.cpp b/engines/saga2/uidialog.cpp
index 9365909ec0..ac8238ff38 100644
--- a/engines/saga2/uidialog.cpp
+++ b/engines/saga2/uidialog.cpp
@@ -84,13 +84,6 @@ extern BackWindow       *mainWindow;
 extern audioInterface   *audio;
 extern bool fullInitialized;
 
-/* ===================================================================== *
-   External functions
- * ===================================================================== */
-
-void getSaveFileName(int16 saveNo, char *fileName);
-
-
 /* ===================================================================== *
    Dialog Controls
  * ===================================================================== */
@@ -620,10 +613,11 @@ void destroyFileFields(char **strings) {
 }
 
 bool getSaveName(int8 saveNo, SaveFileHeader &header) {
-	Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(getSaveFileName(saveNo));
+	Common::String fname = g_vm->getSavegameFile(saveNo);
+	Common::InSaveFile *in = g_system->getSavefileManager()->openForLoading(fname);
 
 	if (!in) {
-		debugC(1, kDebugSaveload, "Unable to load save %d (%s)", saveNo, getSaveFileName(saveNo).c_str());
+		debugC(1, kDebugSaveload, "Unable to load save %d (%s)", saveNo, fname.c_str());
 		return false;
 	}
 




More information about the Scummvm-git-logs mailing list