aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/tucker/detection.cpp5
-rw-r--r--engines/tucker/tucker.cpp14
2 files changed, 13 insertions, 6 deletions
diff --git a/engines/tucker/detection.cpp b/engines/tucker/detection.cpp
index f0437d2f87..7404abc2e7 100644
--- a/engines/tucker/detection.cpp
+++ b/engines/tucker/detection.cpp
@@ -122,8 +122,8 @@ static const ADParams detectionParams = {
0,
// Flags
0,
- // Additional GUI options (for every game}
- Common::GUIO_NOLAUNCHLOAD,
+ // Additional GUI options (for every game)
+ Common::GUIO_NONE,
// Maximum directory depth
1,
// List of directory globs
@@ -156,6 +156,7 @@ public:
virtual bool hasFeature(MetaEngineFeature f) const {
switch (f) {
case kSupportsListSaves:
+ case kSupportsLoadingDuringStartup:
case kSupportsDeleteSave:
return true;
default:
diff --git a/engines/tucker/tucker.cpp b/engines/tucker/tucker.cpp
index d3a6b4162b..e41cbfbeef 100644
--- a/engines/tucker/tucker.cpp
+++ b/engines/tucker/tucker.cpp
@@ -124,10 +124,7 @@ void TuckerEngine::restart() {
_timerCounter2 = 0;
_partNum = _currentPartNum = 0;
_locationNum = 0;
- _nextLocationNum = ConfMan.getInt("boot_param");
- if (_nextLocationNum == 0) {
- _nextLocationNum = (_gameFlags & kGameFlagDemo) == 0 ? kStartupLocationGame : kStartupLocationDemo;
- }
+ _nextLocationNum = (_gameFlags & kGameFlagDemo) == 0 ? kStartupLocationGame : kStartupLocationDemo;
_gamePaused = false;
_gameDebug = false;
_displayGameHints = false;
@@ -353,6 +350,15 @@ void TuckerEngine::mainLoop() {
_spriteAnimationFrameIndex = _spriteAnimationsTable[14].firstFrameIndex;
+ if (ConfMan.hasKey("save_slot")) {
+ const int slot = ConfMan.getInt("save_slot");
+ if (slot >= 0 && slot <= kLastSaveSlot) {
+ loadGameState(slot);
+ }
+ } else if (ConfMan.hasKey("boot_param")) {
+ _nextLocationNum = ConfMan.getInt("boot_param");
+ }
+
do {
++_syncCounter;
if (_flagsTable[137] != _flagsTable[138]) {