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 | |
| 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
| -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[]; | 
