aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
{