aboutsummaryrefslogtreecommitdiff
path: root/engines/sci
diff options
context:
space:
mode:
authorFilippos Karapetis2018-08-20 04:29:02 +0300
committerFilippos Karapetis2018-08-21 03:36:05 +0300
commit5684273ee11d973b1f1ed3a3a51571bb5e3dcaaa (patch)
treeb53a063a25270e717bd3deb9713427683b2717f6 /engines/sci
parent2877c2209794633cf45894adbf786806fb0fe629 (diff)
downloadscummvm-rg350-5684273ee11d973b1f1ed3a3a51571bb5e3dcaaa.tar.gz
scummvm-rg350-5684273ee11d973b1f1ed3a3a51571bb5e3dcaaa.tar.bz2
scummvm-rg350-5684273ee11d973b1f1ed3a3a51571bb5e3dcaaa.zip
SCI: Add support for text loading in Hoyle 3 Amiga
Diffstat (limited to 'engines/sci')
-rw-r--r--engines/sci/engine/kernel.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index fd64198bb7..e828db6f40 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -880,7 +880,20 @@ Common::String Kernel::lookupText(reg_t address, int index) {
if (address.getSegment())
return _segMan->getString(address);
- Resource *textres = _resMan->findResource(ResourceId(kResourceTypeText, address.getOffset()), false);
+ ResourceId resourceId = ResourceId(kResourceTypeText, address.getOffset());
+ if (g_sci->getGameId() == GID_HOYLE3 && g_sci->getPlatform() == Common::kPlatformAmiga) {
+ // WORKAROUND: In the Amiga version of Hoyle 3, texts are stored as
+ // either text, font or palette types. Seems like the resource type
+ // bits are used as part of the resource numbers. This is the same
+ // as the workaround used in GfxFontFromResource()
+ resourceId = ResourceId(kResourceTypeText, address.getOffset() & 0x7FF);
+ if (!_resMan->testResource(resourceId))
+ resourceId = ResourceId(kResourceTypeFont, address.getOffset() & 0x7FF);
+ if (!_resMan->testResource(resourceId))
+ resourceId = ResourceId(kResourceTypePalette, address.getOffset() & 0x7FF);
+ }
+
+ Resource *textres = _resMan->findResource(resourceId, false);
if (!textres) {
error("text.%03d not found", address.getOffset());