diff options
-rw-r--r-- | engines/sci/engine/workarounds.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 6fc356a794..08b1234483 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -810,6 +810,18 @@ static const uint16 sig_kGraphRedrawBox_sq4_1[] = { SIG_END }; +// Game: Space Quest 4 +// Calling method: shootEgoScript::changeState +// Subroutine offset: English/German/French/Russian PC floppy, Japanese PC-9801: 0x0f8c, English PC CD: 0x0c4d (script 703) +// Applies to at least: English/German/French/Russian PC floppy, English PC CD, Japanese PC-9801 +static const uint16 sig_kGraphRedrawBox_sq4_2[] = { + 0x3f, 0x03, // link 03 + 0x39, SIG_ADDTOOFFSET(+1), // pushi [ number ] + 0x78, // push1 + 0x39, 0x69, // pushi 69h + SIG_END +}; + // gameID, room,script,lvl, object-name, method-name, local-call-signature, index-range, workaround const SciWorkaroundEntry kGraphRedrawBox_workarounds[] = { { GID_SQ4, 405, 405, 0, "swimAfterEgo", "changeState", NULL, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // skateOrama when "swimming" in the air - accidental additional parameter specified @@ -823,6 +835,8 @@ const SciWorkaroundEntry kGraphRedrawBox_workarounds[] = { { GID_SQ4, 411, 411, 0, "", "changeState", NULL, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // skateOrama when "swimming" in the air... Russian version - bug #5573 { GID_SQ4, 150, 150, 0, "laserScript", "changeState", sig_kGraphRedrawBox_sq4_1, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // when visiting the pedestral where Roger Jr. is trapped, before trashing the brain icon in the programming chapter, accidental additional parameter specified - bug #5479, German - bug #5527 { GID_SQ4, 150, 150, 0, "", "changeState", sig_kGraphRedrawBox_sq4_1, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // same as above, for the Russian version - bug #5573 + { GID_SQ4, -1, 703, 0, "shootEgoScript", "changeState", sig_kGraphRedrawBox_sq4_2, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // estros when getting shot by the police - accidental additional parameter specified + { GID_SQ4, -1, 703, 0, "", "changeState", sig_kGraphRedrawBox_sq4_2, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // same as above, for the Russian version { GID_SQ4, -1, 704, 0, "shootEgo", "changeState", NULL, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // When shot by Droid in Super Computer Maze (Rooms 500, 505, 510...) - accidental additional parameter specified { GID_KQ5, -1, 981, 0, "myWindow", "dispose", NULL, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // Happens in the floppy version, when closing any dialog box, accidental additional parameter specified - bug #5031 { GID_KQ5, -1, 995, 0, "invW", "doit", NULL, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // Happens in the floppy version, when closing the inventory window, accidental additional parameter specified |