[Scummvm-cvs-logs] scummvm master -> a64c89e7dd8ebfae94c4a5ee265e83324bae40a1

wjp wjp at usecode.org
Sat Dec 3 16:08:47 CET 2011


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

Summary:
a64c89e7dd DREAMWEB: Don't use Madeuproomdat as a global when not necessary


Commit: a64c89e7dd8ebfae94c4a5ee265e83324bae40a1
    https://github.com/scummvm/scummvm/commit/a64c89e7dd8ebfae94c4a5ee265e83324bae40a1
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-03T07:07:48-08:00

Commit Message:
DREAMWEB: Don't use Madeuproomdat as a global when not necessary

Changed paths:
    engines/dreamweb/saveload.cpp
    engines/dreamweb/structs.h



diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 79f6cae..b520150 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -78,7 +78,7 @@ void DreamGenContext::doLoad() {
 			};
 			checkCoords(loadlist);
 			if (data.byte(kGetback) == 1)
-				break;
+				break; // This signalled that actualLoad loaded a game
 			if (data.byte(kGetback) == 2)
 				return; // "quitloaded"
 		}
@@ -106,6 +106,10 @@ void DreamGenContext::doLoad() {
 		data.byte(kGetback) = 1;
 	}
 
+	// If we reach this point, loadPosition() has just been called.
+	// Note: Among other things, it will have filled kMadeuproomdat.
+
+
 	// kTempgraphics might not have been allocated if we bypassed all menus
 	if (data.word(kTempgraphics) != 0xFFFF)
 		getRidOfTemp();
@@ -307,17 +311,16 @@ void DreamGenContext::actualLoad() {
 
 void DreamGenContext::savePosition(unsigned int slot, const uint8 *descbuf) {
 
-	const Room *currentRoom = (const Room *)cs.ptr(kRoomdata + sizeof(Room)*data.byte(kLocation), sizeof(Room));
-	Room *madeUpRoom = (Room *)cs.ptr(kMadeuproomdat, sizeof(Room));
+	const Room &currentRoom = g_roomData[data.byte(kLocation)];
 
-	*madeUpRoom = *currentRoom;
-	madeUpRoom->roomsSample = data.byte(kRoomssample);
-	madeUpRoom->mapX = data.byte(kMapx);
-	madeUpRoom->mapY = data.byte(kMapy);
-	madeUpRoom->liftFlag = data.byte(kLiftflag);
-	madeUpRoom->b21 = data.byte(kManspath);
-	madeUpRoom->facing = data.byte(kFacing);
-	madeUpRoom->b27 = 255;
+	Room madeUpRoom = currentRoom;
+	madeUpRoom.roomsSample = data.byte(kRoomssample);
+	madeUpRoom.mapX = data.byte(kMapx);
+	madeUpRoom.mapY = data.byte(kMapy);
+	madeUpRoom.liftFlag = data.byte(kLiftflag);
+	madeUpRoom.b21 = data.byte(kManspath);
+	madeUpRoom.facing = data.byte(kFacing);
+	madeUpRoom.b27 = 255;
 
 	openForSave(slot);
 
@@ -342,7 +345,11 @@ void DreamGenContext::savePosition(unsigned int slot, const uint8 *descbuf) {
 	engine->writeToSaveFile(data.ptr(kStartvars, len[1]), len[1]);
 	engine->writeToSaveFile(getSegment(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
 	engine->writeToSaveFile(getSegment(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
-	engine->writeToSaveFile(data.ptr(kMadeuproomdat, len[4]), len[4]);
+
+	// len[4] == 48, which is sizeof(Room) plus 16 for 'Roomscango'
+	engine->writeToSaveFile((const uint8 *)&madeUpRoom, sizeof(Room));
+	engine->writeToSaveFile(data.ptr(kRoomscango, 16), 16);
+
 	engine->writeToSaveFile(data.ptr(kReelroutines, len[5]), len[5]);
 	closeFile();
 }
@@ -374,7 +381,11 @@ void DreamGenContext::loadPosition(unsigned int slot) {
 	engine->readFromSaveFile(data.ptr(kStartvars, len[1]), len[1]);
 	engine->readFromSaveFile(getSegment(data.word(kExtras)).ptr(kExframedata, len[2]), len[2]);
 	engine->readFromSaveFile(getSegment(data.word(kBuffers)).ptr(kListofchanges, len[3]), len[3]);
-	engine->readFromSaveFile(data.ptr(kMadeuproomdat, len[4]), len[4]);
+
+	// len[4] == 48, which is sizeof(Room) plus 16 for 'Roomscango'
+	engine->readFromSaveFile(data.ptr(kMadeuproomdat, sizeof(Room)), sizeof(Room));
+	engine->readFromSaveFile(data.ptr(kRoomscango, 16), 16);
+
 	engine->readFromSaveFile(cs.ptr(kReelroutines, len[5]), len[5]);
 
 	closeFile();
diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h
index 106b27e..39bfeb7 100644
--- a/engines/dreamweb/structs.h
+++ b/engines/dreamweb/structs.h
@@ -208,7 +208,7 @@ struct Room {
 	uint8 b30;
 	uint8 realLocation;
 };
-extern const Room g_RoomData[];
+extern const Room g_roomData[];
 
 struct Rain {
 	uint8 x;






More information about the Scummvm-git-logs mailing list