diff options
author | Eugene Sandulenko | 2009-06-06 17:43:26 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2009-06-06 17:43:26 +0000 |
commit | ed797c07090a8c41f3f2451f35aa0cc8d5aa4544 (patch) | |
tree | cad583742f34d8e3bfc372217af6f6c056d02fbe /engines/agi/console.cpp | |
parent | 531b96bbbeca327ac6a68edb6831d669b68fee17 (diff) | |
download | scummvm-rg350-ed797c07090a8c41f3f2451f35aa0cc8d5aa4544.tar.gz scummvm-rg350-ed797c07090a8c41f3f2451f35aa0cc8d5aa4544.tar.bz2 scummvm-rg350-ed797c07090a8c41f3f2451f35aa0cc8d5aa4544.zip |
Implement debug commands "room" and "bt"
svn-id: r41249
Diffstat (limited to 'engines/agi/console.cpp')
-rw-r--r-- | engines/agi/console.cpp | 35 |
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; } |