aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/console.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2009-05-30 13:36:51 +0000
committerFilippos Karapetis2009-05-30 13:36:51 +0000
commita21f34cf916e98f5d2ed558d79456a58ec9fa683 (patch)
tree49088d32a7d46c5235a08d15895188f4290ab7aa /engines/sci/console.cpp
parent4dcfaead8dbc4db1ada479066fa8c11f075154ab (diff)
downloadscummvm-rg350-a21f34cf916e98f5d2ed558d79456a58ec9fa683.tar.gz
scummvm-rg350-a21f34cf916e98f5d2ed558d79456a58ec9fa683.tar.bz2
scummvm-rg350-a21f34cf916e98f5d2ed558d79456a58ec9fa683.zip
Moved more script debug commands to console.cpp: "visual_state", "dynamic_views", "dropped_views", "gc" and "gc_objects". Removed the "gfx_free_widgets" and "sleep" commands (they weren't really useful)
svn-id: r41030
Diffstat (limited to 'engines/sci/console.cpp')
-rw-r--r--engines/sci/console.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/engines/sci/console.cpp b/engines/sci/console.cpp
index 0a1cbf902b..95c37074e0 100644
--- a/engines/sci/console.cpp
+++ b/engines/sci/console.cpp
@@ -31,6 +31,7 @@
#include "sci/vocabulary.h"
#include "sci/engine/savegame.h"
#include "sci/engine/state.h"
+#include "sci/engine/gc.h"
#include "sci/gfx/gfx_state_internal.h"
#include "sci/vocabulary.h"
@@ -67,6 +68,11 @@ Console::Console(SciEngine *vm) : GUI::Debugger() {
DCmd_Register("parser_words", WRAP_METHOD(Console, cmdParserWords));
DCmd_Register("current_port", WRAP_METHOD(Console, cmdCurrentPort));
DCmd_Register("parse_grammar", WRAP_METHOD(Console, cmdParseGrammar));
+ DCmd_Register("visual_state", WRAP_METHOD(Console, cmdVisualState));
+ DCmd_Register("dynamic_views", WRAP_METHOD(Console, cmdDynamicViews));
+ DCmd_Register("dropped_views", WRAP_METHOD(Console, cmdDroppedViews));
+ DCmd_Register("gc", WRAP_METHOD(Console, cmdInvokeGC));
+ DCmd_Register("gc_objects", WRAP_METHOD(Console, cmdGCObjects));
DCmd_Register("exit", WRAP_METHOD(Console, cmdExit));
// These were in sci.cpp
@@ -568,6 +574,58 @@ bool Console::cmdParseGrammar(int argc, const char **argv) {
return true;
}
+bool Console::cmdVisualState(int argc, const char **argv) {
+ DebugPrintf("State of the current visual widget:\n");
+
+ if (g_EngineState->visual)
+ g_EngineState->visual->print(0);
+ else
+ DebugPrintf("The visual widget is uninitialized.\n");
+
+ return true;
+}
+
+bool Console::cmdDynamicViews(int argc, const char **argv) {
+ DebugPrintf("List of active dynamic views:\n");
+
+ if (g_EngineState->dyn_views)
+ g_EngineState->dyn_views->print(0);
+ else
+ DebugPrintf("The list is empty.\n");
+
+ return true;
+}
+
+bool Console::cmdDroppedViews(int argc, const char **argv) {
+ DebugPrintf("List of dropped dynamic views:\n");
+
+ if (g_EngineState->drop_views)
+ g_EngineState->drop_views->print(0);
+ else
+ DebugPrintf("The list is empty.\n");
+
+ return true;
+}
+
+bool Console::cmdInvokeGC(int argc, const char **argv) {
+ DebugPrintf("Performing garbage collection...\n");
+ run_gc(g_EngineState);
+ return true;
+}
+
+bool Console::cmdGCObjects(int argc, const char **argv) {
+ reg_t_hash_map *use_map = find_all_used_references(g_EngineState);
+
+ DebugPrintf("Reachable object references (normalised):\n");
+ for (reg_t_hash_map::iterator i = use_map->begin(); i != use_map->end(); ++i) {
+ DebugPrintf(" - %04x:%04x\n", PRINT_REG(i->_key));
+ }
+
+ delete use_map;
+
+ return true;
+}
+
bool Console::cmdExit(int argc, const char **argv) {
if (argc != 2) {
DebugPrintf("%s game - exit gracefully\n", argv[0]);