[Scummvm-cvs-logs] SF.net SVN: scummvm: [29533] scummvm/trunk/engines/lure

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sat Nov 17 11:21:27 CET 2007


Revision: 29533
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29533&view=rev
Author:   dreammaster
Date:     2007-11-17 02:21:27 -0800 (Sat, 17 Nov 2007)

Log Message:
-----------
Identified some more Endian issues (thanks to Max)

Modified Paths:
--------------
    scummvm/trunk/engines/lure/res.cpp
    scummvm/trunk/engines/lure/res_struct.cpp

Modified: scummvm/trunk/engines/lure/res.cpp
===================================================================
--- scummvm/trunk/engines/lure/res.cpp	2007-11-17 09:39:20 UTC (rev 29532)
+++ scummvm/trunk/engines/lure/res.cpp	2007-11-17 10:21:27 UTC (rev 29533)
@@ -115,9 +115,7 @@
 	paths = d.getEntry(ROOM_PATHS_RESOURCE_ID);
 
 	offset = (uint16 *) mb->data();
-	for (ctr = 0; READ_LE_UINT16(offset) != 0xffff; ++ctr, ++offset) {
-		offsetVal = READ_LE_UINT16(offset);
-
+	while ((offsetVal = READ_LE_UINT16(offset++)) != 0xffff) {
 		if (offsetVal != 0) {
 			// Get room resource
 			RoomResource *rec = (RoomResource *) (mb->data() + offsetVal);
@@ -125,11 +123,12 @@
 			RoomData *newEntry = new RoomData(rec, paths);
 			_roomData.push_back(newEntry);
 
-			if (rec->numExits > 0) {
+			uint16 numExits = READ_LE_UINT16(&rec->numExits);
+			if (numExits > 0) {
 				RoomExitResource *exitRes = (RoomExitResource *)
 					(mb->data() + offsetVal + sizeof(RoomResource));
 
-				for (uint16 exitCtr = 0; exitCtr < rec->numExits; ++exitCtr, ++exitRes) {
+				for (uint16 exitCtr = 0; exitCtr < numExits; ++exitCtr, ++exitRes) {
 					RoomExitData *exit = new RoomExitData(exitRes);
 					newEntry->exits.push_back(exit);
 				}

Modified: scummvm/trunk/engines/lure/res_struct.cpp
===================================================================
--- scummvm/trunk/engines/lure/res_struct.cpp	2007-11-17 09:39:20 UTC (rev 29532)
+++ scummvm/trunk/engines/lure/res_struct.cpp	2007-11-17 10:21:27 UTC (rev 29533)
@@ -113,14 +113,14 @@
 //  Room exit class
 
 RoomExitData::RoomExitData(RoomExitResource *rec) {
-	xs = READ_LE_UINT16(&rec->xs); 
-	ys = READ_LE_UINT16(&rec->ys);
-	xe = READ_LE_UINT16(&rec->xe);
-	ye = READ_LE_UINT16(&rec->ye);
+	xs = READ_LE_INT16(&rec->xs); 
+	ys = READ_LE_INT16(&rec->ys);
+	xe = READ_LE_INT16(&rec->xe);
+	ye = READ_LE_INT16(&rec->ye);
 	sequenceOffset = READ_LE_UINT16(&rec->sequenceOffset);
 	roomNumber = rec->newRoom;
-	x = rec->newRoomX;
-	y = rec->newRoomY;
+	x = READ_LE_INT16(&rec->newRoomX);
+	y = READ_LE_INT16(&rec->newRoomY);
 
 	switch (rec->direction) {
 	case 0x80: 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list