[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