aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2011-10-29 18:31:53 +0300
committerFilippos Karapetis2011-10-29 18:32:52 +0300
commit4f6996777374c8547d918074a8a8d79a961fcee0 (patch)
tree6c5552f6187a397f1ec459fb967653202f3cd2de
parentd87b4d88e0a6e0e815b6721bdf5ac16ff590aa8e (diff)
downloadscummvm-rg350-4f6996777374c8547d918074a8a8d79a961fcee0.tar.gz
scummvm-rg350-4f6996777374c8547d918074a8a8d79a961fcee0.tar.bz2
scummvm-rg350-4f6996777374c8547d918074a8a8d79a961fcee0.zip
SCI: Added a new debug flag, "DebugMode" for SCI32 games
This is used to enable the embedded debugger in several SCI32 games (PQ4, QFG4, GK1, GK2, KQ7, SQ6 and LSL7)
-rw-r--r--engines/sci/engine/kfile.cpp13
-rw-r--r--engines/sci/sci.cpp1
-rw-r--r--engines/sci/sci.h3
3 files changed, 16 insertions, 1 deletions
diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index 9e9441847d..4d869c3f09 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -22,6 +22,7 @@
#include "common/archive.h"
#include "common/config-manager.h"
+#include "common/debug-channels.h"
#include "common/file.h"
#include "common/str.h"
#include "common/savefile.h"
@@ -1060,6 +1061,18 @@ reg_t kFileIOExists(EngineState *s, int argc, reg_t *argv) {
exists = !saveFileMan->listSavefiles(wrappedName).empty();
}
+ // SCI2+ debug mode
+ if (DebugMan.isDebugChannelEnabled(kDebugLevelDebugMode)) {
+ if (!exists && name == "1.scr") // PQ4
+ exists = true;
+ if (!exists && name == "18.scr") // QFG4
+ exists = true;
+ if (!exists && name == "99.scr") // GK1, KQ7
+ exists = true;
+ if (!exists && name == "classes") // GK2, SQ6, LSL7
+ exists = true;
+ }
+
// Special case for non-English versions of LSL5: The English version of
// LSL5 calls kFileIO(), case K_FILEIO_OPEN for reading to check if
// memory.drv exists (which is where the game's password is stored). If
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index d79ac86741..51b50ebe20 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -114,6 +114,7 @@ SciEngine::SciEngine(OSystem *syst, const ADGameDescription *desc, SciGameId gam
DebugMan.addDebugChannel(kDebugLevelGC, "GC", "Garbage Collector debugging");
DebugMan.addDebugChannel(kDebugLevelResMan, "ResMan", "Resource manager debugging");
DebugMan.addDebugChannel(kDebugLevelOnStartup, "OnStartup", "Enter debugger at start of game");
+ DebugMan.addDebugChannel(kDebugLevelDebugMode, "DebugMode", "Enable game debug mode at start of game");
const Common::FSNode gameDataDir(ConfMan.get("path"));
diff --git a/engines/sci/sci.h b/engines/sci/sci.h
index 7a7851357b..9bead768a6 100644
--- a/engines/sci/sci.h
+++ b/engines/sci/sci.h
@@ -102,7 +102,8 @@ enum kDebugLevels {
kDebugLevelScripts = 1 << 17,
kDebugLevelGC = 1 << 18,
kDebugLevelResMan = 1 << 19,
- kDebugLevelOnStartup = 1 << 20
+ kDebugLevelOnStartup = 1 << 20,
+ kDebugLevelDebugMode = 1 << 21
};
enum SciGameId {