diff options
author | Filippos Karapetis | 2010-08-18 05:27:13 +0000 |
---|---|---|
committer | Filippos Karapetis | 2010-08-18 05:27:13 +0000 |
commit | d0d677ab756bece6e2c7ff06690c2c41ae7f019c (patch) | |
tree | e9123647b84d3180c4ec542ec9fdaa67040b1cbe /engines/sci/engine | |
parent | 190043e6b7249a2669e07264cced434e5b5acd61 (diff) | |
download | scummvm-rg350-d0d677ab756bece6e2c7ff06690c2c41ae7f019c.tar.gz scummvm-rg350-d0d677ab756bece6e2c7ff06690c2c41ae7f019c.tar.bz2 scummvm-rg350-d0d677ab756bece6e2c7ff06690c2c41ae7f019c.zip |
SCI: Fixed bug #3042964 - "KQ4: Signature Mismatch"
svn-id: r52180
Diffstat (limited to 'engines/sci/engine')
-rw-r--r-- | engines/sci/engine/kernel_tables.h | 2 | ||||
-rw-r--r-- | engines/sci/engine/workarounds.cpp | 5 | ||||
-rw-r--r-- | engines/sci/engine/workarounds.h | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index e71e97e95d..b33f9c13c2 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -323,7 +323,7 @@ static SciKernelMapEntry s_kernelMap[] = { { MAP_CALL(Display), SIG_EVERYWHERE, "[ir]([ir!]*)", NULL, kDisplay_workarounds }, // ^ we allow invalid references here, because kDisplay gets called with those in e.g. pq3 during intro // restoreBits() checks and skips invalid handles, so that's fine. Sierra SCI behaved the same - { MAP_CALL(DirLoop), SIG_EVERYWHERE, "oi", NULL, NULL }, + { MAP_CALL(DirLoop), SIG_EVERYWHERE, "oi", NULL, kDirLoop_workarounds }, { MAP_CALL(DisposeClone), SIG_EVERYWHERE, "o", NULL, NULL }, { MAP_CALL(DisposeList), SIG_EVERYWHERE, "l", NULL, NULL }, { MAP_CALL(DisposeScript), SIG_EVERYWHERE, "i(i*)", NULL, kDisposeScript_workarounds }, diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 063eb6880e..4fe1e66570 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -236,6 +236,11 @@ const SciWorkaroundEntry kDisplay_workarounds[] = { }; // gameID, room,script,lvl, object-name, method-name, call,index, workaround +const SciWorkaroundEntry kDirLoop_workarounds[] = { + { GID_KQ4, 4, 992, 0, "Avoid", "doit", -1, 0, { WORKAROUND_IGNORE, 0 } }, // when the ogre catches you in front of his house, second parameter points to the same object as the first parameter, instead of being an integer (the angle) - bug #3042964 +}; + +// gameID, room,script,lvl, object-name, method-name, call,index, workaround const SciWorkaroundEntry kDisposeScript_workarounds[] = { { GID_LAURABOW, 777, 777, 0, "myStab", "changeState", -1, 0, { WORKAROUND_IGNORE, 0 } }, // DEMO: after the will is signed, parameter 0 is an object - bug #3034907 { GID_QFG1, -1, 64, 0, "rm64", "dispose", -1, 0, { WORKAROUND_IGNORE, 0 } }, // when leaving graveyard, parameter 0 is an object diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h index 55a4b8f885..429821930a 100644 --- a/engines/sci/engine/workarounds.h +++ b/engines/sci/engine/workarounds.h @@ -83,6 +83,7 @@ extern const SciWorkaroundEntry kCelHigh_workarounds[]; extern const SciWorkaroundEntry kCelWide_workarounds[]; extern const SciWorkaroundEntry kDeviceInfo_workarounds[]; extern const SciWorkaroundEntry kDisplay_workarounds[]; +extern const SciWorkaroundEntry kDirLoop_workarounds[]; extern const SciWorkaroundEntry kDisposeScript_workarounds[]; extern const SciWorkaroundEntry kDoSoundFade_workarounds[]; extern const SciWorkaroundEntry kFindKey_workarounds[]; |