aboutsummaryrefslogtreecommitdiff
path: root/scumm/script_v2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/script_v2.cpp')
-rw-r--r--scumm/script_v2.cpp843
1 files changed, 261 insertions, 582 deletions
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp
index 0a02f51a02..cffb9aade6 100644
--- a/scumm/script_v2.cpp
+++ b/scumm/script_v2.cpp
@@ -33,656 +33,335 @@
#include "dialogs.h" // FIXME: This is just for the FT-INSANE warning.
// Remove when INSANE is implemented
+
+#define OPCODE(x) { &Scumm::x, #x }
+
void Scumm::setupOpcodes2()
{
- static const OpcodeProc opcode_list[256] = {
- /* 00 */
- &Scumm::o6_pushByte,
- &Scumm::o6_pushWord,
- &Scumm::o6_pushByteVar,
- &Scumm::o6_pushWordVar,
- /* 04 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_byteArrayRead,
- &Scumm::o6_wordArrayRead,
- /* 08 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_byteArrayIndexedRead,
- &Scumm::o6_wordArrayIndexedRead,
- /* 0C */
- &Scumm::o6_dup,
- &Scumm::o6_zero,
- &Scumm::o6_eq,
- &Scumm::o6_neq,
- /* 10 */
- &Scumm::o6_gt,
- &Scumm::o6_lt,
- &Scumm::o6_le,
- &Scumm::o6_ge,
- /* 14 */
- &Scumm::o6_add,
- &Scumm::o6_sub,
- &Scumm::o6_mul,
- &Scumm::o6_div,
- /* 18 */
- &Scumm::o6_land,
- &Scumm::o6_lor,
- &Scumm::o6_kill,
- &Scumm::o6_invalid,
- /* 1C */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 20 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 24 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 28 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 2C */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 30 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 34 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 38 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 3C */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* 40 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_writeByteVar,
- &Scumm::o6_writeWordVar,
- /* 44 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_byteArrayWrite,
- &Scumm::o6_wordArrayWrite,
- /* 48 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_byteArrayIndexedWrite,
- &Scumm::o6_wordArrayIndexedWrite,
- /* 4C */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_byteVarInc,
- &Scumm::o6_wordVarInc,
- /* 50 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_byteArrayInc,
- &Scumm::o6_wordArrayInc,
- /* 54 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_byteVarDec,
- &Scumm::o6_wordVarDec,
- /* 58 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_byteArrayDec,
- &Scumm::o6_wordArrayDec,
- /* 5C */
- &Scumm::o6_jumpTrue,
- &Scumm::o6_jumpFalse,
- &Scumm::o6_startScriptEx,
- &Scumm::o6_startScript,
- /* 60 */
- &Scumm::o6_startObject,
- &Scumm::o6_setObjectState,
- &Scumm::o6_setObjectXY,
- &Scumm::o6_drawBlastObject,
- /* 64 */
- &Scumm::o6_setBlastObjectWindow,
- &Scumm::o6_stopObjectCode,
- &Scumm::o6_stopObjectCode,
- &Scumm::o6_endCutscene,
- /* 68 */
- &Scumm::o6_cutScene,
- &Scumm::o6_stopMusic,
- &Scumm::o6_freezeUnfreeze,
- &Scumm::o6_cursorCommand,
- /* 6C */
- &Scumm::o6_breakHere,
- &Scumm::o6_ifClassOfIs,
- &Scumm::o6_setClass,
- &Scumm::o6_getState,
- /* 70 */
- &Scumm::o6_setState,
- &Scumm::o6_setOwner,
- &Scumm::o6_getOwner,
- &Scumm::o6_jump,
- /* 74 */
- &Scumm::o6_startSound,
- &Scumm::o6_stopSound,
- &Scumm::o6_startMusic,
- &Scumm::o6_stopObjectScript,
- /* 78 */
- &Scumm::o6_panCameraTo,
- &Scumm::o6_actorFollowCamera,
- &Scumm::o6_setCameraAt,
- &Scumm::o6_loadRoom,
- /* 7C */
- &Scumm::o6_stopScript,
- &Scumm::o6_walkActorToObj,
- &Scumm::o6_walkActorTo,
- &Scumm::o6_putActorInRoom,
- /* 80 */
- &Scumm::o6_putActorAtObject,
- &Scumm::o6_faceActor,
- &Scumm::o6_animateActor,
- &Scumm::o6_doSentence,
- /* 84 */
- &Scumm::o6_pickupObject,
- &Scumm::o6_loadRoomWithEgo,
- &Scumm::o6_invalid,
- &Scumm::o6_getRandomNumber,
- /* 88 */
- &Scumm::o6_getRandomNumberRange,
- &Scumm::o6_invalid,
- &Scumm::o6_getActorMoving,
- &Scumm::o6_getScriptRunning,
- /* 8C */
- &Scumm::o6_getActorRoom,
- &Scumm::o6_getObjectX,
- &Scumm::o6_getObjectY,
- &Scumm::o6_getObjectOldDir,
- /* 90 */
- &Scumm::o6_getActorWalkBox,
- &Scumm::o6_getActorCostume,
- &Scumm::o6_findInventory,
- &Scumm::o6_getInventoryCount,
- /* 94 */
- &Scumm::o6_getVerbFromXY,
- &Scumm::o6_beginOverride,
- &Scumm::o6_endOverride,
- &Scumm::o6_setObjectName,
- /* 98 */
- &Scumm::o6_isSoundRunning,
- &Scumm::o6_setBoxFlags,
- &Scumm::o6_createBoxMatrix,
- &Scumm::o6_resourceRoutines,
- /* 9C */
- &Scumm::o6_roomOps,
- &Scumm::o6_actorSet,
- &Scumm::o6_verbOps,
- &Scumm::o6_getActorFromXY,
- /* A0 */
- &Scumm::o6_findObject,
- &Scumm::o6_pseudoRoom,
- &Scumm::o6_getActorElevation,
- &Scumm::o6_getVerbEntrypoint,
- /* A4 */
- &Scumm::o6_arrayOps,
- &Scumm::o6_saveRestoreVerbs,
- &Scumm::o6_drawBox,
- &Scumm::o6_invalid,
- /* A8 */
- &Scumm::o6_getActorWidth,
- &Scumm::o6_wait,
- &Scumm::o6_getActorScaleX,
- &Scumm::o6_getActorAnimCounter1,
- /* AC */
- &Scumm::o6_soundKludge,
- &Scumm::o6_isAnyOf,
- &Scumm::o6_quitPauseRestart,
- &Scumm::o6_isActorInBox,
- /* B0 */
- &Scumm::o6_delay,
- &Scumm::o6_delayLonger,
- &Scumm::o6_delayVeryLong,
- &Scumm::o6_stopSentence,
- /* B4 */
- &Scumm::o6_print_0,
- &Scumm::o6_print_1,
- &Scumm::o6_print_2,
- &Scumm::o6_print_3,
- /* B8 */
- &Scumm::o6_printActor,
- &Scumm::o6_printEgo,
- &Scumm::o6_talkActor,
- &Scumm::o6_talkEgo,
- /* BC */
- &Scumm::o6_dim,
- &Scumm::o5_dummy,
- &Scumm::o6_runVerbCodeQuick,
- &Scumm::o6_runScriptQuick,
- /* C0 */
- &Scumm::o6_dim2,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* C4 */
- &Scumm::o6_abs,
- &Scumm::o6_distObjectObject,
- &Scumm::o6_distObjectPt,
- &Scumm::o6_distPtPt,
- /* C8 */
- &Scumm::o6_kernelFunction,
- &Scumm::o6_miscOps,
- &Scumm::o6_delayFrames,
- &Scumm::o6_pickOneOf,
- /* CC */
- &Scumm::o6_pickOneOfDefault,
- &Scumm::o6_unknownCD,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* D0 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_getAnimateVariable,
- &Scumm::o6_invalid,
- /* D4 */
- &Scumm::o6_invalid,
- &Scumm::o6_jumpToScript,
- &Scumm::o6_band,
- &Scumm::o6_bor,
- /* D8 */
- &Scumm::o6_isRoomScriptRunning,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* DC */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* E0 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* E4 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* E8 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* EC */
- &Scumm::o6_getActorPriority,
- &Scumm::o6_getObjectNewDir,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* F0 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* F4 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* F8 */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- /* FC */
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- &Scumm::o6_invalid,
- };
-
- static const char *opcode_lookup[] = {
+ static const OpcodeEntry opcodes[256] = {
/* 00 */
- "o6_pushByte",
- "o6_pushWord",
- "o6_pushByteVar",
- "o6_pushWordVar",
+ OPCODE(o6_pushByte),
+ OPCODE(o6_pushWord),
+ OPCODE(o6_pushByteVar),
+ OPCODE(o6_pushWordVar),
/* 04 */
- "o6_invalid",
- "o6_invalid",
- "o6_byteArrayRead",
- "o6_wordArrayRead",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_byteArrayRead),
+ OPCODE(o6_wordArrayRead),
/* 08 */
- "o6_invalid",
- "o6_invalid",
- "o6_byteArrayIndexedRead",
- "o6_wordArrayIndexedRead",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_byteArrayIndexedRead),
+ OPCODE(o6_wordArrayIndexedRead),
/* 0C */
- "o6_dup",
- "o6_zero",
- "o6_eq",
- "o6_neq",
+ OPCODE(o6_dup),
+ OPCODE(o6_zero),
+ OPCODE(o6_eq),
+ OPCODE(o6_neq),
/* 10 */
- "o6_gt",
- "o6_lt",
- "o6_le",
- "o6_ge",
+ OPCODE(o6_gt),
+ OPCODE(o6_lt),
+ OPCODE(o6_le),
+ OPCODE(o6_ge),
/* 14 */
- "o6_add",
- "o6_sub",
- "o6_mul",
- "o6_div",
+ OPCODE(o6_add),
+ OPCODE(o6_sub),
+ OPCODE(o6_mul),
+ OPCODE(o6_div),
/* 18 */
- "o6_land",
- "o6_lor",
- "o6_kill",
- "o6_invalid",
+ OPCODE(o6_land),
+ OPCODE(o6_lor),
+ OPCODE(o6_kill),
+ OPCODE(o6_invalid),
/* 1C */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 20 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 24 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 28 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 2C */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 30 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 34 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 38 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 3C */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* 40 */
- "o6_invalid",
- "o6_invalid",
- "o6_writeByteVar",
- "o6_writeWordVar",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_writeByteVar),
+ OPCODE(o6_writeWordVar),
/* 44 */
- "o6_invalid",
- "o6_invalid",
- "o6_byteArrayWrite",
- "o6_wordArrayWrite",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_byteArrayWrite),
+ OPCODE(o6_wordArrayWrite),
/* 48 */
- "o6_invalid",
- "o6_invalid",
- "o6_byteArrayIndexedWrite",
- "o6_wordArrayIndexedWrite",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_byteArrayIndexedWrite),
+ OPCODE(o6_wordArrayIndexedWrite),
/* 4C */
- "o6_invalid",
- "o6_invalid",
- "o6_byteVarInc",
- "o6_wordVarInc",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_byteVarInc),
+ OPCODE(o6_wordVarInc),
/* 50 */
- "o6_invalid",
- "o6_invalid",
- "o6_byteArrayInc",
- "o6_wordArrayInc",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_byteArrayInc),
+ OPCODE(o6_wordArrayInc),
/* 54 */
- "o6_invalid",
- "o6_invalid",
- "o6_byteVarDec",
- "o6_wordVarDec",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_byteVarDec),
+ OPCODE(o6_wordVarDec),
/* 58 */
- "o6_invalid",
- "o6_invalid",
- "o6_byteArrayDec",
- "o6_wordArrayDec",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_byteArrayDec),
+ OPCODE(o6_wordArrayDec),
/* 5C */
- "o6_jumpTrue",
- "o6_jumpFalse",
- "o6_startScriptEx",
- "o6_startScript",
+ OPCODE(o6_jumpTrue),
+ OPCODE(o6_jumpFalse),
+ OPCODE(o6_startScriptEx),
+ OPCODE(o6_startScript),
/* 60 */
- "o6_startObject",
- "o6_setObjectState",
- "o6_setObjectXY",
- "o6_drawBlastObject",
+ OPCODE(o6_startObject),
+ OPCODE(o6_setObjectState),
+ OPCODE(o6_setObjectXY),
+ OPCODE(o6_drawBlastObject),
/* 64 */
- "o6_invalid",
- "o6_stopObjectCode",
- "o6_stopObjectCode",
- "o6_endCutscene",
+ OPCODE(o6_setBlastObjectWindow),
+ OPCODE(o6_stopObjectCode),
+ OPCODE(o6_stopObjectCode),
+ OPCODE(o6_endCutscene),
/* 68 */
- "o6_cutScene",
- "o6_stopMusic",
- "o6_freezeUnfreeze",
- "o6_cursorCommand",
+ OPCODE(o6_cutScene),
+ OPCODE(o6_stopMusic),
+ OPCODE(o6_freezeUnfreeze),
+ OPCODE(o6_cursorCommand),
/* 6C */
- "o6_breakHere",
- "o6_ifClassOfIs",
- "o6_setClass",
- "o6_getState",
+ OPCODE(o6_breakHere),
+ OPCODE(o6_ifClassOfIs),
+ OPCODE(o6_setClass),
+ OPCODE(o6_getState),
/* 70 */
- "o6_setState",
- "o6_setOwner",
- "o6_getOwner",
- "o6_jump",
+ OPCODE(o6_setState),
+ OPCODE(o6_setOwner),
+ OPCODE(o6_getOwner),
+ OPCODE(o6_jump),
/* 74 */
- "o6_startSound",
- "o6_stopSound",
- "o6_startMusic",
- "o6_stopObjectScript",
+ OPCODE(o6_startSound),
+ OPCODE(o6_stopSound),
+ OPCODE(o6_startMusic),
+ OPCODE(o6_stopObjectScript),
/* 78 */
- "o6_panCameraTo",
- "o6_actorFollowCamera",
- "o6_setCameraAt",
- "o6_loadRoom",
+ OPCODE(o6_panCameraTo),
+ OPCODE(o6_actorFollowCamera),
+ OPCODE(o6_setCameraAt),
+ OPCODE(o6_loadRoom),
/* 7C */
- "o6_stopScript",
- "o6_walkActorToObj",
- "o6_walkActorTo",
- "o6_putActorInRoom",
+ OPCODE(o6_stopScript),
+ OPCODE(o6_walkActorToObj),
+ OPCODE(o6_walkActorTo),
+ OPCODE(o6_putActorInRoom),
/* 80 */
- "o6_putActorAtObject",
- "o6_faceActor",
- "o6_animateActor",
- "o6_doSentence",
+ OPCODE(o6_putActorAtObject),
+ OPCODE(o6_faceActor),
+ OPCODE(o6_animateActor),
+ OPCODE(o6_doSentence),
/* 84 */
- "o6_pickupObject",
- "o6_loadRoomWithEgo",
- "o6_invalid",
- "o6_getRandomNumber",
+ OPCODE(o6_pickupObject),
+ OPCODE(o6_loadRoomWithEgo),
+ OPCODE(o6_invalid),
+ OPCODE(o6_getRandomNumber),
/* 88 */
- "o6_getRandomNumberRange",
- "o6_invalid",
- "o6_getActorMoving",
- "o6_getScriptRunning",
+ OPCODE(o6_getRandomNumberRange),
+ OPCODE(o6_invalid),
+ OPCODE(o6_getActorMoving),
+ OPCODE(o6_getScriptRunning),
/* 8C */
- "o6_getActorRoom",
- "o6_getObjectX",
- "o6_getObjectY",
- "o6_getObjectOldDir",
+ OPCODE(o6_getActorRoom),
+ OPCODE(o6_getObjectX),
+ OPCODE(o6_getObjectY),
+ OPCODE(o6_getObjectOldDir),
/* 90 */
- "o6_getActorWalkBox",
- "o6_getActorCostume",
- "o6_findInventory",
- "o6_getInventoryCount",
+ OPCODE(o6_getActorWalkBox),
+ OPCODE(o6_getActorCostume),
+ OPCODE(o6_findInventory),
+ OPCODE(o6_getInventoryCount),
/* 94 */
- "o6_getVerbFromXY",
- "o6_beginOverride",
- "o6_endOverride",
- "o6_setObjectName",
+ OPCODE(o6_getVerbFromXY),
+ OPCODE(o6_beginOverride),
+ OPCODE(o6_endOverride),
+ OPCODE(o6_setObjectName),
/* 98 */
- "o6_isSoundRunning",
- "o6_setBoxFlags",
- "o6_createBoxMatrix",
- "o6_resourceRoutines",
+ OPCODE(o6_isSoundRunning),
+ OPCODE(o6_setBoxFlags),
+ OPCODE(o6_createBoxMatrix),
+ OPCODE(o6_resourceRoutines),
/* 9C */
- "o6_roomOps",
- "o6_actorSet",
- "o6_verbOps",
- "o6_getActorFromXY",
+ OPCODE(o6_roomOps),
+ OPCODE(o6_actorSet),
+ OPCODE(o6_verbOps),
+ OPCODE(o6_getActorFromXY),
/* A0 */
- "o6_findObject",
- "o6_pseudoRoom",
- "o6_getActorElevation",
- "o6_getVerbEntrypoint",
+ OPCODE(o6_findObject),
+ OPCODE(o6_pseudoRoom),
+ OPCODE(o6_getActorElevation),
+ OPCODE(o6_getVerbEntrypoint),
/* A4 */
- "o6_arrayOps",
- "o6_saveRestoreVerbs",
- "o6_drawBox",
- "o6_invalid",
+ OPCODE(o6_arrayOps),
+ OPCODE(o6_saveRestoreVerbs),
+ OPCODE(o6_drawBox),
+ OPCODE(o6_invalid),
/* A8 */
- "o6_getActorWidth",
- "o6_wait",
- "o6_getActorScaleX",
- "o6_getActorAnimCounter1",
+ OPCODE(o6_getActorWidth),
+ OPCODE(o6_wait),
+ OPCODE(o6_getActorScaleX),
+ OPCODE(o6_getActorAnimCounter1),
/* AC */
- "o6_soundKludge",
- "o6_isAnyOf",
- "o6_quitPauseRestart",
- "o6_isActorInBox",
+ OPCODE(o6_soundKludge),
+ OPCODE(o6_isAnyOf),
+ OPCODE(o6_quitPauseRestart),
+ OPCODE(o6_isActorInBox),
/* B0 */
- "o6_delay",
- "o6_delayLonger",
- "o6_delayVeryLong",
- "o6_stopSentence",
+ OPCODE(o6_delay),
+ OPCODE(o6_delayLonger),
+ OPCODE(o6_delayVeryLong),
+ OPCODE(o6_stopSentence),
/* B4 */
- "o6_print_0",
- "o6_print_1",
- "o6_print_2",
- "o6_print_3",
+ OPCODE(o6_print_0),
+ OPCODE(o6_print_1),
+ OPCODE(o6_print_2),
+ OPCODE(o6_print_3),
/* B8 */
- "o6_printActor",
- "o6_printEgo",
- "o6_talkActor",
- "o6_talkEgo",
+ OPCODE(o6_printActor),
+ OPCODE(o6_printEgo),
+ OPCODE(o6_talkActor),
+ OPCODE(o6_talkEgo),
/* BC */
- "o6_dim",
- "o6_invalid",
- "o6_runVerbCodeQuick",
- "o6_runScriptQuick",
+ OPCODE(o6_dim),
+ OPCODE(o5_dummy),
+ OPCODE(o6_runVerbCodeQuick),
+ OPCODE(o6_runScriptQuick),
/* C0 */
- "o6_dim2",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_dim2),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* C4 */
- "o6_abs",
- "o6_distObjectObject",
- "o6_distObjectPt",
- "o6_distPtPt",
+ OPCODE(o6_abs),
+ OPCODE(o6_distObjectObject),
+ OPCODE(o6_distObjectPt),
+ OPCODE(o6_distPtPt),
/* C8 */
- "o6_kernelFunction",
- "o6_miscOps",
- "o6_breakMaybe",
- "o6_pickOneOf",
+ OPCODE(o6_kernelFunction),
+ OPCODE(o6_miscOps),
+ OPCODE(o6_delayFrames),
+ OPCODE(o6_pickOneOf),
/* CC */
- "o6_pickOneOfDefault",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_pickOneOfDefault),
+ OPCODE(o6_unknownCD),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* D0 */
- "o6_invalid",
- "o6_invalid",
- "o6_getAnimateVariable",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_getAnimateVariable),
+ OPCODE(o6_invalid),
/* D4 */
- "o6_invalid",
- "o6_jumpToScript",
- "o6_band",
- "o6_bor",
+ OPCODE(o6_invalid),
+ OPCODE(o6_jumpToScript),
+ OPCODE(o6_band),
+ OPCODE(o6_bor),
/* D8 */
- "o6_isRoomScriptRunning",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_isRoomScriptRunning),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* DC */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* E0 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* E4 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* E8 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* EC */
- "o6_invalid",
- "o6_getObjectNewDir",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_getActorPriority),
+ OPCODE(o6_getObjectNewDir),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* F0 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* F4 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* F8 */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
/* FC */
- "o6_invalid",
- "o6_invalid",
- "o6_invalid",
- "o6_invalid"
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
+ OPCODE(o6_invalid),
};
- _opcodes = opcode_list;
- _opcodes_lookup = opcode_lookup;
+ _opcodes = opcodes;
}
void Scumm::o6_setBlastObjectWindow()
{ // Set BOMP processing window