- renaming all opcodes from cmd_* to c1_*

- changing ScriptHelper functions so it will be useable for kyra2 and kyra3 too
- unbreaking savegames (increasing the VERSION number since the game flags table got resized to be useable for kyra3)

svn-id: r23612
This commit is contained in:
Johannes Schickel 2006-07-27 20:30:51 +00:00
parent 8a0ec2a3e5
commit ee5621137f
8 changed files with 658 additions and 653 deletions

View File

@ -479,7 +479,7 @@ void KyraEngine::startup() {
_animator->initAnimStateList();
setCharactersInDefaultScene();
if (!_scriptInterpreter->loadScript("_STARTUP.EMC", _npcScriptData, _opcodeTable, _opcodeTableSize, 0)) {
if (!_scriptInterpreter->loadScript("_STARTUP.EMC", _npcScriptData, 0)) {
error("Could not load \"_STARTUP.EMC\" script");
}
_scriptInterpreter->initScript(_scriptMain, _npcScriptData);
@ -491,7 +491,7 @@ void KyraEngine::startup() {
}
_scriptInterpreter->unloadScript(_npcScriptData);
if (!_scriptInterpreter->loadScript("_NPC.EMC", _npcScriptData, _opcodeTable, _opcodeTableSize, 0)) {
if (!_scriptInterpreter->loadScript("_NPC.EMC", _npcScriptData, 0)) {
error("Could not load \"_NPC.EMC\" script");
}
@ -1113,4 +1113,14 @@ void KyraEngine::runNpcScript(int func) {
}
}
int KyraEngine::runOpcode(ScriptState *script, uint8 opcode) {
debugC(9, kDebugLevelMain | kDebugLevelScript, "KyraEngine::runOpcode(%p, %d)", (void *)script, opcode);
assert(opcode < _opcodeTableSize);
if (_opcodeTable[opcode] == &KyraEngine::c1_dummy)
warning("calling unimplemented opcode(0x%.02X)", opcode);
int val = (this->*_opcodeTable[opcode])(script);
assert(script);
return val;
}
} // End of namespace Kyra

View File

@ -70,7 +70,7 @@ enum {
// TODO: this is just the start of makeing the debug output of the kyra engine a bit more useable
// in the future we maybe merge some flags and/or create new ones
enum kDebugLevels {
kDebugLevelScriptFuncs = 1 << 0, // prints debug output of cmd_* functions
kDebugLevelScriptFuncs = 1 << 0, // prints debug output of c1_* functions
kDebugLevelScript = 1 << 1, // prints debug output of "ScriptHelper" functions
kDebugLevelSprites = 1 << 2, // prints debug output of "Sprites" functions
kDebugLevelScreen = 1 << 3, // prints debug output of "Screen" functions
@ -330,164 +330,165 @@ public:
int mouseX() { return _mouseX; }
int mouseY() { return _mouseY; }
// all opcode procs (maybe that is somehow useless atm)
int cmd_magicInMouseItem(ScriptState *script);
int cmd_characterSays(ScriptState *script);
int cmd_pauseTicks(ScriptState *script);
int cmd_drawSceneAnimShape(ScriptState *script);
int cmd_queryGameFlag(ScriptState *script);
int cmd_setGameFlag(ScriptState *script);
int cmd_resetGameFlag(ScriptState *script);
int cmd_runNPCScript(ScriptState *script);
int cmd_setSpecialExitList(ScriptState *script);
int cmd_blockInWalkableRegion(ScriptState *script);
int cmd_blockOutWalkableRegion(ScriptState *script);
int cmd_walkPlayerToPoint(ScriptState *script);
int cmd_dropItemInScene(ScriptState *script);
int cmd_drawAnimShapeIntoScene(ScriptState *script);
int cmd_createMouseItem(ScriptState *script);
int cmd_savePageToDisk(ScriptState *script);
int cmd_sceneAnimOn(ScriptState *script);
int cmd_sceneAnimOff(ScriptState *script);
int cmd_getElapsedSeconds(ScriptState *script);
int cmd_mouseIsPointer(ScriptState *script);
int cmd_destroyMouseItem(ScriptState *script);
int cmd_runSceneAnimUntilDone(ScriptState *script);
int cmd_fadeSpecialPalette(ScriptState *script);
int cmd_playAdlibSound(ScriptState *script);
int cmd_playAdlibScore(ScriptState *script);
int cmd_phaseInSameScene(ScriptState *script);
int cmd_setScenePhasingFlag(ScriptState *script);
int cmd_resetScenePhasingFlag(ScriptState *script);
int cmd_queryScenePhasingFlag(ScriptState *script);
int cmd_sceneToDirection(ScriptState *script);
int cmd_setBirthstoneGem(ScriptState *script);
int cmd_placeItemInGenericMapScene(ScriptState *script);
int cmd_setBrandonStatusBit(ScriptState *script);
int cmd_pauseSeconds(ScriptState *script);
int cmd_getCharactersLocation(ScriptState *script);
int cmd_runNPCSubscript(ScriptState *script);
int cmd_magicOutMouseItem(ScriptState *script);
int cmd_internalAnimOn(ScriptState *script);
int cmd_forceBrandonToNormal(ScriptState *script);
int cmd_poisonDeathNow(ScriptState *script);
int cmd_setScaleMode(ScriptState *script);
int cmd_openWSAFile(ScriptState *script);
int cmd_closeWSAFile(ScriptState *script);
int cmd_runWSAFromBeginningToEnd(ScriptState *script);
int cmd_displayWSAFrame(ScriptState *script);
int cmd_enterNewScene(ScriptState *script);
int cmd_setSpecialEnterXAndY(ScriptState *script);
int cmd_runWSAFrames(ScriptState *script);
int cmd_popBrandonIntoScene(ScriptState *script);
int cmd_restoreAllObjectBackgrounds(ScriptState *script);
int cmd_setCustomPaletteRange(ScriptState *script);
int cmd_loadPageFromDisk(ScriptState *script);
int cmd_customPrintTalkString(ScriptState *script);
int cmd_restoreCustomPrintBackground(ScriptState *script);
int cmd_hideMouse(ScriptState *script);
int cmd_showMouse(ScriptState *script);
int cmd_getCharacterX(ScriptState *script);
int cmd_getCharacterY(ScriptState *script);
int cmd_changeCharactersFacing(ScriptState *script);
int cmd_copyWSARegion(ScriptState *script);
int cmd_printText(ScriptState *script);
int cmd_random(ScriptState *script);
int cmd_loadSoundFile(ScriptState *script);
int cmd_displayWSAFrameOnHidPage(ScriptState *script);
int cmd_displayWSASequentialFrames(ScriptState *script);
int cmd_drawCharacterStanding(ScriptState *script);
int cmd_internalAnimOff(ScriptState *script);
int cmd_changeCharactersXAndY(ScriptState *script);
int cmd_clearSceneAnimatorBeacon(ScriptState *script);
int cmd_querySceneAnimatorBeacon(ScriptState *script);
int cmd_refreshSceneAnimator(ScriptState *script);
int cmd_placeItemInOffScene(ScriptState *script);
int cmd_wipeDownMouseItem(ScriptState *script);
int cmd_placeCharacterInOtherScene(ScriptState *script);
int cmd_getKey(ScriptState *script);
int cmd_specificItemInInventory(ScriptState *script);
int cmd_popMobileNPCIntoScene(ScriptState *script);
int cmd_mobileCharacterInScene(ScriptState *script);
int cmd_hideMobileCharacter(ScriptState *script);
int cmd_unhideMobileCharacter(ScriptState *script);
int cmd_setCharactersLocation(ScriptState *script);
int cmd_walkCharacterToPoint(ScriptState *script);
int cmd_specialEventDisplayBrynnsNote(ScriptState *script);
int cmd_specialEventRemoveBrynnsNote(ScriptState *script);
int cmd_setLogicPage(ScriptState *script);
int cmd_fatPrint(ScriptState *script);
int cmd_preserveAllObjectBackgrounds(ScriptState *script);
int cmd_updateSceneAnimations(ScriptState *script);
int cmd_sceneAnimationActive(ScriptState *script);
int cmd_setCharactersMovementDelay(ScriptState *script);
int cmd_getCharactersFacing(ScriptState *script);
int cmd_bkgdScrollSceneAndMasksRight(ScriptState *script);
int cmd_dispelMagicAnimation(ScriptState *script);
int cmd_findBrightestFireberry(ScriptState *script);
int cmd_setFireberryGlowPalette(ScriptState *script);
int cmd_setDeathHandlerFlag(ScriptState *script);
int cmd_drinkPotionAnimation(ScriptState *script);
int cmd_makeAmuletAppear(ScriptState *script);
int cmd_drawItemShapeIntoScene(ScriptState *script);
int cmd_setCharactersCurrentFrame(ScriptState *script);
int cmd_waitForConfirmationMouseClick(ScriptState *script);
int cmd_pageFlip(ScriptState *script);
int cmd_setSceneFile(ScriptState *script);
int cmd_getItemInMarbleVase(ScriptState *script);
int cmd_setItemInMarbleVase(ScriptState *script);
int cmd_addItemToInventory(ScriptState *script);
int cmd_intPrint(ScriptState *script);
int cmd_shakeScreen(ScriptState *script);
int cmd_createAmuletJewel(ScriptState *script);
int cmd_setSceneAnimCurrXY(ScriptState *script);
int cmd_poisonBrandonAndRemaps(ScriptState *script);
int cmd_fillFlaskWithWater(ScriptState *script);
int cmd_getCharactersMovementDelay(ScriptState *script);
int cmd_getBirthstoneGem(ScriptState *script);
int cmd_queryBrandonStatusBit(ScriptState *script);
int cmd_playFluteAnimation(ScriptState *script);
int cmd_playWinterScrollSequence(ScriptState *script);
int cmd_getIdolGem(ScriptState *script);
int cmd_setIdolGem(ScriptState *script);
int cmd_totalItemsInScene(ScriptState *script);
int cmd_restoreBrandonsMovementDelay(ScriptState *script);
int cmd_setMousePos(ScriptState *script);
int cmd_getMouseState(ScriptState *script);
int cmd_setEntranceMouseCursorTrack(ScriptState *script);
int cmd_itemAppearsOnGround(ScriptState *script);
int cmd_setNoDrawShapesFlag(ScriptState *script);
int cmd_fadeEntirePalette(ScriptState *script);
int cmd_itemOnGroundHere(ScriptState *script);
int cmd_queryCauldronState(ScriptState *script);
int cmd_setCauldronState(ScriptState *script);
int cmd_queryCrystalState(ScriptState *script);
int cmd_setCrystalState(ScriptState *script);
int cmd_setPaletteRange(ScriptState *script);
int cmd_shrinkBrandonDown(ScriptState *script);
int cmd_growBrandonUp(ScriptState *script);
int cmd_setBrandonScaleXAndY(ScriptState *script);
int cmd_resetScaleMode(ScriptState *script);
int cmd_getScaleDepthTableValue(ScriptState *script);
int cmd_setScaleDepthTableValue(ScriptState *script);
int cmd_message(ScriptState *script);
int cmd_checkClickOnNPC(ScriptState *script);
int cmd_getFoyerItem(ScriptState *script);
int cmd_setFoyerItem(ScriptState *script);
int cmd_setNoItemDropRegion(ScriptState *script);
int cmd_walkMalcolmOn(ScriptState *script);
int cmd_passiveProtection(ScriptState *script);
int cmd_setPlayingLoop(ScriptState *script);
int cmd_brandonToStoneSequence(ScriptState *script);
int cmd_brandonHealingSequence(ScriptState *script);
int cmd_protectCommandLine(ScriptState *script);
int cmd_pauseMusicSeconds(ScriptState *script);
int cmd_resetMaskRegion(ScriptState *script);
int cmd_setPaletteChangeFlag(ScriptState *script);
int cmd_fillRect(ScriptState *script);
int cmd_dummy(ScriptState *script);
int cmd_vocUnload(ScriptState *script);
int cmd_vocLoad(ScriptState *script);
virtual int runOpcode(ScriptState *script, uint8 opcode);
protected:
int c1_magicInMouseItem(ScriptState *script);
int c1_characterSays(ScriptState *script);
int c1_pauseTicks(ScriptState *script);
int c1_drawSceneAnimShape(ScriptState *script);
int c1_queryGameFlag(ScriptState *script);
int c1_setGameFlag(ScriptState *script);
int c1_resetGameFlag(ScriptState *script);
int c1_runNPCScript(ScriptState *script);
int c1_setSpecialExitList(ScriptState *script);
int c1_blockInWalkableRegion(ScriptState *script);
int c1_blockOutWalkableRegion(ScriptState *script);
int c1_walkPlayerToPoint(ScriptState *script);
int c1_dropItemInScene(ScriptState *script);
int c1_drawAnimShapeIntoScene(ScriptState *script);
int c1_createMouseItem(ScriptState *script);
int c1_savePageToDisk(ScriptState *script);
int c1_sceneAnimOn(ScriptState *script);
int c1_sceneAnimOff(ScriptState *script);
int c1_getElapsedSeconds(ScriptState *script);
int c1_mouseIsPointer(ScriptState *script);
int c1_destroyMouseItem(ScriptState *script);
int c1_runSceneAnimUntilDone(ScriptState *script);
int c1_fadeSpecialPalette(ScriptState *script);
int c1_playAdlibSound(ScriptState *script);
int c1_playAdlibScore(ScriptState *script);
int c1_phaseInSameScene(ScriptState *script);
int c1_setScenePhasingFlag(ScriptState *script);
int c1_resetScenePhasingFlag(ScriptState *script);
int c1_queryScenePhasingFlag(ScriptState *script);
int c1_sceneToDirection(ScriptState *script);
int c1_setBirthstoneGem(ScriptState *script);
int c1_placeItemInGenericMapScene(ScriptState *script);
int c1_setBrandonStatusBit(ScriptState *script);
int c1_pauseSeconds(ScriptState *script);
int c1_getCharactersLocation(ScriptState *script);
int c1_runNPCSubscript(ScriptState *script);
int c1_magicOutMouseItem(ScriptState *script);
int c1_internalAnimOn(ScriptState *script);
int c1_forceBrandonToNormal(ScriptState *script);
int c1_poisonDeathNow(ScriptState *script);
int c1_setScaleMode(ScriptState *script);
int c1_openWSAFile(ScriptState *script);
int c1_closeWSAFile(ScriptState *script);
int c1_runWSAFromBeginningToEnd(ScriptState *script);
int c1_displayWSAFrame(ScriptState *script);
int c1_enterNewScene(ScriptState *script);
int c1_setSpecialEnterXAndY(ScriptState *script);
int c1_runWSAFrames(ScriptState *script);
int c1_popBrandonIntoScene(ScriptState *script);
int c1_restoreAllObjectBackgrounds(ScriptState *script);
int c1_setCustomPaletteRange(ScriptState *script);
int c1_loadPageFromDisk(ScriptState *script);
int c1_customPrintTalkString(ScriptState *script);
int c1_restoreCustomPrintBackground(ScriptState *script);
int c1_hideMouse(ScriptState *script);
int c1_showMouse(ScriptState *script);
int c1_getCharacterX(ScriptState *script);
int c1_getCharacterY(ScriptState *script);
int c1_changeCharactersFacing(ScriptState *script);
int c1_copyWSARegion(ScriptState *script);
int c1_printText(ScriptState *script);
int c1_random(ScriptState *script);
int c1_loadSoundFile(ScriptState *script);
int c1_displayWSAFrameOnHidPage(ScriptState *script);
int c1_displayWSASequentialFrames(ScriptState *script);
int c1_drawCharacterStanding(ScriptState *script);
int c1_internalAnimOff(ScriptState *script);
int c1_changeCharactersXAndY(ScriptState *script);
int c1_clearSceneAnimatorBeacon(ScriptState *script);
int c1_querySceneAnimatorBeacon(ScriptState *script);
int c1_refreshSceneAnimator(ScriptState *script);
int c1_placeItemInOffScene(ScriptState *script);
int c1_wipeDownMouseItem(ScriptState *script);
int c1_placeCharacterInOtherScene(ScriptState *script);
int c1_getKey(ScriptState *script);
int c1_specificItemInInventory(ScriptState *script);
int c1_popMobileNPCIntoScene(ScriptState *script);
int c1_mobileCharacterInScene(ScriptState *script);
int c1_hideMobileCharacter(ScriptState *script);
int c1_unhideMobileCharacter(ScriptState *script);
int c1_setCharactersLocation(ScriptState *script);
int c1_walkCharacterToPoint(ScriptState *script);
int c1_specialEventDisplayBrynnsNote(ScriptState *script);
int c1_specialEventRemoveBrynnsNote(ScriptState *script);
int c1_setLogicPage(ScriptState *script);
int c1_fatPrint(ScriptState *script);
int c1_preserveAllObjectBackgrounds(ScriptState *script);
int c1_updateSceneAnimations(ScriptState *script);
int c1_sceneAnimationActive(ScriptState *script);
int c1_setCharactersMovementDelay(ScriptState *script);
int c1_getCharactersFacing(ScriptState *script);
int c1_bkgdScrollSceneAndMasksRight(ScriptState *script);
int c1_dispelMagicAnimation(ScriptState *script);
int c1_findBrightestFireberry(ScriptState *script);
int c1_setFireberryGlowPalette(ScriptState *script);
int c1_setDeathHandlerFlag(ScriptState *script);
int c1_drinkPotionAnimation(ScriptState *script);
int c1_makeAmuletAppear(ScriptState *script);
int c1_drawItemShapeIntoScene(ScriptState *script);
int c1_setCharactersCurrentFrame(ScriptState *script);
int c1_waitForConfirmationMouseClick(ScriptState *script);
int c1_pageFlip(ScriptState *script);
int c1_setSceneFile(ScriptState *script);
int c1_getItemInMarbleVase(ScriptState *script);
int c1_setItemInMarbleVase(ScriptState *script);
int c1_addItemToInventory(ScriptState *script);
int c1_intPrint(ScriptState *script);
int c1_shakeScreen(ScriptState *script);
int c1_createAmuletJewel(ScriptState *script);
int c1_setSceneAnimCurrXY(ScriptState *script);
int c1_poisonBrandonAndRemaps(ScriptState *script);
int c1_fillFlaskWithWater(ScriptState *script);
int c1_getCharactersMovementDelay(ScriptState *script);
int c1_getBirthstoneGem(ScriptState *script);
int c1_queryBrandonStatusBit(ScriptState *script);
int c1_playFluteAnimation(ScriptState *script);
int c1_playWinterScrollSequence(ScriptState *script);
int c1_getIdolGem(ScriptState *script);
int c1_setIdolGem(ScriptState *script);
int c1_totalItemsInScene(ScriptState *script);
int c1_restoreBrandonsMovementDelay(ScriptState *script);
int c1_setMousePos(ScriptState *script);
int c1_getMouseState(ScriptState *script);
int c1_setEntranceMouseCursorTrack(ScriptState *script);
int c1_itemAppearsOnGround(ScriptState *script);
int c1_setNoDrawShapesFlag(ScriptState *script);
int c1_fadeEntirePalette(ScriptState *script);
int c1_itemOnGroundHere(ScriptState *script);
int c1_queryCauldronState(ScriptState *script);
int c1_setCauldronState(ScriptState *script);
int c1_queryCrystalState(ScriptState *script);
int c1_setCrystalState(ScriptState *script);
int c1_setPaletteRange(ScriptState *script);
int c1_shrinkBrandonDown(ScriptState *script);
int c1_growBrandonUp(ScriptState *script);
int c1_setBrandonScaleXAndY(ScriptState *script);
int c1_resetScaleMode(ScriptState *script);
int c1_getScaleDepthTableValue(ScriptState *script);
int c1_setScaleDepthTableValue(ScriptState *script);
int c1_message(ScriptState *script);
int c1_checkClickOnNPC(ScriptState *script);
int c1_getFoyerItem(ScriptState *script);
int c1_setFoyerItem(ScriptState *script);
int c1_setNoItemDropRegion(ScriptState *script);
int c1_walkMalcolmOn(ScriptState *script);
int c1_passiveProtection(ScriptState *script);
int c1_setPlayingLoop(ScriptState *script);
int c1_brandonToStoneSequence(ScriptState *script);
int c1_brandonHealingSequence(ScriptState *script);
int c1_protectCommandLine(ScriptState *script);
int c1_pauseMusicSeconds(ScriptState *script);
int c1_resetMaskRegion(ScriptState *script);
int c1_setPaletteChangeFlag(ScriptState *script);
int c1_fillRect(ScriptState *script);
int c1_dummy(ScriptState *script);
int c1_vocUnload(ScriptState *script);
int c1_vocLoad(ScriptState *script);
protected:

View File

@ -30,7 +30,7 @@
#include "kyra/screen.h"
#include "kyra/resource.h"
#define CURRENT_VERSION 5
#define CURRENT_VERSION 6
namespace Kyra {
void KyraEngine::loadGame(const char *fileName) {
@ -145,8 +145,9 @@ void KyraEngine::loadGame(const char *fileName) {
}
_timerNextRun = 0;
memset(_flagsTable, 0, sizeof(_flagsTable));
uint32 flagsSize = in->readUint32BE();
assert(flagsSize == sizeof(_flagsTable));
assert(flagsSize <= sizeof(_flagsTable));
in->read(_flagsTable, flagsSize);
for (int i = 0; i < _roomTableSize; ++i) {

View File

@ -471,7 +471,7 @@ void KyraEngine::startSceneScript(int brandonAlive) {
strcpy(fileNameBuffer, _roomFilenameTable[tableId]);
strcat(fileNameBuffer, ".EMC");
_scriptInterpreter->unloadScript(_scriptClickData);
_scriptInterpreter->loadScript(fileNameBuffer, _scriptClickData, _opcodeTable, _opcodeTableSize, 0);
_scriptInterpreter->loadScript(fileNameBuffer, _scriptClickData, 0);
_scriptInterpreter->startScript(_scriptClick, 0);
_scriptClick->variables[0] = _currentCharacter->sceneId;
_scriptClick->variables[7] = brandonAlive;

View File

@ -71,7 +71,7 @@ ScriptHelper::ScriptHelper(KyraEngine *vm) : _vm(vm) {
ScriptHelper::~ScriptHelper() {
}
bool ScriptHelper::loadScript(const char *filename, ScriptData *scriptData, KyraEngine::OpcodeProc *opcodes, int opcodeSize, byte *specialPtr) {
bool ScriptHelper::loadScript(const char *filename, ScriptData *scriptData, byte *specialPtr) {
uint32 size = 0;
uint8 *data = _vm->resource()->fileData(filename, &size);
byte *curData = data;
@ -149,8 +149,6 @@ bool ScriptHelper::loadScript(const char *filename, ScriptData *scriptData, Kyra
return false;
}
scriptData->dataSize = chunkSize / 2;
scriptData->opcodes = opcodes;
scriptData->opcodeSize = opcodeSize;
delete [] data;
return true;
@ -389,12 +387,7 @@ void ScriptHelper::c1_subSP(ScriptState* script) {
}
void ScriptHelper::c1_execOpcode(ScriptState* script) {
assert((uint8)_parameter < script->dataPtr->opcodeSize);
if (script->dataPtr->opcodes[(uint8)_parameter] == &KyraEngine::cmd_dummy)
warning("calling unimplemented opcode(0x%.02X)", (uint8)_parameter);
int val = (_vm->*script->dataPtr->opcodes[(uint8)_parameter])(script);
assert(script);
script->retValue = val;
script->retValue = _vm->runOpcode(script, (uint8)_parameter);
}
void ScriptHelper::c1_ifNotJmp(ScriptState* script) {

View File

@ -31,9 +31,9 @@ struct ScriptData {
byte *data;
byte *ordr;
uint16 dataSize;
KyraEngine::OpcodeProc *opcodes;
int opcodeSize;
uint16 mustBeFreed;
int opcodeTable; // indicates which opcode table to use (for Kyra3)
};
struct ScriptState {
@ -51,7 +51,7 @@ public:
ScriptHelper(KyraEngine *vm);
virtual ~ScriptHelper();
bool loadScript(const char *filename, ScriptData *data, KyraEngine::OpcodeProc *opcodes, int opcodeSize, byte *specialPtr = 0);
bool loadScript(const char *filename, ScriptData *data, byte *specialPtr = 0);
void unloadScript(ScriptData *data);
void initScript(ScriptState *scriptState, ScriptData *data);

File diff suppressed because it is too large Load Diff

View File

@ -815,201 +815,201 @@ const int Screen::_screenDimTableCountK3 = ARRAYSIZE(_screenDimTableK3);
void KyraEngine::setupOpcodeTable() {
static OpcodeProc opcodeTable[] = {
// 0x00
Opcode(cmd_magicInMouseItem),
Opcode(cmd_characterSays),
Opcode(cmd_pauseTicks),
Opcode(cmd_drawSceneAnimShape),
Opcode(c1_magicInMouseItem),
Opcode(c1_characterSays),
Opcode(c1_pauseTicks),
Opcode(c1_drawSceneAnimShape),
// 0x04
Opcode(cmd_queryGameFlag),
Opcode(cmd_setGameFlag),
Opcode(cmd_resetGameFlag),
Opcode(cmd_runNPCScript),
Opcode(c1_queryGameFlag),
Opcode(c1_setGameFlag),
Opcode(c1_resetGameFlag),
Opcode(c1_runNPCScript),
// 0x08
Opcode(cmd_setSpecialExitList),
Opcode(cmd_blockInWalkableRegion),
Opcode(cmd_blockOutWalkableRegion),
Opcode(cmd_walkPlayerToPoint),
Opcode(c1_setSpecialExitList),
Opcode(c1_blockInWalkableRegion),
Opcode(c1_blockOutWalkableRegion),
Opcode(c1_walkPlayerToPoint),
// 0x0c
Opcode(cmd_dropItemInScene),
Opcode(cmd_drawAnimShapeIntoScene),
Opcode(cmd_createMouseItem),
Opcode(cmd_savePageToDisk),
Opcode(c1_dropItemInScene),
Opcode(c1_drawAnimShapeIntoScene),
Opcode(c1_createMouseItem),
Opcode(c1_savePageToDisk),
// 0x10
Opcode(cmd_sceneAnimOn),
Opcode(cmd_sceneAnimOff),
Opcode(cmd_getElapsedSeconds),
Opcode(cmd_mouseIsPointer),
Opcode(c1_sceneAnimOn),
Opcode(c1_sceneAnimOff),
Opcode(c1_getElapsedSeconds),
Opcode(c1_mouseIsPointer),
// 0x14
Opcode(cmd_destroyMouseItem),
Opcode(cmd_runSceneAnimUntilDone),
Opcode(cmd_fadeSpecialPalette),
Opcode(cmd_playAdlibSound),
Opcode(c1_destroyMouseItem),
Opcode(c1_runSceneAnimUntilDone),
Opcode(c1_fadeSpecialPalette),
Opcode(c1_playAdlibSound),
// 0x18
Opcode(cmd_playAdlibScore),
Opcode(cmd_phaseInSameScene),
Opcode(cmd_setScenePhasingFlag),
Opcode(cmd_resetScenePhasingFlag),
Opcode(c1_playAdlibScore),
Opcode(c1_phaseInSameScene),
Opcode(c1_setScenePhasingFlag),
Opcode(c1_resetScenePhasingFlag),
// 0x1c
Opcode(cmd_queryScenePhasingFlag),
Opcode(cmd_sceneToDirection),
Opcode(cmd_setBirthstoneGem),
Opcode(cmd_placeItemInGenericMapScene),
Opcode(c1_queryScenePhasingFlag),
Opcode(c1_sceneToDirection),
Opcode(c1_setBirthstoneGem),
Opcode(c1_placeItemInGenericMapScene),
// 0x20
Opcode(cmd_setBrandonStatusBit),
Opcode(cmd_pauseSeconds),
Opcode(cmd_getCharactersLocation),
Opcode(cmd_runNPCSubscript),
Opcode(c1_setBrandonStatusBit),
Opcode(c1_pauseSeconds),
Opcode(c1_getCharactersLocation),
Opcode(c1_runNPCSubscript),
// 0x24
Opcode(cmd_magicOutMouseItem),
Opcode(cmd_internalAnimOn),
Opcode(cmd_forceBrandonToNormal),
Opcode(cmd_poisonDeathNow),
Opcode(c1_magicOutMouseItem),
Opcode(c1_internalAnimOn),
Opcode(c1_forceBrandonToNormal),
Opcode(c1_poisonDeathNow),
// 0x28
Opcode(cmd_setScaleMode),
Opcode(cmd_openWSAFile),
Opcode(cmd_closeWSAFile),
Opcode(cmd_runWSAFromBeginningToEnd),
Opcode(c1_setScaleMode),
Opcode(c1_openWSAFile),
Opcode(c1_closeWSAFile),
Opcode(c1_runWSAFromBeginningToEnd),
// 0x2c
Opcode(cmd_displayWSAFrame),
Opcode(cmd_enterNewScene),
Opcode(cmd_setSpecialEnterXAndY),
Opcode(cmd_runWSAFrames),
Opcode(c1_displayWSAFrame),
Opcode(c1_enterNewScene),
Opcode(c1_setSpecialEnterXAndY),
Opcode(c1_runWSAFrames),
// 0x30
Opcode(cmd_popBrandonIntoScene),
Opcode(cmd_restoreAllObjectBackgrounds),
Opcode(cmd_setCustomPaletteRange),
Opcode(cmd_loadPageFromDisk),
Opcode(c1_popBrandonIntoScene),
Opcode(c1_restoreAllObjectBackgrounds),
Opcode(c1_setCustomPaletteRange),
Opcode(c1_loadPageFromDisk),
// 0x34
Opcode(cmd_customPrintTalkString),
Opcode(cmd_restoreCustomPrintBackground),
Opcode(cmd_hideMouse),
Opcode(cmd_showMouse),
Opcode(c1_customPrintTalkString),
Opcode(c1_restoreCustomPrintBackground),
Opcode(c1_hideMouse),
Opcode(c1_showMouse),
// 0x38
Opcode(cmd_getCharacterX),
Opcode(cmd_getCharacterY),
Opcode(cmd_changeCharactersFacing),
Opcode(cmd_copyWSARegion),
Opcode(c1_getCharacterX),
Opcode(c1_getCharacterY),
Opcode(c1_changeCharactersFacing),
Opcode(c1_copyWSARegion),
// 0x3c
Opcode(cmd_printText),
Opcode(cmd_random),
Opcode(cmd_loadSoundFile),
Opcode(cmd_displayWSAFrameOnHidPage),
Opcode(c1_printText),
Opcode(c1_random),
Opcode(c1_loadSoundFile),
Opcode(c1_displayWSAFrameOnHidPage),
// 0x40
Opcode(cmd_displayWSASequentialFrames),
Opcode(cmd_drawCharacterStanding),
Opcode(cmd_internalAnimOff),
Opcode(cmd_changeCharactersXAndY),
Opcode(c1_displayWSASequentialFrames),
Opcode(c1_drawCharacterStanding),
Opcode(c1_internalAnimOff),
Opcode(c1_changeCharactersXAndY),
// 0x44
Opcode(cmd_clearSceneAnimatorBeacon),
Opcode(cmd_querySceneAnimatorBeacon),
Opcode(cmd_refreshSceneAnimator),
Opcode(cmd_placeItemInOffScene),
Opcode(c1_clearSceneAnimatorBeacon),
Opcode(c1_querySceneAnimatorBeacon),
Opcode(c1_refreshSceneAnimator),
Opcode(c1_placeItemInOffScene),
// 0x48
Opcode(cmd_wipeDownMouseItem),
Opcode(cmd_placeCharacterInOtherScene),
Opcode(cmd_getKey),
Opcode(cmd_specificItemInInventory),
Opcode(c1_wipeDownMouseItem),
Opcode(c1_placeCharacterInOtherScene),
Opcode(c1_getKey),
Opcode(c1_specificItemInInventory),
// 0x4c
Opcode(cmd_popMobileNPCIntoScene),
Opcode(cmd_mobileCharacterInScene),
Opcode(cmd_hideMobileCharacter),
Opcode(cmd_unhideMobileCharacter),
Opcode(c1_popMobileNPCIntoScene),
Opcode(c1_mobileCharacterInScene),
Opcode(c1_hideMobileCharacter),
Opcode(c1_unhideMobileCharacter),
// 0x50
Opcode(cmd_setCharactersLocation),
Opcode(cmd_walkCharacterToPoint),
Opcode(cmd_specialEventDisplayBrynnsNote),
Opcode(cmd_specialEventRemoveBrynnsNote),
Opcode(c1_setCharactersLocation),
Opcode(c1_walkCharacterToPoint),
Opcode(c1_specialEventDisplayBrynnsNote),
Opcode(c1_specialEventRemoveBrynnsNote),
// 0x54
Opcode(cmd_setLogicPage),
Opcode(cmd_fatPrint),
Opcode(cmd_preserveAllObjectBackgrounds),
Opcode(cmd_updateSceneAnimations),
Opcode(c1_setLogicPage),
Opcode(c1_fatPrint),
Opcode(c1_preserveAllObjectBackgrounds),
Opcode(c1_updateSceneAnimations),
// 0x58
Opcode(cmd_sceneAnimationActive),
Opcode(cmd_setCharactersMovementDelay),
Opcode(cmd_getCharactersFacing),
Opcode(cmd_bkgdScrollSceneAndMasksRight),
Opcode(c1_sceneAnimationActive),
Opcode(c1_setCharactersMovementDelay),
Opcode(c1_getCharactersFacing),
Opcode(c1_bkgdScrollSceneAndMasksRight),
// 0x5c
Opcode(cmd_dispelMagicAnimation),
Opcode(cmd_findBrightestFireberry),
Opcode(cmd_setFireberryGlowPalette),
Opcode(cmd_setDeathHandlerFlag),
Opcode(c1_dispelMagicAnimation),
Opcode(c1_findBrightestFireberry),
Opcode(c1_setFireberryGlowPalette),
Opcode(c1_setDeathHandlerFlag),
// 0x60
Opcode(cmd_drinkPotionAnimation),
Opcode(cmd_makeAmuletAppear),
Opcode(cmd_drawItemShapeIntoScene),
Opcode(cmd_setCharactersCurrentFrame),
Opcode(c1_drinkPotionAnimation),
Opcode(c1_makeAmuletAppear),
Opcode(c1_drawItemShapeIntoScene),
Opcode(c1_setCharactersCurrentFrame),
// 0x64
Opcode(cmd_waitForConfirmationMouseClick),
Opcode(cmd_pageFlip),
Opcode(cmd_setSceneFile),
Opcode(cmd_getItemInMarbleVase),
Opcode(c1_waitForConfirmationMouseClick),
Opcode(c1_pageFlip),
Opcode(c1_setSceneFile),
Opcode(c1_getItemInMarbleVase),
// 0x68
Opcode(cmd_setItemInMarbleVase),
Opcode(cmd_addItemToInventory),
Opcode(cmd_intPrint),
Opcode(cmd_shakeScreen),
Opcode(c1_setItemInMarbleVase),
Opcode(c1_addItemToInventory),
Opcode(c1_intPrint),
Opcode(c1_shakeScreen),
// 0x6c
Opcode(cmd_createAmuletJewel),
Opcode(cmd_setSceneAnimCurrXY),
Opcode(cmd_poisonBrandonAndRemaps),
Opcode(cmd_fillFlaskWithWater),
Opcode(c1_createAmuletJewel),
Opcode(c1_setSceneAnimCurrXY),
Opcode(c1_poisonBrandonAndRemaps),
Opcode(c1_fillFlaskWithWater),
// 0x70
Opcode(cmd_getCharactersMovementDelay),
Opcode(cmd_getBirthstoneGem),
Opcode(cmd_queryBrandonStatusBit),
Opcode(cmd_playFluteAnimation),
Opcode(c1_getCharactersMovementDelay),
Opcode(c1_getBirthstoneGem),
Opcode(c1_queryBrandonStatusBit),
Opcode(c1_playFluteAnimation),
// 0x74
Opcode(cmd_playWinterScrollSequence),
Opcode(cmd_getIdolGem),
Opcode(cmd_setIdolGem),
Opcode(cmd_totalItemsInScene),
Opcode(c1_playWinterScrollSequence),
Opcode(c1_getIdolGem),
Opcode(c1_setIdolGem),
Opcode(c1_totalItemsInScene),
// 0x78
Opcode(cmd_restoreBrandonsMovementDelay),
Opcode(cmd_setMousePos),
Opcode(cmd_getMouseState),
Opcode(cmd_setEntranceMouseCursorTrack),
Opcode(c1_restoreBrandonsMovementDelay),
Opcode(c1_setMousePos),
Opcode(c1_getMouseState),
Opcode(c1_setEntranceMouseCursorTrack),
// 0x7c
Opcode(cmd_itemAppearsOnGround),
Opcode(cmd_setNoDrawShapesFlag),
Opcode(cmd_fadeEntirePalette),
Opcode(cmd_itemOnGroundHere),
Opcode(c1_itemAppearsOnGround),
Opcode(c1_setNoDrawShapesFlag),
Opcode(c1_fadeEntirePalette),
Opcode(c1_itemOnGroundHere),
// 0x80
Opcode(cmd_queryCauldronState),
Opcode(cmd_setCauldronState),
Opcode(cmd_queryCrystalState),
Opcode(cmd_setCrystalState),
Opcode(c1_queryCauldronState),
Opcode(c1_setCauldronState),
Opcode(c1_queryCrystalState),
Opcode(c1_setCrystalState),
// 0x84
Opcode(cmd_setPaletteRange),
Opcode(cmd_shrinkBrandonDown),
Opcode(cmd_growBrandonUp),
Opcode(cmd_setBrandonScaleXAndY),
Opcode(c1_setPaletteRange),
Opcode(c1_shrinkBrandonDown),
Opcode(c1_growBrandonUp),
Opcode(c1_setBrandonScaleXAndY),
// 0x88
Opcode(cmd_resetScaleMode),
Opcode(cmd_getScaleDepthTableValue),
Opcode(cmd_setScaleDepthTableValue),
Opcode(cmd_message),
Opcode(c1_resetScaleMode),
Opcode(c1_getScaleDepthTableValue),
Opcode(c1_setScaleDepthTableValue),
Opcode(c1_message),
// 0x8c
Opcode(cmd_checkClickOnNPC),
Opcode(cmd_getFoyerItem),
Opcode(cmd_setFoyerItem),
Opcode(cmd_setNoItemDropRegion),
Opcode(c1_checkClickOnNPC),
Opcode(c1_getFoyerItem),
Opcode(c1_setFoyerItem),
Opcode(c1_setNoItemDropRegion),
// 0x90
Opcode(cmd_walkMalcolmOn),
Opcode(cmd_passiveProtection),
Opcode(cmd_setPlayingLoop),
Opcode(cmd_brandonToStoneSequence),
Opcode(c1_walkMalcolmOn),
Opcode(c1_passiveProtection),
Opcode(c1_setPlayingLoop),
Opcode(c1_brandonToStoneSequence),
// 0x94
Opcode(cmd_brandonHealingSequence),
Opcode(cmd_protectCommandLine),
Opcode(cmd_pauseMusicSeconds),
Opcode(cmd_resetMaskRegion),
Opcode(c1_brandonHealingSequence),
Opcode(c1_protectCommandLine),
Opcode(c1_pauseMusicSeconds),
Opcode(c1_resetMaskRegion),
// 0x98
Opcode(cmd_setPaletteChangeFlag),
Opcode(cmd_fillRect),
Opcode(cmd_vocUnload),
Opcode(cmd_vocLoad),
Opcode(cmd_dummy)
Opcode(c1_setPaletteChangeFlag),
Opcode(c1_fillRect),
Opcode(c1_vocUnload),
Opcode(c1_vocLoad),
Opcode(c1_dummy)
};
_opcodeTable = opcodeTable;