[Scummvm-cvs-logs] SF.net SVN: scummvm:[55724] scummvm/trunk/engines/sci/graphics/picture.cpp
mthreepwood at users.sourceforge.net
mthreepwood at users.sourceforge.net
Wed Feb 2 17:15:50 CET 2011
Revision: 55724
http://scummvm.svn.sourceforge.net/scummvm/?rev=55724&view=rev
Author: mthreepwood
Date: 2011-02-02 16:15:49 +0000 (Wed, 02 Feb 2011)
Log Message:
-----------
SCI: Fix SCI32 Mac pictures
Modified Paths:
--------------
scummvm/trunk/engines/sci/graphics/picture.cpp
Modified: scummvm/trunk/engines/sci/graphics/picture.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/picture.cpp 2011-02-02 15:43:45 UTC (rev 55723)
+++ scummvm/trunk/engines/sci/graphics/picture.cpp 2011-02-02 16:15:49 UTC (rev 55724)
@@ -151,37 +151,37 @@
int16 GfxPicture::getSci32celY(int16 celNo) {
byte *inbuffer = _resource->data;
- int header_size = READ_LE_UINT16(inbuffer);
+ int header_size = READ_SCI11ENDIAN_UINT16(inbuffer);
int cel_headerPos = header_size + 42 * celNo;
- return READ_LE_UINT16(inbuffer + cel_headerPos + 40);
+ return READ_SCI11ENDIAN_UINT16(inbuffer + cel_headerPos + 40);
}
int16 GfxPicture::getSci32celX(int16 celNo) {
byte *inbuffer = _resource->data;
- int header_size = READ_LE_UINT16(inbuffer);
+ int header_size = READ_SCI11ENDIAN_UINT16(inbuffer);
int cel_headerPos = header_size + 42 * celNo;
- return READ_LE_UINT16(inbuffer + cel_headerPos + 38);
+ return READ_SCI11ENDIAN_UINT16(inbuffer + cel_headerPos + 38);
}
int16 GfxPicture::getSci32celWidth(int16 celNo) {
byte *inbuffer = _resource->data;
- int header_size = READ_LE_UINT16(inbuffer);
+ int header_size = READ_SCI11ENDIAN_UINT16(inbuffer);
int cel_headerPos = header_size + 42 * celNo;
- return READ_LE_UINT16(inbuffer + cel_headerPos + 0);
+ return READ_SCI11ENDIAN_UINT16(inbuffer + cel_headerPos + 0);
}
int16 GfxPicture::getSci32celPriority(int16 celNo) {
byte *inbuffer = _resource->data;
- int header_size = READ_LE_UINT16(inbuffer);
+ int header_size = READ_SCI11ENDIAN_UINT16(inbuffer);
int cel_headerPos = header_size + 42 * celNo;
- return READ_LE_UINT16(inbuffer + cel_headerPos + 36);
+ return READ_SCI11ENDIAN_UINT16(inbuffer + cel_headerPos + 36);
}
void GfxPicture::drawSci32Vga(int16 celNo, int16 drawX, int16 drawY, int16 pictureX, bool mirrored) {
byte *inbuffer = _resource->data;
int size = _resource->size;
- int header_size = READ_LE_UINT16(inbuffer);
- int palette_data_ptr = READ_LE_UINT16(inbuffer + 6);
+ int header_size = READ_SCI11ENDIAN_UINT16(inbuffer);
+ int palette_data_ptr = READ_SCI11ENDIAN_UINT16(inbuffer + 6);
// int celCount = inbuffer[2];
int cel_headerPos = header_size;
int cel_RlePos, cel_LiteralPos;
@@ -211,11 +211,11 @@
if (mirrored) {
// switch around relativeXpos
Common::Rect displayArea = _coordAdjuster->pictureGetDisplayArea();
- drawX = displayArea.width() - drawX - READ_LE_UINT16(inbuffer + cel_headerPos + 0);
+ drawX = displayArea.width() - drawX - READ_SCI11ENDIAN_UINT16(inbuffer + cel_headerPos + 0);
}
- cel_RlePos = READ_LE_UINT32(inbuffer + cel_headerPos + 24);
- cel_LiteralPos = READ_LE_UINT32(inbuffer + cel_headerPos + 28);
+ cel_RlePos = READ_SCI11ENDIAN_UINT32(inbuffer + cel_headerPos + 24);
+ cel_LiteralPos = READ_SCI11ENDIAN_UINT32(inbuffer + cel_headerPos + 28);
drawCelData(inbuffer, size, cel_headerPos, cel_RlePos, cel_LiteralPos, drawX, drawY, pictureX);
cel_headerPos += 42;
@@ -228,8 +228,6 @@
byte *headerPtr = inbuffer + headerPos;
byte *rlePtr = inbuffer + rlePos;
byte *literalPtr = inbuffer + literalPos;
- uint16 width = READ_LE_UINT16(headerPtr + 0);
- uint16 height = READ_LE_UINT16(headerPtr + 2);
int16 displaceX, displaceY;
byte priority = _addToFlag ? _priority : 0;
byte clearColor;
@@ -237,10 +235,14 @@
byte curByte, runLength;
int16 y, lastY, x, leftX, rightX;
int pixelNr, pixelCount;
+ uint16 width, height;
#ifdef ENABLE_SCI32
if (_resourceType != SCI_PICTURE_TYPE_SCI32) {
#endif
+ // Width/height here are always LE, even in Mac versions
+ width = READ_LE_UINT16(headerPtr + 0);
+ height = READ_LE_UINT16(headerPtr + 2);
displaceX = (signed char)headerPtr[4];
displaceY = (unsigned char)headerPtr[5];
if (_resourceType == SCI_PICTURE_TYPE_SCI11) {
@@ -251,8 +253,10 @@
}
#ifdef ENABLE_SCI32
} else {
- displaceX = READ_LE_UINT16(headerPtr + 4); // probably signed?!?
- displaceY = READ_LE_UINT16(headerPtr + 6); // probably signed?!?
+ width = READ_SCI11ENDIAN_UINT16(headerPtr + 0);
+ height = READ_SCI11ENDIAN_UINT16(headerPtr + 2);
+ displaceX = READ_SCI11ENDIAN_UINT16(headerPtr + 4); // probably signed?!?
+ displaceY = READ_SCI11ENDIAN_UINT16(headerPtr + 6); // probably signed?!?
clearColor = headerPtr[8];
if (headerPtr[9] == 0)
compression = false;
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