SCI: immediate restore now uses delayed restore
instead of the old hackish method
This commit is contained in:
parent
031b9b8ced
commit
139bdec3ba
1 changed files with 2 additions and 14 deletions
|
@ -282,25 +282,13 @@ Common::Error SciEngine::run() {
|
||||||
// Check whether loading a savestate was requested
|
// Check whether loading a savestate was requested
|
||||||
int directSaveSlotLoading = ConfMan.getInt("save_slot");
|
int directSaveSlotLoading = ConfMan.getInt("save_slot");
|
||||||
if (directSaveSlotLoading >= 0) {
|
if (directSaveSlotLoading >= 0) {
|
||||||
// call GameObject::play (like normally)
|
_gamestate->_delayedRestoreGame = true;
|
||||||
initStackBaseWithSelector(SELECTOR(play));
|
_gamestate->_delayedRestoreGameId = directSaveSlotLoading;
|
||||||
// We set this, so that the game automatically quit right after init
|
|
||||||
_gamestate->variables[VAR_GLOBAL][4] = TRUE_REG;
|
|
||||||
|
|
||||||
// Jones only initializes its menus when restarting/restoring, thus set
|
// Jones only initializes its menus when restarting/restoring, thus set
|
||||||
// the gameIsRestarting flag here before initializing. Fixes bug #6536.
|
// the gameIsRestarting flag here before initializing. Fixes bug #6536.
|
||||||
if (g_sci->getGameId() == GID_JONES)
|
if (g_sci->getGameId() == GID_JONES)
|
||||||
_gamestate->gameIsRestarting = GAMEISRESTARTING_RESTORE;
|
_gamestate->gameIsRestarting = GAMEISRESTARTING_RESTORE;
|
||||||
|
|
||||||
_gamestate->_executionStackPosChanged = false;
|
|
||||||
run_vm(_gamestate);
|
|
||||||
|
|
||||||
// As soon as we get control again, actually restore the game
|
|
||||||
reg_t restoreArgv[2] = { NULL_REG, make_reg(0, directSaveSlotLoading) }; // special call (argv[0] is NULL)
|
|
||||||
kRestoreGame(_gamestate, 2, restoreArgv);
|
|
||||||
|
|
||||||
// this indirectly calls GameObject::init, which will setup menu, text font/color codes etc.
|
|
||||||
// without this games would be pretty badly broken
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show any special warnings for buggy scripts with severe game bugs,
|
// Show any special warnings for buggy scripts with severe game bugs,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue