diff options
Diffstat (limited to 'engines/sci/engine/kernel_tables.h')
-rw-r--r-- | engines/sci/engine/kernel_tables.h | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index 8093147cb4..ac4987e603 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -287,7 +287,7 @@ static const SciKernelMapSubEntry kPalVary_subops[] = { { SIG_SCI32, 6, MAP_CALL(PalVaryPauseResume), "i", NULL }, { SIG_SCI32, 7, MAP_CALL(PalVarySetTarget), "i", NULL }, { SIG_SCI32, 8, MAP_CALL(PalVarySetStart), "i", NULL }, - { SIG_SCI32, 9, MAP_CALL(PalVaryMergeStart), "i", NULL }, + { SIG_SCI32, 9, MAP_CALL(PalVaryMergeStart), "i", kPalVaryMergeStart_workarounds }, #endif SCI_SUBOPENTRY_TERMINATOR }; @@ -429,12 +429,12 @@ static const SciKernelMapSubEntry kList_subops[] = { { SIG_SINCE_SCI21, 14, MAP_CALL(MoveToEnd), "ln", NULL }, { SIG_SINCE_SCI21, 15, MAP_CALL(FindKey), "l.", NULL }, { SIG_SINCE_SCI21, 16, MAP_CALL(DeleteKey), "l.", NULL }, - { SIG_SINCE_SCI21, 17, MAP_CALL(ListAt), "li", NULL }, + { SIG_SINCE_SCI21, 17, MAP_CALL(ListAt), "li", kListAt_workarounds }, { SIG_SINCE_SCI21, 18, MAP_CALL(ListIndexOf) , "l[io]", NULL }, { SIG_SINCE_SCI21, 19, MAP_CALL(ListEachElementDo), "li(.*)", NULL }, { SIG_SINCE_SCI21, 20, MAP_CALL(ListFirstTrue), "li(.*)", NULL }, { SIG_SINCE_SCI21, 21, MAP_CALL(ListAllTrue), "li(.*)", NULL }, - { SIG_SINCE_SCI21, 22, MAP_CALL(Sort), "ooo", NULL }, + { SIG_SINCE_SCI21, 22, MAP_CALL(ListSort), "li(i)", NULL }, SCI_SUBOPENTRY_TERMINATOR }; @@ -511,8 +511,8 @@ static const SciKernelMapSubEntry kArray_subops[] = { { SIG_SCI32, 1, MAP_CALL(ArrayGetSize), "r", NULL }, { SIG_SCI32, 2, MAP_CALL(ArrayGetElement), "ri", NULL }, { SIG_SCI32, 3, MAP_CALL(ArraySetElements), "ri(.*)", kArraySetElements_workarounds }, - { SIG_SCI32, 4, MAP_CALL(ArrayFree), "r", NULL }, - { SIG_SCI32, 5, MAP_CALL(ArrayFill), "riii", NULL }, + { SIG_SCI32, 4, MAP_CALL(ArrayFree), "[0r]", NULL }, + { SIG_SCI32, 5, MAP_CALL(ArrayFill), "riii", kArrayFill_workarounds }, { SIG_SCI32, 6, MAP_CALL(ArrayCopy), "ririi", NULL }, // there is no subop 7 { SIG_SCI32, 8, MAP_CALL(ArrayDuplicate), "r", NULL }, @@ -531,7 +531,7 @@ static const SciKernelMapSubEntry kString_subops[] = { { SIG_THRU_SCI21MID, 2, MAP_CALL(StringGetChar), "ri", NULL }, { SIG_THRU_SCI21MID, 3, MAP_CALL(ArraySetElements), "ri(i*)", kArraySetElements_workarounds }, { SIG_THRU_SCI21MID, 4, MAP_CALL(StringFree), "[0r]", NULL }, - { SIG_THRU_SCI21MID, 5, MAP_CALL(ArrayFill), "rii", NULL }, + { SIG_THRU_SCI21MID, 5, MAP_CALL(ArrayFill), "rii", kArrayFill_workarounds }, { SIG_THRU_SCI21MID, 6, MAP_CALL(ArrayCopy), "ririi", NULL }, { SIG_SCI32, 7, MAP_CALL(StringCompare), "rr(i)", NULL }, @@ -560,6 +560,16 @@ static const SciKernelMapSubEntry kString_subops[] = { }; // version, subId, function-mapping, signature, workarounds +static const SciKernelMapSubEntry kCelInfo_subops[] = { + { SIG_SINCE_SCI21MID, 0, MAP_CALL(CelInfoGetOriginX), "iii", NULL }, + { SIG_SINCE_SCI21MID, 1, MAP_CALL(CelInfoGetOriginY), "iii", NULL }, + { SIG_SINCE_SCI21MID, 2, MAP_EMPTY(CelInfo), "iii", NULL }, + { SIG_SINCE_SCI21MID, 3, MAP_EMPTY(CelInfo), "iii", NULL }, + { SIG_SINCE_SCI21MID, 4, MAP_CALL(CelInfoGetPixel), "iiiii", NULL }, + SCI_SUBOPENTRY_TERMINATOR +}; + +// version, subId, function-mapping, signature, workarounds static const SciKernelMapSubEntry kScrollWindow_subops[] = { { SIG_SCI32, 0, MAP_CALL(ScrollWindowCreate), "oi", NULL }, { SIG_SCI32, 1, MAP_CALL(ScrollWindowAdd), "iriii(i)", kScrollWindowAdd_workarounds }, @@ -743,7 +753,7 @@ static SciKernelMapEntry s_kernelMap[] = { { MAP_CALL(Platform), SIG_SCI16, SIGFOR_ALL, "(.*)", NULL, NULL }, #ifdef ENABLE_SCI32 { "Platform", kPlatform32, SIG_SCI32, SIGFOR_MAC, "(.*)", NULL, NULL }, - { "Platform", kPlatform32, SIG_SCI32, SIGFOR_ALL, "(i)", NULL, NULL }, + { "Platform", kPlatform32, SIG_SCI32, SIGFOR_ALL, "(i)", NULL, kPlatform32_workarounds }, #endif { MAP_CALL(Portrait), SIG_EVERYWHERE, "i(.*)", NULL, NULL }, // subop { MAP_CALL(PrevNode), SIG_EVERYWHERE, "n", NULL, NULL }, @@ -850,7 +860,7 @@ static SciKernelMapEntry s_kernelMap[] = { { MAP_CALL(DeletePlane), SIG_EVERYWHERE, "o", NULL, NULL }, { MAP_CALL(DeleteScreenItem), SIG_EVERYWHERE, "o", NULL, NULL }, { "DisposeTextBitmap", kBitmapDestroy, SIG_SCI2, SIGFOR_ALL, "[r!]", NULL, NULL }, - { MAP_CALL(FrameOut), SIG_EVERYWHERE, "(i)", NULL, NULL }, + { MAP_CALL(FrameOut), SIG_EVERYWHERE, "(i)", NULL, kFrameOut_workarounds }, { MAP_CALL(GetHighPlanePri), SIG_EVERYWHERE, "", NULL, NULL }, { MAP_CALL(InPolygon), SIG_EVERYWHERE, "iio", NULL, NULL }, { MAP_CALL(IsHiRes), SIG_EVERYWHERE, "", NULL, NULL }, @@ -868,7 +878,8 @@ static SciKernelMapEntry s_kernelMap[] = { // our own memory manager and garbage collector, thus we simply call FlushResources, which in turn invokes // our garbage collector (i.e. the SCI0-SCI1.1 semantics). { "Purge", kFlushResources, SIG_EVERYWHERE, "i", NULL, NULL }, - { MAP_CALL(SetShowStyle), SIG_EVERYWHERE, "ioiiiii([ri])(i)", NULL, NULL }, + { MAP_CALL(SetShowStyle), SIG_THRU_SCI21MID, SIGFOR_ALL, "ioiiiii([ri])(i)", NULL, NULL }, + { MAP_CALL(SetShowStyle), SIG_SINCE_SCI21LATE, SIGFOR_ALL, "ioiiiiii(r)(i)", NULL, NULL }, { MAP_CALL(String), SIG_EVERYWHERE, "(.*)", kString_subops, NULL }, { MAP_CALL(UpdatePlane), SIG_EVERYWHERE, "o", NULL, NULL }, { MAP_CALL(UpdateScreenItem), SIG_EVERYWHERE, "o", NULL, NULL }, @@ -932,7 +943,7 @@ static SciKernelMapEntry s_kernelMap[] = { { MAP_CALL(WinHelp), SIG_EVERYWHERE, "(.*)", NULL, NULL }, { MAP_CALL(GetConfig), SIG_EVERYWHERE, "ro", NULL, NULL }, { MAP_CALL(GetSierraProfileInt), SIG_EVERYWHERE, "rri", NULL, NULL }, - { MAP_CALL(CelInfo), SIG_SINCE_SCI21MID, SIGFOR_ALL, "iiiiii", NULL, NULL }, + { MAP_CALL(CelInfo), SIG_SINCE_SCI21MID, SIGFOR_ALL, "(.*)", kCelInfo_subops, NULL }, { MAP_CALL(SetLanguage), SIG_SINCE_SCI21MID, SIGFOR_ALL, "r", NULL, NULL }, { MAP_CALL(ScrollWindow), SIG_EVERYWHERE, "i(.*)", kScrollWindow_subops, NULL }, { MAP_CALL(SetFontRes), SIG_SCI21EARLY, SIGFOR_ALL, "ii", NULL, NULL }, @@ -986,11 +997,7 @@ static SciKernelMapEntry s_kernelMap[] = { { MAP_DUMMY(GetSaveCDisc), SIG_EVERYWHERE, "(.*)", NULL, NULL }, { MAP_DUMMY(TestPoly), SIG_EVERYWHERE, "(.*)", NULL, NULL }, - // SCI2.1 unmapped functions - TODO! - - // SetHotRectangles - used by Phantasmagoria 1, script 64981 (used in the chase scene) - // <lskovlun> The idea, if I understand correctly, is that the engine generates events - // of a special HotRect type continuously when the mouse is on that rectangle + // Used by Phantasmagoria 1, script 64981 (used in the chase scene) { MAP_CALL(SetHotRectangles), SIG_SINCE_SCI21MID, SIGFOR_ALL, "i(r)", NULL, NULL }, // Used by SQ6 to scroll through the inventory via the up/down buttons |