diff options
Diffstat (limited to 'scumm')
-rw-r--r-- | scumm/intern.h | 2 | ||||
-rw-r--r-- | scumm/script_v100he.cpp | 29 |
2 files changed, 29 insertions, 2 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 850001d83e..da8ec39872 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -1082,6 +1082,8 @@ protected: void o100_loadSBNG(); void o100_dim2dim2Array(); void o100_paletteOps(); + void o100_jumpToScriptUnk(); + void o100_startScriptUnk(); void o100_redimArray(); void o100_roomOps(); void o100_startSound(); diff --git a/scumm/script_v100he.cpp b/scumm/script_v100he.cpp index 7b61949d78..e056fda5d7 100644 --- a/scumm/script_v100he.cpp +++ b/scumm/script_v100he.cpp @@ -152,8 +152,8 @@ void ScummEngine_v100he::setupOpcodes() { OPCODE(o6_printSystem), /* 58 */ OPCODE(o6_printCursor), - OPCODE(o90_jumpToScriptUnk), - OPCODE(o90_startScriptUnk), + OPCODE(o100_jumpToScriptUnk), + OPCODE(o100_startScriptUnk), OPCODE(o6_pseudoRoom), /* 5C */ OPCODE(o6_pushByte), @@ -1517,6 +1517,31 @@ void ScummEngine_v100he::o100_paletteOps() { debug(1, "o100_paletteOps stub (%d)", subOp); } +void ScummEngine_v100he::o100_jumpToScriptUnk() { + int args[25]; + int script, cycle; + byte flags; + + getStackList(args, ARRAYSIZE(args)); + cycle = pop(); + script = pop(); + flags = fetchScriptByte(); + stopObjectCode(); + runScript(script, (flags == 128 || flags == 129), (flags == 130 || flags == 129), args, cycle); +} + +void ScummEngine_v100he::o100_startScriptUnk() { + int args[25]; + int script, cycle; + byte flags; + + getStackList(args, ARRAYSIZE(args)); + cycle = pop(); + script = pop(); + flags = fetchScriptByte(); + runScript(script, (flags == 128 || flags == 129), (flags == 130 || flags == 129), args, cycle); +} + void ScummEngine_v100he::o100_redimArray() { int newX, newY; newY = pop(); |