[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