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

a-yyg 76591232+a-yyg at users.noreply.github.com
Thu Jul 15 11:06:57 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:
2625fafbc5 SAGA2: Make Timers/Alarms/Threads save size portable
2d20a99a33 SAGA2: Fix original PlayerActor save/loading
e2d7bbe279 SAGA2: Make ActiveItemStates save size portable


Commit: 2625fafbc543eca3fb5cd51b00c765547a02bad8
    https://github.com/scummvm/scummvm/commit/2625fafbc543eca3fb5cd51b00c765547a02bad8
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-15T20:04:34+09:00

Commit Message:
SAGA2: Make Timers/Alarms/Threads save size portable

Changed paths:
    engines/saga2/calender.cpp
    engines/saga2/calender.h
    engines/saga2/fta.h
    engines/saga2/interp.cpp
    engines/saga2/script.h
    engines/saga2/timers.cpp
    engines/saga2/timers.h


diff --git a/engines/saga2/calender.cpp b/engines/saga2/calender.cpp
index 0af6b40968..e88204a194 100644
--- a/engines/saga2/calender.cpp
+++ b/engines/saga2/calender.cpp
@@ -172,7 +172,7 @@ int CalenderTime::lightLevel(int maxLevel) {
    FrameAlarm member functions
  * ===================================================================== */
 
-void FrameAlarm::write(Common::OutSaveFile *out) {
+void FrameAlarm::write(Common::MemoryWriteStreamDynamic *out) {
 	out->writeUint16LE(baseFrame);
 	out->writeUint16LE(duration);
 }
diff --git a/engines/saga2/calender.h b/engines/saga2/calender.h
index da0dd001af..a7f565e560 100644
--- a/engines/saga2/calender.h
+++ b/engines/saga2/calender.h
@@ -81,7 +81,7 @@ public:
 	bool check(void);
 	uint16 elapsed(void);
 
-	void write(Common::OutSaveFile *out);
+	void write(Common::MemoryWriteStreamDynamic *out);
 	void read(Common::InSaveFile *in);
 };
 
diff --git a/engines/saga2/fta.h b/engines/saga2/fta.h
index 473ab9a891..b2090ddecb 100644
--- a/engines/saga2/fta.h
+++ b/engines/saga2/fta.h
@@ -142,7 +142,7 @@ public:
 	bool check(void);
 	uint32 elapsed(void);                    // time elapsed since alarm set
 
-	void write(Common::OutSaveFile *out);
+	void write(Common::MemoryWriteStreamDynamic *out);
 	void read(Common::InSaveFile *in);
 };
 
diff --git a/engines/saga2/interp.cpp b/engines/saga2/interp.cpp
index 4db64539ff..37c144104e 100644
--- a/engines/saga2/interp.cpp
+++ b/engines/saga2/interp.cpp
@@ -33,6 +33,7 @@
 #include "saga2/tile.h"
 #include "saga2/mission.h"
 #include "saga2/hresmgr.h"
+#include "saga2/saveload.h"
 
 namespace Saga2 {
 
@@ -1159,7 +1160,7 @@ public:
 	//  in an archive buffer
 	int32 archiveSize(void);
 
-	void write(Common::OutSaveFile *out);
+	void write(Common::MemoryWriteStreamDynamic *out);
 
 	//  Cleanup the active threads
 	void cleanup(void);
@@ -1221,7 +1222,7 @@ int32 ThreadList::archiveSize(void) {
 	return size;
 }
 
-void ThreadList::write(Common::OutSaveFile *out) {
+void ThreadList::write(Common::MemoryWriteStreamDynamic *out) {
 	int16 threadCount = 0;
 	Thread *th;
 
@@ -1326,16 +1327,13 @@ void initSAGAThreads(void) {
 	//  Simply call the Thread List default constructor
 }
 
-void saveSAGAThreads(Common::OutSaveFile *out) {
+void saveSAGAThreads(Common::OutSaveFile *outS) {
 	debugC(2, kDebugSaveload, "Saving SAGA Threads");
 
-	int32   archiveBufSize;
-
-	archiveBufSize = threadList.archiveSize();
-
-	out->write("SAGA", 4);
-	out->writeUint32LE(archiveBufSize);
+	outS->write("SAGA", 4);
+	CHUNK_BEGIN;
 	threadList.write(out);
+	CHUNK_END;
 }
 
 void loadSAGAThreads(Common::InSaveFile *in, int32 chunkSize) {
@@ -1477,7 +1475,7 @@ int32 Thread::archiveSize(void) {
 	            + (stackBase + stackSize) - stackPtr;
 }
 
-void Thread::write(Common::OutSaveFile *out) {
+void Thread::write(Common::MemoryWriteStreamDynamic *out) {
 	int16   stackOffset;
 
 	out->writeUint16LE(programCounter.segment);
diff --git a/engines/saga2/script.h b/engines/saga2/script.h
index 3eeb80e008..20adc9b64d 100644
--- a/engines/saga2/script.h
+++ b/engines/saga2/script.h
@@ -139,7 +139,7 @@ class Thread;
 //  Initialize the SAGA thread list
 void initSAGAThreads(void);
 
-void saveSAGAThreads(Common::OutSaveFile *out);
+void saveSAGAThreads(Common::OutSaveFile *outS);
 void loadSAGAThreads(Common::InSaveFile *in, int32 chunkSize);
 
 //  Dispose of the active SAGA threads
@@ -254,7 +254,7 @@ public:
 	//  Create an archive of this thread in an archive buffer
 	void *archive(void *buf);
 
-	void write(Common::OutSaveFile *out);
+	void write(Common::MemoryWriteStreamDynamic *out);
 
 	//  Dispatch all asynchronous threads
 	static void dispatch(void);
diff --git a/engines/saga2/timers.cpp b/engines/saga2/timers.cpp
index 614f4442d3..a482a3e881 100644
--- a/engines/saga2/timers.cpp
+++ b/engines/saga2/timers.cpp
@@ -30,6 +30,7 @@
 #include "saga2/fta.h"
 #include "saga2/timers.h"
 #include "saga2/objects.h"
+#include "saga2/saveload.h"
 
 namespace Saga2 {
 
@@ -79,7 +80,7 @@ void loadTimer(Common::InSaveFile *in) {
    Alarms
  * ====================================================================== */
 
-void Alarm::write(Common::OutSaveFile *out) {
+void Alarm::write(Common::MemoryWriteStreamDynamic *out) {
 	out->writeUint32LE(basetime);
 	out->writeUint32LE(duration);
 }
@@ -170,35 +171,23 @@ static int getTimerID(Timer *t) {
 	return -1;
 }
 
-void saveTimers(Common::OutSaveFile *out) {
+void saveTimers(Common::OutSaveFile *outS) {
 	debugC(2, kDebugSaveload, "Saving Timers");
 
 	int16 timerListCount = 0,
 	      timerCount = 0;
 
-	int32 archiveBufSize = 0;
-
-	//  Add the sizes of the timer list count an timer count
-	archiveBufSize += sizeof(timerListCount) + sizeof(timerCount);
-
 	//  Tally the timer lists
 	timerListCount = g_vm->_timerLists.size();
 
-	//  Add the total archive size of all of the timer lists
-	archiveBufSize += timerListCount * TimerList::archiveSize();
-
 	//  Tally the timers
 	timerCount = g_vm->_timers.size();
 
 	debugC(3, kDebugSaveload, "... timerListCount = %d", timerListCount);
 	debugC(3, kDebugSaveload, "... timerCount = %d", timerCount);
 
-	//  Add the total archive size of all of the timers
-	archiveBufSize += timerCount * Timer::archiveSize();
-
-	out->write("TIMR", 4);
-	out->writeUint32LE(archiveBufSize);
-
+	outS->write("TIMR", 4);
+	CHUNK_BEGIN;
 	//  Store the timer list count and timer count
 	out->writeSint16LE(timerListCount);
 	out->writeSint16LE(timerCount);
@@ -216,6 +205,7 @@ void saveTimers(Common::OutSaveFile *out) {
 
 		(*it)->write(out);
 	}
+	CHUNK_END;
 }
 
 void loadTimers(Common::InSaveFile *in) {
@@ -299,7 +289,7 @@ TimerList::~TimerList() {
 	g_vm->_timerLists.remove(this);
 }
 
-void TimerList::write(Common::OutSaveFile *out) {
+void TimerList::write(Common::MemoryWriteStreamDynamic *out) {
 	//  Store the object's ID
 	out->writeUint16LE(_obj->thisID());
 }
@@ -345,7 +335,7 @@ int32 Timer::archiveSize(void) {
 	            +   sizeof(FrameAlarm);
 }
 
-void Timer::write(Common::OutSaveFile *out) {
+void Timer::write(Common::MemoryWriteStreamDynamic *out) {
 	//  Store the obj's ID
 	out->writeUint16LE(_obj->thisID());
 
diff --git a/engines/saga2/timers.h b/engines/saga2/timers.h
index 18d95cac97..dac3c747ea 100644
--- a/engines/saga2/timers.h
+++ b/engines/saga2/timers.h
@@ -46,7 +46,7 @@ void checkTimers(void);
 
 //  Initialize the Timers
 void initTimers(void);
-void saveTimers(Common::OutSaveFile *out);
+void saveTimers(Common::OutSaveFile *outS);
 void loadTimers(Common::InSaveFile *in);
 //  Cleanup the active Timers
 void cleanupTimers(void);
@@ -72,7 +72,7 @@ public:
 		return sizeof(ObjectID);
 	}
 
-	void write(Common::OutSaveFile *out);
+	void write(Common::MemoryWriteStreamDynamic *out);
 
 	GameObject *getObject(void) {
 		return _obj;
@@ -111,7 +111,7 @@ public:
 	//  a buffer
 	static int32 archiveSize(void);
 
-	void write(Common::OutSaveFile *out);
+	void write(Common::MemoryWriteStreamDynamic *out);
 
 	GameObject *getObject(void) {
 		return _obj;


Commit: 2d20a99a33a0c48b6d9962f3cd4cfb03bff39abd
    https://github.com/scummvm/scummvm/commit/2d20a99a33a0c48b6d9962f3cd4cfb03bff39abd
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-15T20:04:34+09:00

Commit Message:
SAGA2: Fix original PlayerActor save/loading

Changed paths:
    engines/saga2/player.cpp


diff --git a/engines/saga2/player.cpp b/engines/saga2/player.cpp
index 7e9798bd32..5acd226e8c 100644
--- a/engines/saga2/player.cpp
+++ b/engines/saga2/player.cpp
@@ -968,7 +968,7 @@ void savePlayerActors(Common::OutSaveFile *outS) {
 		out->writeByte(p->vitalityMemory);
 
 		//  Store the attack notification flag
-		out->writeByte(p->notifiedOfAttack);
+		out->writeUint16LE(p->notifiedOfAttack);
 
 		debugC(4, kDebugSaveload, "... playerList[%d].portraitType = %d", i, p->portraitType);
 		debugC(4, kDebugSaveload, "... playerList[%d].flags = %d", i, p->flags);
@@ -1009,7 +1009,7 @@ void loadPlayerActors(Common::InSaveFile *in) {
 		p->vitalityMemory = in->readByte();
 
 		//  Restore the attack notification flag
-		p->notifiedOfAttack = in->readByte();
+		p->notifiedOfAttack = in->readUint16LE();
 
 		debugC(4, kDebugSaveload, "... playerList[%d].portraitType = %d", i, p->portraitType);
 		debugC(4, kDebugSaveload, "... playerList[%d].flags = %d", i, p->flags);


Commit: e2d7bbe2797b1fd505d61b89d1ce52f5abbc155b
    https://github.com/scummvm/scummvm/commit/e2d7bbe2797b1fd505d61b89d1ce52f5abbc155b
Author: a/ (yuri.kgpps at gmail.com)
Date: 2021-07-15T20:04:34+09:00

Commit Message:
SAGA2: Make ActiveItemStates save size portable

Changed paths:
    engines/saga2/tile.cpp
    engines/saga2/tile.h


diff --git a/engines/saga2/tile.cpp b/engines/saga2/tile.cpp
index f0cbfa146a..da455f0355 100644
--- a/engines/saga2/tile.cpp
+++ b/engines/saga2/tile.cpp
@@ -778,21 +778,11 @@ void initActiveItemStates(void) {
 	}
 }
 
-void saveActiveItemStates(Common::OutSaveFile *out) {
+void saveActiveItemStates(Common::OutSaveFile *outS) {
 	debugC(2, kDebugSaveload, "Saving ActiveItemStates");
 
-	int32 archiveBufSize = 0;
-
-	for (int i = 0; i < worldCount; i++) {
-		int32 size = tileRes->size(tagStateID + i);
-		archiveBufSize += sizeof(int16);
-		if (stateArray[i] != nullptr)
-			archiveBufSize += size;
-	}
-
-	out->write("TAGS", 4);
-	out->writeUint32LE(archiveBufSize);
-
+	outS->write("TAGS", 4);
+	CHUNK_BEGIN;
 	for (int i = 0; i < worldCount; i++) {
 		debugC(3, kDebugSaveload, "Saving ActiveItemState %d", i);
 
@@ -831,6 +821,7 @@ void saveActiveItemStates(Common::OutSaveFile *out) {
 		} else
 			out->writeSint16LE(0);
 	}
+	CHUNK_END;
 }
 
 void loadActiveItemStates(Common::InSaveFile *in) {
diff --git a/engines/saga2/tile.h b/engines/saga2/tile.h
index 4418de854d..63ede4d379 100644
--- a/engines/saga2/tile.h
+++ b/engines/saga2/tile.h
@@ -1011,7 +1011,7 @@ void cleanupTileTasks(void);
 TilePoint getClosestPointOnTAI(ActiveItem *TAI, GameObject *obj);
 
 void initActiveItemStates(void);
-void saveActiveItemStates(Common::OutSaveFile *out);
+void saveActiveItemStates(Common::OutSaveFile *outS);
 void loadActiveItemStates(Common::InSaveFile *in);
 void cleanupActiveItemStates(void);
 




More information about the Scummvm-git-logs mailing list