diff options
author | James Brown | 2003-04-22 04:40:30 +0000 |
---|---|---|
committer | James Brown | 2003-04-22 04:40:30 +0000 |
commit | a8dfcb4edad9ae2db35a85f6f9c7416d14d74931 (patch) | |
tree | df8f9a9666c30f727d5c48f7bfc5ae063851e289 /scumm/debugger.cpp | |
parent | b3ac1bf20e1ff6bdce327f9f5016554e8be3963b (diff) | |
download | scummvm-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.cpp | 23 |
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]); |