[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