diff options
author | Martin Kiewitz | 2010-07-23 13:57:45 +0000 |
---|---|---|
committer | Martin Kiewitz | 2010-07-23 13:57:45 +0000 |
commit | 0bcc3af422754525304203edca34a3e6f44f5cfb (patch) | |
tree | c5820e1d94392b0e4b3df67f06e3fedb61bbbf38 /engines/sci/graphics | |
parent | 8cc6d8d0eb71c176cbe5f98385dd658e8228a17d (diff) | |
download | scummvm-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.cpp | 7 |
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; } |