aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMartin Kiewitz2015-04-27 18:21:41 +0200
committerMartin Kiewitz2015-04-27 18:21:41 +0200
commit139bdec3ba3811e1dec00527caaba0d5c3fedcaa (patch)
tree1122a464592576e964330b249c25fd533273ea99 /engines
parent031b9b8ced1007545099e0e6285ea4bbe1d3e97f (diff)
downloadscummvm-rg350-139bdec3ba3811e1dec00527caaba0d5c3fedcaa.tar.gz
scummvm-rg350-139bdec3ba3811e1dec00527caaba0d5c3fedcaa.tar.bz2
scummvm-rg350-139bdec3ba3811e1dec00527caaba0d5c3fedcaa.zip
SCI: immediate restore now uses delayed restore
instead of the old hackish method
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/sci.cpp16
1 files changed, 2 insertions, 14 deletions
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index d07ab435ff..668ad053cc 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -282,25 +282,13 @@ Common::Error SciEngine::run() {
// Check whether loading a savestate was requested
int directSaveSlotLoading = ConfMan.getInt("save_slot");
if (directSaveSlotLoading >= 0) {
- // call GameObject::play (like normally)
- initStackBaseWithSelector(SELECTOR(play));
- // We set this, so that the game automatically quit right after init
- _gamestate->variables[VAR_GLOBAL][4] = TRUE_REG;
+ _gamestate->_delayedRestoreGame = true;
+ _gamestate->_delayedRestoreGameId = directSaveSlotLoading;
// Jones only initializes its menus when restarting/restoring, thus set
// the gameIsRestarting flag here before initializing. Fixes bug #6536.
if (g_sci->getGameId() == GID_JONES)
_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,