diff options
Diffstat (limited to 'devtools/tasmrecover/dreamweb/newplace.asm')
-rw-r--r-- | devtools/tasmrecover/dreamweb/newplace.asm | 584 |
1 files changed, 584 insertions, 0 deletions
diff --git a/devtools/tasmrecover/dreamweb/newplace.asm b/devtools/tasmrecover/dreamweb/newplace.asm new file mode 100644 index 0000000000..2bbf4fe498 --- /dev/null +++ b/devtools/tasmrecover/dreamweb/newplace.asm @@ -0,0 +1,584 @@ +;Copyright (c) 1990-2011 by Neil Dodwell +;Released with permission from Neil Dodwell under GPLv2 +;See LICENSE file for full license text +;----------------------------------------------------Choosing a new location---- + +Newplace proc near + + cmp needtotravel,1 + jz istravel + cmp autolocation,-1 + jnz isautoloc + ret + +isautoloc: mov al,autolocation + mov newlocation,al + mov autolocation,-1 + ret + +istravel: mov needtotravel,0 + call selectlocation + ret + + endp + + + + +Selectlocation proc near + + mov inmaparea,0 + call clearbeforeload + mov getback,0 + mov pointerframe,22 + + call readcitypic + call showcity + call getridoftemp + call readdesticon + call loadtraveltext + call showpanel + call showman + call showarrows + call showexit + call locationpic + call undertextline + mov commandtype,255 + call readmouse + mov pointerframe,0 + call showpointer + call worktoscreen + mov al,9 + mov ah,255 + call playchannel0 + mov newlocation,255 + +select: + cmp quitrequested, 0 + jnz quittravel + call delpointer + call readmouse + call showpointer + call vsync + call dumppointer + call dumptextline + cmp getback,1 + jz quittravel + mov bx,offset cs:destlist + call checkcoords + cmp newlocation,255 + jz select + mov al,newlocation + cmp al,location + jz quittravel + + call getridoftemp + call getridoftemp2 + call getridoftemp3 + mov es,traveltext + call deallocatemem + ret + +quittravel: mov al,reallocation ; was just location + mov newlocation,al + mov getback,0 + call getridoftemp + call getridoftemp2 + call getridoftemp3 + mov es,traveltext + call deallocatemem + ret + +destlist: dw 238,258,4,44,nextdest + dw 104,124,4,44,lastdest + dw 280,308,4,44,lookatplace + dw 104,216,138,192,destselect + dw 273,320,157,198,getback1 + dw 0,320,0,200,blank + dw 0ffffh + + endp + + + + + +Showcity proc near + + call clearwork + mov ds,tempgraphics + mov di,57 + mov bx,32 + mov al,0 + mov ah,0 + call showframe + mov ds,tempgraphics + mov di,120+57 + mov bx,32 + mov al,1 + mov ah,0 + call showframe + ret + + endp + + + + + +Lookatplace proc near + + cmp commandtype,224 + jz alreadyinfo + mov commandtype,224 + mov al,27 + call commandonly +alreadyinfo: mov ax,mousebutton + and ax,1 + jz noinfo + cmp ax,oldbutton + jz noinfo + + mov bl,destpos + cmp bl,15 + jnc noinfo + + push bx + call delpointer + call deltextline + call getundercentre + mov ds,tempgraphics3 + mov al,0 + mov ah,0 + mov di,60 + mov bx,72 + call showframe + mov al,4 + mov ah,0 + mov di,60 + mov bx,72+55 + call showframe + cmp foreignrelease, 0 + jz $1 + mov al,4 + mov ah,0 + mov di,60 + mov bx,72+55+21 + call showframe +$1: + pop bx + + mov bh,0 + add bx,bx + mov es,traveltext + mov si,[es:bx] + add si,textstart + call findnextcolon + + mov di,63 + mov bx,84 + cmp foreignrelease, 0 + jz $2 + mov bx,84+4 +$2: + mov dl,191 + mov al,0 + mov ah,0 + call printdirect + call worktoscreenm + + mov cx,500 + call hangonp + +afterinfo: mov pointermode,0 + mov pointerframe,0 + call putundercentre + call worktoscreenm + +noinfo: ret + + endp + + + + +Getundercentre proc near + + mov di,58 + mov bx,72 + mov ds,mapstore + mov si,0 + mov cl,254 + mov ch,110 + call multiget + ret + + endp + + + + + + + + + + +Putundercentre proc near + + mov di,58 + mov bx,72 + mov ds,mapstore + mov si,0 + mov cl,254 + mov ch,110 + call multiput + ret + + endp + + + + + + + +Locationpic proc near + + call getdestinfo + mov al,[es:si] + push es si + mov di,0 + cmp al,6 + jnc secondlot + mov ds,tempgraphics + add al,4 + jmp gotgraphic +secondlot: sub al,6 + mov ds,tempgraphics2 +gotgraphic: add di,104 + mov bx,138+14 + mov ah,0 + call showframe + pop si es + mov al,destpos + cmp al,reallocation + jnz notinthisone + mov al,3 + mov di,104 + mov bx,140+14 + mov ds,tempgraphics + mov ah,0 + call showframe +notinthisone: mov bl,destpos + mov bh,0 + add bx,bx + mov es,traveltext + mov si,[es:bx] + add si,textstart + mov di,50 + mov bx,20 + mov dl,241 + mov al,0 + mov ah,0 + call printdirect + ret + + endp + + + + +Getdestinfo proc near + + mov al,destpos + mov ah,0 + push ax + mov dx,seg roomscango + mov es,dx + mov si,offset es:roomscango + add si,ax + mov cl,[es:si] + pop ax + push cx + mov dx,seg roompics + mov es,dx + mov si,offset es:roompics + add si,ax + pop ax + ret + + endp + + + + + + +Showarrows proc near + + mov di,116-12 + mov bx,16 + mov ds,tempgraphics + mov al,0 + mov ah,0 + call showframe + mov di,226+12 + mov bx,16 + mov ds,tempgraphics + mov al,1 + mov ah,0 + call showframe + mov di,280 + mov bx,14 + mov ds,tempgraphics + mov al,2 + mov ah,0 + call showframe + ret + + endp + + + + + + + + + +Nextdest proc near + +duok: cmp commandtype,218 + jz alreadydu + mov commandtype,218 + mov al,28 + call commandonly +alreadydu: mov ax,mousebutton + and ax,1 + jz nodu + cmp ax,oldbutton + jz nodu + +searchdestup: inc destpos + cmp destpos,15 + jnz notlastdest + mov destpos,0 +notlastdest: call getdestinfo + cmp al,0 + jz searchdestup + + mov newtextline,1 + call deltextline + call delpointer + call showpanel + call showman + call showarrows + call locationpic + call undertextline + call readmouse + call showpointer + call worktoscreen + call delpointer +nodu: ret + + endp + + + + + + + +Lastdest proc near + +ddok: cmp commandtype,219 + jz alreadydd + mov commandtype,219 + mov al,29 + call commandonly +alreadydd: mov ax,mousebutton + and ax,1 + jz nodd + cmp ax,oldbutton + jz nodd + +searchdestdown: dec destpos + cmp destpos,-1 + jnz notfirstdest + mov destpos,15 +notfirstdest: call getdestinfo + cmp al,0 + jz searchdestdown + + mov newtextline,1 + call deltextline + call delpointer + call showpanel + call showman + call showarrows + call locationpic + call undertextline + call readmouse + call showpointer + call worktoscreen + call delpointer +nodd: ret + + endp + + + + + + + + +Destselect proc near + + cmp commandtype,222 + jz alreadytrav + mov commandtype,222 + mov al,30 + call commandonly +alreadytrav: mov ax,mousebutton + and ax,1 + jz notrav + cmp ax,oldbutton + jz notrav + + call getdestinfo + mov al,destpos + mov newlocation,al +notrav: ret + + endp + + + + + + + + + + + + + + + + + + + +Getlocation proc near + + mov ah,0 + mov bx,ax + mov dx,seg roomscango + mov es,dx + add bx,offset es:roomscango + mov al,[es:bx] + ret + + endp + + +Setlocation proc near ;makes a location accessable + + mov ah,0 + mov bx,ax + mov dx,seg roomscango + mov es,dx + add bx,offset es:roomscango + mov byte ptr [es:bx],1 + ret + + endp + + + + +Resetlocation proc near ;makes a location inaccessable + + push ax + cmp al,5 + jnz notdelhotel + call purgealocation + mov al,21 + call purgealocation + mov al,22 + call purgealocation + mov al,27 + call purgealocation + jmp clearedlocations + +notdelhotel: cmp al,8 + jnz notdeltvstud + call purgealocation + mov al,28 + call purgealocation + jmp clearedlocations + +notdeltvstud: cmp al,6 + jnz notdelsarters + call purgealocation + mov al,20 + call purgealocation + mov al,25 + call purgealocation + jmp clearedlocations + +notdelsarters: cmp al,13 + jnz notdelboathouse + call purgealocation + mov al,29 + call purgealocation + jmp clearedlocations + +notdelboathouse: + +clearedlocations: pop ax + mov ah,0 + mov bx,ax + mov dx,seg roomscango + mov es,dx + add bx,offset es:roomscango + mov byte ptr [es:bx],0 + ret + + endp + + + + +Readdesticon proc near + + mov dx,offset cs:travelgraphic1 + call loadintotemp + + mov dx,offset cs:travelgraphic2 + call loadintotemp2 + + mov dx,offset cs:icongraphics8 + call loadintotemp3 + ret + + endp + + + + +Readcitypic proc near + + mov dx,offset cs:cityname + call loadintotemp + ret + + endp + + + + + |