SCI: removing kSetPort 4 argument support from r44938, which was wrong - adding workaround for lsl6 ending - fixes lsl6 ending

svn-id: r50967
This commit is contained in:
Martin Kiewitz 2010-07-17 19:52:19 +00:00
parent 48b288d9aa
commit 723f15c084
2 changed files with 9 additions and 4 deletions

View File

@ -263,6 +263,12 @@ static const SciWorkaroundEntry kGraphFillBoxAny_workarounds[] = {
SCI_WORKAROUNDENTRY_TERMINATOR
};
// gameID, scriptNr,lvl, object-name, method-name, call, index, replace
static const SciWorkaroundEntry kSetPort_workarounds[] = {
{ GID_LSL6, 740, 0, "rm740", "drawPic", -1, 0, { 1, 0 } }, // ending scene, is called with additional 3 (!) parameters
SCI_WORKAROUNDENTRY_TERMINATOR
};
// gameID, scriptNr,lvl, object-name, method-name, call, index, replace
static const SciWorkaroundEntry kUnLoad_workarounds[] = {
{ GID_LSL6, 130, 0, "recruitLarryScr", "changeState", -1, 0, { 1, 0 } }, // during intro, a 3rd parameter is passed by accident
@ -656,7 +662,7 @@ static SciKernelMapEntry s_kernelMap[] = {
{ MAP_CALL(SetJump), SIG_EVERYWHERE, "oiii", NULL, NULL },
{ MAP_CALL(SetMenu), SIG_EVERYWHERE, "i(.*)", NULL, NULL },
{ MAP_CALL(SetNowSeen), SIG_EVERYWHERE, "o(i)", NULL, NULL },
{ MAP_CALL(SetPort), SIG_EVERYWHERE, "i(iii)(i)(i)(i)", NULL, NULL },
{ MAP_CALL(SetPort), SIG_EVERYWHERE, "i(iiiii)(i)", NULL, kSetPort_workarounds },
{ MAP_CALL(SetQuitStr), SIG_EVERYWHERE, "r", NULL, NULL },
{ MAP_CALL(SetSynonyms), SIG_EVERYWHERE, "o", NULL, NULL },
{ MAP_CALL(SetVideoMode), SIG_EVERYWHERE, "i", NULL, NULL },

View File

@ -965,14 +965,13 @@ reg_t kSetPort(EngineState *s, int argc, reg_t *argv) {
case 7:
initPriorityBandsFlag = true;
case 4:
case 6:
picRect.top = argv[0].toSint16();
picRect.left = argv[1].toSint16();
picRect.bottom = argv[2].toSint16();
picRect.right = argv[3].toSint16();
picTop = (argc >= 6) ? argv[4].toSint16() : 0;
picLeft = (argc >= 6) ? argv[5].toSint16() : 0;
picTop = argv[4].toSint16();
picLeft = argv[5].toSint16();
g_sci->_gfxPorts->kernelSetPicWindow(picRect, picTop, picLeft, initPriorityBandsFlag);
break;