[Scummvm-cvs-logs] SF.net SVN: scummvm: [24844] scummvm/trunk/graphics/dxa_player.cpp

kirben at users.sourceforge.net kirben at users.sourceforge.net
Mon Dec 11 23:49:01 CET 2006


Revision: 24844
          http://scummvm.svn.sourceforge.net/scummvm/?rev=24844&view=rev
Author:   kirben
Date:     2006-12-11 14:48:57 -0800 (Mon, 11 Dec 2006)

Log Message:
-----------
Add cyx's patch for endian issues in DXA player

Modified Paths:
--------------
    scummvm/trunk/graphics/dxa_player.cpp

Modified: scummvm/trunk/graphics/dxa_player.cpp
===================================================================
--- scummvm/trunk/graphics/dxa_player.cpp	2006-12-11 22:35:50 UTC (rev 24843)
+++ scummvm/trunk/graphics/dxa_player.cpp	2006-12-11 22:48:57 UTC (rev 24844)
@@ -292,10 +292,11 @@
 
 	int codeSize = _width * _curHeight / 16;
 	int dataSize, motSize, maskSize;
-	memcpy(&dataSize, data, 4);
-	memcpy(&motSize, &data[4], 4);
-	memcpy(&maskSize, &data[8], 4);
 
+	dataSize = READ_BE_UINT32(&data[0]);
+	motSize  = READ_BE_UINT32(&data[4]);
+	maskSize = READ_BE_UINT32(&data[8]);
+
 	codeBuf = &data[12];
 	dataBuf = &codeBuf[codeSize];
 	motBuf = &dataBuf[dataSize];
@@ -311,7 +312,7 @@
 				break;
 
 			case 1: {
-				uint16 diffMap = *(unsigned short*)maskBuf;
+				uint16 diffMap = READ_BE_UINT16(maskBuf);
 				maskBuf += 2;
 
 				for (int yc = 0; yc < BLOCKH; yc++) {
@@ -427,11 +428,11 @@
 				int count = type - 30;
 				uint8 pixels[4];
 
-				for (int i = 0; i < count; i++)
-					pixels[i] = *dataBuf++;
+				memcpy(pixels, dataBuf, count);
+				dataBuf += count;
 
 				if (count == 2) {
-					uint16 code = *(uint16*)maskBuf;
+					uint16 code = READ_BE_UINT16(maskBuf);
 					maskBuf += 2;
 					for (int yc = 0; yc < BLOCKH; yc++) {
 						for (int xc = 0; xc < BLOCKW; xc++) {
@@ -441,7 +442,7 @@
 						b2 += _width;
 					}
 				} else {
-					uint32 code = *(uint32*)maskBuf;
+					uint32 code = READ_BE_UINT32(maskBuf);
 					maskBuf += 4;
 					for (int yc = 0; yc < BLOCKH; yc++) {
 						for (int xc = 0; xc < BLOCKW; xc++) {


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