[Scummvm-cvs-logs] scummvm master -> ea05f6804608b48798c0f5b40cec7324d1d490bd

wjp wjp at usecode.org
Thu Jul 28 22:35:07 CEST 2011


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
bb7a1bd93d DREAMWEB: Add option to process asm functions but not output them
c54cae6aea DREAMWEB: Move main function to stubs
ea05f68046 DREAMWEB: Rewrite main loop


Commit: bb7a1bd93d22fc7da9e317cea9fee083be83d5a0
    https://github.com/scummvm/scummvm/commit/bb7a1bd93d22fc7da9e317cea9fee083be83d5a0
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-07-28T12:25:10-07:00

Commit Message:
DREAMWEB: Add option to process asm functions but not output them

Changed paths:
    devtools/tasmrecover/tasm/cpp.py



diff --git a/devtools/tasmrecover/tasm/cpp.py b/devtools/tasmrecover/tasm/cpp.py
index a73fd6c..4ed89f6 100644
--- a/devtools/tasmrecover/tasm/cpp.py
+++ b/devtools/tasmrecover/tasm/cpp.py
@@ -33,7 +33,7 @@ def parse_bin(s):
 	return v
 
 class cpp:
-	def __init__(self, context, namespace, skip_first = 0, blacklist = []):
+	def __init__(self, context, namespace, skip_first = 0, blacklist = [], skip_output = []):
 		self.namespace = namespace
 		fname = namespace.lower() + ".cpp"
 		header = namespace.lower() + ".h"
@@ -79,6 +79,7 @@ class cpp:
 		self.proc_done = []
 		self.blacklist = blacklist
 		self.failed = list(blacklist)
+		self.skip_output = skip_output
 		self.translated = []
 		self.proc_addr = []
 		self.methods = []
@@ -527,7 +528,8 @@ namespace %s {
 				self.proc.optimize(keep_labels=[label])
 				self.proc.visit(self, start)
 			self.body += "}\n";
-			self.translated.insert(0, self.body)
+			if name not in self.skip_output:
+				self.translated.insert(0, self.body)
 			self.proc = None
 			if self.temps_count > 0:
 				raise Exception("temps count == %d at the exit of proc" %self.temps_count);


Commit: c54cae6aea614c6303424d64b81a7327c069070a
    https://github.com/scummvm/scummvm/commit/c54cae6aea614c6303424d64b81a7327c069070a
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-07-28T12:25:10-07:00

Commit Message:
DREAMWEB: Move main function to stubs

Changed paths:
    devtools/tasmrecover/tasm-recover
    engines/dreamweb/dreamgen.cpp
    engines/dreamweb/stubs.cpp



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 413be6c..183792b 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -29,6 +29,7 @@ p.strip_path = 3
 context = p.parse('dreamweb/dreamweb.asm')
 p.link()
 generator = cpp(context, "DreamGen", blacklist = [
+	# These functions are not processed
 	'randomnumber',
 	'quickquit',
 	'quickquit2',
@@ -73,5 +74,8 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'lockmon',
 	'cancelch0',
 	'cancelch1'
+	], skip_output = [
+	# These functions are processed but not output
+	'dreamweb'
 	])
 generator.generate('dreamweb') #start routine
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index c05cab5..59d6975 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -20279,138 +20279,6 @@ transfer:
 	dx = 6059;
 }
 
-void DreamGenContext::dreamweb() {
-	STACK_CHECK;
-	seecommandtail();
-	checkbasemem();
-	soundstartup();
-	setkeyboardint();
-	setupemm();
-	allocatebuffers();
-	setmouse();
-	fadedos();
-	gettime();
-	clearbuffers();
-	clearpalette();
-	set16colpalette();
-	readsetdata();
-	data.byte(kWongame) = 0;
-	dx = 1909;
-	loadsample();
-	setsoundoff();
-	scanfornames();
-	_cmp(al, 0);
-	if (!flags.z())
-		goto dodecisions;
-	setmode();
-	loadpalfromiff();
-	titles();
-	credits();
-	goto playgame;
-dodecisions:
-	cls();
-	setmode();
-	decide();
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (exitgame) */;
-	_cmp(data.byte(kGetback), 4);
-	if (flags.z())
-		goto mainloop;
-	titles();
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (exitgame) */;
-	credits();
-playgame:
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (exitgame) */;
-	clearchanges();
-	setmode();
-	loadpalfromiff();
-	data.byte(kLocation) = 255;
-	data.byte(kRoomafterdream) = 1;
-	data.byte(kNewlocation) = 35;
-	data.byte(kVolume) = 7;
-	loadroom();
-	clearsprites();
-	initman();
-	entrytexts();
-	entryanims();
-	data.byte(kDestpos) = 3;
-	initialinv();
-	data.byte(kLastflag) = 32;
-	startup1();
-	data.byte(kVolumeto) = 0;
-	data.byte(kVolumedirection) = -1;
-	data.byte(kCommandtype) = 255;
-	goto mainloop;
-loadnew:
-	clearbeforeload();
-	loadroom();
-	clearsprites();
-	initman();
-	entrytexts();
-	entryanims();
-	data.byte(kNewlocation) = 255;
-	startup();
-	data.byte(kCommandtype) = 255;
-	worktoscreenm();
-	goto mainloop;
-	data.byte(kNewlocation) = 255;
-	clearsprites();
-	initman();
-	startup();
-	data.byte(kCommandtype) = 255;
-mainloop:
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (exitgame) */;
-	screenupdate();
-	_cmp(data.byte(kWongame), 0);
-	if (!flags.z())
-		goto endofgame;
-	_cmp(data.byte(kMandead), 1);
-	if (flags.z())
-		goto gameover;
-	_cmp(data.byte(kMandead), 2);
-	if (flags.z())
-		goto gameover;
-	_cmp(data.word(kWatchingtime), 0);
-	if (flags.z())
-		goto notwatching;
-	al = data.byte(kFinaldest);
-	_cmp(al, data.byte(kManspath));
-	if (!flags.z())
-		goto mainloop;
-	_dec(data.word(kWatchingtime));
-	if (!flags.z())
-		goto mainloop;
-notwatching:
-	_cmp(data.byte(kMandead), 4);
-	if (flags.z())
-		goto gameover;
-	_cmp(data.byte(kNewlocation), 255);
-	if (!flags.z())
-		goto loadnew;
-	goto mainloop;
-gameover:
-	clearbeforeload();
-	showgun();
-	fadescreendown();
-	cx = 100;
-	hangon();
-	goto dodecisions;
-endofgame:
-	clearbeforeload();
-	fadescreendowns();
-	cx = 200;
-	hangon();
-	endgame();
-	{ quickquit2(); return; };
-}
-
 
 
 void DreamGenContext::__start() { 
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 3c05825..65ed5bd 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -26,6 +26,139 @@
 
 namespace DreamGen {
 
+void DreamGenContext::dreamweb() {
+	STACK_CHECK;
+	seecommandtail();
+	checkbasemem();
+	soundstartup();
+	setkeyboardint();
+	setupemm();
+	allocatebuffers();
+	setmouse();
+	fadedos();
+	gettime();
+	clearbuffers();
+	clearpalette();
+	set16colpalette();
+	readsetdata();
+	data.byte(kWongame) = 0;
+	dx = 1909;
+	loadsample();
+	setsoundoff();
+	scanfornames();
+	_cmp(al, 0);
+	if (!flags.z())
+		goto dodecisions;
+	setmode();
+	loadpalfromiff();
+	titles();
+	credits();
+	goto playgame;
+dodecisions:
+	cls();
+	setmode();
+	decide();
+	_cmp(data.byte(kQuitrequested),  0);
+	if (!flags.z())
+		return /* (exitgame) */;
+	_cmp(data.byte(kGetback), 4);
+	if (flags.z())
+		goto mainloop;
+	titles();
+	_cmp(data.byte(kQuitrequested),  0);
+	if (!flags.z())
+		return /* (exitgame) */;
+	credits();
+playgame:
+	_cmp(data.byte(kQuitrequested),  0);
+	if (!flags.z())
+		return /* (exitgame) */;
+	clearchanges();
+	setmode();
+	loadpalfromiff();
+	data.byte(kLocation) = 255;
+	data.byte(kRoomafterdream) = 1;
+	data.byte(kNewlocation) = 35;
+	data.byte(kVolume) = 7;
+	loadroom();
+	clearsprites();
+	initman();
+	entrytexts();
+	entryanims();
+	data.byte(kDestpos) = 3;
+	initialinv();
+	data.byte(kLastflag) = 32;
+	startup1();
+	data.byte(kVolumeto) = 0;
+	data.byte(kVolumedirection) = -1;
+	data.byte(kCommandtype) = 255;
+	goto mainloop;
+loadnew:
+	clearbeforeload();
+	loadroom();
+	clearsprites();
+	initman();
+	entrytexts();
+	entryanims();
+	data.byte(kNewlocation) = 255;
+	startup();
+	data.byte(kCommandtype) = 255;
+	worktoscreenm();
+	goto mainloop;
+	data.byte(kNewlocation) = 255;
+	clearsprites();
+	initman();
+	startup();
+	data.byte(kCommandtype) = 255;
+mainloop:
+	_cmp(data.byte(kQuitrequested),  0);
+	if (!flags.z())
+		return /* (exitgame) */;
+	screenupdate();
+	_cmp(data.byte(kWongame), 0);
+	if (!flags.z())
+		goto endofgame;
+	_cmp(data.byte(kMandead), 1);
+	if (flags.z())
+		goto gameover;
+	_cmp(data.byte(kMandead), 2);
+	if (flags.z())
+		goto gameover;
+	_cmp(data.word(kWatchingtime), 0);
+	if (flags.z())
+		goto notwatching;
+	al = data.byte(kFinaldest);
+	_cmp(al, data.byte(kManspath));
+	if (!flags.z())
+		goto mainloop;
+	_dec(data.word(kWatchingtime));
+	if (!flags.z())
+		goto mainloop;
+notwatching:
+	_cmp(data.byte(kMandead), 4);
+	if (flags.z())
+		goto gameover;
+	_cmp(data.byte(kNewlocation), 255);
+	if (!flags.z())
+		goto loadnew;
+	goto mainloop;
+gameover:
+	clearbeforeload();
+	showgun();
+	fadescreendown();
+	cx = 100;
+	hangon();
+	goto dodecisions;
+endofgame:
+	clearbeforeload();
+	fadescreendowns();
+	cx = 200;
+	hangon();
+	endgame();
+	{ quickquit2(); return; };
+}
+
+
 Common::String getFilename(Context &context) {
 	uint16 name_ptr = context.dx;
 	Common::String name;


Commit: ea05f6804608b48798c0f5b40cec7324d1d490bd
    https://github.com/scummvm/scummvm/commit/ea05f6804608b48798c0f5b40cec7324d1d490bd
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-07-28T12:25:10-07:00

Commit Message:
DREAMWEB: Rewrite main loop

Changed paths:
    engines/dreamweb/stubs.cpp



diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 65ed5bd..00d082b 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -42,122 +42,137 @@ void DreamGenContext::dreamweb() {
 	set16colpalette();
 	readsetdata();
 	data.byte(kWongame) = 0;
+
 	dx = 1909;
 	loadsample();
 	setsoundoff();
-	scanfornames();
-	_cmp(al, 0);
-	if (!flags.z())
-		goto dodecisions;
-	setmode();
-	loadpalfromiff();
-	titles();
-	credits();
-	goto playgame;
-dodecisions:
-	cls();
-	setmode();
-	decide();
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (exitgame) */;
-	_cmp(data.byte(kGetback), 4);
-	if (flags.z())
-		goto mainloop;
-	titles();
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (exitgame) */;
-	credits();
-playgame:
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (exitgame) */;
-	clearchanges();
-	setmode();
-	loadpalfromiff();
-	data.byte(kLocation) = 255;
-	data.byte(kRoomafterdream) = 1;
-	data.byte(kNewlocation) = 35;
-	data.byte(kVolume) = 7;
-	loadroom();
-	clearsprites();
-	initman();
-	entrytexts();
-	entryanims();
-	data.byte(kDestpos) = 3;
-	initialinv();
-	data.byte(kLastflag) = 32;
-	startup1();
-	data.byte(kVolumeto) = 0;
-	data.byte(kVolumedirection) = -1;
-	data.byte(kCommandtype) = 255;
-	goto mainloop;
-loadnew:
-	clearbeforeload();
-	loadroom();
-	clearsprites();
-	initman();
-	entrytexts();
-	entryanims();
-	data.byte(kNewlocation) = 255;
-	startup();
-	data.byte(kCommandtype) = 255;
-	worktoscreenm();
-	goto mainloop;
-	data.byte(kNewlocation) = 255;
-	clearsprites();
-	initman();
-	startup();
-	data.byte(kCommandtype) = 255;
-mainloop:
-	_cmp(data.byte(kQuitrequested),  0);
-	if (!flags.z())
-		return /* (exitgame) */;
-	screenupdate();
-	_cmp(data.byte(kWongame), 0);
-	if (!flags.z())
-		goto endofgame;
-	_cmp(data.byte(kMandead), 1);
-	if (flags.z())
-		goto gameover;
-	_cmp(data.byte(kMandead), 2);
-	if (flags.z())
-		goto gameover;
-	_cmp(data.word(kWatchingtime), 0);
-	if (flags.z())
-		goto notwatching;
-	al = data.byte(kFinaldest);
-	_cmp(al, data.byte(kManspath));
-	if (!flags.z())
-		goto mainloop;
-	_dec(data.word(kWatchingtime));
-	if (!flags.z())
-		goto mainloop;
-notwatching:
-	_cmp(data.byte(kMandead), 4);
-	if (flags.z())
-		goto gameover;
-	_cmp(data.byte(kNewlocation), 255);
-	if (!flags.z())
-		goto loadnew;
-	goto mainloop;
-gameover:
-	clearbeforeload();
-	showgun();
-	fadescreendown();
-	cx = 100;
-	hangon();
-	goto dodecisions;
-endofgame:
-	clearbeforeload();
-	fadescreendowns();
-	cx = 200;
-	hangon();
-	endgame();
-	{ quickquit2(); return; };
-}
 
+	bool firstLoop = true;
+
+	while (true) {
+
+		scanfornames();
+
+		bool startNewGame = true;
+
+		if (al == 0 && firstLoop) {
+
+			// no savegames found, and we're not restarting.
+
+			setmode();
+			loadpalfromiff();
+
+		} else {
+			// "dodecisions"
+
+			// Savegames found, so ask if we should load one.
+			// (If we're restarting after game over, we also always show these
+			// options.)
+
+			cls();
+			setmode();
+			decide();
+			if (data.byte(kQuitrequested))
+				return; // exit game
+
+			if (data.byte(kGetback) == 4)
+				startNewGame = false; // savegame has been loaded
+
+		}
+
+		firstLoop = false;
+
+		if (startNewGame) {
+			// "playgame"
+
+			titles();
+			if (data.byte(kQuitrequested))
+				return; // exit game
+			credits();
+
+			if (data.byte(kQuitrequested))
+				return; // exit game
+
+			clearchanges();
+			setmode();
+			loadpalfromiff();
+			data.byte(kLocation) = 255;
+			data.byte(kRoomafterdream) = 1;
+			data.byte(kNewlocation) = 35;
+			data.byte(kVolume) = 7;
+			loadroom();
+			clearsprites();
+			initman();
+			entrytexts();
+			entryanims();
+			data.byte(kDestpos) = 3;
+			initialinv();
+			data.byte(kLastflag) = 32;
+			startup1();
+			data.byte(kVolumeto) = 0;
+			data.byte(kVolumedirection) = -1;
+			data.byte(kCommandtype) = 255;
+
+		}
+
+		// main loop
+		while (true) {
+
+			if (data.byte(kQuitrequested))
+				return; // exit game
+
+			screenupdate();
+
+			if (data.byte(kWongame) != 0) {
+				// "endofgame"
+				clearbeforeload();
+				fadescreendowns();
+				cx = 200;
+				hangon();
+				endgame();
+				quickquit2();
+				return;
+			}
+
+			if (data.byte(kMandead) == 1 || data.byte(kMandead) == 2)
+				break;
+
+			if (data.word(kWatchingtime) > 0) {
+				if (data.byte(kFinaldest) == data.byte(kManspath))
+					data.word(kWatchingtime)--;
+			}
+
+			if (data.word(kWatchingtime) == 0) {
+				// "notwatching"
+
+				if (data.byte(kMandead) == 4)
+					break;
+
+				if (data.byte(kNewlocation) != 255) {
+					// "loadnew"
+					clearbeforeload();
+					loadroom();
+					clearsprites();
+					initman();
+					entrytexts();
+					entryanims();
+					data.byte(kNewlocation) = 255;
+					startup();
+					data.byte(kCommandtype) = 255;
+					worktoscreenm();
+				}
+			}
+		}
+
+		// "gameover"
+		clearbeforeload();
+		showgun();
+		fadescreendown();
+		cx = 100;
+		hangon();
+
+	}
+}
 
 Common::String getFilename(Context &context) {
 	uint16 name_ptr = context.dx;






More information about the Scummvm-git-logs mailing list