diff options
| -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 2427e5fc89..a0995b8e66 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -433,7 +433,7 @@ static SciKernelMapEntry s_kernelMap[] = {      { MAP_CALL(SinDiv),            SIG_EVERYWHERE,           "ii",                    NULL,            NULL },      { MAP_CALL(Sort),              SIG_EVERYWHERE,           "ooo",                   NULL,            NULL },      { MAP_CALL(Sqrt),              SIG_EVERYWHERE,           "i",                     NULL,            NULL }, -    { MAP_CALL(StrAt),             SIG_EVERYWHERE,           "ri(i)",                 NULL,            NULL }, +    { MAP_CALL(StrAt),             SIG_EVERYWHERE,           "ri(i)",                 NULL,            kStrAt_workarounds },      { MAP_CALL(StrCat),            SIG_EVERYWHERE,           "rr",                    NULL,            NULL },      { MAP_CALL(StrCmp),            SIG_EVERYWHERE,           "rr(i)",                 NULL,            NULL },      { MAP_CALL(StrCpy),            SIG_EVERYWHERE,           "r[r0](i)",              NULL,            NULL }, diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp index 689fd7bcd6..8c122b7278 100644 --- a/engines/sci/engine/workarounds.cpp +++ b/engines/sci/engine/workarounds.cpp @@ -294,6 +294,12 @@ const SciWorkaroundEntry kSetPort_workarounds[] = {  };  //    gameID,           room,script,lvl,          object-name, method-name,    call,index,                workaround +const SciWorkaroundEntry kStrAt_workarounds[] = { +	{ GID_ISLANDBRAIN,   300,   310,  0,         "childBreed", "changeState",0x1c7c,    0, { WORKAROUND_IGNORE,    0 } }, // when clicking Breed to get the second-generation cyborg hybrid (Standard difficulty), the two parameters are swapped - bug #3037835 +	SCI_WORKAROUNDENTRY_TERMINATOR +}; + +//    gameID,           room,script,lvl,          object-name, method-name,    call,index,                workaround  const SciWorkaroundEntry kUnLoad_workarounds[] = {  	{ GID_CAMELOT,       921,   921,  1,             "Script", "changeState",  0x36,    0, { WORKAROUND_IGNORE, 0 } }, // DEMO: While showing Camelot (and other places), the reference is invalid - bug #3035000  	{ GID_CAMELOT,       921,   921,  1,             "Script", "init",         0x36,    0, { WORKAROUND_IGNORE, 0 } }, // DEMO: When being attacked by the boar (and other places), the reference is invalid - bug #3035000 diff --git a/engines/sci/engine/workarounds.h b/engines/sci/engine/workarounds.h index 8666d1bc6e..a58f790c56 100644 --- a/engines/sci/engine/workarounds.h +++ b/engines/sci/engine/workarounds.h @@ -94,6 +94,7 @@ extern const SciWorkaroundEntry kNewWindow_workarounds[];  extern const SciWorkaroundEntry kPaletteUnsetFlag_workarounds[];  extern const SciWorkaroundEntry kSetCursor_workarounds[];  extern const SciWorkaroundEntry kSetPort_workarounds[]; +extern const SciWorkaroundEntry kStrAt_workarounds[];  extern const SciWorkaroundEntry kUnLoad_workarounds[];  extern SciWorkaroundSolution trackOriginAndFindWorkaround(int index, const SciWorkaroundEntry *workaroundList, SciTrackOriginReply *trackOrigin);  | 
