[Scummvm-cvs-logs] CVS: scummvm/queen cutaway.cpp,1.125,1.126 grid.cpp,1.4,1.5 logic.cpp,1.195,1.196 queen.h,1.29,1.30 sound.cpp,1.41,1.42 talk.cpp,1.95,1.96

Nicolas Bacca arisme at users.sourceforge.net
Tue Mar 23 12:45:08 CET 2004


Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25387

Modified Files:
	cutaway.cpp grid.cpp logic.cpp queen.h sound.cpp talk.cpp 
Log Message:
Fix #922003 - FOTAQ crash on PocketPC

Index: cutaway.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/cutaway.cpp,v
retrieving revision 1.125
retrieving revision 1.126
diff -u -d -r1.125 -r1.126
--- cutaway.cpp	7 Mar 2004 10:46:01 -0000	1.125
+++ cutaway.cpp	23 Mar 2004 20:34:19 -0000	1.126
@@ -74,9 +74,9 @@
 	_comPanel = READ_BE_UINT16(ptr);
 	ptr += 2;
 	debug(6, "_comPanel = %i", _comPanel);
-
-	_cutawayObjectCount = (int16)READ_BE_UINT16(ptr);
+	_cutawayObjectCount = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
+
 	debug(6, "_cutawayObjectCount = %i", _cutawayObjectCount);
 
 	if (_cutawayObjectCount < 0) {
@@ -86,7 +86,7 @@
 	else
 		_vm->input()->canQuit(true);
 
-	int16 flags1 = (int16)READ_BE_UINT16(ptr);
+	int16 flags1 = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 	debug(6, "flags1 = %i", flags1);
 
@@ -179,7 +179,7 @@
 	ptr = Talk::getString(ptr, _talkFile, MAX_FILENAME_LENGTH);
 	debug(6, "Talk file = '%s'", _talkFile);
 
-	_talkTo = (int16)READ_BE_UINT16(ptr);
+	_talkTo = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 	debug(6, "_talkTo = %i", _talkTo);
 }
@@ -188,23 +188,23 @@
 {
 	byte *oldPtr = ptr;
 
-	object.objectNumber  = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.moveToX      = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.moveToY      = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.bank           = (int16)READ_BE_UINT16(ptr); ptr += 2;      
-	object.animList      = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.execute        = (int16)READ_BE_UINT16(ptr); ptr += 2;    
-	object.limitBobX1   = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.limitBobY1   = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.limitBobX2   = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.limitBobY2   = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.specialMove   = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.animType      = (int16)READ_BE_UINT16(ptr); ptr += 2;   
-	object.fromObject    = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.bobStartX    = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.bobStartY    = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.room           = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	object.scale          = (int16)READ_BE_UINT16(ptr); ptr += 2;
+	object.objectNumber  = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.moveToX      = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.moveToY      = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.bank           = (int16)READ_BE_INT16(ptr); ptr += 2;      
+	object.animList      = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.execute        = (int16)READ_BE_INT16(ptr); ptr += 2;    
+	object.limitBobX1   = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.limitBobY1   = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.limitBobX2   = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.limitBobY2   = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.specialMove   = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.animType      = (int16)READ_BE_INT16(ptr); ptr += 2;   
+	object.fromObject    = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.bobStartX    = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.bobStartY    = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.room           = (int16)READ_BE_INT16(ptr); ptr += 2;
+	object.scale          = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 	if ((ptr - oldPtr) != 17*sizeof(int16))
 		error("Wrong number of values read");
@@ -263,14 +263,14 @@
 
 byte *Cutaway::turnOnPeople(byte *ptr, CutawayObject &object) {
 	// Lines 1248-1259 in cutaway.c
-	object.personCount = (int16)READ_BE_UINT16(ptr);
+	object.personCount = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 
 	if (object.personCount > MAX_PERSON_COUNT)
 		error("[Cutaway::turnOnPeople] object.personCount > MAX_PERSON_COUNT");
 
 	for (int i = 0; i < object.personCount; i++) {
-		object.person[i] = (int16)READ_BE_UINT16(ptr);
+		object.person[i] = (int16)READ_BE_INT16(ptr);
 		ptr += 2;
 		//debug(6, "[%i] Turn on person %i", i, object.person[i]);
 	}
@@ -491,13 +491,13 @@
 		anim.originalFrame = _vm->logic()->findFrame(header);
 	}
 
-	anim.unpackFrame = (int16)READ_BE_UINT16(ptr);
+	anim.unpackFrame = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 
-	anim.speed = ((int16)READ_BE_UINT16(ptr)) / 3 + 1;
+	anim.speed = ((int16)READ_BE_INT16(ptr)) / 3 + 1;
 	ptr += 2;
 
-	anim.bank = (int16)READ_BE_UINT16(ptr);
+	anim.bank = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 
 	if (anim.bank == 0) {
@@ -514,26 +514,26 @@
 		}
 	}
 
-	anim.mx = (int16)READ_BE_UINT16(ptr);
+	anim.mx = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 
-	anim.my = (int16)READ_BE_UINT16(ptr);
+	anim.my = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 
-	anim.cx = (int16)READ_BE_UINT16(ptr);
+	anim.cx = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 
-	anim.cy = (int16)READ_BE_UINT16(ptr);
+	anim.cy = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 
-	anim.scale = (int16)READ_BE_UINT16(ptr);
+	anim.scale = (int16)READ_BE_INT16(ptr);
 	ptr += 2;
 
 	if (_vm->resource()->isDemo()) {
 		anim.song = 0;
 	}
 	else {
-		anim.song = (int16)READ_BE_UINT16(ptr);
+		anim.song = (int16)READ_BE_INT16(ptr);
 		ptr += 2;
 	}
 
@@ -575,7 +575,7 @@
 	// Read animation frames
 	for (;;) {
 
-		header = (int16)READ_BE_UINT16(ptr);
+		header = (int16)READ_BE_INT16(ptr);
 		ptr += 2;
 
 		if (-2 == header)
@@ -1007,7 +1007,7 @@
 	byte *ptr = _gameStatePtr;
 
 	// Skipping GAMESTATE data
-	int gameStateCount = (int16)READ_BE_UINT16(ptr); ptr += 2;
+	int gameStateCount = (int16)READ_BE_INT16(ptr); ptr += 2;
 	if (gameStateCount > 0)
 		ptr += (gameStateCount * 12);
 
@@ -1051,16 +1051,16 @@
 			}
 		}
 
-		int quitObjectCount = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		int quitObjectCount = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 		for (i = 0; i < quitObjectCount; i++) {
-			int16 objectIndex  = (int16)READ_BE_UINT16(ptr); ptr += 2;
-			int16 fromIndex    = (int16)READ_BE_UINT16(ptr); ptr += 2;
-			int16 x       = (int16)READ_BE_UINT16(ptr); ptr += 2;
-			int16 y       = (int16)READ_BE_UINT16(ptr); ptr += 2;
-			int16 room    = (int16)READ_BE_UINT16(ptr); ptr += 2;
-			int16 frame   = (int16)READ_BE_UINT16(ptr); ptr += 2;
-			int16 bank    = (int16)READ_BE_UINT16(ptr); ptr += 2;
+			int16 objectIndex  = (int16)READ_BE_INT16(ptr); ptr += 2;
+			int16 fromIndex    = (int16)READ_BE_INT16(ptr); ptr += 2;
+			int16 x       = (int16)READ_BE_INT16(ptr); ptr += 2;
+			int16 y       = (int16)READ_BE_INT16(ptr); ptr += 2;
+			int16 room    = (int16)READ_BE_INT16(ptr); ptr += 2;
+			int16 frame   = (int16)READ_BE_INT16(ptr); ptr += 2;
+			int16 bank    = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 			int bobIndex = _vm->logic()->findBob(objectIndex);
 			ObjectData *object = _vm->logic()->objectData(objectIndex);
@@ -1116,11 +1116,11 @@
 			}
 		} // for()
 		
-		int16 specialMove = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		int16 specialMove = (int16)READ_BE_INT16(ptr); ptr += 2;
 		if (specialMove > 0)
 			_vm->logic()->executeSpecialMove(specialMove);
 
-		_lastSong = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		_lastSong = (int16)READ_BE_INT16(ptr); ptr += 2;
 	}
 
 	if (joeRoom == _temporaryRoom &&
@@ -1141,15 +1141,15 @@
 	// Lines 2047-2115 in cutaway.c
 	byte *ptr = _gameStatePtr;
 
-	int gameStateCount = (int16)READ_BE_UINT16(ptr); ptr += 2;
+	int gameStateCount = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 	for (int i = 0; i < gameStateCount; i++) {
-		int16 stateIndex    = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		int16 stateValue    = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		int16 objectIndex   = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		int16 areaIndex     = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		int16 areaSubIndex  = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		int16 fromObject    = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		int16 stateIndex    = (int16)READ_BE_INT16(ptr); ptr += 2;
+		int16 stateValue    = (int16)READ_BE_INT16(ptr); ptr += 2;
+		int16 objectIndex   = (int16)READ_BE_INT16(ptr); ptr += 2;
+		int16 areaIndex     = (int16)READ_BE_INT16(ptr); ptr += 2;
+		int16 areaSubIndex  = (int16)READ_BE_INT16(ptr); ptr += 2;
+		int16 fromObject    = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 		bool update = false;
 

Index: grid.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/grid.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- grid.cpp	14 Jan 2004 10:40:25 -0000	1.4
+++ grid.cpp	23 Mar 2004 20:34:19 -0000	1.5
@@ -46,8 +46,8 @@
 	_areaMax[0] = 0;
 	memset(&_area[0], 0, sizeof(Area) * MAX_AREAS_NUMBER);
 	for (i = 1; i <= _numRoomAreas; i++) {
-		_objMax[i] = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		_areaMax[i] = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		_objMax[i] = (int16)READ_BE_INT16(ptr); ptr += 2;
+		_areaMax[i] = (int16)READ_BE_INT16(ptr); ptr += 2;
 		memset(&_area[i][0], 0, sizeof(Area));
 		for (j = 1; j <= _areaMax[i]; j++) {
 			assert(j < MAX_AREAS_NUMBER);

Index: logic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/logic.cpp,v
retrieving revision 1.195
retrieving revision 1.196
diff -u -d -r1.195 -r1.196
--- logic.cpp	18 Mar 2004 21:27:51 -0000	1.195
+++ logic.cpp	23 Mar 2004 20:34:19 -0000	1.196
@@ -1298,11 +1298,11 @@
 void Logic::loadState(uint32 ver, byte *&ptr) {
 	uint16 i;
 	for (i = 0; i < 4; i++) {
-		_inventoryItem[i] = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		_inventoryItem[i] = (int16)READ_BE_INT16(ptr); ptr += 2;
 	}
 
-	_joe.x = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	_joe.y = (int16)READ_BE_UINT16(ptr); ptr += 2;
+	_joe.x = (int16)READ_BE_INT16(ptr); ptr += 2;
+	_joe.y = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 	_currentRoom = READ_BE_UINT16(ptr); ptr += 2;
 
@@ -1313,7 +1313,7 @@
 		_itemData[i].readFromBE(ptr);
 
 	for (i = 0; i < GAME_STATE_COUNT; i++) {
-		_gameState[i] = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		_gameState[i] = (int16)READ_BE_INT16(ptr); ptr += 2;
 	}
 
 	for (i = 0; i < TALK_SELECTED_COUNT; i++)

Index: queen.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/queen.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- queen.h	15 Jan 2004 21:07:17 -0000	1.29
+++ queen.h	23 Mar 2004 20:34:19 -0000	1.30
@@ -26,6 +26,22 @@
 
 class GameDetector;
 
+#if defined(_WIN32_WCE) && (_WIN32_WCE <= 300)
+
+FORCEINLINE int16 READ_BE_INT16(const void *ptr) {
+	uint16 result;
+	char dummy[2];
+	result = READ_BE_UINT16(ptr);
+	strcpy(dummy, "x"); // Hello, I'm a drunk optimizer. Thanks for helping me.
+	return result;
+}
+
+#else
+
+#define READ_BE_INT16 READ_BE_UINT16
+
+#endif
+
 namespace Queen {
 
 struct GameStateHeader {

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/sound.cpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- sound.cpp	17 Mar 2004 14:10:51 -0000	1.41
+++ sound.cpp	23 Mar 2004 20:34:19 -0000	1.42
@@ -167,7 +167,7 @@
 }
 
 void Sound::loadState(uint32 ver, byte *&ptr) {
-	_lastOverride = (int16)READ_BE_UINT16(ptr); ptr += 2;
+	_lastOverride = (int16)READ_BE_INT16(ptr); ptr += 2;
 }
 
 void SBSound::playSound(byte *sound, uint32 size, bool isSpeech) {

Index: talk.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/talk.cpp,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -d -r1.95 -r1.96
--- talk.cpp	19 Mar 2004 10:49:29 -0000	1.95
+++ talk.cpp	23 Mar 2004 20:34:19 -0000	1.96
@@ -300,8 +300,8 @@
 
 	uint8 *ptr = _cutawayPtr;
 
-	int16 cutawayGameState = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	int16 cutawayTestValue = (int16)READ_BE_UINT16(ptr); ptr += 2;
+	int16 cutawayGameState = (int16)READ_BE_INT16(ptr); ptr += 2;
+	int16 cutawayTestValue = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 	if (_vm->logic()->gameState(cutawayGameState) == cutawayTestValue) {
 		getString(ptr, cutawayFilename, 20);
@@ -360,7 +360,7 @@
 
 	for (int i = 1; i <= max; i++) {
 		ptr += 2;
-		int16 currentId = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		int16 currentId = (int16)READ_BE_INT16(ptr); ptr += 2;
 		if (id == currentId) {
 			ptr = getString(ptr, str, MAX_STRING_LENGTH, 4);
 			//debug(6, "Found string with ID %i: '%s'", id, str);
@@ -409,7 +409,7 @@
 	// Load talk header
 	//
 
-	_levelMax = (int16)READ_BE_UINT16(ptr); ptr += 2;
+	_levelMax = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 	//debug(6, "levelMax = %i", _levelMax);
 
@@ -420,15 +420,15 @@
 	else
 		canQuit = true;
 
-	_uniqueKey      = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	_talkKey        = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	_jMax           = (int16)READ_BE_UINT16(ptr); ptr += 2;
-	_pMax           = (int16)READ_BE_UINT16(ptr); ptr += 2;
+	_uniqueKey      = (int16)READ_BE_INT16(ptr); ptr += 2;
+	_talkKey        = (int16)READ_BE_INT16(ptr); ptr += 2;
+	_jMax           = (int16)READ_BE_INT16(ptr); ptr += 2;
+	_pMax           = (int16)READ_BE_INT16(ptr); ptr += 2;
 
 	for (i = 0; i < 2; i++) {
-		_gameState [i] = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		_testValue [i] = (int16)READ_BE_UINT16(ptr); ptr += 2;
-		_itemNumber[i] = (int16)READ_BE_UINT16(ptr); ptr += 2;
+		_gameState [i] = (int16)READ_BE_INT16(ptr); ptr += 2;
+		_testValue [i] = (int16)READ_BE_INT16(ptr); ptr += 2;
+		_itemNumber[i] = (int16)READ_BE_INT16(ptr); ptr += 2;
 	}
 
 	//debug(6, "uniqueKey = %i", _uniqueKey);
@@ -454,13 +454,13 @@
 	for (i = 1; i <= _levelMax; i++)
 		for (int j = 0; j <= 5; j++) {
 			ptr += 2;
-			_dialogueTree[i][j].head = (int16)READ_BE_UINT16(ptr); ptr += 2;
+			_dialogueTree[i][j].head = (int16)READ_BE_INT16(ptr); ptr += 2;
 			ptr += 2;
-			_dialogueTree[i][j].dialogueNodeValue1 = (int16)READ_BE_UINT16(ptr); ptr += 2;
+			_dialogueTree[i][j].dialogueNodeValue1 = (int16)READ_BE_INT16(ptr); ptr += 2;
 			ptr += 2;
-			_dialogueTree[i][j].gameStateIndex = (int16)READ_BE_UINT16(ptr); ptr += 2;
+			_dialogueTree[i][j].gameStateIndex = (int16)READ_BE_INT16(ptr); ptr += 2;
 			ptr += 2;
-			_dialogueTree[i][j].gameStateValue = (int16)READ_BE_UINT16(ptr); ptr += 2;
+			_dialogueTree[i][j].gameStateValue = (int16)READ_BE_INT16(ptr); ptr += 2;
 		}
 }
 





More information about the Scummvm-git-logs mailing list