diff options
author | sluicebox | 2019-10-21 10:59:56 -0700 |
---|---|---|
committer | sluicebox | 2019-10-21 11:13:24 -0700 |
commit | 8dcdc63af186eba7e5c4d6f9f4e389455c6ff4aa (patch) | |
tree | 3d13172cb52c37411fb41c8a7985ee419ebc1749 | |
parent | 855d8c9155484047c2b894c8409a924be0d5748c (diff) | |
download | scummvm-rg350-8dcdc63af186eba7e5c4d6f9f4e389455c6ff4aa.tar.gz scummvm-rg350-8dcdc63af186eba7e5c4d6f9f4e389455c6ff4aa.tar.bz2 scummvm-rg350-8dcdc63af186eba7e5c4d6f9f4e389455c6ff4aa.zip |
SCI: Add LSL6 Mac Floppy kGetCWD workaround
The game now starts
-rw-r--r-- | engines/sci/engine/kernel_tables.h | 2 | ||||
-rw-r--r-- | engines/sci/engine/workarounds.cpp | 6 | ||||
-rw-r--r-- | engines/sci/engine/workarounds.h | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index 396df9181b..0149f0ef8a 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -707,7 +707,7 @@ static SciKernelMapEntry s_kernelMap[] = { { MAP_CALL(Format), SIG_EVERYWHERE, "r[ri](.*)", NULL, NULL }, { MAP_CALL(GameIsRestarting), SIG_EVERYWHERE, "(i)", NULL, NULL }, { MAP_CALL(GetAngle), SIG_EVERYWHERE, "iiii", NULL, kGetAngle_workarounds }, - { MAP_CALL(GetCWD), SIG_EVERYWHERE, "r", NULL, NULL }, + { MAP_CALL(GetCWD), SIG_EVERYWHERE, "r", NULL, kGetCWD_workarounds }, { MAP_CALL(GetDistance), SIG_EVERYWHERE, "ii(i)(i)(i)(i)", NULL, NULL }, { MAP_CALL(GetEvent), SIG_SCIALL, SIGFOR_MAC, "io(i*)", NULL, NULL }, { MAP_CALL(GetEvent), SIG_EVERYWHERE, "io", NULL, NULL }, diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 15519fb3a2..c0713839ed 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -745,6 +745,12 @@ const SciWorkaroundEntry kGetAngle_workarounds[] = { }; // gameID, room,script,lvl, object-name, method-name, local-call-signature, index-range, workaround +const SciWorkaroundEntry kGetCWD_workarounds[] = { + { GID_LSL6, -1, 0, 0, "LSL6", "play", NULL, 0, 0, { WORKAROUND_IGNORE, 0 } }, // Mac version passes uninitialized global (zero) on startup, then immediately overwrites it with kGetSaveDir + SCI_WORKAROUNDENTRY_TERMINATOR +}; + +// gameID, room,script,lvl, object-name, method-name, local-call-signature, index-range, workaround const SciWorkaroundEntry kFileIOOpen_workarounds[] = { { GID_HOYLE5, -1, 64990, 0, "Restore", "doit", NULL, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // Missing second argument when checking for bridgesg.cat or poker.cat when showing restore dialog { GID_TORIN, 61000, 61000, 0, "roSierraLogo", "init", NULL, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // Missing second argument when the game checks for autosave.cat after the Sierra logo diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h index b244f8ba1b..528fa93ac3 100644 --- a/engines/sci/engine/workarounds.h +++ b/engines/sci/engine/workarounds.h @@ -79,6 +79,7 @@ extern const SciWorkaroundEntry kFindKey_workarounds[]; extern const SciWorkaroundEntry kFrameOut_workarounds[]; extern const SciWorkaroundEntry kDeleteKey_workarounds[]; extern const SciWorkaroundEntry kGetAngle_workarounds[]; +extern const SciWorkaroundEntry kGetCWD_workarounds[]; extern const SciWorkaroundEntry kGraphDrawLine_workarounds[]; extern const SciWorkaroundEntry kGraphSaveBox_workarounds[]; extern const SciWorkaroundEntry kGraphRestoreBox_workarounds[]; |