diff options
author | Martin Kiewitz | 2015-04-27 18:21:41 +0200 |
---|---|---|
committer | Martin Kiewitz | 2015-04-27 18:21:41 +0200 |
commit | 139bdec3ba3811e1dec00527caaba0d5c3fedcaa (patch) | |
tree | 1122a464592576e964330b249c25fd533273ea99 /engines | |
parent | 031b9b8ced1007545099e0e6285ea4bbe1d3e97f (diff) | |
download | scummvm-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.cpp | 16 |
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, |