[Scummvm-cvs-logs] scummvm master -> 908ba272f8c14ed4ab018f2dd834c17a3a4b0599

wjp wjp at usecode.org
Sat Dec 3 14:56:27 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:
908ba272f8 DREAMWEB: Move roomData out of opaque data segment


Commit: 908ba272f8c14ed4ab018f2dd834c17a3a4b0599
    https://github.com/scummvm/scummvm/commit/908ba272f8c14ed4ab018f2dd834c17a3a4b0599
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-03T05:55:54-08:00

Commit Message:
DREAMWEB: Move roomData out of opaque data segment

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



diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp
index 17c05cd..5cff453 100644
--- a/engines/dreamweb/saveload.cpp
+++ b/engines/dreamweb/saveload.cpp
@@ -112,8 +112,8 @@ void DreamGenContext::doLoad() {
 
 	dx = data;
 	es = dx;
-	const Room *room = (Room *)cs.ptr(kMadeuproomdat, sizeof(Room));
-	startLoading(room);
+	const Room *room = (const Room *)cs.ptr(kMadeuproomdat, sizeof(Room));
+	startLoading(*room);
 	loadRoomsSample();
 	data.byte(kRoomloaded) = 1;
 	data.byte(kNewlocation) = 255;
diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h
index 62f4be6..2440d18 100644
--- a/engines/dreamweb/structs.h
+++ b/engines/dreamweb/structs.h
@@ -208,6 +208,7 @@ struct Room {
 	uint8 b30;
 	uint8 realLocation;
 };
+extern const Room g_RoomData[];
 
 struct Rain {
 	uint8 x;
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index bfd766c..edb8887 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -26,6 +26,278 @@
 
 namespace DreamGen {
 
+const Room g_roomData[] = {
+	{ "DREAMWEB.R00", // Ryan's apartment
+	  5,255,33,10,
+	  255,255,255,0,
+	  1,6,2,255,3,255,255,255,255,255,0 },
+
+	{ "DREAMWEB.R01",
+	  1,255,44,10,
+	  255,255,255,0,
+	  7,2,255,255,255,255,6,255,255,255,1 },
+
+	{ "DREAMWEB.R02",
+	  2,255,33,0,
+	  255,255,255,0,
+	  1,0,255,255,1,255,3,255,255,255,2 },
+
+	{ "DREAMWEB.R03",
+	  5,255,33,10,
+	  255,255,255,0,
+	  2,2,0,2,4,255,0,255,255,255,3 },
+
+	{ "DREAMWEB.R04",
+	  23,255,11,30,
+	  255,255,255,0,
+	  1,4,0,5,255,255,3,255,255,255,4 },
+
+	{ "DREAMWEB.R05",
+	  5,255,22,30, // if demo: 22,255,22,30,
+	  255,255,255,0,
+	  1,2,0,4,255,255,3,255,255,255,5 },
+
+	{ "DREAMWEB.R06",
+	  5,255,11,30,
+	  255,255,255,0,
+	  1,0,0,1,2,255,0,255,255,255,6 },
+
+	{ "DREAMWEB.R07",
+	  255,255,0,20,
+	  255,255,255,0,
+	  2,2,255,255,255,255,0,255,255,255,7 },
+
+	{ "DREAMWEB.R08",
+	  8,255,0,10,
+	  255,255,255,0,
+	  1,2,255,255,255,255,0,11,40,0,8 },
+
+	{ "DREAMWEB.R09",
+	  9,255,22,10,
+	  255,255,255,0,
+	  4,6,255,255,255,255,0,255,255,255,9 },
+
+	{ "DREAMWEB.R10",
+	  10,255,33,30,
+	  255,255,255,0,
+	  2,0,255,255,2,2,4,22,30,255,10 }, // 22,30,0 switches
+	                                    // off path 0 in skip
+	{ "DREAMWEB.R11",
+	  11,255,11,20,
+	  255,255,255,0,
+	  0,4,255,255,255,255,255,255,255,255,11 },
+
+	{ "DREAMWEB.R12",
+	  12,255,22,20,
+	  255,255,255,0,
+	  1,4,255,255,255,255,255,255,255,255,12 },
+
+	{ "DREAMWEB.R13",
+	  12,255,22,20,
+	  255,255,255,0,
+	  1,4,255,255,255,255,255,255,255,255,13 },
+
+	{ "DREAMWEB.R14",
+	  14,255,44,20,
+	  255,255,255,0,
+	  0,6,255,255,255,255,255,255,255,255,14 },
+
+	{ "", 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
+	{ "", 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
+	{ "", 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
+	{ "", 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 },
+
+	{ "DREAMWEB.R19",
+	  19,255,0,0,
+	  255,255,255,0,
+	  0,4,255,255,255,255,255,255,255,255,19 },
+
+	{ "DREAMWEB.R20",
+	  22,255,0,20,
+	  255,255,255,0,
+	  1,4,2,15,255,255,255,255,255,255,20 },
+
+	{ "DREAMWEB.R21",
+	  5,255,11,10, // if demo: 22,255,11,10,
+	  255,255,255,0,
+	  1,4,2,15,1,255,255,255,255,255,21 },
+
+	{ "DREAMWEB.R22",
+	  22,255,22,10,
+	  255,255,255,0,
+	  0,4,255,255,1,255,255,255,255,255,22 },
+
+	{ "DREAMWEB.R23",
+	  23,255,22,30,
+	  255,255,255,0,
+	  1,4,2,15,3,255,255,255,255,255,23 },
+
+	{ "DREAMWEB.R24",
+	  5,255,44,0,
+	  255,255,255,0,
+	  1,6,2,15,255,255,255,255,255,255,24 },
+
+	{ "DREAMWEB.R25",
+	  22,255,11,40,
+	  255,255,255,0,
+	  1,0,255,255,255,255,255,255,255,255,25 },
+
+	{ "DREAMWEB.R26",
+	  9,255,22,20,
+	  255,255,255,0,
+	  4,2,255,255,255,255,255,255,255,255,26 },
+
+	{ "DREAMWEB.R27",
+	  22,255,11,20,
+	  255,255,255,0,
+	  0,6,255,255,255,255,255,255,255,255,27 },
+
+	{ "DREAMWEB.R28",
+	  5,255,11,30,
+	  255,255,255,0,
+	  0,0,255,255,2,255,255,255,255,255,28 },
+
+	{ "DREAMWEB.R29",
+	  22,255,11,10,
+	  255,255,255,0,
+	  0,2,255,255,255,255,255,255,255,255,29 },
+
+
+
+	{ "DREAMWEB.R05", // Duplicate of hotel lobby, but emerging from the lift.
+	  5,255,22,10,    // if demo: 22,255,22,10
+	  255,255,255,0,
+	  1,4,1,15,255,255,255,255,255,255,5 },
+
+	{ "DREAMWEB.R04",  // Duplicate of pool hall lobby,
+	  23,255,22,20,    // but emerging from the lift.
+	  255,255,255,0,
+	  1,4,2,15,255,255,255,255,255,255,4 },
+
+	{ "DREAMWEB.R10",  // entering alley via skip
+	  10,255,22,30,
+	  255,255,255,0,
+	  3,6,255,255,255,255,255,255,255,255,10 },
+
+	{ "DREAMWEB.R12",  // on the beach, getting up.
+	  12,255,22,20,
+	  255,255,255,0,
+	  0,2,255,255,255,255,255,255,255,255,12 },
+
+	{ "DREAMWEB.R03",  // Duplicate of Eden's lobby
+	  5,255,44,0,      // but emerging from the lift
+	  255,255,255,0,
+	  1,6,2,255,4,255,255,255,255,255,3 },
+
+	{ "DREAMWEB.R24",  // Duplicate of Eden's flat
+	  5,255,22,0,      // but starting on the bed
+	  255,255,255,0,
+	  3,6,0,255,255,255,255,33,0,3,24 }, //  33,0,3 turns off path for lift
+
+	{ "DREAMWEB.R22",  // Duplicate
+	  22,255,22,20,    // of hotel but in pool room
+	  255,255,255,0,
+	  1,4,255,255,255,255,255,255,255,255,22 },
+
+	{ "DREAMWEB.R22",  // Duplicate
+	  22,255,22,20,    // of hotel but in pool room
+	  255,255,255,0,   // coming out of bedroom
+	  0,2,255,255,255,255,255,255,255,255,22 },
+
+	{ "DREAMWEB.R11",  // Duplicate
+	  11,255,22,30,    // of carpark but getting
+	  255,255,255,0,   // up off the floor
+	  0,0,255,255,255,255,255,255,255,255,11 },
+
+	{ "DREAMWEB.R28",
+	  5,255,11,20,
+	  255,255,255,0,
+	  0,6,255,255,2,255,255,255,255,255,28 },
+
+	{ "DREAMWEB.R21",
+	  5,255,11,10, // if demo: 22,255,11,10
+	  255,255,255,0,
+	  1,4,2,15,1,255,255,255,255,255,21 },
+
+	{ "DREAMWEB.R26",
+	  9,255,0,40,
+	  255,255,255,0,
+	  0,0,255,255,255,255,255,255,255,255,26 },
+
+	{ "DREAMWEB.R19",
+	  19,255,0,0,
+	  255,255,255,0,
+	  2,2,255,255,255,255,255,255,255,255,19 },
+
+	{ "DREAMWEB.R08",  // leaving tvstudio into street
+	  8,255,11,40,
+	  255,255,255,0,
+	  0,4,255,255,255,255,255,255,255,255,8 },
+
+	{ "DREAMWEB.R01",
+	  1,255,44,10,
+	  255,255,255,0,
+	  3,6,255,255,255,255,255,255,255,255,1 },
+
+
+	{ "DREAMWEB.R45",  // Dream room
+	  35,255,22,30,
+	  255,255,255,0,
+	  0,6,255,255,255,255,255,255,255,255,45 },
+
+	{ "DREAMWEB.R46",  // Dream room
+	  35,255,22,40,
+	  255,255,255,0,
+	  0,4,255,255,255,255,255,255,255,255,46 },
+
+	{ "DREAMWEB.R47",  // Dream room
+	  35,255,0,0,
+	  255,255,255,0,
+	  0,0,255,255,255,255,255,255,255,255,47 },
+
+	{ "DREAMWEB.R45",  // Dream room
+	  35,255,22,30,
+	  255,255,255,0,
+	  4,0,255,255,255,255,255,255,255,255,45 },
+
+	{ "DREAMWEB.R46",  // Dream room
+	  35,255,22,50,
+	  255,255,255,0,
+	  0,4,255,255,255,255,255,255,255,255,46 },
+
+
+
+	{ "DREAMWEB.R50",  //  Intro sequence one
+	  35,255,22,30,
+	  255,255,255,0,
+	  0,0,255,255,255,255,255,255,255,255,50 },
+
+	{ "DREAMWEB.R51",  //  Intro sequence two
+	  35,255,11,30,
+	  255,255,255,0,
+	  0,0,255,255,255,255,255,255,255,255,51 },
+
+	{ "DREAMWEB.R52",  //  Intro sequence three
+	  35,255,22,30,
+	  255,255,255,0,
+	  0,0,255,255,255,255,255,255,255,255,52 },
+
+	{ "DREAMWEB.R53",  //  Intro sequence four
+	  35,255,33,0,
+	  255,255,255,0,
+	  0,0,255,255,255,255,255,255,255,255,53 },
+
+	{ "DREAMWEB.R54",  //  Intro sequence five - wasteland
+	  35,255,0,0,
+	  255,255,255,0,
+	  0,0,255,255,255,255,255,255,255,255,54 },
+
+	{ "DREAMWEB.R55",  //  End sequence
+	  14,255,44,0,
+	  255,255,255,0,
+	  0,0,255,255,255,255,255,255,255,255,55 }
+};
+
 void DreamGenContext::dreamweb() {
 	STACK_CHECK;
 
@@ -815,15 +1087,6 @@ void DreamGenContext::makeBackOb(SetObject *objData) {
 	sprite->animFrame = 0;
 }
 
-void DreamGenContext::getRoomData() {
-	Room *room = getRoomData(al);
-	bx = (uint8 *)room - cs.ptr(0, 0);
-}
-
-Room *DreamGenContext::getRoomData(uint8 room) {
-	return (Room *)cs.ptr(kRoomdata, 0) + room;
-}
-
 void DreamGenContext::readHeader() {
 	ax = engine->readFromFile(cs.ptr(kFileheader, kHeaderlen), kHeaderlen);
 	es = cs;
@@ -845,23 +1108,23 @@ void DreamGenContext::clearAndLoad(uint16 seg, uint8 c,
 	engine->readFromFile(buf, size);
 }
 
-void DreamGenContext::startLoading(const Room *room) {
+void DreamGenContext::startLoading(const Room &room) {
 	data.byte(kCombatcount) = 0;
-	data.byte(kRoomssample) = room->roomsSample;
-	data.byte(kMapx) = room->mapX;
-	data.byte(kMapy) = room->mapY;
-	data.byte(kLiftflag) = room->liftFlag;
-	data.byte(kManspath) = room->b21;
-	data.byte(kDestination) = room->b21;
-	data.byte(kFinaldest) = room->b21;
-	data.byte(kFacing) = room->facing;
-	data.byte(kTurntoface) = room->facing;
-	data.byte(kCounttoopen) = room->countToOpen;
-	data.byte(kLiftpath) = room->liftPath;
-	data.byte(kDoorpath) = room->doorPath;
+	data.byte(kRoomssample) = room.roomsSample;
+	data.byte(kMapx) = room.mapX;
+	data.byte(kMapy) = room.mapY;
+	data.byte(kLiftflag) = room.liftFlag;
+	data.byte(kManspath) = room.b21;
+	data.byte(kDestination) = room.b21;
+	data.byte(kFinaldest) = room.b21;
+	data.byte(kFacing) = room.facing;
+	data.byte(kTurntoface) = room.facing;
+	data.byte(kCounttoopen) = room.countToOpen;
+	data.byte(kLiftpath) = room.liftPath;
+	data.byte(kDoorpath) = room.doorPath;
 	data.byte(kLastweapon) = (uint8)-1;
 	ah = data.byte(kReallocation);
-	data.byte(kReallocation) = room->realLocation;
+	data.byte(kReallocation) = room.realLocation;
 
 	loadRoomData(room, false);
 
@@ -869,15 +1132,18 @@ void DreamGenContext::startLoading(const Room *room) {
 	deleteTaken();
 	setAllChanges();
 	autoAppear();
-	Room *newRoom = getRoomData(data.byte(kNewlocation));
-	bx = (uint8 *)newRoom - cs.ptr(0, 0);
+//	const Room &newRoom = g_roomData[data.byte(kNewlocation)];
+	bx = 0x7fff; // TODO: bx used to be set to the offset of newRoom
+	             // It seems to be unused (like newRoom itself), but set it
+	             // to an invalid value to catch any missed use of it.
+	             // (The push/pop of bx below is likely also unnecessary)
 	data.byte(kLastweapon) = (uint8)-1;
 	data.byte(kMandead) = 0;
 	data.word(kLookcounter) = 160;
 	data.byte(kNewlocation) = 255;
 	data.byte(kLinepointer) = 254;
-	if (room->b27 != 255) {
-		data.byte(kManspath) = room->b27;
+	if (room.b27 != 255) {
+		data.byte(kManspath) = room.b27;
 		push(bx);
 		autoSetWalk();
 		bx = pop();
@@ -1991,7 +2257,7 @@ void DreamGenContext::loadRoom() {
 	data.word(kTextaddressy) = 182;
 	data.byte(kTextlen) = 240;
 	data.byte(kLocation) = data.byte(kNewlocation);
-	Room *room = getRoomData(data.byte(kNewlocation));
+	const Room &room = g_roomData[data.byte(kNewlocation)];
 	startLoading(room);
 	loadRoomsSample();
 	switchRyanOn();
@@ -2160,8 +2426,8 @@ void DreamGenContext::useTempCharset() {
 }
 
 // if skipDat, skip clearing and loading Setdat and Freedat
-void DreamGenContext::loadRoomData(const Room* room, bool skipDat) {
-	engine->openFile(room->name);
+void DreamGenContext::loadRoomData(const Room &room, bool skipDat) {
+	engine->openFile(room.name);
 	cs.word(kHandle) = 1; //only one handle
 	flags._c = false;
 	readHeader();
@@ -2201,7 +2467,7 @@ void DreamGenContext::loadRoomData(const Room* room, bool skipDat) {
 }
 
 void DreamGenContext::restoreAll() {
-	const Room *room = getRoomData(data.byte(kLocation));
+	const Room &room = g_roomData[data.byte(kLocation)];
 	loadRoomData(room, true);
 	setAllChanges();
 }
@@ -2210,9 +2476,9 @@ void DreamGenContext::restoreReels() {
 	if (data.byte(kRoomloaded) == 0)
 		return;
 
-	const Room *room = getRoomData(data.byte(kReallocation));
+	const Room &room = g_roomData[data.byte(kReallocation)];
 
-	engine->openFile(room->name);
+	engine->openFile(room.name);
 	cs.word(kHandle) = 1; //only one handle
 	flags._c = false;
 	readHeader();
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index d12f398..6943138 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -91,11 +91,9 @@
 	void oldToNames();
 	void namesToOld();
 	void loadPalFromIFF();
-	void getRoomData();
-	Room *getRoomData(uint8 room);
 	void readHeader();
 	void fillSpace();
-	void startLoading(const Room *room);
+	void startLoading(const Room &room);
 	Sprite *spriteTable();
 	void showFrame();
 	void showFrame(const Frame *frameData, uint16 x, uint16 y, uint16 frameNumber, uint8 effectsFlag, uint8 *width, uint8 *height);
@@ -351,7 +349,7 @@
 	void openForLoad(unsigned int slot);
 	uint16 allocateAndLoad(unsigned int size);
 	void clearAndLoad(uint16 seg, uint8 c, unsigned int size, unsigned int maxSize);
-	void loadRoomData(const Room* room, bool skipDat);
+	void loadRoomData(const Room &room, bool skipDat);
 	void restoreAll();
 	void restoreReels();
 	void viewFolder();






More information about the Scummvm-git-logs mailing list