aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMatthew Hoops2011-02-02 16:22:58 +0000
committerMatthew Hoops2011-02-02 16:22:58 +0000
commitd3e30f303896ab0fd075fb4537343e591372f387 (patch)
tree2b120fe764704c6a75efce8581b95f3d8a858e76 /engines
parentf1f86646def1b5f50a127331bdb2bc8e56592b62 (diff)
downloadscummvm-rg350-d3e30f303896ab0fd075fb4537343e591372f387.tar.gz
scummvm-rg350-d3e30f303896ab0fd075fb4537343e591372f387.tar.bz2
scummvm-rg350-d3e30f303896ab0fd075fb4537343e591372f387.zip
SCI: Fix SCI32 Mac fonts
svn-id: r55725
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/graphics/font.cpp6
-rw-r--r--engines/sci/util.cpp7
-rw-r--r--engines/sci/util.h4
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