aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/he
diff options
context:
space:
mode:
authorMax Horn2009-04-16 09:27:22 +0000
committerMax Horn2009-04-16 09:27:22 +0000
commitcbe9e520d3b2b515428d33a4da8726e1a2dd82f1 (patch)
treec137855c759e3044fd22ff05cbe8969f408603f6 /engines/scumm/he
parent99df028d35a80a8cf932415a9e6bfc09179adf3e (diff)
downloadscummvm-rg350-cbe9e520d3b2b515428d33a4da8726e1a2dd82f1.tar.gz
scummvm-rg350-cbe9e520d3b2b515428d33a4da8726e1a2dd82f1.tar.bz2
scummvm-rg350-cbe9e520d3b2b515428d33a4da8726e1a2dd82f1.zip
SCUMM: Compacted various setupOpcodes() implementations by using the fact that opcode tables tend not to change much between most SCUMM versions
svn-id: r39958
Diffstat (limited to 'engines/scumm/he')
-rw-r--r--engines/scumm/he/script_v60he.cpp220
-rw-r--r--engines/scumm/he/script_v70he.cpp226
-rw-r--r--engines/scumm/he/script_v71he.cpp236
-rw-r--r--engines/scumm/he/script_v72he.cpp213
-rw-r--r--engines/scumm/he/script_v80he.cpp250
-rw-r--r--engines/scumm/he/script_v90he.cpp249
6 files changed, 32 insertions, 1362 deletions
diff --git a/engines/scumm/he/script_v60he.cpp b/engines/scumm/he/script_v60he.cpp
index 6d2adb439b..5ad447b1c7 100644
--- a/engines/scumm/he/script_v60he.cpp
+++ b/engines/scumm/he/script_v60he.cpp
@@ -66,235 +66,31 @@ static int virtScreenSavePack(byte *dst, byte *src, int len, int unk);
#define OPCODE(i, x) _opcodes[i]._OPCODE(ScummEngine_v60he, x)
void ScummEngine_v60he::setupOpcodes() {
- /* 00 */
- OPCODE(0x00, o6_pushByte);
- OPCODE(0x01, o6_pushWord);
- OPCODE(0x02, o6_pushByteVar);
- OPCODE(0x03, o6_pushWordVar);
- /* 04 */
- OPCODE(0x06, o6_byteArrayRead);
- OPCODE(0x07, o6_wordArrayRead);
- /* 08 */
- OPCODE(0x0a, o6_byteArrayIndexedRead);
- OPCODE(0x0b, o6_wordArrayIndexedRead);
- /* 0C */
- OPCODE(0x0c, o6_dup);
- OPCODE(0x0d, o6_not);
- OPCODE(0x0e, o6_eq);
- OPCODE(0x0f, o6_neq);
- /* 10 */
- OPCODE(0x10, o6_gt);
- OPCODE(0x11, o6_lt);
- OPCODE(0x12, o6_le);
- OPCODE(0x13, o6_ge);
- /* 14 */
- OPCODE(0x14, o6_add);
- OPCODE(0x15, o6_sub);
- OPCODE(0x16, o6_mul);
- OPCODE(0x17, o6_div);
- /* 18 */
- OPCODE(0x18, o6_land);
- OPCODE(0x19, o6_lor);
- OPCODE(0x1a, o6_pop);
- /* 1C */
- /* 20 */
- /* 24 */
- /* 28 */
- /* 2C */
- /* 30 */
- /* 34 */
- /* 38 */
- /* 3C */
- /* 40 */
- OPCODE(0x42, o6_writeByteVar);
- OPCODE(0x43, o6_writeWordVar);
- /* 44 */
- OPCODE(0x46, o6_byteArrayWrite);
- OPCODE(0x47, o6_wordArrayWrite);
- /* 48 */
- OPCODE(0x4a, o6_byteArrayIndexedWrite);
- OPCODE(0x4b, o6_wordArrayIndexedWrite);
- /* 4C */
- OPCODE(0x4e, o6_byteVarInc);
- OPCODE(0x4f, o6_wordVarInc);
- /* 50 */
- OPCODE(0x52, o6_byteArrayInc);
- OPCODE(0x53, o6_wordArrayInc);
- /* 54 */
- OPCODE(0x56, o6_byteVarDec);
- OPCODE(0x57, o6_wordVarDec);
- /* 58 */
- OPCODE(0x5a, o6_byteArrayDec);
- OPCODE(0x5b, o6_wordArrayDec);
- /* 5C */
- OPCODE(0x5c, o6_if);
- OPCODE(0x5d, o6_ifNot);
- OPCODE(0x5e, o6_startScript);
- OPCODE(0x5f, o6_startScriptQuick);
- /* 60 */
- OPCODE(0x60, o6_startObject);
- OPCODE(0x61, o6_drawObject);
- OPCODE(0x62, o6_drawObjectAt);
- /* 64 */
- OPCODE(0x65, o6_stopObjectCode);
- OPCODE(0x66, o6_stopObjectCode);
- OPCODE(0x67, o6_endCutscene);
- /* 68 */
- OPCODE(0x68, o6_cutscene);
- OPCODE(0x69, o6_stopMusic);
- OPCODE(0x6a, o6_freezeUnfreeze);
- OPCODE(0x6b, o6_cursorCommand);
- /* 6C */
- OPCODE(0x6c, o6_breakHere);
- OPCODE(0x6d, o6_ifClassOfIs);
- OPCODE(0x6e, o6_setClass);
- OPCODE(0x6f, o6_getState);
- /* 70 */
+ ScummEngine_v6::setupOpcodes();
+
+ _opcodes[0x63].setProc(0, 0);
+ _opcodes[0x64].setProc(0, 0);
OPCODE(0x70, o60_setState);
- OPCODE(0x71, o6_setOwner);
- OPCODE(0x72, o6_getOwner);
- OPCODE(0x73, o6_jump);
- /* 74 */
- OPCODE(0x74, o6_startSound);
- OPCODE(0x75, o6_stopSound);
- OPCODE(0x76, o6_startMusic);
- OPCODE(0x77, o6_stopObjectScript);
- /* 78 */
- OPCODE(0x78, o6_panCameraTo);
- OPCODE(0x79, o6_actorFollowCamera);
- OPCODE(0x7a, o6_setCameraAt);
- OPCODE(0x7b, o6_loadRoom);
- /* 7C */
- OPCODE(0x7c, o6_stopScript);
- OPCODE(0x7d, o6_walkActorToObj);
- OPCODE(0x7e, o6_walkActorTo);
- OPCODE(0x7f, o6_putActorAtXY);
- /* 80 */
- OPCODE(0x80, o6_putActorAtObject);
- OPCODE(0x81, o6_faceActor);
- OPCODE(0x82, o6_animateActor);
- OPCODE(0x83, o6_doSentence);
- /* 84 */
- OPCODE(0x84, o6_pickupObject);
- OPCODE(0x85, o6_loadRoomWithEgo);
- OPCODE(0x87, o6_getRandomNumber);
- /* 88 */
- OPCODE(0x88, o6_getRandomNumberRange);
- OPCODE(0x8a, o6_getActorMoving);
- OPCODE(0x8b, o6_isScriptRunning);
- /* 8C */
- OPCODE(0x8c, o6_getActorRoom);
- OPCODE(0x8d, o6_getObjectX);
- OPCODE(0x8e, o6_getObjectY);
- OPCODE(0x8f, o6_getObjectOldDir);
- /* 90 */
- OPCODE(0x90, o6_getActorWalkBox);
- OPCODE(0x91, o6_getActorCostume);
- OPCODE(0x92, o6_findInventory);
- OPCODE(0x93, o6_getInventoryCount);
- /* 94 */
- OPCODE(0x94, o6_getVerbFromXY);
- OPCODE(0x95, o6_beginOverride);
- OPCODE(0x96, o6_endOverride);
- OPCODE(0x97, o6_setObjectName);
- /* 98 */
- OPCODE(0x98, o6_isSoundRunning);
- OPCODE(0x99, o6_setBoxFlags);
- OPCODE(0x9b, o6_resourceRoutines);
- /* 9C */
+ _opcodes[0x9a].setProc(0, 0);
OPCODE(0x9c, o60_roomOps);
OPCODE(0x9d, o60_actorOps);
- OPCODE(0x9e, o6_verbOps);
- OPCODE(0x9f, o6_getActorFromXY);
- /* A0 */
- OPCODE(0xa0, o6_findObject);
- OPCODE(0xa1, o6_pseudoRoom);
- OPCODE(0xa2, o6_getActorElevation);
- OPCODE(0xa3, o6_getVerbEntrypoint);
- /* A4 */
- OPCODE(0xa4, o6_arrayOps);
- OPCODE(0xa5, o6_saveRestoreVerbs);
- OPCODE(0xa6, o6_drawBox);
- OPCODE(0xa7, o6_pop);
- /* A8 */
- OPCODE(0xa8, o6_getActorWidth);
- OPCODE(0xa9, o6_wait);
- OPCODE(0xaa, o6_getActorScaleX);
- OPCODE(0xab, o6_getActorAnimCounter);
- /* AC */
- OPCODE(0xad, o6_isAnyOf);
- OPCODE(0xae, o6_systemOps);
- OPCODE(0xaf, o6_isActorInBox);
- /* B0 */
- OPCODE(0xb0, o6_delay);
- OPCODE(0xb1, o6_delaySeconds);
- OPCODE(0xb2, o6_delayMinutes);
- OPCODE(0xb3, o6_stopSentence);
- /* B4 */
- OPCODE(0xb4, o6_printLine);
- OPCODE(0xb5, o6_printText);
- OPCODE(0xb6, o6_printDebug);
- OPCODE(0xb7, o6_printSystem);
- /* B8 */
- OPCODE(0xb8, o6_printActor);
- OPCODE(0xb9, o6_printEgo);
- OPCODE(0xba, o6_talkActor);
- OPCODE(0xbb, o6_talkEgo);
- /* BC */
- OPCODE(0xbc, o6_dimArray);
+ _opcodes[0xac].setProc(0, 0);
OPCODE(0xbd, o6_stopObjectCode);
- OPCODE(0xbe, o6_startObjectQuick);
- OPCODE(0xbf, o6_startScriptQuick2);
- /* C0 */
- OPCODE(0xc0, o6_dim2dimArray);
- /* C4 */
- OPCODE(0xc4, o6_abs);
- OPCODE(0xc5, o6_distObjectObject);
- OPCODE(0xc6, o6_distObjectPt);
- OPCODE(0xc7, o6_distPtPt);
- /* C8 */
OPCODE(0xc8, o60_kernelGetFunctions);
OPCODE(0xc9, o60_kernelSetFunctions);
- OPCODE(0xca, o6_delayFrames);
- OPCODE(0xcb, o6_pickOneOf);
- /* CC */
- OPCODE(0xcc, o6_pickOneOfDefault);
- OPCODE(0xcd, o6_stampObject);
- /* D0 */
- OPCODE(0xd0, o6_getDateTime);
- OPCODE(0xd1, o6_stopTalking);
- OPCODE(0xd2, o6_getAnimateVariable);
- /* D4 */
- OPCODE(0xd4, o6_shuffle);
- OPCODE(0xd5, o6_jumpToScript);
- OPCODE(0xd6, o6_band);
- OPCODE(0xd7, o6_bor);
- /* D8 */
- OPCODE(0xd8, o6_isRoomScriptRunning);
OPCODE(0xd9, o60_closeFile);
OPCODE(0xda, o60_openFile);
OPCODE(0xdb, o60_readFile);
- /* DC */
OPCODE(0xdc, o60_writeFile);
- OPCODE(0xdd, o6_findAllObjects);
OPCODE(0xde, o60_deleteFile);
OPCODE(0xdf, o60_rename);
- /* E0 */
OPCODE(0xe0, o60_soundOps);
- OPCODE(0xe1, o6_getPixel);
OPCODE(0xe2, o60_localizeArrayToScript);
- OPCODE(0xe3, o6_pickVarRandom);
- /* E4 */
- OPCODE(0xe4, o6_setBoxSet);
- /* E8 */
OPCODE(0xe9, o60_seekFilePos);
OPCODE(0xea, o60_redimArray);
OPCODE(0xeb, o60_readFilePos);
- /* EC */
- /* F0 */
- /* F4 */
- /* F8 */
- /* FC */
+ _opcodes[0xec].setProc(0, 0);
+ _opcodes[0xed].setProc(0, 0);
}
int ScummEngine_v60he::convertFilePath(byte *dst) {
diff --git a/engines/scumm/he/script_v70he.cpp b/engines/scumm/he/script_v70he.cpp
index b1f49cc3a9..35dbfef405 100644
--- a/engines/scumm/he/script_v70he.cpp
+++ b/engines/scumm/he/script_v70he.cpp
@@ -41,241 +41,19 @@ namespace Scumm {
#define OPCODE(i, x) _opcodes[i]._OPCODE(ScummEngine_v70he, x)
void ScummEngine_v70he::setupOpcodes() {
- /* 00 */
- OPCODE(0x00, o6_pushByte);
- OPCODE(0x01, o6_pushWord);
- OPCODE(0x02, o6_pushByteVar);
- OPCODE(0x03, o6_pushWordVar);
- /* 04 */
- OPCODE(0x06, o6_byteArrayRead);
- OPCODE(0x07, o6_wordArrayRead);
- /* 08 */
- OPCODE(0x0a, o6_byteArrayIndexedRead);
- OPCODE(0x0b, o6_wordArrayIndexedRead);
- /* 0C */
- OPCODE(0x0c, o6_dup);
- OPCODE(0x0d, o6_not);
- OPCODE(0x0e, o6_eq);
- OPCODE(0x0f, o6_neq);
- /* 10 */
- OPCODE(0x10, o6_gt);
- OPCODE(0x11, o6_lt);
- OPCODE(0x12, o6_le);
- OPCODE(0x13, o6_ge);
- /* 14 */
- OPCODE(0x14, o6_add);
- OPCODE(0x15, o6_sub);
- OPCODE(0x16, o6_mul);
- OPCODE(0x17, o6_div);
- /* 18 */
- OPCODE(0x18, o6_land);
- OPCODE(0x19, o6_lor);
- OPCODE(0x1a, o6_pop);
- /* 1C */
- /* 20 */
- /* 24 */
- /* 28 */
- /* 2C */
- /* 30 */
- /* 34 */
- /* 38 */
- /* 3C */
- /* 40 */
- OPCODE(0x42, o6_writeByteVar);
- OPCODE(0x43, o6_writeWordVar);
- /* 44 */
- OPCODE(0x46, o6_byteArrayWrite);
- OPCODE(0x47, o6_wordArrayWrite);
- /* 48 */
- OPCODE(0x4a, o6_byteArrayIndexedWrite);
- OPCODE(0x4b, o6_wordArrayIndexedWrite);
- /* 4C */
- OPCODE(0x4e, o6_byteVarInc);
- OPCODE(0x4f, o6_wordVarInc);
- /* 50 */
- OPCODE(0x52, o6_byteArrayInc);
- OPCODE(0x53, o6_wordArrayInc);
- /* 54 */
- OPCODE(0x56, o6_byteVarDec);
- OPCODE(0x57, o6_wordVarDec);
- /* 58 */
- OPCODE(0x5a, o6_byteArrayDec);
- OPCODE(0x5b, o6_wordArrayDec);
- /* 5C */
- OPCODE(0x5c, o6_if);
- OPCODE(0x5d, o6_ifNot);
- OPCODE(0x5e, o6_startScript);
- OPCODE(0x5f, o6_startScriptQuick);
- /* 60 */
- OPCODE(0x60, o6_startObject);
- OPCODE(0x61, o6_drawObject);
- OPCODE(0x62, o6_drawObjectAt);
- /* 64 */
- OPCODE(0x65, o6_stopObjectCode);
- OPCODE(0x66, o6_stopObjectCode);
- OPCODE(0x67, o6_endCutscene);
- /* 68 */
- OPCODE(0x68, o6_cutscene);
- OPCODE(0x69, o6_stopMusic);
- OPCODE(0x6a, o6_freezeUnfreeze);
- OPCODE(0x6b, o6_cursorCommand);
- /* 6C */
- OPCODE(0x6c, o6_breakHere);
- OPCODE(0x6d, o6_ifClassOfIs);
- OPCODE(0x6e, o6_setClass);
- OPCODE(0x6f, o6_getState);
- /* 70 */
- OPCODE(0x70, o60_setState);
- OPCODE(0x71, o6_setOwner);
- OPCODE(0x72, o6_getOwner);
- OPCODE(0x73, o6_jump);
- /* 74 */
+ ScummEngine_v60he::setupOpcodes();
+
OPCODE(0x74, o70_startSound);
- OPCODE(0x75, o6_stopSound);
- OPCODE(0x76, o6_startMusic);
- OPCODE(0x77, o6_stopObjectScript);
- /* 78 */
- OPCODE(0x78, o6_panCameraTo);
- OPCODE(0x79, o6_actorFollowCamera);
- OPCODE(0x7a, o6_setCameraAt);
- OPCODE(0x7b, o6_loadRoom);
- /* 7C */
- OPCODE(0x7c, o6_stopScript);
- OPCODE(0x7d, o6_walkActorToObj);
- OPCODE(0x7e, o6_walkActorTo);
- OPCODE(0x7f, o6_putActorAtXY);
- /* 80 */
- OPCODE(0x80, o6_putActorAtObject);
- OPCODE(0x81, o6_faceActor);
- OPCODE(0x82, o6_animateActor);
- OPCODE(0x83, o6_doSentence);
- /* 84 */
OPCODE(0x84, o70_pickupObject);
- OPCODE(0x85, o6_loadRoomWithEgo);
- OPCODE(0x87, o6_getRandomNumber);
- /* 88 */
- OPCODE(0x88, o6_getRandomNumberRange);
- OPCODE(0x8a, o6_getActorMoving);
- OPCODE(0x8b, o6_isScriptRunning);
- /* 8C */
OPCODE(0x8c, o70_getActorRoom);
- OPCODE(0x8d, o6_getObjectX);
- OPCODE(0x8e, o6_getObjectY);
- OPCODE(0x8f, o6_getObjectOldDir);
- /* 90 */
- OPCODE(0x90, o6_getActorWalkBox);
- OPCODE(0x91, o6_getActorCostume);
- OPCODE(0x92, o6_findInventory);
- OPCODE(0x93, o6_getInventoryCount);
- /* 94 */
- OPCODE(0x94, o6_getVerbFromXY);
- OPCODE(0x95, o6_beginOverride);
- OPCODE(0x96, o6_endOverride);
- OPCODE(0x97, o6_setObjectName);
- /* 98 */
- OPCODE(0x98, o6_isSoundRunning);
- OPCODE(0x99, o6_setBoxFlags);
OPCODE(0x9b, o70_resourceRoutines);
- /* 9C */
- OPCODE(0x9c, o60_roomOps);
- OPCODE(0x9d, o60_actorOps);
- OPCODE(0x9e, o6_verbOps);
- OPCODE(0x9f, o6_getActorFromXY);
- /* A0 */
- OPCODE(0xa0, o6_findObject);
- OPCODE(0xa1, o6_pseudoRoom);
- OPCODE(0xa2, o6_getActorElevation);
- OPCODE(0xa3, o6_getVerbEntrypoint);
- /* A4 */
- OPCODE(0xa4, o6_arrayOps);
- OPCODE(0xa5, o6_saveRestoreVerbs);
- OPCODE(0xa6, o6_drawBox);
- OPCODE(0xa7, o6_pop);
- /* A8 */
- OPCODE(0xa8, o6_getActorWidth);
- OPCODE(0xa9, o6_wait);
- OPCODE(0xaa, o6_getActorScaleX);
- OPCODE(0xab, o6_getActorAnimCounter);
- /* AC */
- OPCODE(0xad, o6_isAnyOf);
OPCODE(0xae, o70_systemOps);
- OPCODE(0xaf, o6_isActorInBox);
- /* B0 */
- OPCODE(0xb0, o6_delay);
- OPCODE(0xb1, o6_delaySeconds);
- OPCODE(0xb2, o6_delayMinutes);
- OPCODE(0xb3, o6_stopSentence);
- /* B4 */
- OPCODE(0xb4, o6_printLine);
- OPCODE(0xb5, o6_printText);
- OPCODE(0xb6, o6_printDebug);
- OPCODE(0xb7, o6_printSystem);
- /* B8 */
- OPCODE(0xb8, o6_printActor);
- OPCODE(0xb9, o6_printEgo);
- OPCODE(0xba, o6_talkActor);
- OPCODE(0xbb, o6_talkEgo);
- /* BC */
- OPCODE(0xbc, o6_dimArray);
- OPCODE(0xbd, o6_stopObjectCode);
- OPCODE(0xbe, o6_startObjectQuick);
- OPCODE(0xbf, o6_startScriptQuick2);
- /* C0 */
- OPCODE(0xc0, o6_dim2dimArray);
- /* C4 */
- OPCODE(0xc4, o6_abs);
- OPCODE(0xc5, o6_distObjectObject);
- OPCODE(0xc6, o6_distObjectPt);
- OPCODE(0xc7, o6_distPtPt);
- /* C8 */
- OPCODE(0xc8, o60_kernelGetFunctions);
- OPCODE(0xc9, o60_kernelSetFunctions);
- OPCODE(0xca, o6_delayFrames);
- OPCODE(0xcb, o6_pickOneOf);
- /* CC */
- OPCODE(0xcc, o6_pickOneOfDefault);
- OPCODE(0xcd, o6_stampObject);
- /* D0 */
- OPCODE(0xd0, o6_getDateTime);
- OPCODE(0xd1, o6_stopTalking);
- OPCODE(0xd2, o6_getAnimateVariable);
- /* D4 */
- OPCODE(0xd4, o6_shuffle);
- OPCODE(0xd5, o6_jumpToScript);
- OPCODE(0xd6, o6_band);
- OPCODE(0xd7, o6_bor);
- /* D8 */
- OPCODE(0xd8, o6_isRoomScriptRunning);
- OPCODE(0xd9, o60_closeFile);
- OPCODE(0xda, o60_openFile);
- OPCODE(0xdb, o60_readFile);
- /* DC */
- OPCODE(0xdc, o60_writeFile);
- OPCODE(0xdd, o6_findAllObjects);
- OPCODE(0xde, o60_deleteFile);
- OPCODE(0xdf, o60_rename);
- /* E0 */
- OPCODE(0xe0, o60_soundOps);
- OPCODE(0xe1, o6_getPixel);
- OPCODE(0xe2, o60_localizeArrayToScript);
- OPCODE(0xe3, o6_pickVarRandom);
- /* E4 */
- OPCODE(0xe4, o6_setBoxSet);
- /* E8 */
- OPCODE(0xe9, o60_seekFilePos);
- OPCODE(0xea, o60_redimArray);
- OPCODE(0xeb, o60_readFilePos);
- /* EC */
OPCODE(0xee, o70_getStringLen);
- /* F0 */
OPCODE(0xf2, o70_isResourceLoaded);
OPCODE(0xf3, o70_readINI);
- /* F4 */
OPCODE(0xf4, o70_writeINI);
- /* F8 */
OPCODE(0xf9, o70_createDirectory);
OPCODE(0xfa, o70_setSystemMessage);
- /* FC */
}
void ScummEngine_v70he::o70_startSound() {
diff --git a/engines/scumm/he/script_v71he.cpp b/engines/scumm/he/script_v71he.cpp
index 646191d8ae..316d51b12d 100644
--- a/engines/scumm/he/script_v71he.cpp
+++ b/engines/scumm/he/script_v71he.cpp
@@ -33,250 +33,18 @@ namespace Scumm {
#define OPCODE(i, x) _opcodes[i]._OPCODE(ScummEngine_v71he, x)
void ScummEngine_v71he::setupOpcodes() {
- /* 00 */
- OPCODE(0x00, o6_pushByte);
- OPCODE(0x01, o6_pushWord);
- OPCODE(0x02, o6_pushByteVar);
- OPCODE(0x03, o6_pushWordVar);
- /* 04 */
- OPCODE(0x06, o6_byteArrayRead);
- OPCODE(0x07, o6_wordArrayRead);
- /* 08 */
- OPCODE(0x0a, o6_byteArrayIndexedRead);
- OPCODE(0x0b, o6_wordArrayIndexedRead);
- /* 0C */
- OPCODE(0x0c, o6_dup);
- OPCODE(0x0d, o6_not);
- OPCODE(0x0e, o6_eq);
- OPCODE(0x0f, o6_neq);
- /* 10 */
- OPCODE(0x10, o6_gt);
- OPCODE(0x11, o6_lt);
- OPCODE(0x12, o6_le);
- OPCODE(0x13, o6_ge);
- /* 14 */
- OPCODE(0x14, o6_add);
- OPCODE(0x15, o6_sub);
- OPCODE(0x16, o6_mul);
- OPCODE(0x17, o6_div);
- /* 18 */
- OPCODE(0x18, o6_land);
- OPCODE(0x19, o6_lor);
- OPCODE(0x1a, o6_pop);
- /* 1C */
- /* 20 */
- /* 24 */
- /* 28 */
- /* 2C */
- /* 30 */
- /* 34 */
- /* 38 */
- /* 3C */
- /* 40 */
- OPCODE(0x42, o6_writeByteVar);
- OPCODE(0x43, o6_writeWordVar);
- /* 44 */
- OPCODE(0x46, o6_byteArrayWrite);
- OPCODE(0x47, o6_wordArrayWrite);
- /* 48 */
- OPCODE(0x4a, o6_byteArrayIndexedWrite);
- OPCODE(0x4b, o6_wordArrayIndexedWrite);
- /* 4C */
- OPCODE(0x4e, o6_byteVarInc);
- OPCODE(0x4f, o6_wordVarInc);
- /* 50 */
- OPCODE(0x52, o6_byteArrayInc);
- OPCODE(0x53, o6_wordArrayInc);
- /* 54 */
- OPCODE(0x56, o6_byteVarDec);
- OPCODE(0x57, o6_wordVarDec);
- /* 58 */
- OPCODE(0x5a, o6_byteArrayDec);
- OPCODE(0x5b, o6_wordArrayDec);
- /* 5C */
- OPCODE(0x5c, o6_if);
- OPCODE(0x5d, o6_ifNot);
- OPCODE(0x5e, o6_startScript);
- OPCODE(0x5f, o6_startScriptQuick);
- /* 60 */
- OPCODE(0x60, o6_startObject);
- OPCODE(0x61, o6_drawObject);
- OPCODE(0x62, o6_drawObjectAt);
- /* 64 */
- OPCODE(0x65, o6_stopObjectCode);
- OPCODE(0x66, o6_stopObjectCode);
- OPCODE(0x67, o6_endCutscene);
- /* 68 */
- OPCODE(0x68, o6_cutscene);
- OPCODE(0x69, o6_stopMusic);
- OPCODE(0x6a, o6_freezeUnfreeze);
- OPCODE(0x6b, o6_cursorCommand);
- /* 6C */
- OPCODE(0x6c, o6_breakHere);
- OPCODE(0x6d, o6_ifClassOfIs);
- OPCODE(0x6e, o6_setClass);
- OPCODE(0x6f, o6_getState);
- /* 70 */
- OPCODE(0x70, o60_setState);
- OPCODE(0x71, o6_setOwner);
- OPCODE(0x72, o6_getOwner);
- OPCODE(0x73, o6_jump);
- /* 74 */
- OPCODE(0x74, o70_startSound);
- OPCODE(0x75, o6_stopSound);
- OPCODE(0x76, o6_startMusic);
- OPCODE(0x77, o6_stopObjectScript);
- /* 78 */
- OPCODE(0x78, o6_panCameraTo);
- OPCODE(0x79, o6_actorFollowCamera);
- OPCODE(0x7a, o6_setCameraAt);
- OPCODE(0x7b, o6_loadRoom);
- /* 7C */
- OPCODE(0x7c, o6_stopScript);
- OPCODE(0x7d, o6_walkActorToObj);
- OPCODE(0x7e, o6_walkActorTo);
- OPCODE(0x7f, o6_putActorAtXY);
- /* 80 */
- OPCODE(0x80, o6_putActorAtObject);
- OPCODE(0x81, o6_faceActor);
- OPCODE(0x82, o6_animateActor);
- OPCODE(0x83, o6_doSentence);
- /* 84 */
- OPCODE(0x84, o70_pickupObject);
- OPCODE(0x85, o6_loadRoomWithEgo);
- OPCODE(0x87, o6_getRandomNumber);
- /* 88 */
- OPCODE(0x88, o6_getRandomNumberRange);
- OPCODE(0x8a, o6_getActorMoving);
- OPCODE(0x8b, o6_isScriptRunning);
- /* 8C */
- OPCODE(0x8c, o70_getActorRoom);
- OPCODE(0x8d, o6_getObjectX);
- OPCODE(0x8e, o6_getObjectY);
- OPCODE(0x8f, o6_getObjectOldDir);
- /* 90 */
- OPCODE(0x90, o6_getActorWalkBox);
- OPCODE(0x91, o6_getActorCostume);
- OPCODE(0x92, o6_findInventory);
- OPCODE(0x93, o6_getInventoryCount);
- /* 94 */
- OPCODE(0x94, o6_getVerbFromXY);
- OPCODE(0x95, o6_beginOverride);
- OPCODE(0x96, o6_endOverride);
- OPCODE(0x97, o6_setObjectName);
- /* 98 */
- OPCODE(0x98, o6_isSoundRunning);
- OPCODE(0x99, o6_setBoxFlags);
- OPCODE(0x9b, o70_resourceRoutines);
- /* 9C */
- OPCODE(0x9c, o60_roomOps);
- OPCODE(0x9d, o60_actorOps);
- OPCODE(0x9e, o6_verbOps);
- OPCODE(0x9f, o6_getActorFromXY);
- /* A0 */
- OPCODE(0xa0, o6_findObject);
- OPCODE(0xa1, o6_pseudoRoom);
- OPCODE(0xa2, o6_getActorElevation);
- OPCODE(0xa3, o6_getVerbEntrypoint);
- /* A4 */
- OPCODE(0xa4, o6_arrayOps);
- OPCODE(0xa5, o6_saveRestoreVerbs);
- OPCODE(0xa6, o6_drawBox);
- OPCODE(0xa7, o6_pop);
- /* A8 */
- OPCODE(0xa8, o6_getActorWidth);
- OPCODE(0xa9, o6_wait);
- OPCODE(0xaa, o6_getActorScaleX);
- OPCODE(0xab, o6_getActorAnimCounter);
- /* AC */
- OPCODE(0xad, o6_isAnyOf);
- OPCODE(0xae, o70_systemOps);
- OPCODE(0xaf, o6_isActorInBox);
- /* B0 */
- OPCODE(0xb0, o6_delay);
- OPCODE(0xb1, o6_delaySeconds);
- OPCODE(0xb2, o6_delayMinutes);
- OPCODE(0xb3, o6_stopSentence);
- /* B4 */
- OPCODE(0xb4, o6_printLine);
- OPCODE(0xb5, o6_printText);
- OPCODE(0xb6, o6_printDebug);
- OPCODE(0xb7, o6_printSystem);
- /* B8 */
- OPCODE(0xb8, o6_printActor);
- OPCODE(0xb9, o6_printEgo);
- OPCODE(0xba, o6_talkActor);
- OPCODE(0xbb, o6_talkEgo);
- /* BC */
- OPCODE(0xbc, o6_dimArray);
- OPCODE(0xbd, o6_stopObjectCode);
- OPCODE(0xbe, o6_startObjectQuick);
- OPCODE(0xbf, o6_startScriptQuick2);
- /* C0 */
- OPCODE(0xc0, o6_dim2dimArray);
- /* C4 */
- OPCODE(0xc4, o6_abs);
- OPCODE(0xc5, o6_distObjectObject);
- OPCODE(0xc6, o6_distObjectPt);
- OPCODE(0xc7, o6_distPtPt);
- /* C8 */
- OPCODE(0xc8, o60_kernelGetFunctions);
+ ScummEngine_v70he::setupOpcodes();
+
OPCODE(0xc9, o71_kernelSetFunctions);
- OPCODE(0xca, o6_delayFrames);
- OPCODE(0xcb, o6_pickOneOf);
- /* CC */
- OPCODE(0xcc, o6_pickOneOfDefault);
- OPCODE(0xcd, o6_stampObject);
- /* D0 */
- OPCODE(0xd0, o6_getDateTime);
- OPCODE(0xd1, o6_stopTalking);
- OPCODE(0xd2, o6_getAnimateVariable);
- /* D4 */
- OPCODE(0xd4, o6_shuffle);
- OPCODE(0xd5, o6_jumpToScript);
- OPCODE(0xd6, o6_band);
- OPCODE(0xd7, o6_bor);
- /* D8 */
- OPCODE(0xd8, o6_isRoomScriptRunning);
- OPCODE(0xd9, o60_closeFile);
- OPCODE(0xda, o60_openFile);
- OPCODE(0xdb, o60_readFile);
- /* DC */
- OPCODE(0xdc, o60_writeFile);
- OPCODE(0xdd, o6_findAllObjects);
- OPCODE(0xde, o60_deleteFile);
- OPCODE(0xdf, o60_rename);
- /* E0 */
- OPCODE(0xe0, o60_soundOps);
- OPCODE(0xe1, o6_getPixel);
- OPCODE(0xe2, o60_localizeArrayToScript);
- OPCODE(0xe3, o6_pickVarRandom);
- /* E4 */
- OPCODE(0xe4, o6_setBoxSet);
- /* E8 */
- OPCODE(0xe9, o60_seekFilePos);
- OPCODE(0xea, o60_redimArray);
- OPCODE(0xeb, o60_readFilePos);
- /* EC */
OPCODE(0xec, o71_copyString);
OPCODE(0xed, o71_getStringWidth);
- OPCODE(0xee, o70_getStringLen);
OPCODE(0xef, o71_appendString);
- /* F0 */
OPCODE(0xf0, o71_concatString);
OPCODE(0xf1, o71_compareString);
- OPCODE(0xf2, o70_isResourceLoaded);
- OPCODE(0xf3, o70_readINI);
- /* F4 */
- OPCODE(0xf4, o70_writeINI);
OPCODE(0xf5, o71_getStringLenForWidth);
OPCODE(0xf6, o71_getCharIndexInString);
OPCODE(0xf7, o71_findBox);
- /* F8 */
- OPCODE(0xf9, o70_createDirectory);
- OPCODE(0xfa, o70_setSystemMessage);
OPCODE(0xfb, o71_polygonOps);
- /* FC */
OPCODE(0xfc, o71_polygonHit);
}
diff --git a/engines/scumm/he/script_v72he.cpp b/engines/scumm/he/script_v72he.cpp
index b1b3417873..bb209e78d1 100644
--- a/engines/scumm/he/script_v72he.cpp
+++ b/engines/scumm/he/script_v72he.cpp
@@ -45,257 +45,60 @@ namespace Scumm {
#define OPCODE(i, x) _opcodes[i]._OPCODE(ScummEngine_v72he, x)
void ScummEngine_v72he::setupOpcodes() {
- /* 00 */
- OPCODE(0x00, o6_pushByte);
- OPCODE(0x01, o6_pushWord);
+ ScummEngine_v71he::setupOpcodes();
+
OPCODE(0x02, o72_pushDWord);
- OPCODE(0x03, o6_pushWordVar);
- /* 04 */
OPCODE(0x04, o72_getScriptString);
- OPCODE(0x07, o6_wordArrayRead);
- /* 08 */
- OPCODE(0x0b, o6_wordArrayIndexedRead);
- /* 0C */
- OPCODE(0x0c, o6_dup);
- OPCODE(0x0d, o6_not);
- OPCODE(0x0e, o6_eq);
- OPCODE(0x0f, o6_neq);
- /* 10 */
- OPCODE(0x10, o6_gt);
- OPCODE(0x11, o6_lt);
- OPCODE(0x12, o6_le);
- OPCODE(0x13, o6_ge);
- /* 14 */
- OPCODE(0x14, o6_add);
- OPCODE(0x15, o6_sub);
- OPCODE(0x16, o6_mul);
- OPCODE(0x17, o6_div);
- /* 18 */
- OPCODE(0x18, o6_land);
- OPCODE(0x19, o6_lor);
- OPCODE(0x1a, o6_pop);
+ _opcodes[0x0a].setProc(0, 0);
OPCODE(0x1b, o72_isAnyOf);
- /* 1C */
- /* 20 */
- /* 24 */
- /* 28 */
- /* 2C */
- /* 30 */
- /* 34 */
- /* 38 */
- /* 3C */
- /* 40 */
- OPCODE(0x43, o6_writeWordVar);
- /* 44 */
- OPCODE(0x47, o6_wordArrayWrite);
- /* 48 */
- OPCODE(0x4b, o6_wordArrayIndexedWrite);
- /* 4C */
- OPCODE(0x4f, o6_wordVarInc);
- /* 50 */
+ _opcodes[0x42].setProc(0, 0);
+ _opcodes[0x46].setProc(0, 0);
+ _opcodes[0x4a].setProc(0, 0);
+ _opcodes[0x4e].setProc(0, 0);
OPCODE(0x50, o72_resetCutscene);
OPCODE(0x52, o72_findObjectWithClassOf);
- OPCODE(0x53, o6_wordArrayInc);
- /* 54 */
OPCODE(0x54, o72_getObjectImageX);
OPCODE(0x55, o72_getObjectImageY);
OPCODE(0x56, o72_captureWizImage);
- OPCODE(0x57, o6_wordVarDec);
- /* 58 */
OPCODE(0x58, o72_getTimer);
OPCODE(0x59, o72_setTimer);
OPCODE(0x5a, o72_getSoundPosition);
- OPCODE(0x5b, o6_wordArrayDec);
- /* 5C */
- OPCODE(0x5c, o6_if);
- OPCODE(0x5d, o6_ifNot);
OPCODE(0x5e, o72_startScript);
- OPCODE(0x5f, o6_startScriptQuick);
- /* 60 */
OPCODE(0x60, o72_startObject);
OPCODE(0x61, o72_drawObject);
OPCODE(0x62, o72_printWizImage);
OPCODE(0x63, o72_getArrayDimSize);
- /* 64 */
OPCODE(0x64, o72_getNumFreeArrays);
- OPCODE(0x65, o6_stopObjectCode);
- OPCODE(0x66, o6_stopObjectCode);
- OPCODE(0x67, o6_endCutscene);
- /* 68 */
- OPCODE(0x68, o6_cutscene);
- OPCODE(0x69, o6_stopMusic);
- OPCODE(0x6a, o6_freezeUnfreeze);
- OPCODE(0x6b, o6_cursorCommand);
- /* 6C */
- OPCODE(0x6c, o6_breakHere);
- OPCODE(0x6d, o6_ifClassOfIs);
- OPCODE(0x6e, o6_setClass);
- OPCODE(0x6f, o6_getState);
- /* 70 */
- OPCODE(0x70, o60_setState);
- OPCODE(0x71, o6_setOwner);
- OPCODE(0x72, o6_getOwner);
- OPCODE(0x73, o6_jump);
- /* 74 */
- OPCODE(0x74, o70_startSound);
- OPCODE(0x75, o6_stopSound);
- OPCODE(0x76, o6_startMusic);
- OPCODE(0x77, o6_stopObjectScript);
- /* 78 */
- OPCODE(0x78, o6_panCameraTo);
- OPCODE(0x79, o6_actorFollowCamera);
- OPCODE(0x7a, o6_setCameraAt);
- OPCODE(0x7b, o6_loadRoom);
- /* 7C */
- OPCODE(0x7c, o6_stopScript);
- OPCODE(0x7d, o6_walkActorToObj);
- OPCODE(0x7e, o6_walkActorTo);
- OPCODE(0x7f, o6_putActorAtXY);
- /* 80 */
- OPCODE(0x80, o6_putActorAtObject);
- OPCODE(0x81, o6_faceActor);
- OPCODE(0x82, o6_animateActor);
- OPCODE(0x83, o6_doSentence);
- /* 84 */
- OPCODE(0x84, o70_pickupObject);
- OPCODE(0x85, o6_loadRoomWithEgo);
- OPCODE(0x87, o6_getRandomNumber);
- /* 88 */
- OPCODE(0x88, o6_getRandomNumberRange);
- OPCODE(0x8a, o6_getActorMoving);
- OPCODE(0x8b, o6_isScriptRunning);
- /* 8C */
- OPCODE(0x8c, o70_getActorRoom);
- OPCODE(0x8d, o6_getObjectX);
- OPCODE(0x8e, o6_getObjectY);
- OPCODE(0x8f, o6_getObjectOldDir);
- /* 90 */
- OPCODE(0x90, o6_getActorWalkBox);
- OPCODE(0x91, o6_getActorCostume);
- OPCODE(0x92, o6_findInventory);
- OPCODE(0x93, o6_getInventoryCount);
- /* 94 */
- OPCODE(0x94, o6_getVerbFromXY);
- OPCODE(0x95, o6_beginOverride);
- OPCODE(0x96, o6_endOverride);
- /* 98 */
- OPCODE(0x98, o6_isSoundRunning);
- OPCODE(0x99, o6_setBoxFlags);
- OPCODE(0x9b, o70_resourceRoutines);
- /* 9C */
+ _opcodes[0x97].setProc(0, 0); // was: o6_setObjectName
OPCODE(0x9c, o72_roomOps);
OPCODE(0x9d, o72_actorOps);
OPCODE(0x9e, o72_verbOps);
- OPCODE(0x9f, o6_getActorFromXY);
- /* A0 */
OPCODE(0xa0, o72_findObject);
- OPCODE(0xa1, o6_pseudoRoom);
- OPCODE(0xa2, o6_getActorElevation);
- OPCODE(0xa3, o6_getVerbEntrypoint);
- /* A4 */
OPCODE(0xa4, o72_arrayOps);
- OPCODE(0xa5, o6_saveRestoreVerbs);
- OPCODE(0xa6, o6_drawBox);
- OPCODE(0xa7, o6_pop);
- /* A8 */
- OPCODE(0xa8, o6_getActorWidth);
- OPCODE(0xa9, o6_wait);
- OPCODE(0xaa, o6_getActorScaleX);
- OPCODE(0xab, o6_getActorAnimCounter);
- /* AC */
- OPCODE(0xad, o6_isAnyOf);
OPCODE(0xae, o72_systemOps);
- OPCODE(0xaf, o6_isActorInBox);
- /* B0 */
- OPCODE(0xb0, o6_delay);
- OPCODE(0xb1, o6_delaySeconds);
- OPCODE(0xb2, o6_delayMinutes);
- OPCODE(0xb3, o6_stopSentence);
- /* B4 */
- OPCODE(0xb4, o6_printLine);
- OPCODE(0xb5, o6_printText);
- OPCODE(0xb6, o6_printDebug);
- OPCODE(0xb7, o6_printSystem);
- /* B8 */
- OPCODE(0xb8, o6_printActor);
- OPCODE(0xb9, o6_printEgo);
OPCODE(0xba, o72_talkActor);
OPCODE(0xbb, o72_talkEgo);
- /* BC */
OPCODE(0xbc, o72_dimArray);
- OPCODE(0xbd, o6_stopObjectCode);
- OPCODE(0xbe, o6_startObjectQuick);
- OPCODE(0xbf, o6_startScriptQuick2);
- /* C0 */
OPCODE(0xc0, o72_dim2dimArray);
OPCODE(0xc1, o72_traceStatus);
- /* C4 */
- OPCODE(0xc4, o6_abs);
- OPCODE(0xc5, o6_distObjectObject);
- OPCODE(0xc6, o6_distObjectPt);
- OPCODE(0xc7, o6_distPtPt);
- /* C8 */
OPCODE(0xc8, o72_kernelGetFunctions);
- OPCODE(0xc9, o71_kernelSetFunctions);
- OPCODE(0xca, o6_delayFrames);
- OPCODE(0xcb, o6_pickOneOf);
- /* CC */
- OPCODE(0xcc, o6_pickOneOfDefault);
- OPCODE(0xcd, o6_stampObject);
OPCODE(0xce, o72_drawWizImage);
OPCODE(0xcf, o72_debugInput);
- /* D0 */
- OPCODE(0xd0, o6_getDateTime);
- OPCODE(0xd1, o6_stopTalking);
- OPCODE(0xd2, o6_getAnimateVariable);
- /* D4 */
- OPCODE(0xd4, o6_shuffle);
OPCODE(0xd5, o72_jumpToScript);
- OPCODE(0xd6, o6_band);
- OPCODE(0xd7, o6_bor);
- /* D8 */
- OPCODE(0xd8, o6_isRoomScriptRunning);
- OPCODE(0xd9, o60_closeFile);
OPCODE(0xda, o72_openFile);
OPCODE(0xdb, o72_readFile);
- /* DC */
OPCODE(0xdc, o72_writeFile);
OPCODE(0xdd, o72_findAllObjects);
OPCODE(0xde, o72_deleteFile);
OPCODE(0xdf, o72_rename);
- /* E0 */
- OPCODE(0xe0, o60_soundOps);
OPCODE(0xe1, o72_getPixel);
- OPCODE(0xe2, o60_localizeArrayToScript);
OPCODE(0xe3, o72_pickVarRandom);
- /* E4 */
- OPCODE(0xe4, o6_setBoxSet);
- /* E8 */
- OPCODE(0xe9, o60_seekFilePos);
OPCODE(0xea, o72_redimArray);
- OPCODE(0xeb, o60_readFilePos);
- /* EC */
- OPCODE(0xec, o71_copyString);
- OPCODE(0xed, o71_getStringWidth);
- OPCODE(0xee, o70_getStringLen);
- OPCODE(0xef, o71_appendString);
- /* F0 */
- OPCODE(0xf0, o71_concatString);
- OPCODE(0xf1, o71_compareString);
- OPCODE(0xf2, o70_isResourceLoaded);
OPCODE(0xf3, o72_readINI);
- /* F4 */
OPCODE(0xf4, o72_writeINI);
- OPCODE(0xf5, o71_getStringLenForWidth);
- OPCODE(0xf6, o71_getCharIndexInString);
- OPCODE(0xf7, o71_findBox);
- /* F8 */
OPCODE(0xf8, o72_getResourceSize);
OPCODE(0xf9, o72_createDirectory);
OPCODE(0xfa, o72_setSystemMessage);
- OPCODE(0xfb, o71_polygonOps);
- /* FC */
- OPCODE(0xfc, o71_polygonHit);
}
static const int arrayDataSizes[] = { 0, 1, 4, 8, 8, 16, 32 };
diff --git a/engines/scumm/he/script_v80he.cpp b/engines/scumm/he/script_v80he.cpp
index fccc81c499..b71a0f9e10 100644
--- a/engines/scumm/he/script_v80he.cpp
+++ b/engines/scumm/he/script_v80he.cpp
@@ -42,264 +42,28 @@ namespace Scumm {
#define OPCODE(i, x) _opcodes[i]._OPCODE(ScummEngine_v80he, x)
void ScummEngine_v80he::setupOpcodes() {
- /* 00 */
- OPCODE(0x00, o6_pushByte);
- OPCODE(0x01, o6_pushWord);
- OPCODE(0x02, o72_pushDWord);
- OPCODE(0x03, o6_pushWordVar);
- /* 04 */
- OPCODE(0x04, o72_getScriptString);
- OPCODE(0x07, o6_wordArrayRead);
- /* 08 */
- OPCODE(0x0b, o6_wordArrayIndexedRead);
- /* 0C */
- OPCODE(0x0c, o6_dup);
- OPCODE(0x0d, o6_not);
- OPCODE(0x0e, o6_eq);
- OPCODE(0x0f, o6_neq);
- /* 10 */
- OPCODE(0x10, o6_gt);
- OPCODE(0x11, o6_lt);
- OPCODE(0x12, o6_le);
- OPCODE(0x13, o6_ge);
- /* 14 */
- OPCODE(0x14, o6_add);
- OPCODE(0x15, o6_sub);
- OPCODE(0x16, o6_mul);
- OPCODE(0x17, o6_div);
- /* 18 */
- OPCODE(0x18, o6_land);
- OPCODE(0x19, o6_lor);
- OPCODE(0x1a, o6_pop);
- OPCODE(0x1b, o72_isAnyOf);
- /* 1C */
- /* 20 */
- /* 24 */
- /* 28 */
- /* 2C */
- /* 30 */
- /* 34 */
- /* 38 */
- /* 3C */
- /* 40 */
- OPCODE(0x43, o6_writeWordVar);
- /* 44 */
+ ScummEngine_v72he::setupOpcodes();
+
OPCODE(0x45, o80_createSound);
OPCODE(0x46, o80_getFileSize);
- OPCODE(0x47, o6_wordArrayWrite);
- /* 48 */
OPCODE(0x48, o80_stringToInt);
OPCODE(0x49, o80_getSoundVar);
OPCODE(0x4a, o80_localizeArrayToRoom);
- OPCODE(0x4b, o6_wordArrayIndexedWrite);
- /* 4C */
OPCODE(0x4c, o80_sourceDebug);
OPCODE(0x4d, o80_readConfigFile);
OPCODE(0x4e, o80_writeConfigFile);
- OPCODE(0x4f, o6_wordVarInc);
- /* 50 */
- OPCODE(0x50, o72_resetCutscene);
- OPCODE(0x52, o72_findObjectWithClassOf);
- OPCODE(0x53, o6_wordArrayInc);
- /* 54 */
- OPCODE(0x54, o72_getObjectImageX);
- OPCODE(0x55, o72_getObjectImageY);
- OPCODE(0x56, o72_captureWizImage);
- OPCODE(0x57, o6_wordVarDec);
- /* 58 */
- OPCODE(0x58, o72_getTimer);
- OPCODE(0x59, o72_setTimer);
- OPCODE(0x5a, o72_getSoundPosition);
- OPCODE(0x5b, o6_wordArrayDec);
- /* 5C */
- OPCODE(0x5c, o6_if);
- OPCODE(0x5d, o6_ifNot);
- OPCODE(0x5e, o72_startScript);
- OPCODE(0x5f, o6_startScriptQuick);
- /* 60 */
- OPCODE(0x60, o72_startObject);
- OPCODE(0x61, o72_drawObject);
- OPCODE(0x62, o72_printWizImage);
- OPCODE(0x63, o72_getArrayDimSize);
- /* 64 */
- OPCODE(0x64, o72_getNumFreeArrays);
- OPCODE(0x65, o6_stopObjectCode);
- OPCODE(0x66, o6_stopObjectCode);
- OPCODE(0x67, o6_endCutscene);
- /* 68 */
- OPCODE(0x68, o6_cutscene);
- OPCODE(0x6a, o6_freezeUnfreeze);
+ _opcodes[0x69].setProc(0, 0);
OPCODE(0x6b, o80_cursorCommand);
- /* 6C */
- OPCODE(0x6c, o6_breakHere);
- OPCODE(0x6d, o6_ifClassOfIs);
- OPCODE(0x6e, o6_setClass);
- OPCODE(0x6f, o6_getState);
- /* 70 */
OPCODE(0x70, o80_setState);
- OPCODE(0x71, o6_setOwner);
- OPCODE(0x72, o6_getOwner);
- OPCODE(0x73, o6_jump);
- /* 74 */
- OPCODE(0x74, o70_startSound);
- OPCODE(0x75, o6_stopSound);
- OPCODE(0x77, o6_stopObjectScript);
- /* 78 */
- OPCODE(0x78, o6_panCameraTo);
- OPCODE(0x79, o6_actorFollowCamera);
- OPCODE(0x7a, o6_setCameraAt);
- OPCODE(0x7b, o6_loadRoom);
- /* 7C */
- OPCODE(0x7c, o6_stopScript);
- OPCODE(0x7d, o6_walkActorToObj);
- OPCODE(0x7e, o6_walkActorTo);
- OPCODE(0x7f, o6_putActorAtXY);
- /* 80 */
- OPCODE(0x80, o6_putActorAtObject);
- OPCODE(0x81, o6_faceActor);
- OPCODE(0x82, o6_animateActor);
- OPCODE(0x83, o6_doSentence);
- /* 84 */
- OPCODE(0x84, o70_pickupObject);
- OPCODE(0x85, o6_loadRoomWithEgo);
- OPCODE(0x87, o6_getRandomNumber);
- /* 88 */
- OPCODE(0x88, o6_getRandomNumberRange);
- OPCODE(0x8a, o6_getActorMoving);
- OPCODE(0x8b, o6_isScriptRunning);
- /* 8C */
- OPCODE(0x8c, o70_getActorRoom);
- OPCODE(0x8d, o6_getObjectX);
- OPCODE(0x8e, o6_getObjectY);
- OPCODE(0x8f, o6_getObjectOldDir);
- /* 90 */
- OPCODE(0x90, o6_getActorWalkBox);
- OPCODE(0x91, o6_getActorCostume);
- OPCODE(0x92, o6_findInventory);
- OPCODE(0x93, o6_getInventoryCount);
- /* 94 */
- OPCODE(0x95, o6_beginOverride);
- OPCODE(0x96, o6_endOverride);
- /* 98 */
- OPCODE(0x98, o6_isSoundRunning);
- OPCODE(0x99, o6_setBoxFlags);
- OPCODE(0x9b, o70_resourceRoutines);
- /* 9C */
- OPCODE(0x9c, o72_roomOps);
- OPCODE(0x9d, o72_actorOps);
- OPCODE(0x9f, o6_getActorFromXY);
- /* A0 */
- OPCODE(0xa0, o72_findObject);
- OPCODE(0xa1, o6_pseudoRoom);
- OPCODE(0xa2, o6_getActorElevation);
- OPCODE(0xa3, o6_getVerbEntrypoint);
- /* A4 */
- OPCODE(0xa4, o72_arrayOps);
- OPCODE(0xa6, o6_drawBox);
- OPCODE(0xa7, o6_pop);
- /* A8 */
- OPCODE(0xa8, o6_getActorWidth);
- OPCODE(0xa9, o6_wait);
- OPCODE(0xaa, o6_getActorScaleX);
- OPCODE(0xab, o6_getActorAnimCounter);
- /* AC */
+ _opcodes[0x76].setProc(0, 0);
+ _opcodes[0x94].setProc(0, 0);
+ _opcodes[0x9e].setProc(0, 0);
+ _opcodes[0xa5].setProc(0, 0);
OPCODE(0xac, o80_drawWizPolygon);
- OPCODE(0xad, o6_isAnyOf);
- OPCODE(0xae, o72_systemOps);
- OPCODE(0xaf, o6_isActorInBox);
- /* B0 */
- OPCODE(0xb0, o6_delay);
- OPCODE(0xb1, o6_delaySeconds);
- OPCODE(0xb2, o6_delayMinutes);
- OPCODE(0xb3, o6_stopSentence);
- /* B4 */
- OPCODE(0xb4, o6_printLine);
- OPCODE(0xb5, o6_printText);
- OPCODE(0xb6, o6_printDebug);
- OPCODE(0xb7, o6_printSystem);
- /* B8 */
- OPCODE(0xb8, o6_printActor);
- OPCODE(0xb9, o6_printEgo);
- OPCODE(0xba, o72_talkActor);
- OPCODE(0xbb, o72_talkEgo);
- /* BC */
- OPCODE(0xbc, o72_dimArray);
- OPCODE(0xbd, o6_stopObjectCode);
- OPCODE(0xbe, o6_startObjectQuick);
- OPCODE(0xbf, o6_startScriptQuick2);
- /* C0 */
- OPCODE(0xc0, o72_dim2dimArray);
- OPCODE(0xc1, o72_traceStatus);
- /* C4 */
- OPCODE(0xc4, o6_abs);
- OPCODE(0xc5, o6_distObjectObject);
- OPCODE(0xc6, o6_distObjectPt);
- OPCODE(0xc7, o6_distPtPt);
- /* C8 */
- OPCODE(0xc8, o72_kernelGetFunctions);
- OPCODE(0xc9, o71_kernelSetFunctions);
- OPCODE(0xca, o6_delayFrames);
- OPCODE(0xcb, o6_pickOneOf);
- /* CC */
- OPCODE(0xcc, o6_pickOneOfDefault);
- OPCODE(0xcd, o6_stampObject);
- OPCODE(0xce, o72_drawWizImage);
- OPCODE(0xcf, o72_debugInput);
- /* D0 */
- OPCODE(0xd0, o6_getDateTime);
- OPCODE(0xd1, o6_stopTalking);
- OPCODE(0xd2, o6_getAnimateVariable);
- /* D4 */
- OPCODE(0xd4, o6_shuffle);
- OPCODE(0xd5, o72_jumpToScript);
- OPCODE(0xd6, o6_band);
- OPCODE(0xd7, o6_bor);
- /* D8 */
- OPCODE(0xd8, o6_isRoomScriptRunning);
- OPCODE(0xd9, o60_closeFile);
- OPCODE(0xda, o72_openFile);
- OPCODE(0xdb, o72_readFile);
- /* DC */
- OPCODE(0xdc, o72_writeFile);
- OPCODE(0xdd, o72_findAllObjects);
- OPCODE(0xde, o72_deleteFile);
- OPCODE(0xdf, o72_rename);
- /* E0 */
OPCODE(0xe0, o80_drawLine);
- OPCODE(0xe1, o72_getPixel);
- OPCODE(0xe2, o60_localizeArrayToScript);
OPCODE(0xe3, o80_pickVarRandom);
- /* E4 */
- OPCODE(0xe4, o6_setBoxSet);
- /* E8 */
- OPCODE(0xe9, o60_seekFilePos);
- OPCODE(0xea, o72_redimArray);
- OPCODE(0xeb, o60_readFilePos);
- /* EC */
- OPCODE(0xec, o71_copyString);
- OPCODE(0xed, o71_getStringWidth);
- OPCODE(0xee, o70_getStringLen);
- OPCODE(0xef, o71_appendString);
- /* F0 */
- OPCODE(0xf0, o71_concatString);
- OPCODE(0xf1, o71_compareString);
- OPCODE(0xf2, o70_isResourceLoaded);
- OPCODE(0xf3, o72_readINI);
- /* F4 */
- OPCODE(0xf4, o72_writeINI);
- OPCODE(0xf5, o71_getStringLenForWidth);
- OPCODE(0xf6, o71_getCharIndexInString);
- OPCODE(0xf7, o71_findBox);
- /* F8 */
- OPCODE(0xf8, o72_getResourceSize);
- OPCODE(0xf9, o72_createDirectory);
- OPCODE(0xfa, o72_setSystemMessage);
- OPCODE(0xfb, o71_polygonOps);
- /* FC */
- OPCODE(0xfc, o71_polygonHit);
}
-
void ScummEngine_v80he::o80_createSound() {
byte subOp = fetchScriptByte();
diff --git a/engines/scumm/he/script_v90he.cpp b/engines/scumm/he/script_v90he.cpp
index f84207d6c5..5a788479bf 100644
--- a/engines/scumm/he/script_v90he.cpp
+++ b/engines/scumm/he/script_v90he.cpp
@@ -41,37 +41,10 @@ namespace Scumm {
#define OPCODE(i, x) _opcodes[i]._OPCODE(ScummEngine_v90he, x)
void ScummEngine_v90he::setupOpcodes() {
- /* 00 */
- OPCODE(0x00, o6_pushByte);
- OPCODE(0x01, o6_pushWord);
- OPCODE(0x02, o72_pushDWord);
- OPCODE(0x03, o6_pushWordVar);
- /* 04 */
- OPCODE(0x04, o72_getScriptString);
- OPCODE(0x07, o6_wordArrayRead);
- /* 08 */
+ ScummEngine_v80he::setupOpcodes();
+
OPCODE(0x0a, o90_dup_n);
- OPCODE(0x0b, o6_wordArrayIndexedRead);
- /* 0C */
- OPCODE(0x0c, o6_dup);
- OPCODE(0x0d, o6_not);
- OPCODE(0x0e, o6_eq);
- OPCODE(0x0f, o6_neq);
- /* 10 */
- OPCODE(0x10, o6_gt);
- OPCODE(0x11, o6_lt);
- OPCODE(0x12, o6_le);
- OPCODE(0x13, o6_ge);
- /* 14 */
- OPCODE(0x14, o6_add);
- OPCODE(0x15, o6_sub);
- OPCODE(0x16, o6_mul);
- OPCODE(0x17, o6_div);
- /* 18 */
- OPCODE(0x18, o6_land);
- OPCODE(0x19, o6_lor);
- OPCODE(0x1a, o6_pop);
- OPCODE(0x1b, o72_isAnyOf);
+
/* 1C */
OPCODE(0x1c, o90_wizImageOps);
OPCODE(0x1d, o90_min);
@@ -111,227 +84,15 @@ void ScummEngine_v90he::setupOpcodes() {
OPCODE(0x38, o90_redim2dimArray);
OPCODE(0x39, o90_getLinesIntersectionPoint);
OPCODE(0x3a, o90_sortArray);
- /* 3C */
- /* 40 */
- OPCODE(0x43, o6_writeWordVar);
- /* 44 */
+
OPCODE(0x44, o90_getObjectData);
- OPCODE(0x45, o80_createSound);
- OPCODE(0x46, o80_getFileSize);
- OPCODE(0x47, o6_wordArrayWrite);
- /* 48 */
- OPCODE(0x48, o80_stringToInt);
- OPCODE(0x49, o80_getSoundVar);
- OPCODE(0x4a, o80_localizeArrayToRoom);
- OPCODE(0x4b, o6_wordArrayIndexedWrite);
- /* 4C */
- OPCODE(0x4c, o80_sourceDebug);
- OPCODE(0x4d, o80_readConfigFile);
- OPCODE(0x4e, o80_writeConfigFile);
- OPCODE(0x4f, o6_wordVarInc);
- /* 50 */
- OPCODE(0x50, o72_resetCutscene);
- OPCODE(0x52, o72_findObjectWithClassOf);
- OPCODE(0x53, o6_wordArrayInc);
- /* 54 */
- OPCODE(0x54, o72_getObjectImageX);
- OPCODE(0x55, o72_getObjectImageY);
- OPCODE(0x56, o72_captureWizImage);
- OPCODE(0x57, o6_wordVarDec);
- /* 58 */
- OPCODE(0x58, o72_getTimer);
- OPCODE(0x59, o72_setTimer);
- OPCODE(0x5a, o72_getSoundPosition);
- OPCODE(0x5b, o6_wordArrayDec);
- /* 5C */
- OPCODE(0x5c, o6_if);
- OPCODE(0x5d, o6_ifNot);
- OPCODE(0x5e, o72_startScript);
- OPCODE(0x5f, o6_startScriptQuick);
- /* 60 */
- OPCODE(0x60, o72_startObject);
- OPCODE(0x61, o72_drawObject);
- OPCODE(0x62, o72_printWizImage);
- OPCODE(0x63, o72_getArrayDimSize);
- /* 64 */
- OPCODE(0x64, o72_getNumFreeArrays);
- OPCODE(0x65, o6_stopObjectCode);
- OPCODE(0x66, o6_stopObjectCode);
- OPCODE(0x67, o6_endCutscene);
- /* 68 */
- OPCODE(0x68, o6_cutscene);
- OPCODE(0x6a, o6_freezeUnfreeze);
- OPCODE(0x6b, o80_cursorCommand);
- /* 6C */
- OPCODE(0x6c, o6_breakHere);
- OPCODE(0x6d, o6_ifClassOfIs);
- OPCODE(0x6e, o6_setClass);
- OPCODE(0x6f, o6_getState);
- /* 70 */
- OPCODE(0x70, o80_setState);
- OPCODE(0x71, o6_setOwner);
- OPCODE(0x72, o6_getOwner);
- OPCODE(0x73, o6_jump);
- /* 74 */
- OPCODE(0x74, o70_startSound);
- OPCODE(0x75, o6_stopSound);
- OPCODE(0x77, o6_stopObjectScript);
- /* 78 */
- OPCODE(0x78, o6_panCameraTo);
- OPCODE(0x79, o6_actorFollowCamera);
- OPCODE(0x7a, o6_setCameraAt);
- OPCODE(0x7b, o6_loadRoom);
- /* 7C */
- OPCODE(0x7c, o6_stopScript);
- OPCODE(0x7d, o6_walkActorToObj);
- OPCODE(0x7e, o6_walkActorTo);
- OPCODE(0x7f, o6_putActorAtXY);
- /* 80 */
- OPCODE(0x80, o6_putActorAtObject);
- OPCODE(0x81, o6_faceActor);
- OPCODE(0x82, o6_animateActor);
- OPCODE(0x83, o6_doSentence);
- /* 84 */
- OPCODE(0x84, o70_pickupObject);
- OPCODE(0x85, o6_loadRoomWithEgo);
- OPCODE(0x87, o6_getRandomNumber);
- /* 88 */
- OPCODE(0x88, o6_getRandomNumberRange);
- OPCODE(0x8a, o6_getActorMoving);
- OPCODE(0x8b, o6_isScriptRunning);
- /* 8C */
- OPCODE(0x8c, o70_getActorRoom);
- OPCODE(0x8d, o6_getObjectX);
- OPCODE(0x8e, o6_getObjectY);
- OPCODE(0x8f, o6_getObjectOldDir);
- /* 90 */
- OPCODE(0x90, o6_getActorWalkBox);
- OPCODE(0x91, o6_getActorCostume);
- OPCODE(0x92, o6_findInventory);
- OPCODE(0x93, o6_getInventoryCount);
- /* 94 */
+
OPCODE(0x94, o90_getPaletteData);
- OPCODE(0x95, o6_beginOverride);
- OPCODE(0x96, o6_endOverride);
- /* 98 */
- OPCODE(0x98, o6_isSoundRunning);
- OPCODE(0x99, o6_setBoxFlags);
- OPCODE(0x9b, o70_resourceRoutines);
- /* 9C */
- OPCODE(0x9c, o72_roomOps);
- OPCODE(0x9d, o72_actorOps);
OPCODE(0x9e, o90_paletteOps);
- OPCODE(0x9f, o6_getActorFromXY);
- /* A0 */
- OPCODE(0xa0, o72_findObject);
- OPCODE(0xa1, o6_pseudoRoom);
- OPCODE(0xa2, o6_getActorElevation);
- OPCODE(0xa3, o6_getVerbEntrypoint);
- /* A4 */
- OPCODE(0xa4, o72_arrayOps);
OPCODE(0xa5, o90_fontUnk);
- OPCODE(0xa6, o6_drawBox);
- OPCODE(0xa7, o6_pop);
- /* A8 */
- OPCODE(0xa8, o6_getActorWidth);
- OPCODE(0xa9, o6_wait);
- OPCODE(0xaa, o6_getActorScaleX);
OPCODE(0xab, o90_getActorAnimProgress);
- /* AC */
- OPCODE(0xac, o80_drawWizPolygon);
- OPCODE(0xad, o6_isAnyOf);
- OPCODE(0xae, o72_systemOps);
- OPCODE(0xaf, o6_isActorInBox);
- /* B0 */
- OPCODE(0xb0, o6_delay);
- OPCODE(0xb1, o6_delaySeconds);
- OPCODE(0xb2, o6_delayMinutes);
- OPCODE(0xb3, o6_stopSentence);
- /* B4 */
- OPCODE(0xb4, o6_printLine);
- OPCODE(0xb5, o6_printText);
- OPCODE(0xb6, o6_printDebug);
- OPCODE(0xb7, o6_printSystem);
- /* B8 */
- OPCODE(0xb8, o6_printActor);
- OPCODE(0xb9, o6_printEgo);
- OPCODE(0xba, o72_talkActor);
- OPCODE(0xbb, o72_talkEgo);
- /* BC */
- OPCODE(0xbc, o72_dimArray);
- OPCODE(0xbd, o6_stopObjectCode);
- OPCODE(0xbe, o6_startObjectQuick);
- OPCODE(0xbf, o6_startScriptQuick2);
- /* C0 */
- OPCODE(0xc0, o72_dim2dimArray);
- OPCODE(0xc1, o72_traceStatus);
- /* C4 */
- OPCODE(0xc4, o6_abs);
- OPCODE(0xc5, o6_distObjectObject);
- OPCODE(0xc6, o6_distObjectPt);
- OPCODE(0xc7, o6_distPtPt);
- /* C8 */
OPCODE(0xc8, o90_kernelGetFunctions);
OPCODE(0xc9, o90_kernelSetFunctions);
- OPCODE(0xca, o6_delayFrames);
- OPCODE(0xcb, o6_pickOneOf);
- /* CC */
- OPCODE(0xcc, o6_pickOneOfDefault);
- OPCODE(0xcd, o6_stampObject);
- OPCODE(0xce, o72_drawWizImage);
- OPCODE(0xcf, o72_debugInput);
- /* D0 */
- OPCODE(0xd0, o6_getDateTime);
- OPCODE(0xd1, o6_stopTalking);
- OPCODE(0xd2, o6_getAnimateVariable);
- /* D4 */
- OPCODE(0xd4, o6_shuffle);
- OPCODE(0xd5, o72_jumpToScript);
- OPCODE(0xd6, o6_band);
- OPCODE(0xd7, o6_bor);
- /* D8 */
- OPCODE(0xd8, o6_isRoomScriptRunning);
- OPCODE(0xd9, o60_closeFile);
- OPCODE(0xda, o72_openFile);
- OPCODE(0xdb, o72_readFile);
- /* DC */
- OPCODE(0xdc, o72_writeFile);
- OPCODE(0xdd, o72_findAllObjects);
- OPCODE(0xde, o72_deleteFile);
- OPCODE(0xdf, o72_rename);
- /* E0 */
- OPCODE(0xe0, o80_drawLine);
- OPCODE(0xe1, o72_getPixel);
- OPCODE(0xe2, o60_localizeArrayToScript);
- OPCODE(0xe3, o80_pickVarRandom);
- /* E4 */
- OPCODE(0xe4, o6_setBoxSet);
- /* E8 */
- OPCODE(0xe9, o60_seekFilePos);
- OPCODE(0xea, o72_redimArray);
- OPCODE(0xeb, o60_readFilePos);
- /* EC */
- OPCODE(0xec, o71_copyString);
- OPCODE(0xed, o71_getStringWidth);
- OPCODE(0xee, o70_getStringLen);
- OPCODE(0xef, o71_appendString);
- /* F0 */
- OPCODE(0xf0, o71_concatString);
- OPCODE(0xf1, o71_compareString);
- OPCODE(0xf2, o70_isResourceLoaded);
- OPCODE(0xf3, o72_readINI);
- /* F4 */
- OPCODE(0xf4, o72_writeINI);
- OPCODE(0xf5, o71_getStringLenForWidth);
- OPCODE(0xf6, o71_getCharIndexInString);
- OPCODE(0xf7, o71_findBox);
- /* F8 */
- OPCODE(0xf8, o72_getResourceSize);
- OPCODE(0xf9, o72_createDirectory);
- OPCODE(0xfa, o72_setSystemMessage);
- OPCODE(0xfb, o71_polygonOps);
- /* FC */
- OPCODE(0xfc, o71_polygonHit);
}
void ScummEngine_v90he::o90_dup_n() {