diff options
author | Willem Jan Palenstijn | 2011-06-05 11:00:00 +0200 |
---|---|---|
committer | Willem Jan Palenstijn | 2011-06-05 11:00:00 +0200 |
commit | 72148570de56e5c42e2fe8091e9b466610e49785 (patch) | |
tree | e90423f516d3f89ebf68564d1547839d419d14b0 /devtools/tasmrecover/dreamweb/dreamweb.asm | |
parent | 5b7754e3f095eb8a469dd4b7de5a6379f8e13c27 (diff) | |
download | scummvm-rg350-72148570de56e5c42e2fe8091e9b466610e49785.tar.gz scummvm-rg350-72148570de56e5c42e2fe8091e9b466610e49785.tar.bz2 scummvm-rg350-72148570de56e5c42e2fe8091e9b466610e49785.zip |
DREAMWEB: Add original Dreamweb assembly sources
They have been released under the GPL with permission from Neil Dodwell.
Note that the version of these sources that was added in
9599894a4b2f79672fc3e2ca5a93ef9c7d457c08 has been tweaked to
prepare for processing by tasmrecover.
Diffstat (limited to 'devtools/tasmrecover/dreamweb/dreamweb.asm')
-rw-r--r-- | devtools/tasmrecover/dreamweb/dreamweb.asm | 6276 |
1 files changed, 6276 insertions, 0 deletions
diff --git a/devtools/tasmrecover/dreamweb/dreamweb.asm b/devtools/tasmrecover/dreamweb/dreamweb.asm new file mode 100644 index 0000000000..88cf2a91c0 --- /dev/null +++ b/devtools/tasmrecover/dreamweb/dreamweb.asm @@ -0,0 +1,6276 @@ +;Copyright (c) 1990-2011 by Neil Dodwell +;Released with permission from Neil Dodwell under GPLv2 +;See LICENSE file for full license text + + + + + + + + + +;ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ +;³ ³ +;³ DREAMWEB ³ +;³ ³ +;³ ³ +;³ ³ +;³ ³ +;³ Written by Neil Dodwell. Graphics by Dave Dew. ³ +;³ ³ +;³ Started on Friday 28 December 1990 at 1:20 pm ³ +;³ ³ +;³ Copyright 1990/1991 Creative Reality ³ ³ +;³ ³ +;³ ³ +;ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ + + + + + + + + + + + + + + + +;----------------------------------------------------------Assembly options---- + +JUMPS + +playback equ 0 +recording equ 0 +debuglevel1 equ 0 ;memory debug on +debuglevel2 equ 0 ;debug keys on+shouts +demo equ 0 +CD equ 0 +Foreign equ 1 +Spanish equ 1 +German equ 0 + +;----------------------------------------------------------------Code start---- + +DREAMWEBPROG segment para public 'CODE' + + assume cs:DREAMWEBPROG,ss:STACKSPACE + + + + +;------------------------------------------------------------------Includes---- + +include \pc\dreamweb\vars.asm ;variables and equates +include \pc\dreamweb\sprite.asm ;sprite routines +include \pc\dreamweb\vgagrafx.asm ;screen routines for vga +include \pc\dreamweb\vgafades.asm ;fade routines +include \pc\dreamweb\titles.asm ;guess! +include \pc\dreamweb\print.asm ;text printing routines +include \pc\dreamweb\object.asm ;pickup +include \pc\dreamweb\backdrop.asm ;draws floor etc. +include \pc\dreamweb\look.asm ;look command +include \pc\dreamweb\talk.asm ;conversations +include \pc\dreamweb\newplace.asm ;travel +include \pc\dreamweb\monitor.asm ;network machine +include \pc\dreamweb\use.asm ;individual use routines +include \pc\dreamweb\keypad.asm ;accept code with keypad +include \pc\dreamweb\saveload.asm ;in game options +include \pc\dreamweb\sblaster.asm + if debuglevel1 +include \pc\dreamweb\debug.asm + else + if debuglevel2 +include \pc\dreamweb\debug.asm + endif + endif + +;-----------------------------------------------------------------Main loop---- + + +Dreamweb proc near + + call seecommandtail + mov ah,4ah + mov bx,seg stak + sub bx,seg dreamweb + add bx,20h + int 21h + + call checkbasemem + call soundstartup + call setkeyboardint + call setupemm + call allocatebuffers + call setmouse + call fadedos + call gettime + + call clearbuffers + call clearpalette + call set16colpalette + call readsetdata + if demo + call changeroomnums + endif + mov wongame,0 + + mov dx,offset cs:basicsample + call loadsample + call setsoundoff + + if demo + else + call scanfornames + cmp al,0 + jnz dodecisions + endif + + call setmode + call loadpalfromiff + + call titles + call credits + jmp playgame + +dodecisions: call cls + call setmode + call decide + cmp getback,4 + jz mainloop + + call titles + call credits + +playgame: call clearchanges + call setmode + call loadpalfromiff + mov location,255 + mov roomafterdream,1 + if demo + mov newlocation,5 + else + mov newlocation,35 + endif + mov volume,7 + call loadroom + call clearsprites + call initman + call entrytexts + call entryanims + mov destpos,3 + call initialinv + mov lastflag,32 + call startup1 + mov volumeto,0 + mov volumedirection,-1 + mov commandtype,255 + jmp mainloop + +loadnew: if demo + cmp newlocation,27 + jnz not27 + call fadescreendowns + mov cx,260 + call hangon + call clearbeforeload + jmp playgame +not27: + endif + call clearbeforeload + call loadroom + call clearsprites + call initman + call entrytexts + call entryanims + mov newlocation,255 + call startup + mov commandtype,255 + call worktoscreenm + jmp mainloop + +alreadyloaded: mov newlocation,255 + call clearsprites + call initman + call startup + mov commandtype,255 + +mainloop: call screenupdate + cmp wongame,0 + jnz endofgame + cmp mandead,1 + jz gameover + cmp mandead,2 + jz gameover + cmp watchingtime,0 + jz notwatching + mov al,finaldest + cmp al,manspath + jnz mainloop + dec watchingtime + jnz mainloop + +notwatching: cmp mandead,4 + jz gameover + cmp newlocation,255 + jnz loadnew + jmp mainloop + +gameover: if demo + call fadescreendowns + mov cx,260 + call hangon + call clearbeforeload + jmp playgame + endif + call clearbeforeload + call showgun + call fadescreendown + mov cx,100 + call hangon + jmp dodecisions + +endofgame: call clearbeforeload + call fadescreendowns + mov cx,200 + call hangon + call endgame + jmp quickquit2 + + endp + + + + + endp + + + + if demo + +Changeroomnums proc near + + mov di,offset cs:roomdata+10 + mov cx,50 +changenumloop: mov al,[cs:di] + cmp al,"0" + jnz nochange + mov al,[cs:di+1] + cmp al,"5" + jnz nochange + mov al,"6" + mov ah,"0" + mov [cs:di],ax +nochange: add di,32 + loop changenumloop + ret + + endp + + endif + + + + +Entrytexts proc near + + cmp location,21 + jnz notloc15 + mov al,28 + mov cx,60 + mov dx,11 + mov bl,68 + mov bh,64 + call setuptimeduse + ret +notloc15: cmp location,30 + jnz notloc43 + mov al,27 + mov cx,60 + mov dx,11 + mov bl,68 + mov bh,64 + call setuptimeduse + ret +notloc43: cmp location,23 + jnz notloc23 + mov al,29 + mov cx,60 + mov dx,11 + mov bl,68 + mov bh,64 + call setuptimeduse + ret +notloc23: cmp location,31 + jnz notloc44 + mov al,30 + mov cx,60 + mov dx,11 + mov bl,68 + mov bh,64 + call setuptimeduse + ret +notloc44: cmp location,20 + jnz notsarters2 + mov al,31 + mov cx,60 + mov dx,11 + mov bl,68 + mov bh,64 + call setuptimeduse + ret +notsarters2: cmp location,24 + jnz notedenlob + mov al,32 + mov cx,60 + mov dx,3 + mov bl,68 + mov bh,64 + call setuptimeduse + ret +notedenlob: cmp location,34 + jnz noteden2 + mov al,33 + mov cx,60 + mov dx,3 + mov bl,68 + mov bh,64 + call setuptimeduse + ret +noteden2: ret + + endp + + + + + + + + +Entryanims proc near + + mov reeltowatch,-1 + mov watchmode,-1 + cmp location,33 + jnz notinthebeach + call switchryanoff + mov watchingtime,76*2 + mov reeltowatch,0 + mov endwatchreel,76 + mov watchspeed,1 + mov speedcount,1 + ret +notinthebeach: cmp location,44 + jnz notsparkys + mov al,8 + call resetlocation + mov watchingtime,50*2 + mov reeltowatch,247 + mov endwatchreel,297 + mov watchspeed,1 + mov speedcount,1 + call switchryanoff + ret +notsparkys: cmp location,22 + jnz notinthelift + mov watchingtime,31*2 + mov reeltowatch,0 + mov endwatchreel,30 + mov watchspeed,1 + mov speedcount,1 + call switchryanoff + ret +notinthelift: cmp location,26 + jnz notunderchurch + mov symboltopnum,2 + mov symbolbotnum,1 + ret +notunderchurch: cmp location,45 + jnz notenterdream + mov keeperflag,0 + mov watchingtime,296 + mov reeltowatch,45 + mov endwatchreel,198 + mov watchspeed,1 + mov speedcount,1 + call switchryanoff + ret +notenterdream: cmp reallocation,46 + jnz notcrystal + cmp sartaindead,1 + jnz notcrystal + mov al,0 + call removefreeobject + ret +notcrystal: cmp location,9 + jnz nottopchurch + mov al,2 + call checkifpathison + jz nottopchurch + cmp aidedead,0 + jz nottopchurch + mov al,3 + call checkifpathison + jnz makedoorsopen + mov al,2 + call turnpathon +makedoorsopen: mov al,4 + call removesetobject + mov al,5 + call placesetobject + ret +nottopchurch: cmp location,47 + jnz notdreamcentre + mov al,4 + call placesetobject + mov al,5 + call placesetobject + ret +notdreamcentre: cmp location,38 + jnz notcarpark + mov watchingtime,57*2 + mov reeltowatch,4 + mov endwatchreel,57 + mov watchspeed,1 + mov speedcount,1 + call switchryanoff + ret +notcarpark: cmp location,32 + jnz notalley + mov watchingtime,66*2 + mov reeltowatch,0 + mov endwatchreel,66 + mov watchspeed,1 + mov speedcount,1 + call switchryanoff + ret +notalley: cmp location,24 + jnz notedensagain + mov al,2 + mov ah,roomnum + dec ah + call turnanypathon +notedensagain: ret + + endp + + + + + + + if demo +Initialinv proc near + + mov al,11 + mov ah,5 + call pickupob + mov al,12 + mov ah,6 + call pickupob + mov al,13 + mov ah,7 + call pickupob + mov al,14 + mov ah,8 + call pickupob + mov al,18 + mov ah,0 + call pickupob + mov al,19 + mov ah,1 + call pickupob + mov al,20 + mov ah,9 + call pickupob + mov al,16 + mov ah,2 + call pickupob + + mov al,2 + mov ah,4 + call pickupob + + mov al,29 + mov ah,10 + call pickupob + mov al,33 + mov ah,11 + call pickupob + mov al,44 + mov ah,12 + call pickupob + mov card1money,12342 + ret + + endp + else +Initialinv proc near + + cmp reallocation,24 + jz isedens + ret + +isedens: mov al,11 + mov ah,5 + call pickupob + mov al,12 + mov ah,6 + call pickupob + mov al,13 + mov ah,7 + call pickupob + mov al,14 + mov ah,8 + call pickupob + mov al,18 + mov al,18 + mov ah,0 + call pickupob + mov al,19 + mov ah,1 + call pickupob + mov al,20 + mov ah,9 + call pickupob + mov al,16 + mov ah,2 + call pickupob + + mov watchmode,1 + mov reeltohold,0 + mov endofholdreel,6 + mov watchspeed,1 + mov speedcount,1 + call switchryanoff + ret + + endp + + endif + + + + + + + + + + + +Pickupob proc near + + mov lastinvpos,ah + mov objecttype,2 + mov itemframe,al + mov command,al + call getanyad + call transfertoex + ret + + endp + + + + + + + + + + + + + + + +;---------------------------------------------------------Memory allocation---- + + + + +Setupemm proc near + + cmp soundint,255 + jz noneedforemm + call checkforemm + + mov ah,43h ;allocate handle and 160 pages + mov bx,176 ;was 176 + int 67h + cmp ah,0 + jnz emmerror1 ;if there's an error drop to DOS + mov emmhandle,dx + mov ah,41h ;get the page frame base address + int 67h + cmp ah,0 + jnz emmerror1 + mov emmpageframe,bx + mov ax,bx + mov cl,12 + shr ax,cl + mov emmhardwarepage,al +noneedforemm: ret +emmerror1: mov gameerror,1 + jmp quickquit2 + + endp + + + + + + + + +Removeemm proc near + + cmp soundint,255 + jz noneedtoremove + mov ah,45h + mov dx,emmhandle + int 67h +noneedtoremove: ret + + endp + + + + + +Checkforemm proc near + + ret + + endp + + + + +Checkbasemem proc near + + mov bx,howmuchalloc + cmp bx,9360h + jnc enoughmem + mov gameerror,5 + jmp quickquit +enoughmem: ret + + endp + + + +Allocatebuffers proc near + + mov bx,lengthofextra/16 + call allocatemem + mov extras,ax + + call trysoundalloc + mov bx,lengthofmap/16 + call allocatemem + mov mapdata,ax + + call trysoundalloc + mov bx,lengthofbuffer/16 + call allocatemem + mov buffers,ax + + call trysoundalloc + mov bx,freedatlen/16 + call allocatemem + mov freedat,ax + + call trysoundalloc + mov bx,setdatlen/16 + call allocatemem + mov setdat,ax + + call trysoundalloc + mov bx,lenofmapstore/16 + call allocatemem + mov mapstore,ax + + if recording + mov bx,1028 + call allocatemem + mov recordspace,ax + endif + + if playback + mov bx,1028 + call allocatemem + mov recordspace,ax + endif + + call allocatework + + mov bx,2048/16 + call allocatemem + mov sounddata,ax + + mov bx,2048/16 + call allocatemem + mov sounddata2,ax + ret + + endp + + + + + + + + + + +Clearbuffers proc near + + mov es,buffers + mov cx,lengthofbuffer/2 + mov ax,0 + mov di,0 + rep stosw + + mov es,extras + mov cx,lengthofextra/2 + mov ax,0ffffh + mov di,0 + rep stosw + + mov es,buffers + mov di,initialreelrouts + push cs + pop ds + mov si,offset cs:reelroutines + mov cx,lenofreelrouts + rep movsb + + mov es,buffers + mov di,initialvars + push cs + pop ds + mov si,offset cs:startvars + mov cx,lengthofvars + rep movsb + call clearchanges + ret + + endp + + + + + + +Clearchanges proc near + + mov es,buffers + mov cx,numchanges*2 + mov ax,0ffffh + mov di,listofchanges + rep stosw + mov ds,buffers + mov si,initialreelrouts + push cs + pop es + mov di,offset cs:reelroutines + mov cx,lenofreelrouts + rep movsb + + mov ds,buffers + mov si,initialvars + push cs + pop es + mov di,offset cs:startvars + mov cx,lengthofvars + rep movsb + + mov expos,0 + mov exframepos,0 + mov extextpos,0 + mov es,extras + mov cx,lengthofextra/2 + mov ax,0ffffh + mov di,0 + rep stosw + + push cs + pop es + mov di,offset cs:roomscango + mov al,1 + stosb + stosb + mov al,0 + stosb + mov al,1 + stosb + mov ax,0 + mov cx,6 + rep stosw + ret + + endp + + + + + + + +Clearbeforeload proc near ;deallocates variable buffers + ;and clears out fixed ones + cmp roomloaded,1 + jnz noclear + call clearreels + call clearrest + mov roomloaded,0 +noclear: ret + + endp + + + +;Clearnoreels proc near +; +; cmp roomloaded,1 +; jnz noclear2 +; call clearrest +; mov roomloaded,0 +;noclear2: ret +; +; endp + + + + + + +Clearreels proc near + + mov es,reel1 + call deallocatemem + mov es,reel2 + call deallocatemem + mov es,reel3 + call deallocatemem + ret + + endp + + + +Clearrest proc near + + mov es,mapdata + mov cx,maplen/2 + mov ax,0 + mov di,map + rep stosw + + mov es,backdrop + call deallocatemem + mov es,setframes + call deallocatemem + mov es,reels + call deallocatemem + mov es,people + call deallocatemem + mov es,setdesc + call deallocatemem + mov es,blockdesc + call deallocatemem + mov es,roomdesc + call deallocatemem + mov es,freeframes + call deallocatemem + mov es,freedesc + call deallocatemem + ret + + endp + + + + + + +Deallocatemem proc near + + mov ah,49h + int 21h + jc deallerror + ret +deallerror: mov gameerror,4 + jmp quickquit2 + ret + + endp + + + + + + + + +Allocatemem proc near + + add bx,2 + mov ah,48h + int 21h + jc memerror + ret + +memerror: mov gameerror,3 + jmp quickquit2 + + endp + + + + +Seecommandtail proc near + + mov soundbaseadd,220h + mov soundint,5 + mov sounddmachannel,1 + mov brightness,0 + + mov bx,2 + mov ax,[es:bx] + mov dx,es + sub ax,dx + mov howmuchalloc,ax + + mov bx,02ch + mov ax,[es:bx] + push es bx + + mov es,ax + mov bx,0 +findblaster: mov ax,[es:bx] + cmp ax,0 + jz endofenvironment + cmp al,"B" + jnz notblast + cmp ah,"L" + jnz notblast + cmp byte ptr [es:bx+2],"A" + jnz notblast + cmp byte ptr [es:bx+3],"S" + jnz notblast + cmp byte ptr [es:bx+4],"T" + jnz notblast + cmp byte ptr [es:bx+5],"E" + jnz notblast + cmp byte ptr [es:bx+6],"R" + jnz notblast + add bx,7 + call parseblaster + jmp endofenvironment +notblast: inc bx + jmp findblaster + +endofenvironment: pop bx es + mov bx,81h + call parseblaster + ret + + endp + + + +Parseblaster proc near + +lookattail: mov al,[es:bx] + cmp al,0 + jz endtail + cmp al,13 + jz endtail + cmp al,"i" + jz issoundint + cmp al,"I" + jz issoundint + cmp al,"b" + jz isbright + cmp al,"B" + jz isbright + cmp al,"a" + jz isbaseadd + cmp al,"A" + jz isbaseadd + cmp al,"n" + jz isnosound + cmp al,"N" + jz isnosound + cmp al,"d" + jz isdma + cmp al,"D" + jz isdma + inc bx + loop lookattail + ret + +issoundint: mov al,[es:bx+1] + sub al,"0" + mov soundint,al + inc bx + jmp lookattail +isdma: mov al,[es:bx+1] + sub al,"0" + mov sounddmachannel,al + inc bx + jmp lookattail +isbaseadd: push cx + mov al,[es:bx+2] + sub al,"0" + mov ah,0 + mov cl,4 + shl ax,cl + add ax,200h + mov soundbaseadd,ax + pop cx + inc bx + jmp lookattail +isbright: mov brightness,1 + inc bx + jmp lookattail +isnosound: mov soundint,255 + inc bx + jmp lookattail +endtail: ret + + endp + + + + +;-------------------------------------------------------High level routines---- + +Startup proc near + + mov currentkey,0 + mov mainmode,0 + call createpanel + mov newobs,1 + call drawfloor + call showicon + call getunderzoom + call spriteupdate + call printsprites + call undertextline + call reelsonscreen + call atmospheres + ret + + endp + + + + +Startup1 proc near + + + call clearpalette + mov throughdoor,0 + mov currentkey,"0" + mov mainmode,0 + call createpanel + mov newobs,1 + call drawfloor + + call showicon + call getunderzoom + call spriteupdate + call printsprites + call undertextline + call reelsonscreen + call atmospheres + call worktoscreen + call fadescreenup + ret + + endp + + + + + + + + +;--------------------------------------------------Scroll location routines---- + + + + + +Screenupdate proc near + + call newplace + call mainscreen + call animpointer + call showpointer + cmp watchingtime,0 + jnz iswatchingmode + cmp newlocation,255 + jnz finishearly +iswatchingmode: call vsync + call readmouse1 + call dumppointer + call dumptextline + call delpointer + call autolook + call spriteupdate + call watchcount + call zoom + call showpointer + cmp wongame,0 + jnz finishearly + + call vsync + call readmouse2 + call dumppointer + call dumpzoom + call delpointer + call deleverything + call printsprites + call reelsonscreen + call afternewroom + call showpointer + + call vsync + call readmouse3 + call dumppointer + call dumpmap + call dumptimedtext + call delpointer + call showpointer + + call vsync + call readmouse4 + call dumppointer + call dumpwatch + call delpointer + +finishearly: ret + + endp + + + + + + + + + + + + + + + +Watchreel proc near + + cmp reeltowatch,-1 + jz notplayingreel + mov al,manspath + cmp al,finaldest + jnz waitstopwalk + mov al,turntoface + cmp al,facing + jz notwatchpath +waitstopwalk: ret + +notwatchpath: dec speedcount + cmp speedcount,-1 + jnz showwatchreel + mov al,watchspeed + mov speedcount,al + mov ax,reeltowatch + cmp ax,endwatchreel + jnz ismorereel + cmp watchingtime,0 + jnz showwatchreel + mov reeltowatch,-1 + mov watchmode,-1 + cmp reeltohold,-1 + jz nomorereel + mov watchmode,1 + jmp notplayingreel +ismorereel: inc reeltowatch +showwatchreel: mov ax,reeltowatch + mov reelpointer,ax + call plotreel + mov ax,reelpointer + mov reeltowatch,ax + call checkforshake +nomorereel: ret + + +notplayingreel: cmp watchmode,1 + jnz notholdingreel + mov ax,reeltohold + mov reelpointer,ax + call plotreel + ret + +notholdingreel: cmp watchmode,2 + jnz notreleasehold + dec speedcount + cmp speedcount,-1 + jnz notlastspeed2 + mov al,watchspeed + mov speedcount,al + inc reeltohold +notlastspeed2: mov ax,reeltohold + cmp ax,endofholdreel + jnz ismorereel2 + mov reeltohold,-1 + mov watchmode,-1 + mov al,destafterhold + mov destination,al + mov finaldest,al + call autosetwalk + ret +ismorereel2: mov ax,reeltohold + mov reelpointer,ax + call plotreel + ret + +notreleasehold: ret + + endp + + + + + +Checkforshake proc near + + cmp reallocation,26 + jnz notstartshake + cmp ax,104 + jnz notstartshake + mov shakecounter,-1 +notstartshake: ret + + endp + + + + + +Watchcount proc near + + cmp watchon,0 + jz nowatchworn + inc timercount + cmp timercount,9 + jz flashdots + cmp timercount,18 + jz uptime +nowatchworn: ret + +flashdots: mov ax,91*3+21 + mov di,268+4 + mov bx,21 + mov ds,charset1 + call showframe + jmp finishwatch + +uptime: mov timercount,0 + add secondcount,1 + cmp secondcount,60 + jnz finishtime + mov secondcount,0 + inc minutecount + cmp minutecount,60 + jnz finishtime + mov minutecount,0 + inc hourcount + cmp hourcount,24 + jnz finishtime + mov hourcount,0 + +finishtime: call showtime +finishwatch: mov watchdump,1 + ret + + endp + + + +Showtime proc near + + cmp watchon,0 + jz nowatch + + mov al,secondcount + mov cl,0 + call twodigitnum + push ax + mov al,ah + mov ah,0 + add ax,91*3+10 + mov ds,charset1 + mov di,282+5 + mov bx,21 + call showframe + pop ax + mov ah,0 + add ax,91*3+10 + mov ds,charset1 + mov di,282+9 + mov bx,21 + call showframe + + mov al,minutecount + mov cl,0 + call twodigitnum + push ax + mov al,ah + mov ah,0 + add ax,91*3 + mov ds,charset1 + mov di,270+5 + mov bx,21 + call showframe + pop ax + mov ah,0 + add ax,91*3 + mov ds,charset1 + mov di,270+11 + mov bx,21 + call showframe + + mov al,hourcount + mov cl,0 + call twodigitnum + push ax + mov al,ah + mov ah,0 + add ax,91*3 + mov ds,charset1 + mov di,256+5 + mov bx,21 + call showframe + pop ax + mov ah,0 + add ax,91*3 + mov ds,charset1 + mov di,256+11 + mov bx,21 + call showframe + + mov ax,91*3+20 + mov ds,charset1 + mov di,267+5 + mov bx,21 + call showframe +nowatch: ret + + + endp + + + + +Dumpwatch proc near + + cmp watchdump,1 + jnz nodumpwatch + mov di,256 + mov bx,21 + mov cl,40 + mov ch,12 + call multidump + mov watchdump,0 +nodumpwatch: ret + + endp + + + + +Showbyte proc near + + mov dl,al + shr dl,1 + shr dl,1 + shr dl,1 + shr dl,1 + call onedigit + mov [es:di],dl + mov dl,al + and dl,15 + call onedigit + mov [es:di+1],dl + add di,3 + ret + + endp + + +Onedigit proc near + + cmp dl,10 + jnc morethan10 + add dl,"0" + ret +morethan10: sub dl,10 + add dl,"A" + ret + + endp + + + + + +Twodigitnum proc near + + mov ah,cl + dec ah +numloop1: inc ah + sub al,10 + jnc numloop1 + add al,10 + add al,cl + ret + + endp + + + + + +Showword proc near + + mov ch,0 + mov bx,10000 + mov cl,47 +word1: inc cl + sub ax,bx + jnc word1 + add ax,bx + call convnum + mov [cs:di],cl + mov bx,1000 + mov cl,47 +word2: inc cl + sub ax,bx + jnc word2 + add ax,bx + call convnum + mov [cs:di+1],cl + mov bx,100 + mov cl,47 +word3: inc cl + sub ax,bx + jnc word3 + add ax,bx + call convnum + mov [cs:di+2],cl + mov bx,10 + mov cl,47 +word4: inc cl + sub ax,bx + jnc word4 + add ax,bx + call convnum + mov [cs:di+3],cl + add al,48 + mov cl,al + call convnum + mov [cs:di+4],cl + ret + + endp + + + + +Convnum proc near + + cmp ch,0 + jnz noconvnum + cmp cl,"0" + jnz notzeronum + mov cl,32 + jmp noconvnum +notzeronum: mov ch,1 +noconvnum: ret + + endp + + + + + + + + +;---------------------------------------------Handling of pointer on screen---- + +Mainscreen proc near + + mov inmaparea,0 + mov bx,offset cs:mainlist + cmp watchon,1 + jz checkmain + mov bx,offset cs:mainlist2 +checkmain: call checkcoords + cmp walkandexam,0 + jz finishmain + call walkandexamine +finishmain: ret + +mainlist: dw 44,70,32,46,look + dw 0,50,0,180,inventory + dw 226,244,10,26,zoomonoff + dw 226,244,26,40,saveload + dw 240,260,100,124,madmanrun + dw 0,320,0,200,identifyob + dw 0ffffh + +mainlist2: dw 44,70,32,46,look + dw 0,50,0,180,inventory + dw 226+48,244+48,10,26,zoomonoff + dw 226+48,244+48,26,40,saveload + dw 240,260,100,124,madmanrun + dw 0,320,0,200,identifyob + dw 0ffffh + + endp + + + + + + +Madmanrun proc near + + cmp location,14 + jnz identifyob + cmp mapx,22 + jnz identifyob + cmp pointermode,2 + jnz identifyob + cmp madmanflag,0 + jnz identifyob + + cmp commandtype,211 + jz alreadyrun + mov commandtype,211 + mov al,52 + call commandonly +alreadyrun: cmp mousebutton,1 + jnz norun + mov ax,mousebutton + cmp ax,oldbutton + jz norun + mov lastweapon,8 +norun: ret + + endp + + + + + + +Checkcoords proc near + +loop048: mov ax,[cs:bx] + cmp ax,0ffffh + jz nonefound + push bx + cmp mousex,ax + jl over045 + mov ax,[cs:bx+2] + cmp mousex,ax + jge over045 + mov ax,[cs:bx+4] + cmp mousey,ax + jl over045 + mov ax,[cs:bx+6] + cmp mousey,ax + jge over045 + mov ax,[cs:bx+8] + call ax +finished: pop ax + ret +over045: pop bx + add bx,10 + jmp loop048 +nonefound: ret + + endp + + + + + +;-------------------------------------------Printing of icons during scroll---- + + + + + +Identifyob proc near + + cmp watchingtime,0 + jnz blank + + mov ax,mousex + sub ax,mapadx + cmp ax,22*8 + jc notover1 + call blank + ret + +notover1: mov bx,mousey + sub bx,mapady + cmp bx,20*8 + jc notover2 + call blank + ret + +notover2: mov inmaparea,1 + mov ah,bl + push ax + call findpathofpoint + mov pointerspath,dl + pop ax + push ax + call findfirstpath + mov pointerfirstpath,al + pop ax + + call checkifex + jnz finishidentify + call checkiffree + jnz finishidentify + call checkifperson + jnz finishidentify + call checkifset + jnz finishidentify + + mov ax,mousex + sub ax,mapadx + mov cl,al + mov ax,mousey + sub ax,mapady + mov ch,al + call checkone + cmp al,0 + jz nothingund + ;cmp watchingtime,0 + ;jnz nothingund + cmp mandead,1 + jz nothingund + mov ah,3 + call obname +finishidentify: ret + +nothingund: call blank + ret + + endp + + + + + + + + +Checkifperson proc near + + mov es,buffers + mov bx,peoplelist + mov cx,12 +identifyreel: push cx + + cmp byte ptr [es:bx+4],255 + jz notareelid + + push es bx ax + mov ax,[es:bx+0] + mov reelpointer,ax + call getreelstart + cmp [es:si+2],0ffffh + jnz notblankpers + add si,5 +notblankpers: mov cx,[es:si+2] ;x,y of reel slot + mov ax,[es:si+0] ;frame number + push cx + call getreelframeax + pop cx + add cl,[es:bx+4] + add ch,[es:bx+5] + mov dx,cx + add dl,[es:bx+0] + add dh,[es:bx+1] + pop ax bx es + + cmp al,cl + jc notareelid + cmp ah,ch + jc notareelid + cmp al,dl + jnc notareelid + cmp ah,dh + jnc notareelid + + pop cx + mov ax,[es:bx+2] + mov persondata,ax + mov al,[es:bx+4] + mov ah,5 + call obname + mov al,0 + cmp al,1 + ret + +notareelid: pop cx + add bx,5 + dec cx + jnz identifyreel + ret + + endp + + + + + + + + +Checkifset proc near + + mov es,buffers + mov bx,setlist+(127*5) + mov cx,127 +identifyset: cmp byte ptr [es:bx+4],255 + jz notasetid + cmp al,[es:bx] + jc notasetid + cmp al,[es:bx+2] + jnc notasetid + cmp ah,[es:bx+1] + jc notasetid + cmp ah,[es:bx+3] + jnc notasetid + call pixelcheckset + jz notasetid + call isitdescribed + jz notasetid + mov al,[es:bx+4] + mov ah,1 + call obname + mov al,0 + cmp al,1 + ret +notasetid: sub bx,5 + dec cx + cmp cx,-1 + jnz identifyset + ret + + endp + + + + + + + + + + +Checkifex proc near + + mov es,buffers + mov bx,exlist+(99*5) + mov cx,99 +identifyex: cmp byte ptr [es:bx+4],255 + jz notanexid + cmp al,[es:bx] + jc notanexid + cmp al,[es:bx+2] + jnc notanexid + cmp ah,[es:bx+1] + jc notanexid + cmp ah,[es:bx+3] + jnc notanexid + mov al,[es:bx+4] + mov ah,4 + call obname + mov al,1 + cmp al,0 + ret +notanexid: sub bx,5 + dec cx + cmp cx,-1 + jnz identifyex + ret + + endp + + + + + + +Checkiffree proc near + + mov es,buffers + mov bx,freelist+(79*5) + mov cx,79 +identifyfree: cmp byte ptr [es:bx+4],255 + jz notafreeid + cmp al,[es:bx] + jc notafreeid + cmp al,[es:bx+2] + jnc notafreeid + cmp ah,[es:bx+1] + jc notafreeid + cmp ah,[es:bx+3] + jnc notafreeid + mov al,[es:bx+4] + mov ah,2 + call obname + mov al,0 + cmp al,1 + ret +notafreeid: sub bx,5 + dec cx + cmp cx,-1 + jnz identifyfree + ret + + endp + + + + + + +Isitdescribed proc near + + push ax cx es bx + mov al,[es:bx+4] ;get object number + mov ah,0 + add ax,ax + mov bx,ax + mov es,setdesc + add bx,settextdat + mov ax,[es:bx] + add ax,settext + mov bx,ax + mov dl,[es:bx] + pop bx es cx ax + cmp dl,0 + ret + + endp + + + + + + + + +;Getcurrentpath proc near ;routine finds out which path +; ;block the pointer is in. +; push ax ;used to see if an object is +; call findpathofpoint ;close or not +; pop ax +; mov pointerspath,dl +; ret +; +; endp + + + + + +Findpathofpoint proc near + + push ax + mov bx,pathdata + mov es,reels + mov al,roomnum + mov ah,0 + mov cx,144 + mul cx + add bx,ax + pop cx + + mov dl,0 +pathloop: mov al,[es:bx+6] + cmp al,255 + jnz flunkedit + mov ax,[es:bx+2] + cmp ax,0ffffh + jz flunkedit + cmp cl,al + jc flunkedit + cmp ch,ah + jc flunkedit + mov ax,[es:bx+4] + cmp cl,al + jnc flunkedit + cmp ch,ah + jnc flunkedit + jmp gotvalidpath +flunkedit: add bx,8 + inc dl + cmp dl,12 + jnz pathloop + mov dl,255 +gotvalidpath: ret + + endp + + + + + +Findfirstpath proc near ;similar to last routine, but it + ;searches each path to see if + push ax ;pointer is within it, regardless + mov bx,pathdata ;of whether the path is on or off + mov es,reels ;it returns the on or off state in + mov al,roomnum ;al (255=on 0=off) 0 if no path + mov ah,0 + mov cx,144 + mul cx + add bx,ax + pop cx + + mov dl,0 +fpathloop: mov ax,[es:bx+2] + cmp ax,0ffffh + jz nofirst + cmp cl,al + jc nofirst + cmp ch,ah + jc nofirst + mov ax,[es:bx+4] + cmp cl,al + jnc nofirst + cmp ch,ah + jnc nofirst + jmp gotfirst +nofirst: add bx,8 + inc dl + cmp dl,12 + jnz fpathloop + mov al,0 + ret +gotfirst: mov al,[es:bx+6] + ret + + endp + + + + + + + + +Turnpathon proc near ;turns path on permanently + + push ax ax + mov cl,255 + mov ch,roomnum + add ch,100 + call findormake + pop ax + call getroomspaths + pop ax + cmp al,255 + jz nopathon + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov al,255 + mov [es:bx+6],al +nopathon: ret + + endp + + + + + + + +Turnpathoff proc near ;turns path on permanently + + push ax ax + mov cl,0 + mov ch,roomnum + add ch,100 + call findormake + pop ax + call getroomspaths + pop ax + cmp al,255 + jz nopathoff + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov al,0 + mov [es:bx+6],al +nopathoff: ret + + endp + + + + + + + + + + + + + + + +Turnanypathon proc near + + push ax ax + mov cl,255 + mov ch,ah + add ch,100 + call findormake + pop ax + mov al,ah + mov ah,0 + mov cx,144 + mul cx + mov es,reels + mov bx,pathdata + add bx,ax + pop ax + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov al,255 + mov [es:bx+6],al + ret + + endp + + + + + + +Turnanypathoff proc near + + push ax ax + mov cl,0 + mov ch,ah + add ch,100 + call findormake + pop ax + mov al,ah + mov ah,0 + mov cx,144 + mul cx + mov es,reels + mov bx,pathdata + add bx,ax + pop ax + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov al,0 + mov [es:bx+6],al + ret + + endp + + + + + +Checkifpathison proc near + + push ax + call getroomspaths + pop ax + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov al,[es:bx+6] + cmp al,255 + ret + + endp + + + + + +Afternewroom proc near + + cmp nowinnewroom,0 + jz notnew + mov timecount,0 + call createpanel + mov commandtype,0 + call findroominloc + + cmp ryanon,1 + jz ryansoff + + mov al,ryanx + add al,12 + mov ah,ryany + add ah,12 + call findpathofpoint + mov manspath,dl + call findxyfrompath + mov resetmanxy,1 + +ryansoff: mov newobs,1 + call drawfloor + mov lookcounter,160 + mov nowinnewroom,0 + + call showicon + call spriteupdate + call printsprites + call undertextline + call reelsonscreen + call mainscreen + call getunderzoom + call zoom + call worktoscreenm + call walkintoroom + call reminders + call atmospheres +notnew: ret + + endp + + + + + + +Atmospheres proc near + + mov cl,mapx + mov ch,mapy + mov bx,offset cs:atmospherelist +nextatmos: mov al,[cs:bx] + cmp al,255 + jz nomoreatmos + cmp al,reallocation + jnz wrongatmos + mov ax,[cs:bx+1] + cmp ax,cx + jnz wrongatmos + mov ax,[cs:bx+3] + cmp al,ch0playing + jz playingalready + cmp location,45 + jnz notweb + cmp reeltowatch,45 + jz wrongatmos +notweb: call playchannel0 + cmp reallocation,2 + cmp mapy,0 + jz fullvol + jnz notlouisvol + cmp mapy,10 + jnz notlouisvol + cmp mapx,22 + jnz notlouisvol + mov volume,5 +notlouisvol: if cd + cmp reallocation,14 + jnz notmad1 + cmp mapx,33 + jz ismad2 + cmp mapx,22 + jnz notmad1 + mov volume,5 + ret +ismad2: mov volume,0 + ret +notmad1: endif +playingalready: cmp reallocation,2 + jnz notlouisvol2 + cmp mapx,22 + jz louisvol + cmp mapx,11 + jnz notlouisvol2 +fullvol: mov volume,0 +notlouisvol2: ret +louisvol: mov volume,5 + ret +wrongatmos: add bx,5 + jmp nextatmos +nomoreatmos: call cancelch0 + ret + +atmospherelist: db 0,33,10,15,255 + db 0,22,10,15,255 + db 0,22,0,15,255 + db 0,11,0,15,255 + db 0,11,10,15,255 + db 0,0,10,15,255 + + db 1,44,10,6,255 ;location,map x,y,sound,repeat + db 1,44,0,13,255 + + db 2,33,0,6,255 + db 2,22,0,5,255 + db 2,22,10,16,255 + db 2,11,10,16,255 + + db 3,44,0,15,255 + db 3,33,10,6,255 + db 3,33,0,5,255 + + db 4,11,30,6,255 + db 4,22,30,5,255 + db 4,22,20,13,255 + + db 10,33,30,6,255 + db 10,22,30,6,255 + + db 9,22,10,6,255 + db 9,22,20,16,255 + db 9,22,30,16,255 + db 9,22,40,16,255 + db 9,22,50,16,255 + + db 6,11,30,6,255 + db 6,0,10,15,255 + db 6,0,20,15,255 + db 6,11,20,15,255 + db 6,22,20,15,255 + + db 7,11,20,6,255 + db 7,0,20,6,255 + db 7,0,30,6,255 + + db 55,44,0,5,255 + db 55,44,10,5,255 + + db 5,22,30,6,255 + if demo + db 5,22,20,16,255 + db 5,22,10,16,255 + else + db 5,22,20,15,255 + db 5,22,10,15,255 + endif + + db 24,22,0,15,255 + db 24,33,0,15,255 + db 24,44,0,15,255 + db 24,33,10,15,255 + + db 8,0,10,6,255 + db 8,11,10,6,255 + db 8,22,10,6,255 + db 8,33,10,6,255 + db 8,33,20,6,255 + db 8,33,30,6,255 + db 8,33,40,6,255 + db 8,22,40,6,255 + db 8,11,40,6,255 + + db 11,11,20,12,255 + db 11,11,30,12,255 + db 11,22,20,12,255 + db 11,22,30,12,255 + + db 12,22,20,12,255 + db 13,22,20,12,255 + db 13,33,20,12,255 + + db 14,44,20,12,255 + db 14,33,0,12,255 + db 14,33,10,12,255 + db 14,33,20,12,255 + db 14,33,30,12,255 + db 14,33,40,12,255 + db 14,22,0,16,255 + + db 19,0,0,12,255 + + db 20,0,20,16,255 + db 20,0,30,16,255 + db 20,11,30,16,255 + db 20,0,40,16,255 + db 20,11,40,16,255 + + if demo + db 21,11,10,16,255 + db 21,11,20,16,255 + db 21,0,20,16,255 + db 21,22,20,16,255 + db 21,33,20,16,255 + db 21,44,20,16,255 + db 21,44,10,16,255 + else + db 21,11,10,15,255 + db 21,11,20,15,255 + db 21,0,20,15,255 + db 21,22,20,15,255 + db 21,33,20,15,255 + db 21,44,20,15,255 + db 21,44,10,15,255 + endif + + db 22,22,10,16,255 + db 22,22,20,16,255 + + db 23,22,30,13,255 + db 23,22,40,13,255 + db 23,33,40,13,255 + db 23,11,40,13,255 + db 23,0,40,13,255 + db 23,0,50,13,255 + + db 25,11,40,16,255 + db 25,11,50,16,255 + db 25,0,50,16,255 + + db 27,11,20,16,255 + db 27,11,30,16,255 + + db 29,11,10,16,255 + + db 45,22,30,12,255 + db 45,22,40,12,255 + db 45,22,50,12,255 + + db 46,22,40,12,255 + db 46,11,50,12,255 + db 46,22,50,12,255 + db 46,33,50,12,255 + + db 47,0,0,12,255 + + db 26,22,20,16,255 + db 26,33,10,16,255 + db 26,33,20,16,255 + db 26,33,30,16,255 + db 26,44,30,16,255 + db 26,22,30,16,255 + db 26,11,30,16,255 + db 26,11,20,16,255 + db 26,0,20,16,255 + db 26,11,40,16,255 + db 26,0,40,16,255 + db 26,22,40,16,255 + db 26,11,50,16,255 + + db 28,0,30,15,255 + db 28,0,20,15,255 + db 28,0,40,15,255 + db 28,11,30,15,255 + db 28,11,20,15,255 + db 28,22,30,15,255 + db 28,22,20,15,255 + + db 255 + + endp + + + + + + +Walkintoroom proc near + + cmp location,14 + jnz notlair + cmp mapx,22 + jnz notlair + mov destination,1 + mov finaldest,1 + call autosetwalk +notlair: ret + + endp + + + + + + + + + + + + +Afterintroroom proc near + + cmp nowinnewroom,0 + jz notnewintro + call clearwork + call findroominloc + mov newobs,1 + call drawfloor + call reelsonscreen + call spriteupdate + call printsprites + call worktoscreen + mov nowinnewroom,0 +notnewintro: ret + + endp + + + + + + + + + + + +Obname proc near + + cmp reasseschanges,0 + jz notnewpath + mov reasseschanges,0 + jmp diff + +notnewpath: cmp ah,commandtype + jz notdiffob + jmp diff +notdiffob: cmp al,command + jnz diff + cmp walkandexam,1 + jz walkandexamine + cmp mousebutton,0 + jz noobselect + cmp commandtype,3 + jnz isntblock + cmp lastflag,2 + jc noobselect +isntblock: mov bl,manspath + cmp bl,pointerspath + jnz wantstowalk + cmp commandtype,3 + jz wantstowalk + call finishedwalking + jnz noobselect + cmp commandtype,5 + jz wantstotalk + cmp watchingtime,0 + jnz noobselect + call examineob + ret +wantstotalk: cmp watchingtime,0 + jnz noobselect + call talk + ret +walkandexamine: call finishedwalking + jnz noobselect + mov al,walkexamtype + mov commandtype,al + mov al,walkexamnum + mov command,al + mov walkandexam,0 + cmp commandtype,5 + jz noobselect + call examineob + ret +wantstowalk: call setwalk + mov reasseschanges,1 +noobselect: ret + + +diff: mov command,al + mov commandtype,ah +diff2: cmp linepointer,254 + jnz middleofwalk + cmp watchingtime,0 + jnz middleofwalk + mov al,facing + cmp al,turntoface + jnz middleofwalk + cmp commandtype,3 + jnz notblock + mov bl,manspath + cmp bl,pointerspath + jnz dontcheck + mov cl,ryanx ;look under feet to see if + add cl,12 ;any flags are there + mov ch,ryany + add ch,12 + call checkone + cmp cl,2 + jc isblock +dontcheck: call getflagunderp + cmp lastflag,2 + jc isblock + cmp lastflag,128 + jnc isblock + jmp toofaraway ; only here for turning on doorstep +notblock: mov bl,manspath + cmp bl,pointerspath + jnz toofaraway + cmp commandtype,3 + jz isblock + cmp commandtype,5 + jz isaperson + call examineobtext + ret +middleofwalk: call blocknametext + ret +isblock: call blocknametext + ret +isaperson: call personnametext + ret +toofaraway: call walktotext + ret + + endp + + + + + + + +Finishedwalking proc near + + cmp linepointer,254 + jnz iswalking + mov al,facing + cmp al,turntoface +iswalking: ret + + endp + + + + + + + +Examineobtext proc near + + mov bl,command + mov bh,commandtype + mov al,1 + call commandwithob + ret + + endp + + + + + +Commandwithob proc near + + push ax + push ax bx cx dx es ds si di + call deltextline + pop di si ds es dx cx bx ax + + push bx + mov ah,0 + add ax,ax + mov bx,ax + mov es,commandtext + mov ax,[es:bx] + add ax,textstart + mov si,ax + + mov di,textaddressx + mov bx,textaddressy + mov dl,textlen + mov al,0 + mov ah,0 + call printdirect + + pop ax + mov di,offset cs:commandline + call copyname + pop ax + + mov di,lastxpos + cmp al,0 + jz noadd + add di,5 +noadd: mov bx,textaddressy + push cs + pop es + mov si,offset cs:commandline + mov dl,textlen + mov al,0 + mov ah,0 + call printdirect + mov newtextline,1 + ret + +commandline: db "OBJECT NAME ONE ",0 + + endp + + + + +Commandonly proc near + + push ax bx cx dx es ds si di + call deltextline + pop di si ds es dx cx bx ax + + mov ah,0 + add ax,ax + mov bx,ax + mov es,commandtext + mov ax,[es:bx] + add ax,textstart + mov si,ax + + mov di,textaddressx + mov bx,textaddressy + mov dl,textlen + mov al,0 + mov ah,0 + call printdirect + mov newtextline,1 + ret + + endp + + + + + +Printmessage proc near + + push dx bx di + mov ah,0 + add ax,ax + mov bx,ax + mov es,commandtext + mov ax,[es:bx] + add ax,textstart + mov si,ax + pop di bx dx + mov al,0 + mov ah,0 + call printdirect + ret + + endp + + + +Printmessage2 proc near + + push dx bx di + push ax + mov ah,0 + add ax,ax + mov bx,ax + mov es,commandtext + mov ax,[es:bx] + add ax,textstart + mov si,ax + pop ax + +searchmess: push ax + call findnextcolon + pop ax + dec ah + jnz searchmess + + pop di bx dx + mov al,0 + mov ah,0 + call printdirect + ret + + endp + + + + + + + + + +Blocknametext proc near + + mov bl,command + mov bh,commandtype + mov al,0 + call commandwithob + ret + + endp + + + + +Personnametext proc near + + mov bl,command + and bl,127 + mov bh,commandtype + mov al,2 + call commandwithob + ret + + endp + + + + + + + +Walktotext proc near + + mov bl,command + mov bh,commandtype + mov al,3 + call commandwithob + ret + + endp + + + + + +Getflagunderp proc near + + mov cx,mousex + sub cx,mapadx + mov ax,mousey + sub ax,mapady + mov ch,al + call checkone + mov lastflag,cl + mov lastflagex,ch + ret + + endp + + + + + +Setwalk proc near + + cmp linepointer,254 + jnz alreadywalking + mov al,pointerspath + cmp al,manspath + jz cantwalk2 + cmp watchmode,1 + jz holdingreel + cmp watchmode,2 + jz cantwalk + mov destination,al + mov finaldest,al + cmp mousebutton,2 + jnz notwalkandexam + cmp commandtype,3 + jz notwalkandexam + mov walkandexam,1 + mov al,commandtype + mov walkexamtype,al + mov al,command + mov walkexamnum,al +notwalkandexam: call autosetwalk +cantwalk: ret +cantwalk2: call facerightway + ret +alreadywalking: mov al,pointerspath + mov finaldest,al + ret + +holdingreel: mov destafterhold,al + mov watchmode,2 + ret + + endp + + + + + + + +Autosetwalk proc near + + mov al,manspath + cmp finaldest,al + jnz notsamealready + ret +notsamealready: call getroomspaths + call checkdest + push bx + mov al,manspath + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov al,[es:bx] + mov ah,0 + sub ax,12 + mov linestartx,ax + mov al,[es:bx+1] + mov ah,0 + sub ax,12 + mov linestarty,ax + pop bx + + mov al,destination + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov al,[es:bx] + mov ah,0 + sub ax,12 + mov lineendx,ax + mov al,[es:bx+1] + mov ah,0 + sub ax,12 + mov lineendy,ax + call bresenhams + + cmp linedirection,0 + jz normalline + mov al,linelength + dec al + mov linepointer,al + mov linedirection,1 + ret + +normalline: mov linepointer,0 + ret + + endp + + + + + + + + +Checkdest proc near + + push bx + add bx,12*8 + mov ah,manspath + mov cl,4 + shl ah,cl + mov al,destination + + mov cl,24 + mov ch,destination +checkdestloop: mov dh,[es:bx] + and dh,11110000b + mov dl,[es:bx] + and dl,00001111b + cmp ax,dx + jnz nextcheck + mov al,[es:bx+1] + and al,15 + mov destination,al + pop bx + ret +nextcheck: mov dl,[es:bx] + and dl,11110000b + shr dl,1 + shr dl,1 + shr dl,1 + shr dl,1 + mov dh,[es:bx] + and dh,00001111b + shl dh,1 + shl dh,1 + shl dh,1 + shl dh,1 + cmp ax,dx + jnz nextcheck2 + mov ch,[es:bx+1] + and ch,15 +nextcheck2: add bx,2 + dec cl + jnz checkdestloop + mov destination,ch + pop bx + ret + + endp + + + + + + + + + + + + + + +Bresenhams proc near + + call workoutframes + + mov dx,seg linedata + mov es,dx + mov di,offset es:linedata + mov si,1 + mov linedirection,0 + + mov cx,lineendx + sub cx,linestartx + jz vertline + jns line1 + + neg cx + mov bx,lineendx + xchg bx,linestartx + mov lineendx,bx + + mov bx,lineendy + xchg bx,linestarty + mov lineendy,bx + mov linedirection,1 + +line1: mov bx,lineendy + sub bx,linestarty + jz horizline + jns line3 + + neg bx + neg si + +line3: push si + mov lineroutine,0 ; means lo slope + cmp bx,cx + jle line4 + mov lineroutine,1 ; means hi slope + xchg bx,cx + +line4: shl bx,1 + mov increment1,bx + sub bx,cx + mov si,bx + sub bx,cx + mov increment2,bx + + mov ax,linestartx + mov bx,linestarty + mov ah,bl + inc cx + pop bx + cmp lineroutine,1 + jz hislope + jmp loslope + +vertline: mov ax,linestarty + mov bx,lineendy + mov cx,bx + sub cx,ax + jge line31 + + neg cx + mov ax,bx + mov linedirection,1 + +line31: inc cx + mov bx,linestartx + xchg ax,bx + mov ah,bl + mov bx,si +line32: stosw + add ah,bl + loop line32 + jmp lineexit + + +horizline: mov ax,linestartx + mov bx,linestarty + mov ah,bl + inc cx +horizloop: stosw + inc al + loop horizloop + jmp lineexit + + +loslope: +loloop: stosw + inc al + or si,si + jns line12 + add si,increment1 + loop loloop + jmp lineexit + +line12: add si,increment2 + add ah,bl + loop loloop + jmp lineexit + + + +hislope: +hiloop: stosw + add ah,bl + or si,si + jns line23 + add si,increment1 + loop hiloop + jmp lineexit + +line23: add si,increment2 + inc al + loop hiloop + +lineexit: sub di,offset es:linedata + mov ax,di + shr ax,1 + mov linelength,al + ret + + endp + + + + + + + +Workoutframes proc near + + mov bx,linestartx + add bx,32 + mov ax,lineendx + add ax,32 + sub bx,ax + jnc notneg1 + neg bx +notneg1: mov cx,linestarty + add cx,32 + mov ax,lineendy + add ax,32 + sub cx,ax + jnc notneg2 + neg cx +notneg2: cmp bx,cx + jnc tendstohoriz + mov dl,2 + mov ax,cx + shr ax,1 + cmp bx,ax + jc gotquad + mov dl,1 + jmp gotquad +tendstohoriz: mov dl,0 + mov ax,bx + shr ax,1 + cmp cx,ax + jc gotquad + mov dl,1 + jmp gotquad + +gotquad: mov bx,linestartx + add bx,32 + mov ax,lineendx + add ax,32 + sub bx,ax + jc isinright +isinleft: mov cx,linestarty + add cx,32 + mov ax,lineendy + add ax,32 + sub cx,ax + jnc topleft + cmp dl,1 + jz noswap1 + xor dl,2 +noswap1: add dl,4 + jmp success +topleft: add dl,6 + jmp success + +isinright: mov cx,linestarty + add cx,32 + mov ax,lineendy + add ax,32 + sub cx,ax + jnc botright + add dl,2 + jmp success +botright: cmp dl,1 + jz noswap2 + xor dl,2 +noswap2: + +success: and dl,7 + mov turntoface,dl + mov turndirection,0 + ret + + endp + + + + + + + + + + + + + + + + + + +;Multiply8 proc near +; +; mov ah,0 +; mov cx,8 +; mul cx +; ret +; +; endp + + + + + + +Getroomspaths proc near + + mov al,roomnum + mov ah,0 + mov cx,144 + mul cx + mov es,reels + mov bx,pathdata + add bx,ax + ret + + endp + + + + + + + + + + + + + + + + +Copyname proc near + + push di + call findobname + pop di + push cs + pop es + +copytext: mov cx,28 +make: lodsb + cmp al,":" + jz finishmakename + cmp al,0 + jz finishmakename + stosb + loop make + +finishmakename: inc cx + mov al,0 + stosb + ret + mov al,255 + rep stosb + ret + + endp + + + + + + + + + +Findobname proc near + + push ax + mov ah,0 + add ax,ax + mov bx,ax + pop ax + + cmp ah,5 + jnz notpersonname + + push ax + and al,127 + mov ah,0 + mov bx,64*2 + mul bx + mov si,ax + mov ds,people + add si,persontxtdat + mov cx,persontext + mov ax,[si] + add ax,cx + mov si,ax + pop ax + ret + +notpersonname: cmp ah,4 + jnz notextraname + mov ds,extras + add bx,extextdat + mov ax,[bx] + add ax,extext + mov si,ax + ret + +notextraname: cmp ah,2 + jnz notfreename + mov ds,freedesc + add bx,freetextdat + mov ax,[bx] + add ax,freetext + mov si,ax + ret + +notfreename: cmp ah,1 + jnz notsetname + mov ds,setdesc + add bx,settextdat + mov ax,[bx] + add ax,settext + mov si,ax + ret + +notsetname: mov ds,blockdesc + add bx,blocktextdat + mov ax,[bx] + add ax,blocktext + mov si,ax + ret + + endp + + + + + + + + + + + + + +;-------------------------------------------Printing of non scrolling icons---- + +Showicon proc near + + cmp reallocation,50 + jnc isdream1 + call showpanel + call showman + call roomname + call panelicons1 + call zoomicon + ret + +isdream1: mov ds,tempsprites + mov di,72 + mov bx,2 + mov al,45 + mov ah,0 + call showframe + mov ds,tempsprites + mov di,72+47 + mov bx,2 + mov al,46 + mov ah,0 + call showframe + mov ds,tempsprites + mov di,69-10 + mov bx,21 + mov al,49 + mov ah,0 + call showframe + + mov ds,tempsprites + mov di,160+88 + mov bx,2 + mov al,45 + mov ah,4 + call showframe + mov ds,tempsprites + mov di,160+43 + mov bx,2 + mov al,46 + mov ah,4 + call showframe + mov ds,tempsprites + mov di,160+101 + mov bx,21 + mov al,49 + mov ah,4 + call showframe + call middlepanel + ret + + endp + + + + + +Middlepanel proc near + + mov ds,tempsprites + mov di,72+47+20 + mov bx,0 + mov al,48 + mov ah,0 + call showframe + mov ds,tempsprites + mov di,72+19 + mov bx,21 + mov al,47 + mov ah,0 + call showframe + mov ds,tempsprites + mov di,160+23 + mov bx,0 + mov al,48 + mov ah,4 + call showframe + mov ds,tempsprites + mov di,160+71 + mov bx,21 + mov al,47 + mov ah,4 + call showframe + ret + + endp + + + + + + + + + + +Showman proc near + + mov ds,icons1 + mov di,0 + mov bx,0 + mov al,0 + mov ah,0 + call showframe + mov ds,icons1 + mov di,0 + mov bx,114 + mov al,1 + mov ah,0 + call showframe + + cmp shadeson,0 + jz notverycool + + mov ds,icons1 + mov di,28 + mov bx,25 + mov al,2 + mov ah,0 + call showframe +notverycool: ret + + endp + + + + + + + + + + + + + + + + + + + +Showpanel proc near + + mov ds,icons1 + mov di,72 + mov bx,0 + mov al,19 + mov ah,0 + call showframe + mov ds,icons1 + mov di,192 + mov bx,0 + mov al,19 + mov ah,0 + call showframe + ret + + endp + + + + + + + + + + + + + + + + + + + + + + +Roomname proc near + + mov di,88 + mov bx,18 + mov al,53 + mov dl,240 + call printmessage + + mov bl,roomnum + cmp bl,32 + jc notover32 + sub bl,32 + +notover32: mov bh,0 + add bx,bx + mov es,roomdesc + add bx,intextdat + mov ax,[es:bx] + add ax,intext + mov si,ax + + mov linespacing,7 + mov di,88 + mov bx,25 + mov dl,120 + cmp watchon,1 + jz gotpl + mov dl,160 +gotpl: mov al,0 + mov ah,0 + call printdirect + mov linespacing,10 + + call usecharset1 + ret + + endp + + + + + + +Usecharset1 proc near + + mov ax,charset1 + mov currentset,ax + ret + + endp + + + + + + + + + + + +Usetempcharset proc near + + mov ax,tempcharset + mov currentset,ax + ret + + endp + + + + + +Showexit proc near + + mov ds,icons1 + mov di,274 + mov bx,154 + mov al,11 + mov ah,0 + call showframe + ret + + endp + + + + +Panelicons1 proc near + + mov di,0 + cmp watchon,1 + jz watchison + mov di,48 +watchison: push di + mov ds,icons2 + add di,204 + mov bx,4 + mov al,2 + mov ah,0 + call showframe + pop di + push di + cmp zoomon,1 + jz zoomisoff + mov ds,icons1 + add di,228 + mov bx,8 + mov al,5 + mov ah,0 + call showframe +zoomisoff: pop di + call showwatch + ret + + endp + + + + + + + + + + + + +Showwatch proc near + + cmp watchon,0 + jz nowristwatch + mov ds,icons1 + mov di,250 + mov bx,1 + mov al,6 + mov ah,0 + call showframe + call showtime +nowristwatch: ret + + endp + + +Gettime proc near + + mov ah,2ch + int 21h + mov secondcount,dh + mov minutecount,cl + mov hourcount,ch + ret + + endp + + + + + +Zoomicon proc near + + cmp zoomon,0 + jz nozoom1 + mov ds,icons1 + mov di,zoomx + mov bx,zoomy-1 + mov al,8 + mov ah,0 + call showframe +nozoom1: ret + + endp + + + + + + +Showblink proc near + + cmp manisoffscreen,1 + jz finblink1 + inc blinkcount + cmp shadeson,0 + jnz finblink1 + cmp reallocation,50 + jnc eyesshut + mov al,blinkcount + cmp al,3 + jnz finblink1 + mov blinkcount,0 + mov al,blinkframe + inc al + mov blinkframe,al + cmp al,6 + jc nomorethan6 + mov al,6 +nomorethan6: mov ah,0 + mov bx,offset cs:blinktab + add bx,ax + + mov al,[cs:bx] + mov ds,icons1 + mov di,44 + mov bx,32 + mov ah,0 + call showframe +finblink1: ret + +eyesshut: ;mov al,32 + ;mov ds,icons1 + ;mov di,44 + ;mov bx,32 + ;mov ah,0 + ;call showframe + ret + +blinktab: db 16,18,18,17,16,16,16 + + endp + + + + + + +Dumpblink proc near + + cmp shadeson,0 + jnz nodumpeye + cmp blinkcount,0 + jnz nodumpeye + mov al,blinkframe + cmp al,6 + jnc nodumpeye + push ds + mov di,44 + mov bx,32 + mov cl,16 + mov ch,12 + call multidump + pop ds +nodumpeye: ret + + endp + + + + + + + + + + + + + + + + + + +Worktoscreenm proc near + + call animpointer + call readmouse + call showpointer + call vsync + call worktoscreen + call delpointer + ret + + endp + + + + + + + + + + + + + +;-------------------------------------------------------------Blank routine---- + + + + +Blank proc near + + cmp commandtype,199 + jz alreadyblnk + mov commandtype,199 + mov al,0 + call commandonly +alreadyblnk: ret + + endp + + + + + + + + + + + + + + + + + + + + + + +;---------------------------------------------------------Standard routines---- + + + + + + + + + + + + + +Allpointer proc near + + call readmouse + call showpointer + call dumppointer + ret + + endp + + + + + + + +Hangonp proc near + + push cx + add cx,cx + pop ax + add cx,ax + mov maintimer,0 + mov al,pointerframe + mov ah,pickup + push ax + mov pointermode,3 + mov pickup,0 + push cx + mov commandtype,255 + call readmouse + call animpointer + call showpointer + call vsync + call dumppointer + pop cx + +hangloop: push cx + call delpointer + call readmouse + call animpointer + call showpointer + call vsync + call dumppointer + pop cx + mov ax,mousebutton + cmp ax,0 + jz notpressed + cmp ax,oldbutton + jnz getoutofit +notpressed: loop hangloop + +getoutofit: call delpointer + pop ax + mov pointerframe,al + mov pickup,ah + mov pointermode,0 + ret + + endp + + + + + +Hangonw proc near + +hangloopw: push cx + call delpointer + call readmouse + call animpointer + call showpointer + call vsync + call dumppointer + pop cx + loop hangloopw + ret + + endp + + + + +Hangoncurs proc near + +monloop1: push cx + call printcurs + call vsync + call delcurs + pop cx + loop monloop1 + ret + + endp + + + + + + + + +Getunderzoom proc near + + mov di,zoomx+5 + mov bx,zoomy+4 + mov ds,buffers + mov si,zoomspace + mov cl,46 + mov ch,40 + call multiget + ret + + endp + + + + + +Dumpzoom proc near + + cmp zoomon,1 + jnz notzoomon + mov di,zoomx+5 + mov bx,zoomy+4 + mov cl,46 + mov ch,40 + call multidump +notzoomon: ret + + endp + + + + + + + +Putunderzoom proc near + + mov di,zoomx+5 + mov bx,zoomy+4 + mov ds,buffers + mov si,zoomspace + mov cl,46 + mov ch,40 + call multiput + ret + + endp + + + + + +Crosshair proc near + + cmp commandtype,3 + jz nocross + cmp commandtype,10 + jnc nocross + + mov es,workspace + mov ds,icons1 + mov di,zoomx+24 + mov bx,zoomy+19 + mov al,9 + mov ah,0 + call showframe + ret + +nocross: mov es,workspace + mov ds,icons1 + mov di,zoomx+24 + mov bx,zoomy+19 + mov al,29 + mov ah,0 + call showframe + ret + + endp + + + + + + +Showpointer proc near + + call showblink + mov di,mousex + mov oldpointerx,di + mov bx,mousey + mov oldpointery,bx + cmp pickup,1 + jz itsanobject + + push bx di + mov ds,icons1 + mov al,pointerframe + add al,20 + mov ah,0 + add ax,ax + mov si,ax + add ax,ax + add si,ax + mov cx,[si] + cmp cl,12 + jnc notsmallx + mov cl,12 +notsmallx: cmp ch,12 + jnc notsmally + mov ch,12 +notsmally: mov pointerxs,cl + mov pointerys,ch + push ds + mov ds,buffers + mov si,pointerback + call multiget + pop ds di bx + push di bx + mov al,pointerframe + add al,20 + mov ah,0 + call showframe + pop bx di + ret + +itsanobject: mov al,itemframe + mov ds,extras + cmp objecttype,4 + jz itsfrominv + mov ds,freeframes +itsfrominv: mov cl,al + add al,al + add al,cl + inc al + mov ah,0 + + push ax + add ax,ax + mov si,ax + add ax,ax + add si,ax + mov ax,2080 + mov cx,[si] + cmp cl,12 + jnc notsmallx2 + mov cl,12 +notsmallx2: cmp ch,12 + jnc notsmally2 + mov ch,12 +notsmally2: mov pointerxs,cl + mov pointerys,ch + pop ax + + push di bx + push ax bx di ds + mov al,cl + mov ah,0 + shr ax,1 + sub oldpointerx,ax + sub di,ax + mov al,ch + shr ax,1 + sub oldpointery,ax + sub bx,ax + mov ds,buffers + mov si,pointerback + call multiget + pop ds di bx ax + mov ah,128 + call showframe + pop bx di + mov ds,icons1 + mov al,3 + mov ah,128 + call showframe + ret + + endp + + + + + + + +Delpointer proc near + + mov ax,oldpointerx + cmp ax,0ffffh + jz nevershown + mov delherex,ax + mov ax,oldpointery + mov delherey,ax + mov cl,pointerxs + mov delxs,cl + mov ch,pointerys + mov delys,ch + mov ds,buffers + mov si,pointerback + mov di,delherex + mov bx,delherey + call multiput +nevershown: ret + + endp + + + + + + + + + +Dumppointer proc near + + call dumpblink + mov cl,delxs + mov ch,delys + mov di,delherex + mov bx,delherey + call multidump + + mov bx,oldpointery + mov di,oldpointerx + cmp di,delherex + jnz difffound + cmp bx,delherey + jz notboth +difffound: mov cl,pointerxs + mov ch,pointerys + call multidump +notboth: ret + + endp + + + + + + + + + + + +Undertextline proc near + + mov di,textaddressx + mov bx,textaddressy + if foreign + sub bx,3 + endif + mov ds,buffers + mov si,textunder + mov cl,undertextsizex + mov ch,undertextsizey + call multiget + ret + + endp + + + + + + + + +Deltextline proc near + + mov di,textaddressx + mov bx,textaddressy + if foreign + sub bx,3 + endif + mov ds,buffers + mov si,textunder + mov cl,undertextsizex + mov ch,undertextsizey + call multiput + ret + + endp + + + + + +Dumptextline proc near + + cmp newtextline,1 + jnz nodumptextline + mov newtextline,0 + mov di,textaddressx + mov bx,textaddressy + if foreign + sub bx,3 + endif + mov cl,undertextsizex + mov ch,undertextsizey + call multidump +nodumptextline: ret + + endp + + + + + + + + + + + + + + + + + +Animpointer proc near + + cmp pointermode,2 + jz combathand + cmp pointermode,3 + jz mousehand + + cmp watchingtime,0 + jz notwatchpoint + mov pointerframe,11 + ret +notwatchpoint: mov pointerframe,0 + cmp inmaparea,0 + jz gothand + cmp pointerfirstpath,0 + jz gothand +arrow: call getflagunderp + cmp cl,2 + jc gothand + cmp cl,128 + jnc gothand + mov pointerframe,3 + test cl,4 + jnz gothand + mov pointerframe,4 + test cl,16 + jnz gothand + mov pointerframe,5 + test cl,2 + jnz gothand + mov pointerframe,6 + test cl,8 + jnz gothand + mov pointerframe,8 +gothand: ret + +mousehand: cmp pointerspeed,0 + jz rightspeed3 + dec pointerspeed + jmp finflashmouse +rightspeed3: mov pointerspeed,5 + inc pointercount + cmp pointercount,16 + jnz finflashmouse + mov pointercount,0 +finflashmouse: mov al,pointercount + mov ah,0 + mov bx,offset cs:flashmousetab + add bx,ax + mov al,[cs:bx] + mov pointerframe,al + ret + +combathand: mov pointerframe,0 + cmp reallocation,14 + jnz notarrow + cmp commandtype,211 + jnz notarrow + mov pointerframe,5 +notarrow: ret + +flashmousetab: db 1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2 + + endp + + + + +;------------------------------------------------Mouse and keyboard-readers---- + +Setmouse proc near + + if recording + mov recordpos,-8 + mov dx,seg recname + mov ds,dx + mov dx,offset recname + mov cx,0 + mov ah,3ch + mov al,2 + int 21h + mov rechandle,ax + endif + + if playback + mov dx,seg recname + mov ds,dx + mov dx,offset recname + mov ah,3dh + mov al,2 + int 21h + mov rechandle,ax + call loadrec + endif + + mov oldpointerx,0ffffh + + mov ax,0 + int 33h + mov ax,8 + mov cx,15 + mov dx,184 + int 33h + mov ax,7 + mov cx,15 + mov dx,298*2 + int 33h + ret + + endp + + + + + +Readmouse proc near + + mov ax,mousebutton + mov oldbutton,ax + mov ax,mousex + mov oldx,ax + mov ax,mousey + mov oldy,ax + call mousecall + mov mousex,cx + mov mousey,dx + mov mousebutton,bx + ret + + endp + + + + + + + +Mousecall proc near + + if playback + call playmouse + ret + endif + + mov ax,3 + int 33h + shr cx,1 + cmp cx,298 + jc notxover + mov cx,298 +notxover: cmp cx,15 + jnc notxover2 + mov cx,15 +notxover2: cmp dx,184 + jc notyover + mov dx,184 +notyover: cmp dx,15 + jnc notyover2 + mov dx,15 +notyover2: + if recording + call recmouse + endif + ret + + endp + + + + + + + if playback + +Playmouse proc near + + mov es,recordspace + mov di,recordpos + cmp word ptr [es:di+6],0 + jnz isthisplay + add di,8 + add recordpos,8 + cmp di,16384 + jnz isthisplay + call loadrec +isthisplay: mov cx,[es:di] + mov dx,[es:di+2] + mov bx,[es:di+4] + dec word ptr [es:di+6] + ret + + endp + + endif + + if recording + +Recmouse proc near + + mov es,recordspace + mov di,recordpos + cmp di,-8 + jz diffrec + cmp [es:di],cx + jnz diffrec + cmp [es:di+2],dx + jnz diffrec + cmp [es:di+4],bx + jnz diffrec + inc word ptr [es:di+6] + cmp word ptr [es:di+5],0ffffh + jz diffrec + ret +diffrec: add recordpos,8 + add di,8 + cmp di,16384 + jnz notsaverec + push cx dx bx + call saverec + pop bx dx cx +notsaverec: mov [es:di],cx + mov [es:di+2],dx + mov [es:di+4],bx + mov word ptr [es:di+6],1 + ret + + endp + + + + + +Saverec proc near + + mov bx,rechandle + mov ds,recordspace + mov dx,0 + mov cx,recordpos + add cx,8 + mov ah,40h + int 21h + mov di,0 + mov recordpos,0 + ret + + endp + + + + + + +Loadrec proc near + + mov bx,rechandle + mov ds,recordspace + mov dx,0 + mov cx,16384+8 + mov ah,3fh + int 21h + mov di,0 + mov recordpos,0 + ret + + endp + + + endif + + + + + + + +Readmouse1 proc near + + mov ax,mousex + mov oldx,ax + mov ax,mousey + mov oldy,ax + call mousecall + mov mousex,cx + mov mousey,dx + mov mousebutton1,bx + ret + + endp + + + +Readmouse2 proc near + + mov ax,mousex + mov oldx,ax + mov ax,mousey + mov oldy,ax + call mousecall + mov mousex,cx + mov mousey,dx + mov mousebutton2,bx + ret + + endp + + +Readmouse3 proc near + + mov ax,mousex + mov oldx,ax + mov ax,mousey + mov oldy,ax + call mousecall + mov mousex,cx + mov mousey,dx + mov mousebutton3,bx + ret + + endp + + + + + + +Readmouse4 proc near + + mov ax,mousebutton + mov oldbutton,ax + mov ax,mousex + mov oldx,ax + mov ax,mousey + mov oldy,ax + call mousecall + mov mousex,cx + mov mousey,dx + mov ax,mousebutton1 + or ax,mousebutton2 + or ax,mousebutton3 + or bx,ax + mov mousebutton,bx + ret + + endp + + + + + +Readkey proc near + + mov bx,bufferout + cmp bx,bufferin + jz nokey + inc bx + and bx,15 + mov bufferout,bx + mov di,offset cs:keybuffer + add di,bx + mov al,[cs:di] + mov currentkey,al + ret +nokey: mov currentkey,0 + ret + +keybuffer: db 16 dup (0) + + endp + + + + +Convertkey proc near + + and al,127 + mov ah,0 + mov di,offset cs:keyconverttab + add di,ax + mov al,[cs:di] + ret + +keyconverttab: db 0,0,"1","2","3","4","5","6","7","8","9","0","-",0,8,0 + db "Q","W","E","R","T","Y","U","I","O","P",0,0,13,0,"A","S" + db "D","F","G","H","J","K","L",0,0,0,0,0,"Z","X","C","V","B","N","M" + db 0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + endp + + + + +;-------------------------------------------------------------Miscellaneous---- + +Randomnum1 proc near + + push ds es di bx cx + call randomnumber + pop cx bx di es ds + ret + + endp + + + + + +Randomnum2 proc near + + push ds es di bx ax + call randomnumber + mov cl,al + pop ax bx di es ds + ret + + endp + + + + + +Randomnumber proc near + + mov al,seed + and al,48h + add al,38h + sal al,1 + sal al,1 + rcl seed+2,1 + rcl seed+1,1 + rcl seed+0,1 + mov al,seed + and al,48h + add al,38h + sal al,1 + sal al,1 + rcl seed+2,1 + rcl seed+1,1 + rcl seed+0,1 + mov al,seed + and al,48h + add al,38h + sal al,1 + sal al,1 + rcl seed+2,1 + rcl seed+1,1 + rcl seed+0,1 + mov al,seed + and al,48h + add al,38h + sal al,1 + sal al,1 + rcl seed+2,1 + rcl seed+1,1 + rcl seed+0,1 + mov al,seed + and al,48h + add al,38h + sal al,1 + sal al,1 + rcl seed+2,1 + rcl seed+1,1 + rcl seed+0,1 + mov al,seed + and al,48h + add al,38h + sal al,1 + sal al,1 + rcl seed+2,1 + rcl seed+1,1 + rcl seed+0,1 + mov al,seed + and al,48h + add al,38h + sal al,1 + sal al,1 + rcl seed+2,1 + rcl seed+1,1 + rcl seed+0,1 + mov al,seed + and al,48h + add al,38h + sal al,1 + sal al,1 + rcl seed+2,1 + rcl seed+1,1 + rcl seed+0,1 + + mov al,seed + ret + + endp + + + + + + +Hangon proc near + +hangonloop: push cx + call vsync + pop cx + loop hangonloop + ret + + endp + + + + + +;-------------------------------------------------------------Disc handling---- + + +Loadtraveltext proc near + + mov dx,offset cs:traveltextname + call standardload + mov traveltext,ax + ret + + endp + + + + + + +Loadintotemp proc near + + push cs + pop ds + call standardload + mov tempgraphics,ax + ret + + endp + + + + + + +Loadintotemp2 proc near + + push cs + pop ds + call standardload + mov tempgraphics2,ax + ret + + endp + + + + +Loadintotemp3 proc near + + push cs + pop ds + call standardload + mov tempgraphics3,ax + ret + + endp + + + +Loadtempcharset proc near + + call standardload + mov tempcharset,ax + ret + + endp + + + + + + +Standardload proc near + + call openfile + call readheader + mov bx,[es:di] + push bx + mov cl,4 + shr bx,cl + call allocatemem + mov ds,ax + pop cx + push ax + mov dx,0 + call readfromfile + call closefile + pop ax + ret + + endp + + + + + + +Loadtemptext proc near + + call standardload + mov textfile1,ax + ret + + endp + + + + + + + +Loadroom proc near + + mov roomloaded,1 + mov timecount,0 + mov maintimer,0 + mov mapoffsetx,104 + mov mapoffsety,38 + mov textaddressx,13 + mov textaddressy,182 + mov textlen,240 + mov al,newlocation + mov location,al + call getroomdata + call startloading + call loadroomssample + call switchryanon + call drawflags + call getdimension + ret + + endp + + + + +Loadroomssample proc near + + mov al,roomssample + cmp al,255 + jz loadedalready + cmp al,currentsample + jz loadedalready + mov currentsample,al + mov al,currentsample + mov cl,"0" + call twodigitnum + mov di,offset cs:samplename + xchg al,ah + mov [cs:di+10],ax + mov dx,di + call loadsecondsample +loadedalready: ret + + endp + + + + + +Getridofreels proc near + + cmp roomloaded,0 + jz dontgetrid + mov es,reel1 + call deallocatemem + mov es,reel2 + call deallocatemem + mov es,reel3 + call deallocatemem +dontgetrid: ret + + endp + + + + + +Getridofall proc near + + mov es,backdrop + call deallocatemem + mov es,setframes + call deallocatemem + mov es,reel1 + call deallocatemem + mov es,reel2 + call deallocatemem + mov es,reel3 + call deallocatemem + mov es,reels + call deallocatemem + mov es,people + call deallocatemem + mov es,setdesc + call deallocatemem + mov es,blockdesc + call deallocatemem + mov es,roomdesc + call deallocatemem + mov es,freeframes + call deallocatemem + mov es,freedesc + call deallocatemem + ret + + endp + + + + + +Restorereels proc near + + cmp roomloaded,0 + jz dontrestore + mov al,reallocation + call getroomdata + mov dx,bx + call openfile + call readheader + + call dontloadseg + call dontloadseg + call dontloadseg + call dontloadseg + + call allocateload + mov reel1,ax + mov ds,ax + mov dx,0 + call loadseg + call allocateload + mov reel2,ax + mov ds,ax + mov dx,0 + call loadseg + call allocateload + mov reel3,ax + mov ds,ax + mov dx,0 + call loadseg + call closefile +dontrestore: ret + + endp + + + + + + + +Restoreall proc near + + mov al,location + call getroomdata + mov dx,bx + call openfile + call readheader + + call allocateload + mov ds,ax + mov backdrop,ax + mov dx,flags + call loadseg + + mov ds,workspace ;mapdata + mov dx,map + mov cx,132*66 ;maplen + mov al,0 + call fillspace + call loadseg + call sortoutmap + + call allocateload + mov setframes,ax + mov ds,ax + mov dx,framedata + call loadseg + + ;mov ds,setdat + ;mov dx,0 + ;mov cx,setdatlen + ;mov al,255 + ;call fillspace + call dontloadseg + + call allocateload + mov reel1,ax + mov ds,ax + mov dx,0 + call bloc + call allocateload + mov reel2,ax + mov ds,ax + mov dx,0 + call loadseg + call allocateload + mov reel3,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov reels,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov people,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov setdesc,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov blockdesc,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov roomdesc,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov freeframes,ax + mov ds,ax + mov dx,0 + call loadseg + + ;mov ds,freedat + ;mov dx,0 + ;mov cx,freedatlen + ;mov al,255 + ;call fillspace + call dontloadseg + + call allocateload + mov freedesc,ax + mov ds,ax + mov dx,freetextdat + call loadseg + + call closefile + + call setallchanges + ret + + endp + + + +Sortoutmap proc near + + push es di + mov ds,workspace + mov si,0 + mov es,mapdata + mov di,0 + + mov cx,maplength +blimey: push cx si + mov cx,mapwidth + rep movsb + pop si cx + add si,132 + loop blimey + pop di es + ret + + endp + + + + +Startloading proc near + + mov combatcount,0 + mov al,[cs:bx+13] + mov roomssample,al + mov al,[cs:bx+15] + mov mapx,al + mov al,[cs:bx+16] + mov mapy,al + + mov al,[cs:bx+20] ; start path pos + mov liftflag,al + mov al,[cs:bx+21] ; start path pos + mov manspath,al + mov destination,al + mov finaldest,al + mov al,[cs:bx+22] + mov facing,al + mov turntoface,al + mov al,[cs:bx+23] + mov counttoopen,al + mov al,[cs:bx+24] + mov liftpath,al + mov al,[cs:bx+25] + mov doorpath,al + mov lastweapon,-1 + mov al,[cs:bx+27] + push ax + + mov al,[cs:bx+31] + mov ah,reallocation + mov reallocation,al + + mov dx,bx + call openfile + call readheader + + call allocateload + mov ds,ax + mov backdrop,ax + mov dx,flags + call loadseg + + mov ds,workspace ;mapdata + mov dx,map + mov cx,132*66 ;maplen + mov al,0 + call fillspace + call loadseg + call sortoutmap + + call allocateload + mov setframes,ax + mov ds,ax + mov dx,framedata + call loadseg + + mov ds,setdat + mov dx,0 + mov cx,setdatlen + mov al,255 + call fillspace + call loadseg + + call allocateload + mov reel1,ax + mov ds,ax + mov dx,0 + call loadseg + call allocateload + mov reel2,ax + mov ds,ax + mov dx,0 + call loadseg + call allocateload + mov reel3,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov reels,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov people,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov setdesc,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov blockdesc,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov roomdesc,ax + mov ds,ax + mov dx,0 + call loadseg + + call allocateload + mov freeframes,ax + mov ds,ax + mov dx,0 + call loadseg + + mov ds,freedat + mov dx,0 + mov cx,freedatlen + mov al,255 + call fillspace + call loadseg + + call allocateload + mov freedesc,ax + mov ds,ax + mov dx,freetextdat + call loadseg + + call closefile + + + call findroominloc + call deletetaken + call setallchanges + call autoappear + mov al,newlocation + call getroomdata + mov lastweapon,-1 + mov mandead,0 + mov lookcounter,160 + mov newlocation,255 + mov linepointer,254 + pop ax + cmp al,255 + jz dontwalkin + mov manspath,al + push bx + call autosetwalk + pop bx +dontwalkin: call findxyfrompath + ret + + endp + + + + + + + + + + +Disablepath proc near ;needs al,ah map x,y cl=path + + push cx + xchg al,ah + mov cx,-6 +looky2: add cx,6 + sub al,10 + jnc looky2 + mov al,ah + dec cx +lookx2: inc cx + sub al,11 + jnc lookx2 + mov al,cl + mov ah,0 + mov cx,144 + mul cx + mov es,reels + mov bx,pathdata + add bx,ax + pop ax + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov al,0 + mov [es:bx+6],al + ret + + endp + + + + + + + + +Findxyfrompath proc near ;path number was found from + ;room data. Fill ryanxy from + call getroomspaths ;the pathdata. + mov al,manspath + mov ah,0 + add ax,ax + add ax,ax + add ax,ax + add bx,ax + mov ax,[es:bx] + sub al,12 + sub ah,12 + mov ryanx,al + mov ryany,ah + ret + + endp + + + + + +Findroominloc proc near + + mov al,mapy + mov cx,-6 +looky: add cx,6 + sub al,10 + jnc looky + mov al,mapx + dec cx +lookx: inc cx + sub al,11 + jnc lookx + mov roomnum,cl + ret + + endp + + + + + + +Getroomdata proc near + + mov ah,0 + mov cx,32 + mul cx + mov bx,offset cs:roomdata + add bx,ax + ret + + endp + + + + + + + + + + + + + +Readheader proc near + + push cs + pop ds + mov dx,offset cs:fileheader + mov cx,headerlen + call readfromfile + push cs + pop es + mov di,offset cs:filedata + ret + + endp + + + + + + + + +Dontloadseg proc neqr + + mov ax,[es:di] + add di,2 + push bx di es + mov cx,0 + mov dx,ax + mov al,1 + mov ah,42h + int 21h + pop es di bx + ret + + endp + + + + + + +Allocateload proc near + + push es di + mov bx,[es:di] + mov cl,4 + shr bx,cl + call allocatemem + pop di es + ret + + endp + + + + +Fillspace proc near + + push es ds dx di bx + mov di,dx + push ds + pop es + rep stosb + pop bx di dx ds es + ret + + endp + + + + + + + +Getridoftemp proc near + + mov es,tempgraphics + call deallocatemem + ret + + endp + + + + + +Getridoftemptext proc near + + mov es,textfile1 + call deallocatemem + ret + + endp + + + + + +Getridoftemp2 proc near + + mov es,tempgraphics2 + call deallocatemem + ret + + endp + + + +Getridoftemp3 proc near + + mov es,tempgraphics3 + call deallocatemem + ret + + endp + + + +Getridoftempcharset proc near + + mov es,tempcharset + call deallocatemem + ret + + endp + + + +Getridoftempsp proc near + + mov es,tempsprites + call deallocatemem + ret + + endp + + + + + + + + + + + + + + + + + + + + + + + +Readsetdata proc near + + if cd + if demo + else + mov dx,offset cs:idname + call openfilefromc + push cs + pop ds + mov dx,offset cs:id + mov cx,1 + call readfromfile + call closefile + endif + endif + + mov dx,offset cs:characterset1 + call standardload + mov charset1,ax + + mov dx,offset cs:icongraphics0 + call standardload + mov icons1,ax + + mov dx,offset cs:icongraphics1 + call standardload + mov icons2,ax + + mov dx,offset cs:spritename1 + call standardload + mov mainsprites,ax + + mov dx,offset cs:puzzletextname + call standardload + mov puzzletext,ax + + mov dx,offset cs:commandtextname + call standardload + mov commandtext,ax + + mov ax,charset1 + mov currentset,ax + + cmp soundint,255 + jz novolumeload + mov dx,offset cs:volumetabname + call openfile + mov cx,2048-256 + mov ds,soundbuffer + mov dx,16384 + call readfromfile + call closefile +novolumeload: ret + + endp + + + + + + + + + + + +Createfile proc near + + mov ah,3ch + mov cx,0 + int 21h + mov bx,ax + ret + + endp + + + + + + + +Openfile proc near + + if cd + call makename + endif + push cs + pop ds + mov ah,3dh + mov al,2 + push dx + int 21h + pop dx + jc fileerror + mov handle,ax + ret +fileerror: mov gameerror,8 + jmp quickquit2 + + endp + + + if cd +Openfilefromc proc near + + push cs + pop ds + mov ah,3dh + mov al,2 + push dx + int 21h + pop dx + mov handle,ax + ret + + endp + endif + + + if cd +Makename proc near + + if demo + ret + endif + mov si,dx + mov di,offset cs:place +transfer: mov al,[cs:si] + mov [cs:di],al + inc si + inc di + cmp al,0 + jnz transfer + mov dx,offset cs:id + ret +id: db "D:\" +place: db 30 dup (0) + + endp + endif + + + + + +Openfilenocheck proc near + + if cd + call makename + endif + push cs + pop ds + mov ah,3dh + mov al,2 + int 21h + mov handle,ax + ret + + endp + + + +Openforsave proc near + + mov cx,0 + mov ah,3ch + mov al,2 + int 21h + mov handle,ax + ret + + endp + + + +Closefile proc near + + mov bx,handle + mov ah,3eh + int 21h + ret + + endp + + + + +Readfromfile proc near + + mov bx,handle + mov ah,3fh + int 21h + ret + + endp + + + + +Setkeyboardint proc near + + mov ah,35h + mov al,9 + int 21h + mov oldint9seg,es ; Save es:bx to temp memory + mov oldint9add,bx + push cs + pop ds + mov dx,offset cs:keyboardread + mov ah,25h + mov al,9 + int 21h ; Set to new + ret + + endp + + + + +Resetkeyboard proc near + + cmp oldint9add,-1 + jz noreset + mov dx,oldint9add ;Restore old interupt vector + mov ax,oldint9seg ;for keys + mov ds,ax + mov ah,25h + mov al,9 + int 21h +noreset: ret + + endp + + + + + + + + + + + + + + + + + + + + + + +Keyboardread proc near + + push ax dx di ds es + in al,60h + cmp al,lasthardkey + jz same + mov lasthardkey,al + cmp al,128 + jnc same + mov dx,bufferin + inc dx + and dx,15 + cmp dx,bufferout + jz same ;buffer is full + mov bufferin,dx + call convertkey + mov di,offset cs:keybuffer + mov dx,bufferin + add di,dx + mov [cs:di],al +same: in al,61h + mov ah,al + or al,80h ; Mask for Akn + out 61h,al ; Set Akn. + and al,7fh + out 61h,al + cli + mov al,20h ; 8259 end of interrupt + out 20h,al + pop es ds di dx ax + iret + + endp + + + +;------------------------------------------------------Text and tables data---- + + + +Fileheader db "DREAMWEB DATA FILE " + db "COPYRIGHT 1992 " + db "CREATIVE REALITY" +Filedata dw 20 dup (0) +Extradata db 6 dup (0) +Headerlen equ $-Fileheader + + +Roomdata db "DREAMWEB.R00",0 ;Ryan's apartment + db 5,255,33,10 + db 255,255,255,0 + db 1,6,2,255,3,255,255,255,255,255,0 + + db "DREAMWEB.R01",0 + db 1,255,44,10 + db 255,255,255,0 + db 7,2,255,255,255,255,6,255,255,255,1 + + db "DREAMWEB.R02",0 + db 2,255,33,0 + db 255,255,255,0 + db 1,0,255,255,1,255,3,255,255,255,2 + + db "DREAMWEB.R03",0 + db 5,255,33,10 + db 255,255,255,0 + db 2,2,0,2,4,255,0,255,255,255,3 + + db "DREAMWEB.R04",0 + db 23,255,11,30 + db 255,255,255,0 + db 1,4,0,5,255,255,3,255,255,255,4 + + db "DREAMWEB.R05",0 + if demo + db 22,255,22,30 + else + db 5,255,22,30 + endif + db 255,255,255,0 + db 1,2,0,4,255,255,3,255,255,255,5 + + db "DREAMWEB.R06",0 + db 5,255,11,30 + db 255,255,255,0 + db 1,0,0,1,2,255,0,255,255,255,6 + + db "DREAMWEB.R07",0 + db 255,255,0,20 + db 255,255,255,0 + db 2,2,255,255,255,255,0,255,255,255,7 + + db "DREAMWEB.R08",0 + db 8,255,0,10 + db 255,255,255,0 + db 1,2,255,255,255,255,0,11,40,0,8 + + db "DREAMWEB.R09",0 + db 9,255,22,10 + db 255,255,255,0 + db 4,6,255,255,255,255,0,255,255,255,9 + + db "DREAMWEB.R10",0 + db 10,255,33,30 + db 255,255,255,0 + db 2,0,255,255,2,2,4,22,30,255,10 ;22,30,0 switches + ;off path 0 in skip + db "DREAMWEB.R11",0 + db 11,255,11,20 + db 255,255,255,0 + db 0,4,255,255,255,255,255,255,255,255,11 + + db "DREAMWEB.R12",0 + db 12,255,22,20 + db 255,255,255,0 + db 1,4,255,255,255,255,255,255,255,255,12 + + db "DREAMWEB.R13",0 + db 12,255,22,20 + db 255,255,255,0 + db 1,4,255,255,255,255,255,255,255,255,13 + + db "DREAMWEB.R14",0 + db 14,255,44,20 + db 255,255,255,0 + db 0,6,255,255,255,255,255,255,255,255,14 + + db 32 dup (0) + db 32 dup (0) + db 32 dup (0) + db 32 dup (0) + + db "DREAMWEB.R19",0 + db 19,255,0,0 + db 255,255,255,0 + db 0,4,255,255,255,255,255,255,255,255,19 + + db "DREAMWEB.R20",0 + db 22,255,0,20 + db 255,255,255,0 + db 1,4,2,15,255,255,255,255,255,255,20 + + db "DREAMWEB.R21",0 + if demo + db 22,255,11,10 + else + db 5,255,11,10 + endif + db 255,255,255,0 + db 1,4,2,15,1,255,255,255,255,255,21 + + db "DREAMWEB.R22",0 + db 22,255,22,10 + db 255,255,255,0 + db 0,4,255,255,1,255,255,255,255,255,22 + + db "DREAMWEB.R23",0 + db 23,255,22,30 + db 255,255,255,0 + db 1,4,2,15,3,255,255,255,255,255,23 + + db "DREAMWEB.R24",0 + db 5,255,44,0 + db 255,255,255,0 + db 1,6,2,15,255,255,255,255,255,255,24 + + db "DREAMWEB.R25",0 + db 22,255,11,40 + db 255,255,255,0 + db 1,0,255,255,255,255,255,255,255,255,25 + + db "DREAMWEB.R26",0 + db 9,255,22,20 + db 255,255,255,0 + db 4,2,255,255,255,255,255,255,255,255,26 + + db "DREAMWEB.R27",0 + db 22,255,11,20 + db 255,255,255,0 + db 0,6,255,255,255,255,255,255,255,255,27 + + db "DREAMWEB.R28",0 + db 5,255,11,30 + db 255,255,255,0 + db 0,0,255,255,2,255,255,255,255,255,28 + + db "DREAMWEB.R29",0 + db 22,255,11,10 + db 255,255,255,0 + db 0,2,255,255,255,255,255,255,255,255,29 + + + + db "DREAMWEB.R05",0 ;Duplicate of hotel lobby, + if demo + db 22,255,22,10 ;but emerging from the lift. + else + db 5,255,22,10 + endif + db 255,255,255,0 + db 1,4,1,15,255,255,255,255,255,255,5 + + db "DREAMWEB.R04",0 ;Duplicate of pool hall lobby, + db 23,255,22,20 ;but emerging from the lift. + db 255,255,255,0 + db 1,4,2,15,255,255,255,255,255,255,4 + + db "DREAMWEB.R10",0 ;entering alley via skip + db 10,255,22,30 + db 255,255,255,0 + db 3,6,255,255,255,255,255,255,255,255,10 + + db "DREAMWEB.R12",0 ;on the beach, getting up. + db 12,255,22,20 + db 255,255,255,0 + db 0,2,255,255,255,255,255,255,255,255,12 + + db "DREAMWEB.R03",0 ;Duplicate of Eden's lobby + db 5,255,44,0 ;but emerging from the lift + db 255,255,255,0 + db 1,6,2,255,4,255,255,255,255,255,3 + + db "DREAMWEB.R24",0 ;Duplicate of Eden's flat + db 5,255,22,0 ;but starting on the bed + db 255,255,255,0 + db 3,6,0,255,255,255,255,33,0,3,24 ; 33,0,3 turns off + ; path for lift + db "DREAMWEB.R22",0 ;Duplicate + db 22,255,22,20 ;of hotel but in pool room + db 255,255,255,0 + db 1,4,255,255,255,255,255,255,255,255,22 + + db "DREAMWEB.R22",0 ;Duplicate + db 22,255,22,20 ;of hotel but in pool room + db 255,255,255,0 ;coming out of bedroom + db 0,2,255,255,255,255,255,255,255,255,22 + + db "DREAMWEB.R11",0 ;Duplicate + db 11,255,22,30 ;of carpark but getting + db 255,255,255,0 ;up off the floor + db 0,0,255,255,255,255,255,255,255,255,11 + + db "DREAMWEB.R28",0 + db 5,255,11,20 + db 255,255,255,0 + db 0,6,255,255,2,255,255,255,255,255,28 + + db "DREAMWEB.R21",0 + if demo + db 22,255,11,10 + else + db 5,255,11,10 + endif + db 255,255,255,0 + db 1,4,2,15,1,255,255,255,255,255,21 + + db "DREAMWEB.R26",0 + db 9,255,0,40 + db 255,255,255,0 + db 0,0,255,255,255,255,255,255,255,255,26 + + db "DREAMWEB.R19",0 + db 19,255,0,0 + db 255,255,255,0 + db 2,2,255,255,255,255,255,255,255,255,19 + + db "DREAMWEB.R08",0 ;leaving tvstudio into street + db 8,255,11,40 + db 255,255,255,0 + db 0,4,255,255,255,255,255,255,255,255,8 + + db "DREAMWEB.R01",0 + db 1,255,44,10 + db 255,255,255,0 + db 3,6,255,255,255,255,255,255,255,255,1 + + + + db "DREAMWEB.R45",0 ;Dream room + db 35,255,22,30 + db 255,255,255,0 + db 0,6,255,255,255,255,255,255,255,255,45 + + db "DREAMWEB.R46",0 ;Dream room + db 35,255,22,40 + db 255,255,255,0 + db 0,4,255,255,255,255,255,255,255,255,46 + + db "DREAMWEB.R47",0 ;Dream room + db 35,255,0,0 + db 255,255,255,0 + db 0,0,255,255,255,255,255,255,255,255,47 + + db "DREAMWEB.R45",0 ;Dream room + db 35,255,22,30 + db 255,255,255,0 + db 4,0,255,255,255,255,255,255,255,255,45 + + db "DREAMWEB.R46",0 ;Dream room + db 35,255,22,50 + db 255,255,255,0 + db 0,4,255,255,255,255,255,255,255,255,46 + + + + db "DREAMWEB.R50",0 ; Intro sequence one + db 35,255,22,30 + db 255,255,255,0 + db 0,0,255,255,255,255,255,255,255,255,50 + + db "DREAMWEB.R51",0 ; Intro sequence two + db 35,255,11,30 + db 255,255,255,0 + db 0,0,255,255,255,255,255,255,255,255,51 + + db "DREAMWEB.R52",0 ; Intro sequence three + db 35,255,22,30 + db 255,255,255,0 + db 0,0,255,255,255,255,255,255,255,255,52 + + db "DREAMWEB.R53",0 ; Intro sequence four + db 35,255,33,0 + db 255,255,255,0 + db 0,0,255,255,255,255,255,255,255,255,53 + + db "DREAMWEB.R54",0 ; Intro sequence five - wasteland + db 35,255,0,0 + db 255,255,255,0 + db 0,0,255,255,255,255,255,255,255,255,54 + + db "DREAMWEB.R55",0 ; End sequence + db 14,255,44,0 + db 255,255,255,0 + db 0,0,255,255,255,255,255,255,255,255,55 + + +Madeuproomdat db 32 dup (0) + +Roomscango db 1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0 + +Roompics db 5,0,3,2,4,1,10,9,8,6,11,4,7,7,0 + +Oplist db 3 dup (0) + +Inputline db 128 dup (0) + +linedata dw 200 dup (0ffffh) + +presslist db 6 dup (255) + +savenames db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + + + +savefiles db "DREAMWEB.D00",0 + db "DREAMWEB.D01",0 + db "DREAMWEB.D02",0 + db "DREAMWEB.D03",0 + db "DREAMWEB.D04",0 + db "DREAMWEB.D05",0 + db "DREAMWEB.D06",0 + +Recname db "DREAMWEB.DEM",0 + + +;-------------------------------------------------------End of code segment---- + +DREAMWEBPROG ends + + + + +;---------------------------------------------------------------Stack space----s + +STACKSPACE segment para stack 'STACK' + +stak db 256 dup (?) + +STACKSPACE ends + + + +;-----------------------------------------------------------End of all code---- + + end Dreamweb + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file |