aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorColin Snover2017-02-04 17:30:01 -0600
committerColin Snover2017-04-22 13:01:36 -0500
commit2862e510684cc696e7160dc7dc940ffea8cca0f5 (patch)
tree4bee27401a0bdf2227e0023af0f420e5e389b8d2 /engines
parenta2c48eff4ca281158aa48e34ede29a53e0871807 (diff)
downloadscummvm-rg350-2862e510684cc696e7160dc7dc940ffea8cca0f5.tar.gz
scummvm-rg350-2862e510684cc696e7160dc7dc940ffea8cca0f5.tar.bz2
scummvm-rg350-2862e510684cc696e7160dc7dc940ffea8cca0f5.zip
SCI32: Fix launcher load for Shivers
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/detection.cpp1
-rw-r--r--engines/sci/engine/guest_additions.cpp15
2 files changed, 11 insertions, 5 deletions
diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp
index fa89aad404..6799c3521f 100644
--- a/engines/sci/detection.cpp
+++ b/engines/sci/detection.cpp
@@ -887,7 +887,6 @@ bool SciEngine::canLoadGameStateCurrently() {
const Common::String &guiOptions = ConfMan.get("guioptions");
if (getSciVersion() >= SCI_VERSION_2) {
if (ConfMan.getBool("originalsaveload") ||
- !Common::checkGameGUIOption(GAMEOPTION_ORIGINAL_SAVELOAD, guiOptions) ||
Common::checkGameGUIOption(GUIO_NOLAUNCHLOAD, guiOptions)) {
return false;
diff --git a/engines/sci/engine/guest_additions.cpp b/engines/sci/engine/guest_additions.cpp
index 0ef6d99eaa..be6955fb21 100644
--- a/engines/sci/engine/guest_additions.cpp
+++ b/engines/sci/engine/guest_additions.cpp
@@ -513,10 +513,17 @@ void GuestAdditions::restoreFromLauncher() const {
return;
}
- // When `Game::restore` is invoked, it will call to `Restore::doit`
- // which will automatically return the `_delayedRestoreGameId` instead
- // of prompting the user for a save game
- invokeSelector(g_sci->getGameObject(), SELECTOR(restore));
+ if (g_sci->getGameId() == GID_SHIVERS) {
+ // Shivers accepts the save game number as a parameter to
+ // `SHIVERS::restore`
+ reg_t args[] = { make_reg(0, _state->_delayedRestoreGameId - kSaveIdShift) };
+ invokeSelector(g_sci->getGameObject(), SELECTOR(restore), 1, args);
+ } else {
+ // When `Game::restore` is invoked, it will call to `Restore::doit`
+ // which will automatically return the `_delayedRestoreGameId` instead
+ // of prompting the user for a save game
+ invokeSelector(g_sci->getGameObject(), SELECTOR(restore));
+ }
} else {
#else
{