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]); | 
