diff options
Diffstat (limited to 'devtools/tasmrecover/dreamweb/vgagrafx.asm')
-rw-r--r-- | devtools/tasmrecover/dreamweb/vgagrafx.asm | 1762 |
1 files changed, 1762 insertions, 0 deletions
diff --git a/devtools/tasmrecover/dreamweb/vgagrafx.asm b/devtools/tasmrecover/dreamweb/vgagrafx.asm new file mode 100644 index 0000000000..110fc95ee0 --- /dev/null +++ b/devtools/tasmrecover/dreamweb/vgagrafx.asm @@ -0,0 +1,1762 @@ +;Copyright (c) 1990-2011 by Neil Dodwell +;Released with permission from Neil Dodwell under GPLv2 +;See LICENSE file for full license text +Screenwidth equ 320 ;physical width of screen + + + +Allocatework proc near + + mov bx,1000h + call allocatemem + mov workspace,ax + ret + + endp + + + + + +Showpcx proc near + + call openfile + mov bx,handle + mov ds,workspace + mov ah,3fh + mov cx,128 + mov dx,0 + int 21h + + mov ds,workspace + mov si,16 + mov cx,48 + mov es,buffers + mov di,maingamepal +pcxpal: push cx + call readabyte + shr al,1 + shr al,1 + stosb + pop cx + loop pcxpal + mov cx,768-48 + mov ax,0ffffh + rep stosw + + call readoneblock + mov si,0 + mov di,0 + mov cx,480 +convertpcx: push cx + push di + mov ds,workspace + mov es,buffers + mov di,pointerback + mov bx,0 +sameline: call readabyte + mov ah,al + and ah,11000000b + cmp ah,11000000b + jnz normal + mov cl,al + and cl,00111111b + mov ch,0 + push cx + call readabyte + pop cx + add bx,cx + rep stosb + cmp bx,4*80 + jnz sameline + jmp endline +normal: stosb + inc bx + cmp bx,4*80 + jnz sameline + +endline: pop di + push si + mov dx,0a000h + mov es,dx + mov si,pointerback + mov ds,buffers + + mov dx,03c4h + mov al,2 + mov ah,1 + out dx,ax + mov cx,40 + push di + rep movsw + pop di + mov ah,2 + out dx,ax + mov cx,40 + push di + rep movsw + pop di + mov ah,4 + out dx,ax + mov cx,40 + push di + rep movsw + pop di + mov ah,8 + out dx,ax + mov cx,40 + rep movsw + + pop si + pop cx + loop convertpcx + + mov bx,handle + call closefile + ret + + endp + + + + +Readabyte proc near + + cmp si,30000 + jnz notendblock + push bx es di ds si + call readoneblock + pop si ds di es bx + mov si,0 +notendblock: lodsb + ret + + endp + + + + +Readoneblock proc near + + mov bx,handle + mov ah,3fh + mov ds,workspace + mov ah,3fh + mov cx,30000 + mov dx,0 + int 21h + ret + + endp + + + + + + + + +Loadpalfromiff proc near + + mov dx,offset cs:palettescreen + call openfile + mov cx,2000 + mov ds,mapstore + mov dx,0 + call readfromfile + call closefile + mov es,buffers + mov di,maingamepal + mov ds,mapstore + mov si,30h + mov cx,768 +palloop: lodsb + shr al,1 + shr al,1 + + cmp brightness,1 + jnz nought + cmp al,0 + jz nought + mov ah,al + shr ah,1 + add al,ah + shr ah,1 + add al,ah + cmp al,64 + jc nought + mov al,63 + +nought: stosb + loop palloop + ret + + endp + + + + + + +Setmode proc near + + call vsync + mov ah,12h + mov al,1 + mov bl,33h + int 10h + + mov ah,0 + mov al,13h + int 10h + + mov al,6 ; sets graphic controller + mov dx,3ceh ; register 6 (MM) to 1 - 64K + out dx,al + inc dx + in al,dx + and al,11110011b + or al,00000100b + out dx,al + + mov al,4 ; sets sequencer + mov dx,3c4h ; register 4 (EM) to 1 - >64K + out dx,al + inc dx + in al,dx + and al,11111101b + or al,00000010b + out dx,al + + mov al,13h ;give screen 16 extra hidden + mov dx,3d4h ;pixels at one side + out dx,al + inc dx + mov al,screenwidth/8 ; width of screen + out dx,al + + mov al,8h + mov dx,3d4h + out dx,al + inc dx + mov al,00000000b + out dx,al + + mov al,11h + mov dx,3d4h + out dx,al + inc dx + in al,dx + or al,128 + out dx,al + + mov al,00 + mov dx,3d4h + out dx,al + inc dx + mov al,3fh + out dx,al + mov al,01 + mov dx,3d4h + out dx,al + inc dx + mov al,3fh + out dx,al + ret + + endp + + + +Cls proc near + + mov ax,0a000h + mov es,ax + mov di,0 + mov cx,7fffh + mov ax,0 + rep stosw + ret + + endp + + + +Printundermon proc near ;prints workspace through the text + + mov si,(screenwidth*43)+76 + mov di,si + mov es,workspace + add si,8*screenwidth + mov dx,0a000h + mov ds,dx + mov cx,104 +scrollmonloop1: push cx di si + mov cx,170 +scrollmonloop2: lodsb + cmp al,231 + jnc dontplace +placeit: stosb + loop scrollmonloop2 + jmp finmonscroll +dontplace: inc di + loop scrollmonloop2 + +finmonscroll: pop si di cx + add si,screenwidth + add di,screenwidth + loop scrollmonloop1 + ret + + endp + + + + + + + + +Worktoscreen proc near + + call vsync + mov si,0 + mov di,0 + mov cx,25 + mov ds,workspace + mov dx,0a000h + mov es,dx + +dumpallloop: call width160 + call width160 + call width160 + call width160 + call width160 + call width160 + call width160 + call width160 + loop dumpallloop + + ret + + endp + + + + + + + + + +; +;Worktoscreen2 proc near +; +; call showpointer +; +; mov ds,workspace +; mov dx,0a000h +; mov es,dx +; +; mov si,320-16 +; mov di,320-16 +; mov bl,33 +; mov cx,16 +;screen2loop1: push di si cx +; call vsync +; cmp bl,21 +; jc screen2loop2 +; sub cx,16 +; jz isoneblock +;screen2loop2: movsw +; movsw +; movsw +; movsw +; movsw +; movsw +; movsw +; movsw +; add di,320-15 +; add si,320-15 +; loop screen2loop2 +;isoneblock: mov cx,16 +; mov ax,320-15 +;oneblockloop: push cx +; rep movsb +; pop cx +; add si,ax +; add di,ax +; inc ax +; loop oneblockloop +; +; pop cx si di +; add cx,16 +; cmp cx,200 +; jc itsallright +; mov cx,200 +;itsallright: sub si,16 +; sub di,16 +; dec bl +; jnz screen2loop1 +; +; call delpointer +; ret +; +; endp +; +; +; +; + + + + +Paneltomap proc near + + mov di,mapxstart + add di,mapadx + mov bx,mapystart + add bx,mapady + mov ds,mapstore + mov si,0 + mov cl,mapxsize + mov ch,mapysize + call multiget + ret + + endp + + + +Maptopanel proc near + + mov di,mapxstart + add di,mapadx + mov bx,mapystart + add bx,mapady + mov ds,mapstore + mov si,0 + mov cl,mapxsize + mov ch,mapysize + call multiput + + ret + + endp + + + + + +Dumpmap proc near + + mov di,mapxstart + add di,mapadx + mov bx,mapystart + add bx,mapady + mov cl,mapxsize + mov ch,mapysize + call multidump + ret + + endp + + + + +Pixelcheckset proc near ;al=x, ah=y, es:bx=setlist pos + ;checks exact pixel in a frame + push ax + sub al,[es:bx] ;for detection. + sub ah,[es:bx+1] ;al,ah now holds offset within + ;the frame + push es bx cx ax + mov al,[es:bx+4] ;object number + call getsetad + mov al,[es:bx+17] ;finds frame number + mov es,setframes + mov bx,framedata + mov ah,0 + mov cx,6 + mul cx + add bx,ax ;get data for this frame in es:bx + pop ax + + push ax + mov al,ah + mov ah,0 + mov cl,[es:bx] + mov ch,0 + mul cx + pop cx + mov ch,0 + add ax,cx ;ax now holds offset from corner + ;of the frame + add ax,[es:bx+2] + mov bx,ax ;es:bx now holds offset of pixel! + add bx,frames + + mov al,[es:bx] + mov dl,al + pop cx bx es ax + cmp dl,0 + ret + + endp + + + + + + + + + + + + +Createpanel proc near + + mov di,0 + mov bx,8 + mov ds,icons2 + mov al,0 + mov ah,2 + call showframe ;spritef + mov di,160 + mov bx,8 + mov ds,icons2 + mov al,0 + mov ah,2 + call showframe ;spritef + mov di,0 + mov bx,104 + mov ds,icons2 + mov al,0 + mov ah,2 + call showframe ;spritef + mov di,160 + mov bx,104 + mov ds,icons2 + mov al,0 + mov ah,2 + call showframe ;spritef + ret + + endp + + + +Createpanel2 proc near + + call createpanel + mov di,0 + mov bx,0 + mov ds,icons2 + mov al,5 + mov ah,2 + call showframe + mov di,160 + mov bx,0 + mov ds,icons2 + mov al,5 + mov ah,2 + call showframe + ret + + endp + + + + + + +;Showspritef proc near +; +; mov ax,bx +; mov bx,screenwidth +; mul bx +; add di,ax +; mov dx,screenwidth +; mov es,workspace +; mov si,2080 +; mov ah,0 +; add ax,ax +; mov bx,ax +; add ax,ax +; add bx,ax +; add si,[bx+2] +; mov cx,[bx+0] +;spritefloop: push cx di +; call width80 +; pop di cx +; add di,dx +; dec ch +; jnz spritefloop +; ret +; +; endp +; +; + + + + + + + + +Clearwork proc near + + mov ax,0h + mov es,workspace + mov di,0 + mov cx,(200*320)/64 +clearloop: stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + loop clearloop + ret + + endp + + + + + + +Vsync proc near + + push ax bx cx dx si di ds es + + mov dx,03dah +loop2: in al,dx + test al,8 + jz loop2 +loop1: in al,dx + test al,8 + jnz loop1 + + call doshake + call dofade + if debuglevel2 + call debugkeys + endif + pop es ds di si dx cx bx ax + ret + + endp + + + +Doshake proc near + + cmp shakecounter,48 + jz finishshake + inc shakecounter + mov bl,shakecounter + mov bh,0 + add bx,offset cs:shaketable + mov al,10h + mov dx,3d4h + out dx,al + inc dx + mov al,[cs:bx] + out dx,al +finishshake: ret + +shaketable: db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9eh + db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9eh + db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9eh + db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9eh + db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9eh + db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9eh + db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9eh + db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9eh + db 9ch,9ah,9fh,9ah,9ch,9eh,0a0h,9bh,9dh,99h,9fh,9ch + + endp + + + + + + +Zoom proc near + + cmp watchingtime,0 + jnz inwatching + cmp zoomon,1 + jz zoomswitch +inwatching: ret + +zoomswitch: cmp commandtype,199 + jc zoomit +cantzoom: call putunderzoom + ret + +zoomit: mov ax,oldpointery + sub ax,9 + mov cx,screenwidth + mul cx + add ax,oldpointerx + sub ax,11 + mov si,ax + + mov ax,zoomy+4 + mov cx,screenwidth + mul cx + add ax,zoomx+5 + mov di,ax + mov es,workspace + mov ds,workspace + + mov cx,20 +zoomloop: push cx + mov cx,23 +zoomloop2: lodsb + mov ah,al + stosw + mov [es:di+screenwidth-2],ax + loop zoomloop2 + add si,screenwidth-23 + add di,screenwidth-46+screenwidth + pop cx + loop zoomloop + + call crosshair + mov didzoom,1 + ret + + endp + + + + + + + + + +Delthisone proc near + + push ax + push ax + mov al,ah + mov ah,0 + add ax,mapady + mov bx,screenwidth + mul bx + pop bx + mov bh,0 + add bx,mapadx + add ax,bx + mov di,ax + pop ax + push ax + mov al,ah + mov ah,0 + mov bx,22*8 + mul bx + pop bx + mov bh,0 + add ax,bx + mov si,ax + + mov es,workspace + mov ds,mapstore + mov dl,cl + mov dh,0 + mov ax,screenwidth + sub ax,dx + neg dx + add dx,22*8 +deloneloop: push cx + mov ch,0 + rep movsb + pop cx + add di,ax + add si,dx + dec ch + jnz deloneloop + ret + + endp + + + + + + + +;------------------------------------------------------------Pointer update---- + + +Multiget proc near ;di,bx = dest x,y + ;cl,ch = size + mov ax,bx ;si,di = storage + mov bx,screenwidth + mul bx + add di,ax + + mov es,workspace + push es ds + pop es ds + xchg di,si + mov al,cl + mov ah,0 + mov dx,screenwidth + sub dx,ax + + mov al,cl + and al,1 + jnz oddwidth2 + + mov bl,cl + mov bh,0 + mov ax,offset cs:width0 + shr bx,1 + sub ax,bx + mov cl,ch + mov ch,0 +multiloop3: call ax + add si,dx + loop multiloop3 + ret + +oddwidth2: mov bl,cl + mov bh,0 + shr bx,1 + mov ax,offset cs:width0 + sub ax,bx + mov cl,ch + mov ch,0 +multiloop4: call ax + movsb + add si,dx + loop multiloop4 + ret + + endp + + + + + + + +Multiput proc near ;di,bx = dest x,y + ;cl,ch = size + mov ax,bx ;si,di = storage + mov bx,screenwidth + mul bx + add di,ax + + mov es,workspace + mov al,cl + mov ah,0 + mov dx,screenwidth + sub dx,ax + + mov al,cl + and al,1 + jnz oddwidth3 + + mov bl,cl + mov bh,0 + shr bx,1 + mov ax,offset cs:width0 + sub ax,bx + mov cl,ch + mov ch,0 +multiloop5: call ax + add di,dx + loop multiloop5 + ret + +oddwidth3: mov bl,cl + mov bh,0 + shr bx,1 + mov ax,offset cs:width0 + sub ax,bx + mov cl,ch + mov ch,0 +multiloop6: call ax + movsb + add di,dx + loop multiloop6 + ret + + + endp + + + + + + + + + +Multidump proc near ;di,bx = dest x,y + ;cl,ch = size + mov dx,0a000h + mov es,dx + mov ds,workspace + + mov ax,bx + mov bx,screenwidth + mul bx + add di,ax + mov dx,screenwidth + mov si,di + + mov al,cl + and al,1 + jnz oddwidth + + mov bl,cl + mov bh,0 + shr bx,1 + mov ax,offset cs:width0 + sub ax,bx + mov bl,cl + mov bh,0 + neg bx + add bx,dx + mov cl,ch + mov ch,0 +multiloop1: call ax + add di,bx + add si,bx + loop multiloop1 + ret + +oddwidth: mov bl,cl + mov bh,0 + shr bx,1 + mov ax,offset cs:width0 + sub ax,bx + mov bl,cl + mov bh,0 + neg bx + add bx,screenwidth + mov cl,ch + mov ch,0 +multiloop2: call ax + movsb + add di,bx + add si,bx + loop multiloop2 + ret + + endp + + + + + +Width160 proc near + + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw +width128: movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw +width110: movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw +width88: movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw +width80: movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw +width63: movsw +width62: movsw +width61: movsw +width60: movsw +width59: movsw +width58: movsw +width57: movsw +width56: movsw +width55: movsw +width54: movsw +width53: movsw +width52: movsw +width51: movsw +width50: movsw +width49: movsw +width48: movsw +width47: movsw +width46: movsw +width45: movsw +width44: movsw +width43: movsw +width42: movsw +width41: movsw +width40: movsw +width39: movsw +width38: movsw +width37: movsw +width36: movsw +width35: movsw +width34: movsw +width33: movsw +width32: movsw +width31: movsw +width30: movsw +width29: movsw +width28: movsw +width27: movsw +width26: movsw +width25: movsw +width24: movsw +width23: movsw +width22: movsw +width21: movsw +width20: movsw +width19: movsw +width18: movsw +width17: movsw +width16: movsw +width15: movsw +width14: movsw +width13: movsw +width12: movsw +width11: movsw +width10: movsw +width9: movsw +width8: movsw +width7: movsw +width6: movsw +width5: movsw +width4: movsw +width3: movsw +width2: movsw +width1: movsw +width0: ret + + endp + + + + + + + + + +Doblocks proc near + + mov es,workspace + mov ax,mapady + mov cx,screenwidth + mul cx + mov di,mapadx + add di,ax + + mov al,mapy + mov ah,0 + mov bx,mapwidth + mul bx + mov bl,mapx + mov bh,0 + add ax,bx + + mov si,map + add si,ax + + mov cx,10 +loop120: push di cx + mov cx,11 +loop124: push cx di + + mov ds,mapdata + lodsb + mov ds,backdrop + + push si + cmp al,0 + jz zeroblock + mov ah,al + mov al,0 + mov si,blocks + add si,ax + mov bh,14 + + + mov bh,4 +firstbitofblock: movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + add di,screenwidth-16 + dec bh + jnz firstbitofblock + + mov bh,12 +loop125: movsw + movsw + movsw + movsw + movsw + movsw + movsw + movsw + mov ax,0dfdfh + stosw + stosw + + add di,screenwidth-20 + dec bh + jnz loop125 + + add di,4 + mov ax,0dfdfh + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + add di,screenwidth-16 + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + add di,screenwidth-16 + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + add di,screenwidth-16 + stosw + stosw + stosw + stosw + stosw + stosw + stosw + stosw + + +zeroblock: pop si + + pop di cx + add di,16 + loop loop124 + add si,mapwidth-11 + pop cx di + add di,screenwidth*16 + loop loop120 + ret + + endp + + + + + + + +;----------------------------------------------General sprite output routine---- + +Showframe proc near ; shows a frame from sprites + + push dx ax ; es=destination + mov cx,ax ; ds=source + and cx,511 ; di=x, bx=y + add cx,cx ; al=frame number + mov si,cx ; ah=effects flag + add cx,cx + add si,cx + cmp word ptr [si],0 + jnz notblankshow + pop ax dx + mov cx,0 + ret + +notblankshow: test ah,128 + jnz skipoffsets + mov al,[si+4] + mov ah,0 + add di,ax + mov al,[si+5] + mov ah,0 + add bx,ax +skipoffsets: mov cx,[si+0] + mov ax,[si+2] + add ax,2080 + mov si,ax + pop ax dx + cmp ah,0 + jz noeffects + + test ah,128 + jz notcentred + push ax + mov al,cl + mov ah,0 + shr ax,1 + sub di,ax + mov al,ch + mov ah,0 + shr ax,1 + sub bx,ax + pop ax + +notcentred: test ah,64 + jz notdiffdest + push cx + call frameoutfx + pop cx + ret + +notdiffdest: test ah,8 + jz notprintlist + push ax + mov ax,di + sub ax,mapadx + push bx + sub bx,mapady + mov ah,bl + pop bx + ;call addtoprintlist + pop ax + +notprintlist: test ah,4 + jz notflippedx + mov dx,screenwidth + mov es,workspace + push cx + call frameoutfx + pop cx + ret + +notflippedx: test ah,2 + jz notnomask + mov dx,screenwidth + mov es,workspace + push cx + call frameoutnm + pop cx + ret + +notnomask: test ah,32 + jz noeffects + mov dx,screenwidth + mov es,workspace + push cx + call frameoutbh + pop cx + ret + +noeffects: mov dx,screenwidth + mov es,workspace + push cx + call frameoutv + pop cx ; returns size printed in cx + ret + + endp + + + + + + + + + + +Frameoutv proc near + + push dx + mov ax,bx + mov bx,dx + mul bx + add di,ax + pop dx + + push cx + mov ch,0 + sub dx,cx + pop cx + +frameloop1: push cx + mov ch,0 + +frameloop2: lodsb + cmp al,0 + jnz backtosolid +backtoother: inc di + loop frameloop2 + pop cx + add di,dx + dec ch + jnz frameloop1 + ret + +frameloop3: lodsb + cmp al,0 + jz backtoother +backtosolid: stosb + loop frameloop3 + pop cx + add di,dx + dec ch + jnz frameloop1 + ret + + endp + + + + + + +Frameoutnm proc near + + push dx + mov ax,bx + mov bx,dx + mul bx + add di,ax + pop dx + + push cx + mov ch,0 + sub dx,cx + pop cx + + mov al,cl + and al,1 + jnz oddwidthframe + + mov bl,cl + mov bh,0 + mov ax,offset cs:width0 + shr bx,1 + sub ax,bx + mov cl,ch + mov ch,0 +nmloop1: call ax + add di,dx + loop nmloop1 + ret + +oddwidthframe: mov bl,cl + mov bh,0 + shr bx,1 + mov ax,offset cs:width0 + sub ax,bx + mov cl,ch + mov ch,0 +nmloop2: call ax + movsb + add di,dx + loop nmloop2 + ret + + endp + + + + + + +Frameoutbh proc near + + push dx + mov ax,bx + mov bx,dx + mul bx + add di,ax + pop dx + + push cx + mov ch,0 + sub dx,cx + pop cx + +bhloop2: push cx + mov ch,0 + mov ah,255 +bhloop1: cmp [es:di],ah + jnz nofill + movsb + loop bhloop1 + jmp nextline +nofill: inc di + inc si + loop bhloop1 +nextline: add di,dx + pop cx + dec ch + jnz bhloop2 + ret + + endp + + + + + + + +Frameoutfx proc near + + push dx + mov ax,bx + mov bx,dx + mul bx + add di,ax + pop dx + + push cx + mov ch,0 + add dx,cx + pop cx + +frameloopfx1: push cx + mov ch,0 + +frameloopfx2: lodsb + cmp al,0 + jnz backtosolidfx +backtootherfx: dec di + loop frameloopfx2 + pop cx + add di,dx + dec ch + jnz frameloopfx1 + ret + +frameloopfx3: lodsb + cmp al,0 + jz backtootherfx +backtosolidfx: mov [es:di],al + dec di + loop frameloopfx3 + pop cx + add di,dx + dec ch + jnz frameloopfx1 + ret + + endp + + + + +;---------------------------------------------------Transfers for extra data---- + +Transferinv proc near + + mov di,exframepos + push di + mov al,expos + mov ah,0 + mov bx,ax + add ax,ax + add ax,bx + inc ax + mov cx,6 + mul cx + mov es,extras + mov bx,exframedata + add bx,ax + add di,exframes + + push bx + mov al,itemtotran + mov ah,0 + mov bx,ax + add ax,ax + add ax,bx + inc ax + mov cx,6 + mul cx + mov ds,freeframes + mov bx,frframedata + add bx,ax + mov si,frframes + mov al,[bx] + mov ah,0 + mov cl,[bx+1] + mov ch,0 + add si,[bx+2] ;we have si, and length + mov dx,[bx+4] + pop bx + mov [es:bx+0],al + mov [es:bx+1],cl + mov [es:bx+4],dx + + mul cx + mov cx,ax + push cx + rep movsb + pop cx + pop ax + mov [es:bx+2],ax + add exframepos,cx + ret + + endp + + + + + + + + + + +Transfermap proc near + + mov di,exframepos + push di + mov al,expos + mov ah,0 + mov bx,ax + add ax,ax + add ax,bx + mov cx,6 + mul cx + mov es,extras + mov bx,exframedata + add bx,ax + add di,exframes + + push bx + mov al,itemtotran + mov ah,0 + mov bx,ax + add ax,ax + add ax,bx + mov cx,6 + mul cx + mov ds,freeframes + mov bx,frframedata + add bx,ax + mov si,frframes + mov al,[bx] + mov ah,0 + mov cl,[bx+1] + mov ch,0 + add si,[bx+2] ;we have si, and length + mov dx,[bx+4] + pop bx + mov [es:bx+0],al + mov [es:bx+1],cl + mov [es:bx+4],dx + + mul cx + mov cx,ax + push cx + rep movsb + pop cx + pop ax + mov [es:bx+2],ax + add exframepos,cx + ret + + endp + + +;------------------------------------------------------------------Filenames---- + + +Spritename1 db "DREAMWEB.S00",0 +Spritename3 db "DREAMWEB.S02",0 + +Idname db "INSTALL.DAT",0 + +Characterset1 db "DREAMWEB.C00",0 +Characterset2 db "DREAMWEB.C01",0 +Characterset3 db "DREAMWEB.C02",0 + +Samplename db "DREAMWEB.V00",0 + +Basicsample db "DREAMWEB.V99",0 + +Icongraphics0 db "DREAMWEB.G00",0 +Icongraphics1 db "DREAMWEB.G01",0 +Extragraphics1 db "DREAMWEB.G02",0 +Icongraphics8 db "DREAMWEB.G08",0 +Mongraphicname db "DREAMWEB.G03",0 +Mongraphics2 db "DREAMWEB.G07",0 +Cityname db "DREAMWEB.G04",0 +Travelgraphic1 db "DREAMWEB.G05",0 +Travelgraphic2 db "DREAMWEB.G06",0 +Diarygraphic db "DREAMWEB.G14",0 + +Monitorfile1 db "DREAMWEB.T01",0 +Monitorfile2 db "DREAMWEB.T02",0 +Monitorfile10 db "DREAMWEB.T10",0 ;News items 10-13 +Monitorfile11 db "DREAMWEB.T11",0 +Monitorfile12 db "DREAMWEB.T12",0 +Monitorfile13 db "DREAMWEB.T13",0 +Monitorfile20 db "DREAMWEB.T20",0 +Monitorfile21 db "DREAMWEB.T21",0 ;Ryan's private stuff +Monitorfile22 db "DREAMWEB.T22",0 ;Use for blank carts +Monitorfile23 db "DREAMWEB.T23",0 ;Use for edens cart +Monitorfile24 db "DREAMWEB.T24",0 ;Use for church cart +Foldertext db "DREAMWEB.T50",0 +Diarytext db "DREAMWEB.T51",0 +Puzzletextname db "DREAMWEB.T80",0 ;puzzle text +Traveltextname db "DREAMWEB.T81",0 ;location descriptions +Introtextname db "DREAMWEB.T82",0 ;intro sequence +Endtextname db "DREAMWEB.T83",0 ;end sequence/credits +Commandtextname db "DREAMWEB.T84",0 ;commands + +Volumetabname db "DREAMWEB.VOL",0 + +Foldergraphic1 db "DREAMWEB.G09",0 +Foldergraphic2 db "DREAMWEB.G10",0 +Foldergraphic3 db "DREAMWEB.G11",0 +Symbolgraphic db "DREAMWEB.G12",0 +Gungraphic db "DREAMWEB.G13",0 +Monkface db "DREAMWEB.G15",0 + +Title0graphics db "DREAMWEB.I00",0 +Title1graphics db "DREAMWEB.I01",0 +Title2graphics db "DREAMWEB.I02",0 +Title3graphics db "DREAMWEB.I03",0 +Title4graphics db "DREAMWEB.I04",0 +Title5graphics db "DREAMWEB.I05",0 +Title6graphics db "DREAMWEB.I06",0 +Title7graphics db "DREAMWEB.I07",0 + +Palettescreen db "DREAMWEB.PAL",0 + + |