mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-10 03:40:25 +00:00
ILLUSIONS: DUCKMAN: Implement opcode 85 and 86, actual save/load not implemented yet
This commit is contained in:
parent
bbbb0053e0
commit
9a84c0a62e
@ -1107,4 +1107,34 @@ uint32 IllusionsEngine_Duckman::runTriggerCause(uint32 verbId, uint32 objectId2,
|
||||
return tempThreadId;
|
||||
}
|
||||
|
||||
bool IllusionsEngine_Duckman::loadSavegame(int16 slotNum, uint32 callingThreadId) {
|
||||
#if 0
|
||||
// TODO
|
||||
bool success = _gameStates->load(slotNum);
|
||||
if (success) {
|
||||
_vm->_screen->setDisplayOn(false);
|
||||
uint32 currSceneId = getCurrentScene();
|
||||
if (currSceneId != 0x10003)
|
||||
dumpCurrSceneFiles(currSceneId, callerThreadId);
|
||||
reset();
|
||||
stopMidi();
|
||||
clearMidiPlayList();
|
||||
_gameStates->readStates();
|
||||
pushActiveScene(0x10000);
|
||||
}
|
||||
_gameStates->freeGameStateReadBuffer();
|
||||
return success;
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
bool IllusionsEngine_Duckman::saveSavegame(int16 slotNum, uint32 callingThreadId) {
|
||||
#if 0
|
||||
// TODO
|
||||
bool success = _gameStates->save(slotNum);
|
||||
return success;
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
} // End of namespace Illusions
|
||||
|
@ -185,6 +185,9 @@ public:
|
||||
void playSoundEffect(int index);
|
||||
bool getTriggerCause(uint32 verbId, uint32 objectId2, uint32 objectId, uint32 &outThreadId);
|
||||
uint32 runTriggerCause(uint32 verbId, uint32 objectId2, uint32 objectId);
|
||||
|
||||
bool loadSavegame(int16 slotNum, uint32 callingThreadId);
|
||||
bool saveSavegame(int16 slotNum, uint32 callingThreadId);
|
||||
|
||||
};
|
||||
|
||||
|
@ -130,8 +130,8 @@ void ScriptOpcodes_Duckman::initOpcodes() {
|
||||
OPCODE(82, opSwitchMenuChoice);
|
||||
OPCODE(83, opQuitGame);
|
||||
OPCODE(84, opResetGame);
|
||||
// TODO OPCODE(85, );
|
||||
// TODO OPCODE(86, );
|
||||
OPCODE(85, opLoadGame);
|
||||
OPCODE(86, opSaveGame);
|
||||
OPCODE(87, opDeactivateButton);
|
||||
OPCODE(88, opActivateButton);
|
||||
// 89-95 unused
|
||||
@ -711,6 +711,22 @@ void ScriptOpcodes_Duckman::opResetGame(ScriptThread *scriptThread, OpCall &opCa
|
||||
// TODO _vm->_gameStates->clear();
|
||||
}
|
||||
|
||||
void ScriptOpcodes_Duckman::opLoadGame(ScriptThread *scriptThread, OpCall &opCall) {
|
||||
ARG_SKIP(2);
|
||||
ARG_INT16(bankNum)
|
||||
ARG_INT16(slotNum)
|
||||
bool success = _vm->loadSavegame(slotNum, opCall._callerThreadId);
|
||||
_vm->_stack->push(success ? 1 : 0);
|
||||
}
|
||||
|
||||
void ScriptOpcodes_Duckman::opSaveGame(ScriptThread *scriptThread, OpCall &opCall) {
|
||||
ARG_SKIP(2);
|
||||
ARG_INT16(bankNum)
|
||||
ARG_INT16(slotNum)
|
||||
bool success = _vm->saveSavegame(slotNum, opCall._callerThreadId);
|
||||
_vm->_stack->push(success ? 1 : 0);
|
||||
}
|
||||
|
||||
void ScriptOpcodes_Duckman::opDeactivateButton(ScriptThread *scriptThread, OpCall &opCall) {
|
||||
ARG_INT16(button)
|
||||
_vm->_input->deactivateButton(button);
|
||||
|
@ -105,6 +105,8 @@ protected:
|
||||
void opSwitchMenuChoice(ScriptThread *scriptThread, OpCall &opCall);
|
||||
void opQuitGame(ScriptThread *scriptThread, OpCall &opCall);
|
||||
void opResetGame(ScriptThread *scriptThread, OpCall &opCall);
|
||||
void opLoadGame(ScriptThread *scriptThread, OpCall &opCall);
|
||||
void opSaveGame(ScriptThread *scriptThread, OpCall &opCall);
|
||||
void opDeactivateButton(ScriptThread *scriptThread, OpCall &opCall);
|
||||
void opActivateButton(ScriptThread *scriptThread, OpCall &opCall);
|
||||
void opIncBlockCounter(ScriptThread *scriptThread, OpCall &opCall);
|
||||
|
Loading…
Reference in New Issue
Block a user