diff options
Diffstat (limited to 'engines/dreamweb/stubs.cpp')
-rw-r--r-- | engines/dreamweb/stubs.cpp | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 3c058259a8..65ed5bd9cd 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; |