aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics
diff options
context:
space:
mode:
authorMartin Kiewitz2010-07-23 13:57:45 +0000
committerMartin Kiewitz2010-07-23 13:57:45 +0000
commit0bcc3af422754525304203edca34a3e6f44f5cfb (patch)
treec5820e1d94392b0e4b3df67f06e3fedb61bbbf38 /engines/sci/graphics
parent8cc6d8d0eb71c176cbe5f98385dd658e8228a17d (diff)
downloadscummvm-rg350-0bcc3af422754525304203edca34a3e6f44f5cfb.tar.gz
scummvm-rg350-0bcc3af422754525304203edca34a3e6f44f5cfb.tar.bz2
scummvm-rg350-0bcc3af422754525304203edca34a3e6f44f5cfb.zip
SCI: adding workaround for sq4/room 391
kDisplay is called with an object as opcode, we simply skip over it svn-id: r51208
Diffstat (limited to 'engines/sci/graphics')
-rw-r--r--engines/sci/graphics/paint16.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/engines/sci/graphics/paint16.cpp b/engines/sci/graphics/paint16.cpp
index 90b05c68a6..907e382c59 100644
--- a/engines/sci/graphics/paint16.cpp
+++ b/engines/sci/graphics/paint16.cpp
@@ -480,7 +480,10 @@ reg_t GfxPaint16::kernelDisplay(const char *text, int argc, reg_t *argv) {
_ports->textGreyedOutput(false);
// processing codes in argv
while (argc > 0) {
- displayArg = argv[0].toUint16();
+ if (argv[0].segment)
+ displayArg = 0xFFFF;
+ else
+ displayArg = argv[0].toUint16();
argc--; argv++;
switch (displayArg) {
case SCI_DISPLAY_MOVEPEN:
@@ -543,6 +546,8 @@ reg_t GfxPaint16::kernelDisplay(const char *text, int argc, reg_t *argv) {
default:
if ((g_sci->getGameId() == GID_ISLANDBRAIN) && (g_sci->getEngineState()->currentRoomNumber() == 300))
break; // WORKAROUND: we are called there with an forwarded 0 as additional parameter (script bug)
+ if ((g_sci->getGameId() == GID_SQ4) && (g_sci->getEngineState()->currentRoomNumber() == 391))
+ break; // WORKAROUND: we get a pointer as parameter, skip it (sub 84h)
error("Unknown kDisplay argument %X", displayArg);
break;
}