aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/console.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agi/console.cpp')
-rw-r--r--engines/agi/console.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/engines/agi/console.cpp b/engines/agi/console.cpp
index 09abb47525..37e9258136 100644
--- a/engines/agi/console.cpp
+++ b/engines/agi/console.cpp
@@ -52,6 +52,8 @@ Console::Console(AgiEngine *vm) : GUI::Debugger() {
DCmd_Register("setvar", WRAP_METHOD(Console, Cmd_SetVar));
DCmd_Register("setflag", WRAP_METHOD(Console, Cmd_SetFlag));
DCmd_Register("setobj", WRAP_METHOD(Console, Cmd_SetObj));
+ DCmd_Register("room", WRAP_METHOD(Console, Cmd_Room));
+ DCmd_Register("bt", WRAP_METHOD(Console, Cmd_BT));
}
Console::~Console() {
@@ -243,6 +245,39 @@ bool Console::Cmd_Cont(int argc, const char **argv) {
return true;
}
+bool Console::Cmd_Room(int argc, const char **argv) {
+ DebugPrintf("Current room: %d\n", _vm->getvar(0));
+
+ return true;
+}
+
+bool Console::Cmd_BT(int argc, const char **argv) {
+ DebugPrintf("Current script: %d\nStack depth: %d\n", _vm->_game.lognum, _vm->_game.execStack.size());
+
+ uint8 *code = NULL;
+ uint8 op = 0;
+ uint8 p[CMD_BSIZE] = { 0 };
+ int num;
+ Common::Array<ScriptPos>::iterator it;
+
+ for (it = _vm->_game.execStack.begin(); it != _vm->_game.execStack.end(); it++) {
+ code = _vm->_game.logics[it->script].data;
+ op = code[it->curIP];
+ num = logicNamesCmd[op].numArgs;
+ memmove(p, &code[it->curIP], num);
+ memset(p + num, 0, CMD_BSIZE - num);
+
+ DebugPrintf("%d(%d): %s(", it->script, it->curIP, logicNamesCmd[op].name);
+
+ for (int i = 0; i < num; i++)
+ DebugPrintf("%d, ", p[i]);
+
+ DebugPrintf(")\n");
+ }
+
+ return true;
+}
+
PreAGI_Console::PreAGI_Console(PreAgiEngine *vm) {
_vm = vm;
}