Moved more opcodes to KyraEngine_v2.

svn-id: r31845
This commit is contained in:
Johannes Schickel 2008-05-03 20:02:51 +00:00
parent f6239f1db6
commit 7e3ce73a58
6 changed files with 110 additions and 213 deletions

View File

@ -740,7 +740,6 @@ protected:
int o2_getTimerDelay(EMCState *script);
//int o2_playSoundEffect(EMCState *script);
int o2_delaySecs(EMCState *script);
int o2_delay(EMCState *script);
int o2_setTimerDelay(EMCState *script);
int o2_setScaleTableItem(EMCState *script);
int o2_setDrawLayerTableItem(EMCState *script);
@ -758,7 +757,6 @@ protected:
int o2_enableSceneAnim(EMCState *script);
int o2_restoreInventoryGfx(EMCState *script);
int o2_setSceneAnimPos2(EMCState *script);
int o2_update(EMCState *script);
int o2_fadeScenePal(EMCState *script);
int o2_enterNewSceneEx(EMCState *script);
int o2_switchScene(EMCState *script);
@ -775,14 +773,11 @@ protected:
int o2_blockOutRegion(EMCState *script);
int o2_setCauldronState(EMCState *script);
int o2_showItemString(EMCState *script);
int o2_getRand(EMCState *script);
int o2_isAnySoundPlaying(EMCState *script);
int o2_setDeathHandlerFlag(EMCState *script);
int o2_setDrawNoShapeFlag(EMCState *script);
int o2_setRunFlag(EMCState *script);
int o2_showLetter(EMCState *script);
int o2_fillRect(EMCState *script);
int o2_waitForConfirmationClick(EMCState *script);
int o2_encodeShape(EMCState *script);
int o2_defineSceneAnim(EMCState *script);
int o2_updateSceneAnim(EMCState *script);
@ -792,7 +787,6 @@ protected:
int o2_zanthRandomChat(EMCState *script);
int o2_setupDialogue(EMCState *script);
int o2_getDlgIndex(EMCState *script);
int o2_defineRoom(EMCState *script);
int o2_addCauldronStateTableEntry(EMCState *script);
int o2_setCountDown(EMCState *script);
int o2_getCountDown(EMCState *script);

View File

@ -528,7 +528,6 @@ private:
int o3_badConscienceChat(EMCState *script);
int o3_wipeDownMouseItem(EMCState *script);
int o3_setMalcolmsMood(EMCState *script);
int o3_delay(EMCState *script);
int o3_updateScore(EMCState *script);
int o3_makeSecondChanceSave(EMCState *script);
int o3_setSceneFilename(EMCState *script);
@ -539,7 +538,6 @@ private:
int o3_checkInRect(EMCState *script);
int o3_updateConversations(EMCState *script);
int o3_setSceneDim(EMCState *script);
int o3_update(EMCState *script);
int o3_setSceneAnimPosAndFrame(EMCState *script);
int o3_removeItemInstances(EMCState *script);
int o3_disableInventory(EMCState *script);
@ -554,12 +552,9 @@ private:
int o3_getScore(EMCState *script);
int o3_blockOutRegion(EMCState *script);
int o3_showSceneStringsMessage(EMCState *script);
int o3_getRand(EMCState *script);
int o3_setDeathHandler(EMCState *script);
int o3_showGoodConscience(EMCState *script);
int o3_goodConscienceChat(EMCState *script);
int o3_hideGoodConscience(EMCState *script);
int o3_waitForConfirmationClick(EMCState *script);
int o3_defineSceneAnim(EMCState *script);
int o3_updateSceneAnim(EMCState *script);
int o3_runActorScript(EMCState *script);
@ -567,7 +562,6 @@ private:
int o3_malcolmRandomChat(EMCState *script);
int o3_setDlgIndex(EMCState *script);
int o3_getDlgIndex(EMCState *script);
int o3_defineScene(EMCState *script);
int o3_setConversationState(EMCState *script);
int o3_getConversationState(EMCState *script);
int o3_changeChapter(EMCState *script);

View File

@ -369,9 +369,15 @@ protected:
int o2_addSpecialExit(EMCState *script);
int o2_setMousePos(EMCState *script);
int o2_showMouse(EMCState *script);
int o2_delay(EMCState *script);
int o2_update(EMCState *script);
int o2_getRand(EMCState *script);
int o2_setDeathHandler(EMCState *script);
int o2_waitForConfirmationClick(EMCState *script);
int o2_defineRoomEntrance(EMCState *script);
int o2_runAnimationScript(EMCState *script);
int o2_setSpecialSceneScriptRunTime(EMCState *script);
int o2_defineScene(EMCState *script);
int o2_setSpecialSceneScriptState(EMCState *script);
int o2_clearSpecialSceneScriptState(EMCState *script);
int o2_querySpecialSceneScriptState(EMCState *script);

View File

@ -519,29 +519,6 @@ int KyraEngine_HoF::o2_delaySecs(EMCState *script) {
return 0;
}
int KyraEngine_HoF::o2_delay(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_delay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
if (stackPos(1)) {
uint32 maxWaitTime = _system->getMillis() + stackPos(0) * _tickLength;
while (_system->getMillis() < maxWaitTime) {
int inputFlag = checkInput(0);
removeInputTop();
if (inputFlag == 198 || inputFlag == 199)
return 1;
if (_chatText)
updateWithText();
else
update();
_system->delayMillis(10);
}
} else {
delay(stackPos(0) * _tickLength, true);
}
return 0;
}
int KyraEngine_HoF::o2_setTimerDelay(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_setTimerDelay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
_timer->setDelay(stackPos(0), stackPos(1));
@ -687,20 +664,6 @@ int KyraEngine_HoF::o2_setSceneAnimPos2(EMCState *script) {
return 0;
}
int KyraEngine_HoF::o2_update(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_update(%p) (%d)", (const void *)script, stackPos(0));
int times = stackPos(0);
while (times--) {
if (_chatText)
updateWithText();
else
update();
}
return 0;
}
int KyraEngine_HoF::o2_fadeScenePal(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_fadeScenePal(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
fadeScenePal(stackPos(0), stackPos(1));
@ -851,23 +814,11 @@ int KyraEngine_HoF::o2_showItemString(EMCState *script) {
return 0;
}
int KyraEngine_HoF::o2_getRand(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_getRand(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
assert(stackPos(0) < stackPos(1));
return _rnd.getRandomNumberRng(stackPos(0), stackPos(1));
}
int KyraEngine_HoF::o2_isAnySoundPlaying(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_isAnySoundPlaying(%p) ()", (const void *)script);
return _sound->voiceIsPlaying();
}
int KyraEngine_HoF::o2_setDeathHandlerFlag(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_setDeathHandlerFlag(%p) (%d)", (const void *)script, stackPos(0));
_deathHandler = stackPos(0);
return 0;
}
int KyraEngine_HoF::o2_setDrawNoShapeFlag(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_setDrawNoShapeFlag(%p) (%d)", (const void *)script, stackPos(0));
_drawNoShapeFlag = (stackPos(0) != 0);
@ -949,30 +900,6 @@ int KyraEngine_HoF::o2_fillRect(EMCState *script) {
return 0;
}
int KyraEngine_HoF::o2_waitForConfirmationClick(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_waitForConfirmationClick(%p) (%d)", (const void *)script, stackPos(0));
resetSkipFlag();
uint32 maxWaitTime = _system->getMillis() + stackPos(0) * _tickLength;
while (_system->getMillis() < maxWaitTime) {
int inputFlag = checkInput(0);
removeInputTop();
if (inputFlag == 198 || inputFlag == 199) {
_sceneScriptState.regs[1] = _mouseX;
_sceneScriptState.regs[2] = _mouseY;
return 0;
}
update();
_system->delayMillis(10);
}
_sceneScriptState.regs[1] = _mouseX;
_sceneScriptState.regs[2] = _mouseY;
return 1;
}
int KyraEngine_HoF::o2_encodeShape(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_encodeShape(%p) (%d, %d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1),
stackPos(2), stackPos(3), stackPos(4));
@ -1090,28 +1017,6 @@ int KyraEngine_HoF::o2_getDlgIndex(EMCState *script) {
return _mainCharacter.dlgIndex;
}
int KyraEngine_HoF::o2_defineRoom(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_defineRoom(%p) (%d, '%s', %d, %d, %d, %d, %d, %d)", (const void *)script,
stackPos(0), stackPosString(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7));
SceneDesc *scene = &_sceneList[stackPos(0)];
strcpy(scene->filename1, stackPosString(1));
scene->exit1 = stackPos(2);
scene->exit2 = stackPos(3);
scene->exit3 = stackPos(4);
scene->exit4 = stackPos(5);
scene->flags = stackPos(6);
scene->sound = stackPos(7);
if (_mainCharacter.sceneId == stackPos(0)) {
_sceneExit1 = scene->exit1;
_sceneExit2 = scene->exit2;
_sceneExit3 = scene->exit3;
_sceneExit4 = scene->exit4;
}
return 0;
}
int KyraEngine_HoF::o2_addCauldronStateTableEntry(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_HoF::o2_addCauldronStateTableEntry(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
return addToCauldronStateTable(stackPos(0), stackPos(1)) ? 1 : 0;
@ -1773,7 +1678,7 @@ void KyraEngine_HoF::setupOpcodeTable() {
// 0x60
Opcode(o2_getRand);
Opcode(o2_isAnySoundPlaying);
Opcode(o2_setDeathHandlerFlag);
Opcode(o2_setDeathHandler);
Opcode(o2_setDrawNoShapeFlag);
// 0x64
Opcode(o2_setRunFlag);
@ -1802,7 +1707,7 @@ void KyraEngine_HoF::setupOpcodeTable() {
Opcode(o2_setupDialogue);
// 0x78
Opcode(o2_getDlgIndex);
Opcode(o2_defineRoom);
Opcode(o2_defineScene);
Opcode(o2_addCauldronStateTableEntry);
Opcode(o2_setCountDown);
// 0x7c

View File

@ -304,29 +304,6 @@ int KyraEngine_MR::o3_setMalcolmsMood(EMCState *script) {
return (_malcolmsMood = stackPos(0));
}
int KyraEngine_MR::o3_delay(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_delay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
if (stackPos(1)) {
uint32 maxWaitTime = _system->getMillis() + stackPos(0) * _tickLength;
while (_system->getMillis() < maxWaitTime) {
int inputFlag = checkInput(0);
removeInputTop();
if (inputFlag == 198 || inputFlag == 199)
return 1;
if (_chatText)
updateWithText();
else
update();
_system->delayMillis(10);
}
} else {
delay(stackPos(0) * _tickLength, true);
}
return 0;
}
int KyraEngine_MR::o3_updateScore(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_updateScore(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
return updateScore(stackPos(0), stackPos(1)) ? 1 : 0;
@ -671,17 +648,6 @@ int KyraEngine_MR::o3_setSceneAnimPosAndFrame(EMCState *script) {
return 0;
}
int KyraEngine_MR::o3_update(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_update(%p) (%d)", (const void *)script, stackPos(0));
for (int times = stackPos(0); times != 0; --times) {
if (_chatText)
updateWithText();
else
update();
}
return 0;
}
int KyraEngine_MR::o3_removeItemInstances(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_removeItemInstances(%p) (%d)", (const void *)script, stackPos(0));
const int16 item = stackPos(0);
@ -814,18 +780,6 @@ int KyraEngine_MR::o3_showSceneStringsMessage(EMCState *script) {
return 0;
}
int KyraEngine_MR::o3_getRand(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_getRand(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
assert(stackPos(0) < stackPos(1));
return _rnd.getRandomNumberRng(stackPos(0), stackPos(1));
}
int KyraEngine_MR::o3_setDeathHandler(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_setDeathHandler(%p) (%d)", (const void *)script, stackPos(0));
_deathHandler = stackPos(0);
return 0;
}
int KyraEngine_MR::o3_showGoodConscience(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_showGoodConscience(%p) ()", (const void *)script);
showGoodConscience();
@ -846,30 +800,6 @@ int KyraEngine_MR::o3_hideGoodConscience(EMCState *script) {
return 0;
}
int KyraEngine_MR::o3_waitForConfirmationClick(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o2_waitForConfirmationClick(%p) (%d)", (const void *)script, stackPos(0));
resetSkipFlag();
uint32 maxWaitTime = _system->getMillis() + stackPos(0) * _tickLength;
while (_system->getMillis() < maxWaitTime) {
int inputFlag = checkInput(0);
removeInputTop();
if (inputFlag == 198 || inputFlag == 199) {
_sceneScriptState.regs[1] = _mouseX;
_sceneScriptState.regs[2] = _mouseY;
return 0;
}
update();
_system->delayMillis(10);
}
_sceneScriptState.regs[1] = _mouseX;
_sceneScriptState.regs[2] = _mouseY;
return 1;
}
int KyraEngine_MR::o3_defineSceneAnim(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_defineSceneAnim(%p) (%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, '%s')",
(const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7),
@ -989,32 +919,6 @@ int KyraEngine_MR::o3_getDlgIndex(EMCState *script) {
return _mainCharacter.dlgIndex;
}
int KyraEngine_MR::o3_defineScene(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_defineScene(%p) (%d, '%s', %d, %d, %d, %d, %d, %d)",
(const void *)script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7));
const int scene = stackPos(0);
strcpy(_sceneList[scene].filename1, stackPosString(1));
_sceneList[scene].filename1[9] = 0;
strcpy(_sceneList[scene].filename2, stackPosString(1));
_sceneList[scene].filename2[9] = 0;
_sceneList[scene].exit1 = stackPos(2);
_sceneList[scene].exit2 = stackPos(3);
_sceneList[scene].exit3 = stackPos(4);
_sceneList[scene].exit4 = stackPos(5);
_sceneList[scene].flags = stackPos(6);
_sceneList[scene].sound = stackPos(7);
if (_mainCharacter.sceneId == scene) {
_sceneExit1 = _sceneList[scene].exit1;
_sceneExit2 = _sceneList[scene].exit2;
_sceneExit3 = _sceneList[scene].exit3;
_sceneExit4 = _sceneList[scene].exit4;
}
return 0;
}
int KyraEngine_MR::o3_setConversationState(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_setConversationState(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
int id = stackPos(0);
@ -1288,7 +1192,7 @@ void KyraEngine_MR::setupOpcodeTable() {
Opcode(o3_setMalcolmsMood);
Opcode(o3_playSoundEffect);
Opcode(o3_dummy);
Opcode(o3_delay);
Opcode(o2_delay);
// 0x38
Opcode(o3_updateScore);
Opcode(o3_makeSecondChanceSave);
@ -1313,7 +1217,7 @@ void KyraEngine_MR::setupOpcodeTable() {
Opcode(o3_dummy);
Opcode(o3_dummy);
Opcode(o3_setSceneAnimPosAndFrame);
Opcode(o3_update);
Opcode(o2_update);
// 0x4c
Opcode(o3_removeItemInstances);
Opcode(o3_dummy);
@ -1340,9 +1244,9 @@ void KyraEngine_MR::setupOpcodeTable() {
Opcode(o3_showSceneStringsMessage);
OpcodeUnImpl();
// 0x60
Opcode(o3_getRand);
Opcode(o2_getRand);
Opcode(o3_dummy);
Opcode(o3_setDeathHandler);
Opcode(o2_setDeathHandler);
Opcode(o3_showGoodConscience);
// 0x64
Opcode(o3_goodConscienceChat);
@ -1353,7 +1257,7 @@ void KyraEngine_MR::setupOpcodeTable() {
Opcode(o3_dummy);
Opcode(o3_dummy);
Opcode(o3_dummy);
Opcode(o3_waitForConfirmationClick);
Opcode(o2_waitForConfirmationClick);
// 0x6c
Opcode(o3_dummy);
Opcode(o2_defineRoomEntrance);
@ -1371,7 +1275,7 @@ void KyraEngine_MR::setupOpcodeTable() {
Opcode(o3_setDlgIndex);
// 0x78
Opcode(o3_getDlgIndex);
Opcode(o3_defineScene);
Opcode(o2_defineScene);
Opcode(o3_setConversationState);
OpcodeUnImpl();
// 0x7c
@ -1448,7 +1352,7 @@ void KyraEngine_MR::setupOpcodeTable() {
Opcode(o3_dummy);
// 0x0a
Opcode(o2a_setResetFrame);
Opcode(o3_getRand);
Opcode(o2_getRand);
Opcode(o3_getMalcolmShapes);
Opcode(o3_dummy);
@ -1456,7 +1360,7 @@ void KyraEngine_MR::setupOpcodeTable() {
// 0x00
Opcode(o3d_updateAnim);
Opcode(o3d_delay);
Opcode(o3_getRand);
Opcode(o2_getRand);
Opcode(o2_queryGameFlag);
// 0x04
Opcode(o3_dummy);

View File

@ -140,6 +140,76 @@ int KyraEngine_v2::o2_showMouse(EMCState *script) {
return 0;
}
int KyraEngine_v2::o2_delay(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_delay(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
if (stackPos(1)) {
uint32 maxWaitTime = _system->getMillis() + stackPos(0) * _tickLength;
while (_system->getMillis() < maxWaitTime) {
int inputFlag = checkInput(0);
removeInputTop();
if (inputFlag == 198 || inputFlag == 199)
return 1;
if (_chatText)
updateWithText();
else
update();
_system->delayMillis(10);
}
} else {
delay(stackPos(0) * _tickLength, true);
}
return 0;
}
int KyraEngine_v2::o2_update(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_update(%p) (%d)", (const void *)script, stackPos(0));
for (int times = stackPos(0); times != 0; --times) {
if (_chatText)
updateWithText();
else
update();
}
return 0;
}
int KyraEngine_v2::o2_getRand(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_getRand(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
assert(stackPos(0) < stackPos(1));
return _rnd.getRandomNumberRng(stackPos(0), stackPos(1));
}
int KyraEngine_v2::o2_setDeathHandler(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_setDeathHandler(%p) (%d)", (const void *)script, stackPos(0));
_deathHandler = stackPos(0);
return 0;
}
int KyraEngine_v2::o2_waitForConfirmationClick(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_waitForConfirmationClick(%p) (%d)", (const void *)script, stackPos(0));
resetSkipFlag();
uint32 maxWaitTime = _system->getMillis() + stackPos(0) * _tickLength;
while (_system->getMillis() < maxWaitTime) {
int inputFlag = checkInput(0);
removeInputTop();
if (inputFlag == 198 || inputFlag == 199) {
_sceneScriptState.regs[1] = _mouseX;
_sceneScriptState.regs[2] = _mouseY;
return 0;
}
update();
_system->delayMillis(10);
}
_sceneScriptState.regs[1] = _mouseX;
_sceneScriptState.regs[2] = _mouseY;
return 1;
}
int KyraEngine_v2::o2_defineRoomEntrance(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_defineRoomEntrance(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
switch (stackPos(0)) {
@ -184,6 +254,30 @@ int KyraEngine_v2::o2_setSpecialSceneScriptRunTime(EMCState *script) {
return 0;
}
int KyraEngine_v2::o2_defineScene(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_defineScene(%p) (%d, '%s', %d, %d, %d, %d, %d, %d)",
(const void *)script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7));
const int scene = stackPos(0);
strcpy(_sceneList[scene].filename1, stackPosString(1));
strcpy(_sceneList[scene].filename2, stackPosString(1));
_sceneList[scene].exit1 = stackPos(2);
_sceneList[scene].exit2 = stackPos(3);
_sceneList[scene].exit3 = stackPos(4);
_sceneList[scene].exit4 = stackPos(5);
_sceneList[scene].flags = stackPos(6);
_sceneList[scene].sound = stackPos(7);
if (_mainCharacter.sceneId == scene) {
_sceneExit1 = _sceneList[scene].exit1;
_sceneExit2 = _sceneList[scene].exit2;
_sceneExit3 = _sceneList[scene].exit3;
_sceneExit4 = _sceneList[scene].exit4;
}
return 0;
}
int KyraEngine_v2::o2_setSpecialSceneScriptState(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "KyraEngine_v2::o2_setSpecialSceneScriptState(%p) (%d)", (const void *)script, stackPos(0));
_specialSceneScriptState[stackPos(0)] = 1;