[Scummvm-cvs-logs] CVS: scummvm/scumm debugger.cpp,1.22,1.23 debugger.h,1.14,1.15 scummvm.cpp,2.99,2.100

James Brown ender at users.sourceforge.net
Mon Apr 21 21:41:03 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv29368/scumm

Modified Files:
	debugger.cpp debugger.h scummvm.cpp 
Log Message:
Add somewhat hacky 'restart' command to debugger. Still needs work :)


Index: debugger.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/debugger.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- debugger.cpp	20 Apr 2003 16:25:48 -0000	1.22
+++ debugger.cpp	22 Apr 2003 04:40:30 -0000	1.23
@@ -77,6 +77,7 @@
 		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);
@@ -287,6 +288,28 @@
 
 // Commands
 bool ScummDebugger::Cmd_Exit(int argc, const char **argv) {
+	_detach_now = true;
+	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;
 }

Index: debugger.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/debugger.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- debugger.h	20 Apr 2003 16:25:48 -0000	1.14
+++ debugger.h	22 Apr 2003 04:40:30 -0000	1.15
@@ -73,6 +73,7 @@
 	bool Cmd_Room(int argc, const char **argv);
 	bool Cmd_LoadGame(int argc, const char **argv);
 	bool Cmd_SaveGame(int argc, const char **argv);
+	bool Cmd_Restart(int argc, const char **argv);
 
 	bool Cmd_PrintActor(int argc, const char **argv);
 	bool Cmd_PrintBox(int argc, const char **argv);

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.99
retrieving revision 2.100
diff -u -d -r2.99 -r2.100
--- scummvm.cpp	21 Apr 2003 13:19:19 -0000	2.99
+++ scummvm.cpp	22 Apr 2003 04:40:30 -0000	2.100
@@ -354,8 +354,6 @@
 		a->initActor(1);
 	}
 
-	_vars[VAR_CHARINC] = 4;
-
 	_numNestedScripts = 0;
 	vm.cutSceneStackPointer = 0;
 
@@ -386,11 +384,7 @@
 	virtscr[0].xstart = 0;
 
 	if (!(_features & GF_AFTER_V7)) {
-		_vars[VAR_V5_DRAWFLAGS] = 11;
-		_vars[VAR_59] = 3;
-
 		// Setup light
-		_vars[VAR_CURRENT_LIGHTS] = LIGHTMODE_actor_base | LIGHTMODE_actor_color | LIGHTMODE_screen;
 		_flashlightXStrips = 7;
 		_flashlightYStrips = 7;
 		_flashlight.buffer = NULL;
@@ -415,8 +409,6 @@
 	_varwatch = -1;
 	_screenStartStrip = 0;
 
-	_vars[VAR_TALK_ACTOR] = 0;
-
 	_talkDelay = 0;
 	_keepText = false;
 
@@ -449,9 +441,6 @@
 
 	initScummVars();
 
-	if (!(_features & GF_AFTER_V6))
-		_vars[VAR_V5_TALK_STRING_Y] = -0x50;
-
 	getGraphicsPerformance();
 
 	_sound->_current_cache = 0;
@@ -461,6 +450,9 @@
 
 
 void Scumm::initScummVars() {
+	if (!(_features & GF_AFTER_V6))
+		_vars[VAR_V5_TALK_STRING_Y] = -0x50;
+
 	if (!(_features & GF_AFTER_V7)) {
 		_vars[VAR_CURRENTDRIVE] = 0;
 		_vars[VAR_FIXEDDISK] = true;
@@ -471,16 +463,26 @@
 		_vars[VAR_SOUNDPARAM] = 0;
 		_vars[VAR_SOUNDPARAM2] = 0;
 		_vars[VAR_SOUNDPARAM3] = 0;
+
 		if (_features & GF_AFTER_V6)
 			_vars[VAR_V6_EMSSPACE] = 10000;
+
+		_vars[VAR_V5_DRAWFLAGS] = 11;
+		_vars[VAR_59] = 3;
+
+		// Setup light
+		_vars[VAR_CURRENT_LIGHTS] = LIGHTMODE_actor_base | LIGHTMODE_actor_color | LIGHTMODE_screen;
 	} else {
-			_vars[VAR_V6_EMSSPACE] = 10000;
+		_vars[VAR_V6_EMSSPACE] = 10000;
 	}
 
 	if (_features & GF_AFTER_V8) {	// Fixme: How do we deal with non-cd installs?
 		_vars[VAR_CURRENTDISK] = 1;
 		_vars[VAR_LANGUAGE] = _language;
 	}
+
+	_vars[VAR_CHARINC] = 4;
+	_vars[VAR_TALK_ACTOR] = 0;
 }
 
 void Scumm::checkRange(int max, int min, int no, const char *str) {





More information about the Scummvm-git-logs mailing list