aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Kołodziejski2002-12-23 09:14:58 +0000
committerPaweł Kołodziejski2002-12-23 09:14:58 +0000
commitaf86ee50322270cadbc9458bb9c55ae1a919472a (patch)
tree3808830ea65c9ec25a5cdde6de939dee82968061
parent1af90fe06ac7b2d648feb9b65e7b48279ddaface (diff)
downloadscummvm-rg350-af86ee50322270cadbc9458bb9c55ae1a919472a.tar.gz
scummvm-rg350-af86ee50322270cadbc9458bb9c55ae1a919472a.tar.bz2
scummvm-rg350-af86ee50322270cadbc9458bb9c55ae1a919472a.zip
updated list opcode script v8
svn-id: r6066
-rw-r--r--scumm/intern.h157
-rw-r--r--scumm/script_v8.cpp1353
2 files changed, 971 insertions, 539 deletions
diff --git a/scumm/intern.h b/scumm/intern.h
index 60d311e791..e65152caf4 100644
--- a/scumm/intern.h
+++ b/scumm/intern.h
@@ -396,23 +396,162 @@ protected:
virtual void executeOpcode(int i);
virtual const char *getOpcodeDesc(int i);
- virtual uint fetchScriptWord();
- virtual int fetchScriptWordSigned();
+ virtual uint32 fetchScriptDword();
+ virtual int fetchScriptDwordSigned();
/* Version 8 script opcodes */
void o8_unknown();
void o8_invalid();
+ void o8_pushNumber();
+ void o8_pushVariable();
+ void o8_pushArrayValue();
+ void o8_pushArrayValueIndexed();
+ void o8_dup();
void o8_pop();
+ void o8_not();
+ void o8_eq();
+ void o8_neq();
+ void o8_gt();
+ void o8_lt();
+ void o8_leq();
+ void o8_geq();
+ void o8_add();
+ void o8_sub();
+ void o8_mul();
+ void o8_div();
+ void o8_land();
+ void o8_lor();
+ void o8_band();
+ void o8_bor();
void o8_mod();
- void o8_wait();
- void o8_cursorCommand();
- void o8_resourceRoutines();
- void o8_roomOps();
- void o8_actorSet();
+ void o8_if();
+ void o8_ifNot();
+ void o8_jump();
+ void o8_breakHere();
+ void o8_breakHereVar();
+ void o8_waitForStuff();
+ void o8_sleepJiffies();
+ void o8_sleepSeconds();
+ void o8_sleepMinutes();
+ void o8_storeVariable();
+ void o8_incVariable();
+ void o8_decVariable();
+ void o8_arrayDim();
+ void o8_storeArray();
+ void o8_incArray();
+ void o8_decArray();
+ void o8_arrayDim2();
+ void o8_storeArrayIndexed();
+ void o8_assignArray();
+ void o8_arrayShuffle();
+ void o8_arrayLocalize();
+ void o8_startScript();
+ void o8_startScriptQuick();
+ void o8_endScript();
+ void o8_stopScript();
+ void o8_chainScript();
+ void o8_return();
+ void o8_startObject();
+ void o8_stopObject();
+ void o8_cutscene();
+ void o8_endCutscene();
+ void o8_freezeScripts();
+ void o8_beginOverride();
+ void o8_endOverride();
+ void o8_stopSentence();
+ void o8_debug();
+ void o8_debugWin();
+ void o8_cameraPanTo();
+ void o8_cameraFollow();
+ void o8_cameraAt();
+ void o8_sayLine();
+ void o8_sayLineDefault();
+ void o8_sayLineSimple();
+ void o8_sayLineSimpleDefault();
+ void o8_printLine();
+ void o8_printCursor();
+ void o8_printDebug();
+ void o8_printSystem();
+ void o8_blastText();
+ void o8_drawObject();
+ void o8_blastObject();
+ void o8_userFace();
+ void o8_currentRoom();
+ void o8_comeOutDoor();
+ void o8_walkActorToObject();
+ void o8_walkActorToXY();
+ void o8_putActorAtXY();
+ void o8_putActorAtObject();
+ void o8_faceTowards();
+ void o8_doAnimation();
+ void o8_doSentence();
+ void o8_pickUpObject();
+ void o8_setBox();
+ void o8_setBoxPath();
+ void o8_setBoxSet();
+ void o8_heapStuff();
+ void o8_roomStuff();
+ void o8_actorStuff();
void o8_cameraStuff();
- void o8_verbOps();
+ void o8_verbStuff();
+ void o8_startSfx();
+ void o8_startMusic();
+ void o8_stopSound();
+ void o8_soundKludge();
+ void o8_system();
+ void o8_verbSets();
+ void o8_newNameOf();
+ void o8_getTimeDate();
+ void o8_drawBox();
+ void o8_actObjStamp();
+ void o8_startVideo();
+ void o8_kludge();
+ void o8_pick();
+ void o8_pickDefault();
+ void o8_pickRandom();
+ void o8_inSet();
+ void o8_getRandomNumber();
+ void o8_getRandomNumberRange();
+ void o8_classOf();
+ void o8_stateOf();
+ void o8_ownerOf();
+ void o8_scriptRunning();
+ void o8_objectRunning();
+ void o8_soundRunning();
+ void o8_abs();
+ void o8_pixel();
+ void o8_inBox();
+ void o8_validVerb();
+ void o8_findActor();
+ void o8_findObject();
+ void o8_findVerb();
+ void o8_findAllObjects();
+ void o8_actorInvertory();
+ void o8_actorInvertoryCount();
+ void o8_actorVariable();
+ void o8_actorRoom();
+ void o8_actorBox();
+ void o8_actorMoving();
+ void o8_actorCostume();
+ void o8_actorScale();
+ void o8_actorDepth();
+ void o8_actorElevation();
+ void o8_actorWidth();
+ void o8_actObjFacing();
+ void o8_actObjX();
+ void o8_actObjY();
+ void o8_actorChore();
+ void o8_proximity2ActObjs();
+ void o8_proximity2Points();
+ void o8_objectImageX();
+ void o8_objectImageY();
+ void o8_objectImageWidth();
+ void o8_objectImageHeight();
+ void o8_verbX();
+ void o8_verbY();
+ void o8_stringWidth();
+ void o8_actorZPlane();
};
-
#endif
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp
index 6e88455807..a6e5934ea1 100644
--- a/scumm/script_v8.cpp
+++ b/scumm/script_v8.cpp
@@ -33,328 +33,327 @@
void Scumm_v8::setupOpcodes()
{
- // TODO: any of the o6_ entries are potentially wrong and pure guesses :-)
static const OpcodeEntryV8 opcodes[256] = {
/* 00 */
- OPCODE(o8_unknown),
- OPCODE(o6_pushWord),
- OPCODE(o6_pushWordVar),
- OPCODE(o6_wordArrayRead),
+ OPCODE(o8_invalid),
+ OPCODE(o8_pushNumber),
+ OPCODE(o8_pushVariable),
+ OPCODE(o8_pushArrayValue),
/* 04 */
- OPCODE(o6_wordArrayIndexedRead),
- OPCODE(o6_dup),
+ OPCODE(o8_pushArrayValueIndexed),
+ OPCODE(o8_dup),
OPCODE(o8_pop),
OPCODE(o6_not),
/* 08 */
- OPCODE(o6_eq),
- OPCODE(o6_neq),
- OPCODE(o6_gt),
- OPCODE(o6_lt),
+ OPCODE(o8_eq),
+ OPCODE(o8_neq),
+ OPCODE(o8_gt),
+ OPCODE(o8_lt),
/* 0C */
- OPCODE(o6_le),
- OPCODE(o6_ge),
- OPCODE(o6_add),
- OPCODE(o6_sub),
+ OPCODE(o8_leq),
+ OPCODE(o8_geq),
+ OPCODE(o8_add),
+ OPCODE(o8_sub),
/* 10 */
- OPCODE(o6_mul),
- OPCODE(o6_div),
- OPCODE(o6_land),
- OPCODE(o6_lor),
+ OPCODE(o8_mul),
+ OPCODE(o8_div),
+ OPCODE(o8_land),
+ OPCODE(o8_lor),
/* 14 */
- OPCODE(o6_band),
- OPCODE(o6_bor),
+ OPCODE(o8_band),
+ OPCODE(o8_bor),
OPCODE(o8_mod),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
/* 18 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 1C */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 20 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 24 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 28 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 2C */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 30 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 34 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 38 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 3C */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 40 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 44 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 48 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 4C */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 50 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 54 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 58 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 5C */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 60 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* 64 */
- OPCODE(o6_jumpFalse), // Not sure about which of these two is which (false==if or true==if ?!?)...
- OPCODE(o6_jumpTrue), // ... since "if" could mean 'jump "if"' or 'execute following code "if", otherwise jump'.
- OPCODE(o6_jump),
- OPCODE(o6_breakHere),
+ OPCODE(o8_if),
+ OPCODE(o8_ifNot),
+ OPCODE(o8_jump),
+ OPCODE(o8_breakHere),
/* 68 */
- OPCODE(o8_unknown),
- OPCODE(o8_wait),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_breakHereVar),
+ OPCODE(o8_waitForStuff),
+ OPCODE(o8_sleepJiffies),
+ OPCODE(o8_sleepSeconds),
/* 6C */
- OPCODE(o8_unknown),
- OPCODE(o6_writeWordVar),
- OPCODE(o6_wordVarInc),
- OPCODE(o6_wordVarDec),
+ OPCODE(o8_sleepMinutes),
+ OPCODE(o8_storeVariable),
+ OPCODE(o8_incVariable),
+ OPCODE(o8_decVariable),
/* 70 */
- OPCODE(o6_dim),
- OPCODE(o6_wordArrayWrite),
- OPCODE(o6_wordArrayInc),
- OPCODE(o6_wordArrayDec),
+ OPCODE(o8_arrayDim),
+ OPCODE(o8_storeArray),
+ OPCODE(o8_incArray),
+ OPCODE(o8_decArray),
/* 74 */
- OPCODE(o6_dim2),
- OPCODE(o6_wordArrayIndexedWrite),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_arrayDim2),
+ OPCODE(o8_storeArrayIndexed),
+ OPCODE(o8_assignArray),
+ OPCODE(o8_arrayShuffle),
/* 78 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_arrayLocalize),
+ OPCODE(o8_startScript),
+ OPCODE(o8_startScriptQuick),
+ OPCODE(o8_endScript),
/* 7C */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_stopScript),
+ OPCODE(o8_chainScript),
+ OPCODE(o8_return),
+ OPCODE(o8_startObject),
/* 80 */
- OPCODE(o8_unknown),
- OPCODE(o6_cutscene),
- OPCODE(o6_endCutscene),
- OPCODE(o8_unknown),
+ OPCODE(o8_stopObject),
+ OPCODE(o8_cutscene),
+ OPCODE(o8_endCutscene),
+ OPCODE(o8_freezeScripts),
/* 84 */
- OPCODE(o6_beginOverride),
- OPCODE(o6_endOverride),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_beginOverride),
+ OPCODE(o8_endOverride),
+ OPCODE(o8_stopSentence),
+ OPCODE(o8_debug),
/* 88 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_debugWin),
+ OPCODE(o8_classOf),
+ OPCODE(o8_stateOf),
+ OPCODE(o8_ownerOf),
/* 8C */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_cameraPanTo),
+ OPCODE(o8_cameraFollow),
+ OPCODE(o8_cameraAt),
+ OPCODE(o8_sayLine),
/* 90 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_sayLineDefault),
+ OPCODE(o8_sayLineSimple),
+ OPCODE(o8_sayLineSimpleDefault),
+ OPCODE(o8_printLine),
/* 94 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_printCursor),
+ OPCODE(o8_printDebug),
+ OPCODE(o8_printSystem),
+ OPCODE(o8_blastText),
/* 98 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_drawObject),
+ OPCODE(o8_invalid),
+ OPCODE(o8_blastObject),
+ OPCODE(o8_invalid),
/* 9C */
- OPCODE(o8_cursorCommand),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_userFace),
+ OPCODE(o8_currentRoom),
+ OPCODE(o8_comeOutDoor),
+ OPCODE(o8_walkActorToObject),
/* A0 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_walkActorToXY),
+ OPCODE(o8_putActorAtXY),
+ OPCODE(o8_putActorAtObject),
+ OPCODE(o8_faceTowards),
/* A4 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_doAnimation),
+ OPCODE(o8_doSentence),
+ OPCODE(o8_pickUpObject),
+ OPCODE(o8_setBox),
/* A8 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_resourceRoutines),
- OPCODE(o8_roomOps),
+ OPCODE(o8_setBoxPath),
+ OPCODE(o8_setBoxSet),
+ OPCODE(o8_heapStuff),
+ OPCODE(o8_roomStuff),
/* AC */
- OPCODE(o8_actorSet),
+ OPCODE(o8_actorStuff),
OPCODE(o8_cameraStuff),
- OPCODE(o8_verbOps),
- OPCODE(o8_unknown),
+ OPCODE(o8_verbStuff),
+ OPCODE(o8_startSfx),
/* B0 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_startMusic),
+ OPCODE(o8_stopSound),
+ OPCODE(o8_soundKludge),
+ OPCODE(o8_system),
/* B4 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_verbSets),
+ OPCODE(o8_newNameOf),
+ OPCODE(o8_getTimeDate),
+ OPCODE(o8_drawBox),
/* B8 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_actObjStamp),
+ OPCODE(o8_startVideo),
+ OPCODE(o8_kludge),
+ OPCODE(o8_invalid),
/* BC */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* C0 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* C4 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* C8 */
OPCODE(o6_startScript),
OPCODE(o6_startObject),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_pick),
+ OPCODE(o8_pickDefault),
/* CC */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o6_getRandomNumber),
- OPCODE(o6_getRandomNumberRange),
+ OPCODE(o8_pickRandom),
+ OPCODE(o8_inSet),
+ OPCODE(o8_getRandomNumber),
+ OPCODE(o8_getRandomNumberRange),
/* D0 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_classOf),
+ OPCODE(o8_stateOf),
+ OPCODE(o8_ownerOf),
+ OPCODE(o8_scriptRunning),
/* D4 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_objectRunning),
+ OPCODE(o8_soundRunning),
+ OPCODE(o8_abs),
+ OPCODE(o8_pixel),
/* D8 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_kludge),
+ OPCODE(o8_inBox),
+ OPCODE(o8_validVerb),
+ OPCODE(o8_findActor),
/* DC */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_findObject),
+ OPCODE(o8_findVerb),
+ OPCODE(o8_findAllObjects),
+ OPCODE(o8_actorInvertory),
/* E0 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_actorInvertoryCount),
+ OPCODE(o8_actorVariable),
+ OPCODE(o8_actorRoom),
+ OPCODE(o8_actorBox),
/* E4 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_actorMoving),
+ OPCODE(o8_actorCostume),
+ OPCODE(o8_actorScale),
+ OPCODE(o8_actorDepth),
/* E8 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_actorElevation),
+ OPCODE(o8_actorWidth),
+ OPCODE(o8_actObjFacing),
+ OPCODE(o8_actObjX),
/* EC */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_actObjY),
+ OPCODE(o8_actorChore),
+ OPCODE(o8_proximity2ActObjs),
+ OPCODE(o8_proximity2Points),
/* F0 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_objectImageX),
+ OPCODE(o8_objectImageY),
+ OPCODE(o8_objectImageWidth),
+ OPCODE(o8_objectImageHeight),
/* F4 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_verbX),
+ OPCODE(o8_verbY),
+ OPCODE(o8_stringWidth),
+ OPCODE(o8_actorZPlane),
/* F8 */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
/* FC */
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
- OPCODE(o8_unknown),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
+ OPCODE(o8_invalid),
};
_opcodesV8 = opcodes;
@@ -371,8 +370,7 @@ const char *Scumm_v8::getOpcodeDesc(int i)
return _opcodesV8[i].desc;
}
-// In V8, the word size is 4 byte, not 2 bytes as in V6/V7 games
-uint Scumm_v8::fetchScriptWord()
+uint32 Scumm_v8::fetchScriptDword()
{
int a;
if (*_lastCodePtr + sizeof(MemBlkHeader) != _scriptOrgPointer) {
@@ -385,33 +383,125 @@ uint Scumm_v8::fetchScriptWord()
return a;
}
-int Scumm_v8::fetchScriptWordSigned()
+int Scumm_v8::fetchScriptDwordSigned()
{
- return (int32)fetchScriptWord();
+ return (int32)fetchScriptDword();
}
-void Scumm_v8::o8_unknown()
+void Scumm_v8::o8_invalid()
{
- warning("Unknown opcode '%x' at %x", _opcode, _scriptPointer - _scriptOrgPointer);
+ error("Invalid opcode '%x' at %x", _opcode, _scriptPointer - _scriptOrgPointer);
}
-void Scumm_v8::o8_invalid()
+void Scumm_v8::o8_pushNumber()
+{
+}
+
+void Scumm_v8::o8_pushVariable()
+{
+}
+
+void Scumm_v8::o8_pushArrayValue()
+{
+}
+
+void Scumm_v8::o8_pushArrayValueIndexed()
+{
+}
+
+void Scumm_v8::o8_dup()
{
- error("Invalid opcode '%x' at %x", _opcode, _scriptPointer - _scriptOrgPointer);
}
void Scumm_v8::o8_pop()
{
- pop();
+}
+
+void Scumm_v8::o8_not()
+{
+}
+
+void Scumm_v8::o8_eq()
+{
+}
+
+void Scumm_v8::o8_neq()
+{
+}
+
+void Scumm_v8::o8_gt()
+{
+}
+
+void Scumm_v8::o8_lt()
+{
+}
+
+void Scumm_v8::o8_leq()
+{
+}
+
+void Scumm_v8::o8_geq()
+{
+}
+
+void Scumm_v8::o8_add()
+{
+}
+
+void Scumm_v8::o8_sub()
+{
+}
+
+void Scumm_v8::o8_mul()
+{
+}
+
+void Scumm_v8::o8_div()
+{
+}
+
+void Scumm_v8::o8_land()
+{
+}
+
+void Scumm_v8::o8_lor()
+{
+}
+
+void Scumm_v8::o8_band()
+{
}
void Scumm_v8::o8_mod()
{
- int a = pop();
- push(pop() % a);
}
-void Scumm_v8::o8_wait()
+void Scumm_v8::o8_bor()
+{
+}
+
+void Scumm_v8::o8_if()
+{
+}
+
+void Scumm_v8::o8_ifNot()
+{
+}
+
+void Scumm_v8::o8_jump()
+{
+}
+
+void Scumm_v8::o8_breakHere()
+{
+}
+
+void Scumm_v8::o8_breakHereVar()
+{
+}
+
+void Scumm_v8::o8_waitForStuff()
{
// TODO
byte subOp = fetchScriptByte();
@@ -427,7 +517,187 @@ void Scumm_v8::o8_wait()
}
}
-void Scumm_v8::o8_cursorCommand()
+void Scumm_v8::o8_sleepJiffies()
+{
+}
+
+void Scumm_v8::o8_sleepSeconds()
+{
+}
+
+void Scumm_v8::o8_sleepMinutes()
+{
+}
+
+void Scumm_v8::o8_storeVariable()
+{
+}
+
+void Scumm_v8::o8_incVariable()
+{
+}
+
+void Scumm_v8::o8_decVariable()
+{
+}
+
+void Scumm_v8::o8_arrayDim()
+{
+}
+
+void Scumm_v8::o8_storeArray()
+{
+}
+
+void Scumm_v8::o8_incArray()
+{
+}
+
+void Scumm_v8::o8_decArray()
+{
+}
+
+void Scumm_v8::o8_arrayDim2()
+{
+}
+
+void Scumm_v8::o8_storeArrayIndexed()
+{
+}
+
+void Scumm_v8::o8_assignArray()
+{
+}
+
+void Scumm_v8::o8_arrayShuffle()
+{
+}
+
+void Scumm_v8::o8_arrayLocalize()
+{
+}
+
+void Scumm_v8::o8_startScript()
+{
+}
+
+void Scumm_v8::o8_startScriptQuick()
+{
+}
+
+void Scumm_v8::o8_endScript()
+{
+}
+
+void Scumm_v8::o8_stopScript()
+{
+}
+
+void Scumm_v8::o8_chainScript()
+{
+}
+
+void Scumm_v8::o8_return()
+{
+}
+
+void Scumm_v8::o8_startObject()
+{
+}
+
+void Scumm_v8::o8_stopObject()
+{
+}
+
+void Scumm_v8::o8_cutscene()
+{
+}
+
+void Scumm_v8::o8_endCutscene()
+{
+}
+
+void Scumm_v8::o8_freezeScripts()
+{
+}
+
+void Scumm_v8::o8_beginOverride()
+{
+}
+
+void Scumm_v8::o8_endOverride()
+{
+}
+
+void Scumm_v8::o8_stopSentence()
+{
+}
+
+void Scumm_v8::o8_debug()
+{
+}
+
+void Scumm_v8::o8_debugWin()
+{
+}
+
+void Scumm_v8::o8_cameraPanTo()
+{
+}
+
+void Scumm_v8::o8_cameraFollow()
+{
+}
+
+void Scumm_v8::o8_cameraAt()
+{
+}
+
+void Scumm_v8::o8_sayLine()
+{
+}
+
+void Scumm_v8::o8_sayLineDefault()
+{
+}
+
+void Scumm_v8::o8_sayLineSimple()
+{
+}
+
+void Scumm_v8::o8_sayLineSimpleDefault()
+{
+}
+
+void Scumm_v8::o8_printLine()
+{
+}
+
+void Scumm_v8::o8_printCursor()
+{
+}
+
+void Scumm_v8::o8_printDebug()
+{
+}
+
+void Scumm_v8::o8_printSystem()
+{
+}
+
+void Scumm_v8::o8_blastText()
+{
+}
+
+void Scumm_v8::o8_drawObject()
+{
+}
+
+void Scumm_v8::o8_blastObject()
+{
+}
+
+void Scumm_v8::o8_userFace()
{
// TODO
byte subOp = fetchScriptByte();
@@ -451,7 +721,59 @@ void Scumm_v8::o8_cursorCommand()
}
}
-void Scumm_v8::o8_resourceRoutines()
+void Scumm_v8::o8_currentRoom()
+{
+}
+
+void Scumm_v8::o8_comeOutDoor()
+{
+}
+
+void Scumm_v8::o8_walkActorToObject()
+{
+}
+
+void Scumm_v8::o8_walkActorToXY()
+{
+}
+
+void Scumm_v8::o8_putActorAtXY()
+{
+}
+
+void Scumm_v8::o8_putActorAtObject()
+{
+}
+
+void Scumm_v8::o8_faceTowards()
+{
+}
+
+void Scumm_v8::o8_doAnimation()
+{
+}
+
+void Scumm_v8::o8_doSentence()
+{
+}
+
+void Scumm_v8::o8_pickUpObject()
+{
+}
+
+void Scumm_v8::o8_setBox()
+{
+}
+
+void Scumm_v8::o8_setBoxPath()
+{
+}
+
+void Scumm_v8::o8_setBoxSet()
+{
+}
+
+void Scumm_v8::o8_heapStuff()
{
// TODO
byte subOp = fetchScriptByte();
@@ -475,11 +797,11 @@ void Scumm_v8::o8_resourceRoutines()
case 0x4C: // SO_HEAP_NUKE_SCRIPT Remove script from heap
case 0x4D: // SO_HEAP_NUKE_SOUND Remove sound from heap
default:
- error("o8_resourceRoutines: default case %d", subOp);
+ error("o8_heapStuff: default case %d", subOp);
}
}
-void Scumm_v8::o8_roomOps()
+void Scumm_v8::o8_roomStuff()
{
// TODO
byte subOp = fetchScriptByte();
@@ -499,17 +821,17 @@ void Scumm_v8::o8_roomOps()
case 0x5E: // SO_ROOM_LOAD_GAME Load game
case 0x5F: // SO_ROOM_SATURATION Set saturation of room colors
default:
- error("o8_roomOps: default case %d", subOp);
+ error("o8_roomStuff: default case %d", subOp);
}
}
-void Scumm_v8::o8_actorSet()
+void Scumm_v8::o8_actorStuff()
{
// TODO
byte subOp = fetchScriptByte();
Actor *a;
- a = derefActorSafe(_curActor, "o8_actorSet");
+ a = derefActorSafe(_curActor, "o8_actorStuff");
if (!a)
return;
@@ -553,7 +875,7 @@ void Scumm_v8::o8_actorSet()
case 0x88: // SO_ACTOR_FREQUENCY Set frequency of actor speech
case 0x89: // SO_ACTOR_PAN
default:
- error("o8_actorset: default case %d", subOp);
+ error("o8_actorStuff: default case %d", subOp);
}
}
@@ -569,7 +891,7 @@ void Scumm_v8::o8_cameraStuff()
}
}
-void Scumm_v8::o8_verbOps()
+void Scumm_v8::o8_verbStuff()
{
// TODO
byte subOp = fetchScriptByte();
@@ -593,271 +915,242 @@ void Scumm_v8::o8_verbOps()
case 0xA6: // SO_VERB_CHARSET Choose charset for verb
case 0xA7: // SO_VERB_LINE_SPACING Choose linespacing for verb
default:
- error("o8_verbops: default case %d", subOp);
+ error("o8_verbStuff: default case %d", subOp);
}
}
+void Scumm_v8::o8_startSfx()
+{
+}
+
+void Scumm_v8::o8_startMusic()
+{
+}
+
+void Scumm_v8::o8_stopSound()
+{
+}
+
+void Scumm_v8::o8_soundKludge()
+{
+}
+
+void Scumm_v8::o8_system()
+{
+}
+
+void Scumm_v8::o8_verbSets()
+{
+}
+
+void Scumm_v8::o8_newNameOf()
+{
+}
+
+void Scumm_v8::o8_getTimeDate()
+{
+}
+
+void Scumm_v8::o8_drawBox()
+{
+}
+
+void Scumm_v8::o8_actObjStamp()
+{
+}
+
+void Scumm_v8::o8_startVideo()
+{
+}
+
+void Scumm_v8::o8_pick()
+{
+}
+
+void Scumm_v8::o8_pickDefault()
+{
+}
+
+void Scumm_v8::o8_pickRandom()
+{
+}
+
+void Scumm_v8::o8_inSet()
+{
+}
+
+void Scumm_v8::o8_getRandomNumber()
+{
+}
+
+void Scumm_v8::o8_getRandomNumberRange()
+{
+}
+
+void Scumm_v8::o8_classOf()
+{
+}
+
+void Scumm_v8::o8_stateOf()
+{
+}
+
+void Scumm_v8::o8_ownerOf()
+{
+}
+
+void Scumm_v8::o8_scriptRunning()
+{
+}
+
+void Scumm_v8::o8_objectRunning()
+{
+}
+
+void Scumm_v8::o8_soundRunning()
+{
+}
+
+void Scumm_v8::o8_abs()
+{
+}
+
+void Scumm_v8::o8_pixel()
+{
+}
+
+void Scumm_v8::o8_kludge()
+{
+}
+
+void Scumm_v8::o8_inBox()
+{
+}
+
+void Scumm_v8::o8_validVerb()
+{
+}
+
+void Scumm_v8::o8_findActor()
+{
+}
+
+void Scumm_v8::o8_findObject()
+{
+}
+
+void Scumm_v8::o8_findVerb()
+{
+}
+
+void Scumm_v8::o8_findAllObjects()
+{
+}
+
+void Scumm_v8::o8_actorInvertory()
+{
+}
+
+void Scumm_v8::o8_actorInvertoryCount()
+{
+}
+
+void Scumm_v8::o8_actorVariable()
+{
+}
+
+void Scumm_v8::o8_actorRoom()
+{
+}
+
+void Scumm_v8::o8_actorBox()
+{
+}
+
+void Scumm_v8::o8_actorMoving()
+{
+}
+
+void Scumm_v8::o8_actorCostume()
+{
+}
+
+void Scumm_v8::o8_actorScale()
+{
+}
+
+void Scumm_v8::o8_actorDepth()
+{
+}
+
+void Scumm_v8::o8_actorElevation()
+{
+}
+
+void Scumm_v8::o8_actorWidth()
+{
+}
+
+void Scumm_v8::o8_actObjFacing()
+{
+}
+
+void Scumm_v8::o8_actObjX()
+{
+}
+
+void Scumm_v8::o8_actObjY()
+{
+}
+
+void Scumm_v8::o8_actorChore()
+{
+}
+
+void Scumm_v8::o8_proximity2ActObjs()
+{
+}
+
+void Scumm_v8::o8_proximity2Points()
+{
+}
+
+void Scumm_v8::o8_objectImageX()
+{
+}
+
+void Scumm_v8::o8_objectImageY()
+{
+}
+
+void Scumm_v8::o8_objectImageWidth()
+{
+}
+
+void Scumm_v8::o8_objectImageHeight()
+{
+}
+
+void Scumm_v8::o8_verbX()
+{
+}
+
+void Scumm_v8::o8_verbY()
+{
+}
+
+void Scumm_v8::o8_stringWidth()
+{
+}
+
+void Scumm_v8::o8_actorZPlane()
+{
+}
+
/*
From http://scummrev.mixnmojo.com/specs/CMIOpcodes.shtml
-000 O_0
-001 O_PUSH_NUMBER Push number onto stack.
-002 O_PUSH_VARIABLE Push variable value onto stack.
-003 O_PUSH_ARRAY_VALUE Push array value onto stack.
-004 O_PUSH_ARRAY2_VALUE ?
-005 O_DUP Duplicate stack value
-006 O_POP Pop value from stack.
-007 O_NOT NOT (!)
-008 O_EQ Equals (==)
-009 O_NEQ Does not equal (!=)
-00A O_GT Greater than (>)
-00B O_LT Less than (<)
-00C O_LEQ Less than or equal (<=)
-00D O_GEQ Greater than or equal (>=)
-00E O_ADD Add (+)
-00F O_SUB Subtract (-)
-010 O_MUL Multiply (*)
-011 O_DIV Divide (/)
-012 O_LAND Logical AND
-013 O_LOR Logical OR
-014 O_BAND Binary AND
-015 O_BOR Binary OR
-016 O_MOD Modulus (%)
-017 O_23
-018 O_24
-019 O_25
-01A O_26
-01B O_27
-01C O_28
-01D O_29
-01E O_30
-01F O_31
-020 O_32
-021 O_33
-022 O_34
-023 O_35
-024 O_36
-025 O_37
-026 O_38
-027 O_39
-028 O_40
-029 O_41
-02A O_42
-02B O_43
-02C O_44
-02D O_45
-02E O_46
-02F O_47
-030 O_48
-031 O_49
-032 O_50
-033 O_51
-034 O_52
-035 O_53
-036 O_54
-037 O_55
-038 O_56
-039 O_57
-03A O_58
-03B O_59
-03C O_60
-03D O_61
-03E O_62
-03F O_63
-040 O_64
-041 O_65
-042 O_66
-043 O_67
-044 O_68
-045 O_69
-046 O_70
-047 O_71
-048 O_72
-049 O_73
-04A O_74
-04B O_75
-04C O_76
-04D O_77
-04E O_78
-04F O_79
-050 O_80
-051 O_81
-052 O_82
-053 O_83
-054 O_84
-055 O_85
-056 O_86
-057 O_87
-058 O_88
-059 O_89
-05A O_90
-05B O_91
-05C O_92
-05D O_93
-05E O_94
-05F O_95
-060 O_96
-061 O_97
-062 O_98
-063 O_99
-064 O_IF if ()
-065 O_IF_NOT if not ()
-066 O_JUMP jump/goto
-067 O_BREAK_HERE Break out of script
-068 O_BREAK_HERE_VAR
-069 O_WAIT_FOR_STUFF Wait Sub opcodes
-06A O_SLEEP_JIFFIES Sleep for jiffies (10ths of a second)
-06B O_SLEEP_SECONDS Sleep for seconds
-06C O_SLEEP_MINUTES Sleep for minutes
-06D O_STORE_VARIABLE Assign value to variable
-06E O_INC_VARIABLE Increase variable value (++)
-06F O_DEC_VARIABLE Decrease variable value (--)
-070 O_ARRAY_DIM Set dimension of array
-071 O_STORE_ARRAY Assign value to array
-072 O_INC_ARRAY Increase array value
-073 O_DEC_ARRAY Decrease array value
-074 O_ARRAY_DIM2 Set dimensions of 2 dimensional array
-075 O_STORE_ARRAY2 Assign value to 2 dimensional array
-076 O_ASSIGN_ARRAY ?
-077 O_ARRAY_SHUFFLE Shuffle array
-078 O_ARRAY_LOCALIZE ?
-079 O_START_SCRIPT Start script
-07A O_START_SCRIPT_QUICK ?
-07B O_END_SCRIPT End script
-07C O_STOP_SCRIPT Stop script from running
-07D O_CHAIN_SCRIPT ?
-07E O_RETURN Return
-07F O_START_OBJECT ?
-080 O_STOP_OBJECT ?
-081 O_CUT_SCENE Start of cutscene (interface off)
-082 O_END_CUT_SCENE End of cutscene (interface on)
-083 O_FREEZE_SCRIPTS ?
-084 O_OVERRIDE ?
-085 O_OVERRIDE_OFF ?
-086 O_STOP_SENTENCE ?
-087 O_DEBUG Set debug mode
-088 O_DEBUG_WINDEX Set debug mode with output to external window
-089 O_CLASS_OF Set class of script
-08A O_STATE_OF ?
-08B O_OWNER_OF Set owner of object
-08C O_CAMERA_PAN_TO Pan camera to (X,Y)
-08D O_CAMERA_FOLLOW Make camera follow character/object
-08E O_CAMERA_AT Place camera at specific (X,Y)
-08F O_SAY_LINE Talk
-090 O_SAY_LINE_DEFAULT Talk using default actor
-091 O_SAY_LINE_SIMPLE Talk with less arguments
-092 O_SAY_LINE_SIMPLE_DEFAULT Talk with less arguments using default actor
-093 O_PRINT_LINE Print a line on screen
-094 O_PRINT_CURSOR
-095 O_PRINT_DEBUG
-096 O_PRINT_SYSTEM
-097 O_BLAST_TEXT Text to output to screen
-098 O_DRAW_OBJECT Draw object
-099 O_153
-09A O_BLAST_OBJECT
-09B O_155
-09C O_USERFACE ?
-09D O_CURRENT_ROOM Set current room
-09E O_COME_OUT_DOOR
-09F O_WALK_ACTOR_TO_OBJECT Walk to object
-0A0 O_WALK_ACTOR_TO_XY Walk to coordinate
-0A1 O_PUT_ACTOR_AT_XY Put at coordinate
-0A2 O_PUT_ACTOR_AT_OBJECT Put at object
-0A3 O_FACE_TOWARDS Change facing
-0A4 O_DO_ANIMATION Animate
-0A5 O_DO_SENTENCE
-0A6 O_PICK_UP_OBJECT Pick up object
-0A7 O_SET_BOX
-0A8 O_SET_BOX_PATH
-0A9 O_SET_BOX_SET
-0AA O_HEAP_STUFF Heap sub opcodes
-0AB O_ROOM_STUFF Room sub opcodes
-0AC O_ACTOR_STUFF Actor sub opcodes
-0AD O_CAMERA_STUFF Camera sub opcodes
-0AE O_VERB_STUFF Verb sub opcodes
-0AF O_START_SFX Start sound effect
-0B0 O_START_MUSIC Start music
-0B1 O_STOP_SOUND Stop sound (effect or music)
-0B2 O_SOUND_KLUDGE ?
-0B3 O_SYSTEM System sub opcodes
-0B4 O_VERB_SETS
-0B5 O_NEW_NAME_OF Set new name of object
-0B6 O_GET_TIME_DATE Get time and/or date
-0B7 O_DRAW_BOX
-0B8 O_ACTOBJ_STAMP
-0B9 O_START_VIDEO Start cutscene video
-0BA O_KLUDGE
-0BB O_187
-0BC O_188
-0BD O_189
-0BE O_190
-0BF O_191
-0C0 O_192
-0C1 O_193
-0C2 O_194
-0C3 O_195
-0C4 O_196
-0C5 O_197
-0C6 O_198
-0C7 O_199
-0C8 F_START_SCRIPT Start script
-0C9 F_START_OBJECT Start object script
-0CA F_PICK
-0CB F_PICK_DEFAULT
-0CC F_PICK_RANDOM
-0CD F_IN_SET
-0CE F_RANDOM Get random number
-0CF F_RANDOM_BETWEEN Get random number between two values
-0D0 F_CLASS_OF Get class of script
-0D1 F_STATE_OF
-0D2 F_OWNER_OF Get owner of object
-0D3 F_SCRIPT_RUNNING Test if script is running
-0D4 F_OBJECT_RUNNING Test if object is running
-0D5 F_SOUND_RUNNING Test if sound is running
-0D6 F_ABS Get absolute value
-0D7 F_PIXEL
-0D8 F_KLUDGE
-0D9 F_IN_BOX Test if object is in box
-0DA F_VALID_VERB
-0DB F_FIND_ACTOR
-0DC F_FIND_OBJECT
-0DD F_FIND_VERB
-0DE F_FIND_ALL_OBJECTS
-0DF F_ACTOR_INVENTORY
-0E0 F_ACTOR_INVENTORY_COUNT Get number of items in inventory
-0E1 F_ACTOR_VARIABLE Get actor variable (property)
-0E2 F_ACTOR_ROOM Get current room for actor
-0E3 F_ACTOR_BOX Get current box for actor
-0E4 F_ACTOR_MOVING Test if actor is moving
-0E5 F_ACTOR_COSTUME Get current costume for actor
-0E6 F_ACTOR_SCALE Get current scale of actor
-0E7 F_ACTOR_DEPTH Get current Z position of actor
-0E8 F_ACTOR_ELEVATION Get current actor elevation
-0E9 F_ACTOR_WIDTH Get current actor width
-0EA F_ACTOBJ_FACING Get current actor/object facing
-0EB F_ACTOBJ_X Get X position of actor/object
-0EC F_ACTOBJ_Y Get Y position of actor/object
-0ED F_ACTOR_CHORE
-0EE F_PROXIMITY_2ACTOBJS Get distance between 2 actors/objects
-0EF F_PROXIMITY_2POINTS Get distance between 2 points
-0F0 F_OBJECT_IMAGE_X Get X position of object image
-0F1 F_OBJECT_IMAGE_Y Get Y position of object image
-0F2 F_OBJECT_IMAGE_WIDTH Get width of object image
-0F3 F_OBJECT_IMAGE_HEIGHT Get height of object image
-0F4 F_VERB_X Get X position of verb
-0F5 F_VERB_Y Get Y position of verb
-0F6 F_STRING_WIDTH
-0F7 F_ACTOR_ZPLANE
-0F8 O_248
-0F9 O_249
-0FA O_250
-0FB O_251
-0FC O_252
-0FD O_253
-0FE O_254
-0FF O_255
-
The following are subopcodes - just strip the leading 1
100 SO_256