diff options
author | Matthew Hoops | 2011-02-02 16:22:58 +0000 |
---|---|---|
committer | Matthew Hoops | 2011-02-02 16:22:58 +0000 |
commit | d3e30f303896ab0fd075fb4537343e591372f387 (patch) | |
tree | 2b120fe764704c6a75efce8581b95f3d8a858e76 | |
parent | f1f86646def1b5f50a127331bdb2bc8e56592b62 (diff) | |
download | scummvm-rg350-d3e30f303896ab0fd075fb4537343e591372f387.tar.gz scummvm-rg350-d3e30f303896ab0fd075fb4537343e591372f387.tar.bz2 scummvm-rg350-d3e30f303896ab0fd075fb4537343e591372f387.zip |
SCI: Fix SCI32 Mac fonts
svn-id: r55725
-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 |