[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