aboutsummaryrefslogtreecommitdiff
path: root/scumm/debugger.cpp
diff options
context:
space:
mode:
authorJames Brown2003-04-22 04:40:30 +0000
committerJames Brown2003-04-22 04:40:30 +0000
commita8dfcb4edad9ae2db35a85f6f9c7416d14d74931 (patch)
treedf8f9a9666c30f727d5c48f7bfc5ae063851e289 /scumm/debugger.cpp
parentb3ac1bf20e1ff6bdce327f9f5016554e8be3963b (diff)
downloadscummvm-rg350-a8dfcb4edad9ae2db35a85f6f9c7416d14d74931.tar.gz
scummvm-rg350-a8dfcb4edad9ae2db35a85f6f9c7416d14d74931.tar.bz2
scummvm-rg350-a8dfcb4edad9ae2db35a85f6f9c7416d14d74931.zip
Add somewhat hacky 'restart' command to debugger. Still needs work :)
svn-id: r7071
Diffstat (limited to 'scumm/debugger.cpp')
-rw-r--r--scumm/debugger.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/scumm/debugger.cpp b/scumm/debugger.cpp
index 9ffd3b24db..d35d94a997 100644
--- a/scumm/debugger.cpp
+++ b/scumm/debugger.cpp
@@ -77,6 +77,7 @@ void ScummDebugger::attach(Scumm *s, char *entry) {
DCmd_Register("continue", &ScummDebugger::Cmd_Exit);
DCmd_Register("exit", &ScummDebugger::Cmd_Exit);
DCmd_Register("quit", &ScummDebugger::Cmd_Exit);
+ DCmd_Register("restart", &ScummDebugger::Cmd_Restart);
DCmd_Register("actor", &ScummDebugger::Cmd_Actor);
DCmd_Register("actors", &ScummDebugger::Cmd_PrintActor);
@@ -291,6 +292,28 @@ bool ScummDebugger::Cmd_Exit(int argc, const char **argv) {
return false;
}
+bool ScummDebugger::Cmd_Restart(int argc, const char **argv) {
+ // Reset some stuff
+ _s->_currentRoom = 0;
+ _s->_currentScript = 0xFF;
+ _s->killAllScriptsExceptCurrent();
+ _s->setShake(0);
+ _s->_sound->stopAllSounds();
+
+ // Reinit things
+ _s->allocateArrays(); // Reallocate arrays
+ _s->readIndexFile(); // Reread index (reset objectstate etc)
+ _s->createResource(rtTemp, 6, 500); // Create temp buffer
+ _s->initScummVars(); // Reinit scumm variables
+ _s->_sound->setupSound(); // Reinit sound engine
+
+ // Re-run bootscript
+ _s->runScript(1, 0, 0, &_s->_bootParam);
+
+ _detach_now = true;
+ return false;
+}
+
bool ScummDebugger::Cmd_Room(int argc, const char **argv) {
if (argc > 1) {
int room = atoi(argv[1]);