diff options
-rw-r--r-- | scumm/debugger.cpp | 45 | ||||
-rw-r--r-- | scumm/debugger.h | 2 |
2 files changed, 47 insertions, 0 deletions
diff --git a/scumm/debugger.cpp b/scumm/debugger.cpp index d35d94a997..ac71033331 100644 --- a/scumm/debugger.cpp +++ b/scumm/debugger.cpp @@ -85,6 +85,8 @@ void ScummDebugger::attach(Scumm *s, char *entry) { DCmd_Register("room", &ScummDebugger::Cmd_Room); DCmd_Register("objects", &ScummDebugger::Cmd_PrintObjects); DCmd_Register("object", &ScummDebugger::Cmd_Object); + DCmd_Register("script", &ScummDebugger::Cmd_Script); + DCmd_Register("scripts", &ScummDebugger::Cmd_PrintScript); DCmd_Register("loadgame", &ScummDebugger::Cmd_LoadGame); DCmd_Register("savegame", &ScummDebugger::Cmd_SaveGame); @@ -395,6 +397,49 @@ bool ScummDebugger::Cmd_Hide(int argc, const char **argv) { return true; } +bool ScummDebugger::Cmd_Script(int argc, const char** argv) { + int scriptnum; + + if (argc < 2) { + Debug_Printf("Syntax: script <scriptnum> <command>\n"); + return true; + } + + scriptnum = atoi(argv[1]); + + if (scriptnum >= _s->_maxScripts) { + Debug_Printf("Script number %d is out of range (range: 1 - %d)\n", scriptnum, _s->_maxScripts); + return true; + } + + if ((!strcmp(argv[2], "kill")) || (!strcmp(argv[2], "stop"))) { + _s->stopScriptNr(scriptnum); + } else { + Debug_Printf("Unknown script command '%s'\n", argv[2]); + } + + return true; +} + +bool ScummDebugger::Cmd_PrintScript(int argc, const char **argv) { + int i; + ScriptSlot *ss; + Debug_Printf("+-----------------------------+\n"); + Debug_Printf("|# |num|sta|typ|un1|un2|fc|cut|\n"); + Debug_Printf("+--+---+---+---+---+--+---+---+\n"); + for (i=0; i < 25; i++) { + ss = &(_s->vm.slot[i]); + if (ss->number) { + Debug_Printf("|%2d|%3d|%3d|%3d|%3d|%3d|%2d|%3d|\n", + i, ss->number, ss->status, ss->where, ss->unk1, ss->unk2, + ss->freezeCount, ss->cutsceneOverride); + } + } + Debug_Printf("+-----------------------------+\n"); + + return true; +} + bool ScummDebugger::Cmd_Actor(int argc, const char **argv) { Actor *a; int actnum; diff --git a/scumm/debugger.h b/scumm/debugger.h index db6b13b84c..af4611820c 100644 --- a/scumm/debugger.h +++ b/scumm/debugger.h @@ -80,6 +80,8 @@ protected: bool Cmd_PrintObjects(int argc, const char **argv); bool Cmd_Actor(int argc, const char **argv); bool Cmd_Object(int argc, const char **argv); + bool Cmd_Script(int argc, const char **argv); + bool Cmd_PrintScript(int argc, const char **argv); bool Cmd_DebugLevel(int argc, const char **argv); bool Cmd_Help(int argc, const char **argv); |