diff options
-rw-r--r-- | engines/sci/graphics/font.cpp | 6 | ||||
-rw-r--r-- | engines/sci/util.cpp | 7 | ||||
-rw-r--r-- | engines/sci/util.h | 4 |
3 files changed, 14 insertions, 3 deletions
diff --git a/engines/sci/graphics/font.cpp b/engines/sci/graphics/font.cpp index 1b9133108f..ea7a3fad36 100644 --- a/engines/sci/graphics/font.cpp +++ b/engines/sci/graphics/font.cpp @@ -45,12 +45,12 @@ GfxFontFromResource::GfxFontFromResource(ResourceManager *resMan, GfxScreen *scr } _resourceData = _resource->data; - _numChars = READ_LE_UINT16(_resourceData + 2); - _fontHeight = READ_LE_UINT16(_resourceData + 4); + _numChars = READ_SCI32ENDIAN_UINT16(_resourceData + 2); + _fontHeight = READ_SCI32ENDIAN_UINT16(_resourceData + 4); _chars = new Charinfo[_numChars]; // filling info for every char for (int16 i = 0; i < _numChars; i++) { - _chars[i].offset = READ_LE_UINT16(_resourceData + 6 + i * 2); + _chars[i].offset = READ_SCI32ENDIAN_UINT16(_resourceData + 6 + i * 2); _chars[i].w = _resourceData[_chars[i].offset]; _chars[i].h = _resourceData[_chars[i].offset + 1]; } diff --git a/engines/sci/util.cpp b/engines/sci/util.cpp index 9bda73ae4a..f6a2465682 100644 --- a/engines/sci/util.cpp +++ b/engines/sci/util.cpp @@ -37,6 +37,13 @@ uint16 READ_SCI11ENDIAN_UINT16(const void *ptr) { return READ_LE_UINT16(ptr); } +uint16 READ_SCI32ENDIAN_UINT16(const void *ptr) { + if (g_sci->getPlatform() == Common::kPlatformMacintosh && getSciVersion() >= SCI_VERSION_2_1) + return READ_BE_UINT16(ptr); + + return READ_LE_UINT16(ptr); +} + uint32 READ_SCI11ENDIAN_UINT32(const void *ptr) { if (g_sci->getPlatform() == Common::kPlatformMacintosh && getSciVersion() >= SCI_VERSION_1_1) return READ_BE_UINT32(ptr); diff --git a/engines/sci/util.h b/engines/sci/util.h index 5c4b95b8c4..d9ced5c9f6 100644 --- a/engines/sci/util.h +++ b/engines/sci/util.h @@ -36,6 +36,10 @@ uint16 READ_SCI11ENDIAN_UINT16(const void *ptr); uint32 READ_SCI11ENDIAN_UINT32(const void *ptr); void WRITE_SCI11ENDIAN_UINT16(void *ptr, uint16 val); +// Wrappers for reading integer values in resources that are +// LE in SCI1.1 Mac, but BE in SCI32 Mac +uint16 READ_SCI32ENDIAN_UINT16(const void *ptr); + } // End of namespace Sci #endif |