forked from KolibriOS/kolibrios
065b8d32b2
git-svn-id: svn://kolibrios.org@31 a494cfbc-eb01-0410-851d-a64ba20cac60
1427 lines
42 KiB
NASM
1427 lines
42 KiB
NASM
;
|
|
; Fisheye Raycasting Engine Etc. FREE3D for MENUETOS by Dieter Marfurt
|
|
; Version 0.4 (requires some texture-files to compile (see Data Section))
|
|
; dietermarfurt@angelfire.com - www.melog.ch/mos_pub/
|
|
; Don't hit me - I'm an ASM-Newbie... since years :)
|
|
;
|
|
; Compile with FASM for Menuet (requires .INC files - see DATA Section)
|
|
;
|
|
|
|
use32
|
|
|
|
org 0x0
|
|
|
|
db 'MENUET01' ; 8 byte id
|
|
dd 0x01 ; header version
|
|
dd START ; start of code
|
|
dd I_END ; size of image
|
|
dd 0x300000 ; memory for app
|
|
dd 0x7fff0 ; esp
|
|
dd 0x0 , 0x0 ; I_Param , I_Icon
|
|
|
|
include 'lang.inc'
|
|
START: ; start of execution
|
|
|
|
call draw_window ; at first, draw the window
|
|
call draw_stuff
|
|
|
|
gamestart:
|
|
; ******* MOUSE CHECK *******
|
|
; mov eax,37 ; check mouse (use mouse over window to navigate)
|
|
; mov ebx,2 ; check mousebuttons
|
|
; int 0x40
|
|
; cmp eax,0 ; only use mouse when button down
|
|
; je noneed ; deactivated cause of disappear-bug etc.
|
|
mov eax,37
|
|
mov ebx,1 ; check mouseposition
|
|
int 0x40
|
|
|
|
mov ebx,eax
|
|
shr eax,16
|
|
and eax,0x0000FFFF ; mousex
|
|
and ebx,0x0000FFFF ; mousey
|
|
|
|
cmp eax,5 ; mouse out of window ?
|
|
jb check_refresh ; it will prevent an app-crash
|
|
cmp ebx,22
|
|
jb check_refresh
|
|
cmp eax, 640
|
|
jg check_refresh
|
|
cmp ebx,501
|
|
jg check_refresh
|
|
|
|
cmp eax,315 ; navigating?
|
|
jb m_left
|
|
cmp eax,325 ;
|
|
jg m_right
|
|
continue:
|
|
cmp ebx,220 ;
|
|
jb s_up
|
|
cmp ebx,260 ;
|
|
jg s_down
|
|
; ******* END OF MOUSE CHECK *******
|
|
check_refresh:
|
|
|
|
; mov eax,23 ; wait for system event with 10 ms timeout
|
|
; mov ebx,1 ; thats max 100 FPS
|
|
mov eax,11 ; ask no wait for full speed
|
|
int 0x40
|
|
|
|
cmp eax,1 ; window redraw request ?
|
|
je red2
|
|
cmp eax,2 ; key in buffer ?
|
|
je key2
|
|
cmp eax,3 ; button in buffer ?
|
|
je button2
|
|
|
|
mov edi,[mouseya] ; check flag if a refresh has to be done
|
|
cmp edi,1
|
|
jne gamestart
|
|
mov [mouseya],dword 0
|
|
call draw_stuff
|
|
|
|
|
|
jmp gamestart
|
|
|
|
; END OF MAINLOOP
|
|
|
|
red2: ; redraw
|
|
call draw_window
|
|
call draw_stuff
|
|
jmp gamestart
|
|
|
|
key2: ; key
|
|
mov eax,2
|
|
int 0x40
|
|
cmp al,1
|
|
je gamestart ; keybuffer empty
|
|
|
|
cmp ah,27 ; esc=End App
|
|
je finish
|
|
|
|
cmp ah,178 ; up
|
|
je s_up
|
|
cmp ah,177 ; down
|
|
je s_down
|
|
cmp ah,176 ; left
|
|
je s_left
|
|
cmp ah,179 ; right
|
|
je s_right
|
|
|
|
jmp gamestart ; was any other key
|
|
|
|
|
|
s_up: ; walk forward (key or mouse)
|
|
mov eax,[vpx]
|
|
mov ebx,[vpy]
|
|
|
|
|
|
mov ecx,[vheading]
|
|
imul ecx,4
|
|
add ecx,sinus
|
|
mov edi,[ecx]
|
|
|
|
mov edx,[vheading]
|
|
imul edx,4
|
|
add edx,sinus
|
|
add edx,3600
|
|
cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600
|
|
jb ok200
|
|
sub edx,14400
|
|
ok200:
|
|
mov esi,[edx]
|
|
; sal esi,1 ; edit walking speed here
|
|
; sal edi,1
|
|
|
|
add eax,edi ; newPx
|
|
add ebx,esi ; newPy
|
|
mov edi,eax ; newPx / ffff
|
|
mov esi,ebx ; newPy / ffff
|
|
sar edi,16
|
|
sar esi,16
|
|
mov ecx,esi
|
|
sal ecx,5 ; equal *32
|
|
add ecx,edi
|
|
add ecx,grid
|
|
cmp [ecx],byte 0 ; collision check
|
|
jne cannotwalk0
|
|
mov [vpx],eax
|
|
mov [vpy],ebx
|
|
mov [mouseya],dword 1 ; set refresh flag
|
|
cannotwalk0:
|
|
jmp check_refresh
|
|
|
|
s_down: ; walk backward
|
|
mov eax,[vpx]
|
|
mov ebx,[vpy]
|
|
|
|
mov ecx,[vheading]
|
|
imul ecx,4
|
|
add ecx,sinus
|
|
mov edi,[ecx]
|
|
|
|
mov edx,[vheading]
|
|
imul edx,4
|
|
add edx,sinus
|
|
add edx,3600
|
|
cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600
|
|
jb ok201
|
|
sub edx,14400
|
|
ok201:
|
|
|
|
mov esi,[edx]
|
|
; sal esi,1 ; edit walking speed here
|
|
; sal edi,1
|
|
|
|
sub eax,edi ; newPx
|
|
sub ebx,esi ; newPy
|
|
mov edi,eax ; newPx / ffff
|
|
mov esi,ebx ; newPy / ffff
|
|
sar edi,16
|
|
sar esi,16
|
|
mov ecx,esi
|
|
sal ecx,5
|
|
add ecx,edi
|
|
add ecx,grid
|
|
cmp [ecx],byte 0
|
|
jne cannotwalk1
|
|
mov [vpx],eax
|
|
mov [vpy],ebx
|
|
mov [mouseya],dword 1
|
|
cannotwalk1:
|
|
jmp check_refresh
|
|
|
|
s_left: ; turn left (key)
|
|
mov edi,[vheading] ; heading
|
|
add edi,50
|
|
cmp edi,3600
|
|
jb ok_heading0
|
|
sub edi,3600
|
|
ok_heading0:
|
|
mov [vheading],edi
|
|
mov [mouseya],dword 1
|
|
jmp check_refresh
|
|
|
|
s_right: ; turn right
|
|
mov edi,[vheading]
|
|
sub edi,50
|
|
cmp edi,-1
|
|
jg ok_heading1
|
|
add edi,3600
|
|
ok_heading1:
|
|
mov [vheading],edi
|
|
mov [mouseya],dword 1
|
|
jmp check_refresh
|
|
|
|
m_left: ; turn left (mouse)
|
|
mov edi,[vheading] ; heading
|
|
mov ecx,315
|
|
sub ecx,eax
|
|
sar ecx,2
|
|
add edi,ecx
|
|
cmp edi,3600
|
|
jb ok_heading2
|
|
sub edi,3600
|
|
ok_heading2:
|
|
mov [vheading],edi
|
|
mov [mouseya],dword 1
|
|
jmp continue ; allow both: walk and rotate
|
|
|
|
m_right: ; turn right
|
|
mov edi,[vheading]
|
|
sub eax,325
|
|
sar eax,2
|
|
sub edi,eax
|
|
cmp edi,-1
|
|
jg ok_heading3
|
|
add edi,3600
|
|
ok_heading3:
|
|
mov [vheading],edi
|
|
mov [mouseya],dword 1
|
|
jmp continue
|
|
|
|
|
|
|
|
button2: ; button
|
|
mov eax,17 ; get id
|
|
int 0x40
|
|
cmp ah,1 ; button id=1 ?
|
|
jne gamestart
|
|
|
|
; eo GAME mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
|
|
finish:
|
|
mov eax,-1 ; close this program
|
|
int 0x40
|
|
|
|
|
|
; *********************************************
|
|
; ******* WINDOW DEFINITIONS AND DRAW ********
|
|
; *********************************************
|
|
|
|
|
|
draw_window:
|
|
|
|
mov eax,12 ; function 12:tell os about windowdraw
|
|
mov ebx,1 ; 1, start of draw
|
|
int 0x40
|
|
|
|
; DRAW WINDOW
|
|
mov eax,0 ; function 0 : define and draw window
|
|
mov ebx,50*65536+649 ; [x start] *65536 + [x size]
|
|
mov ecx,50*65536+504 ; [y start] *65536 + [y size]
|
|
mov edx,0x02ffffff ; color of work area RRGGBB,8->color gl
|
|
mov esi,0x80777777 ; color of grab bar RRGGBB,8->color gl
|
|
mov edi,0x00777777 ; color of frames RRGGBB
|
|
int 0x40
|
|
|
|
; WINDOW LABEL
|
|
mov eax,4 ; function 4 : write text to window
|
|
mov ebx,8*65536+8 ; [x start] *65536 + [y start]
|
|
mov ecx,0x00ddeeff ; color of text RRGGBB
|
|
mov edx,labelt ; pointer to text beginning
|
|
mov esi,labellen-labelt ; text length
|
|
int 0x40
|
|
|
|
; CLOSE BUTTON
|
|
mov eax,8 ; function 8 : define and draw button
|
|
mov ebx,(649-19)*65536+12 ; [x start] *65536 + [x size]
|
|
mov ecx,5*65536+12 ; [y start] *65536 + [y size]
|
|
mov edx,1 ; button id
|
|
mov esi,0x777777 ; button color RRGGBB
|
|
int 0x40
|
|
|
|
|
|
mov eax,12 ; function 12:tell os about windowdraw
|
|
mov ebx,2 ; 2, end of draw
|
|
int 0x40
|
|
|
|
ret
|
|
|
|
; *********************************************
|
|
; ******* COMPUTE 3D-VIEW ********
|
|
; *********************************************
|
|
draw_stuff:
|
|
|
|
|
|
mov [step1],dword 1
|
|
;mov [step64],dword 64
|
|
mov esi,[vheading]
|
|
add esi,320
|
|
mov [va],esi
|
|
mov eax,[vheading]
|
|
sub eax,320
|
|
mov [vacompare],eax
|
|
;------------------------------------ CAST 640 PIXEL COLUMNS ---------------
|
|
; FOR A=320+heading to -319+heading step -1 (a is stored in [va])
|
|
;---------------------------------------------------------------------------
|
|
; mov edx,5
|
|
mov [vx1],dword 0 ;5 ;edx ; init x1 ... pixelcolumn
|
|
for_a:
|
|
mov edx,[vx1]
|
|
mov [vx1b],edx
|
|
sub [vx1b],dword 320
|
|
mov edx,[va] ; a2
|
|
cmp edx,-1 ; a2 is a mod 3600
|
|
jg ok1
|
|
add edx,3600
|
|
ok1:
|
|
cmp edx,3600
|
|
jb ok2
|
|
sub edx,3600
|
|
ok2:
|
|
|
|
; get stepx and stepy
|
|
mov ecx,edx
|
|
imul ecx,4
|
|
add ecx,sinus ; pointer to stepx
|
|
mov esi,[ecx]
|
|
sar esi,4 ; accuracy
|
|
mov [vstepx],esi ; store stepx
|
|
|
|
mov esi,edx
|
|
imul esi,4
|
|
add esi,sinus ; pointer to stepy
|
|
add esi,3600
|
|
cmp esi,eosinus ;cosinus taken from ((sinus plus 900) mod 3600)
|
|
jb ok202
|
|
sub esi,14400
|
|
ok202:
|
|
|
|
mov ecx,[esi]
|
|
sar ecx,4
|
|
mov [vstepy],ecx ; store stepy
|
|
|
|
|
|
mov eax,[vpx] ; get Camera Position
|
|
mov ebx,[vpy]
|
|
mov [vxx],eax ; init caster position
|
|
mov [vyy],ebx
|
|
|
|
mov edi,0 ; init L (number of raycsting-steps)
|
|
mov [step1],dword 1 ; init Caster stepwidth for L
|
|
|
|
; raycast a pixel column.................................
|
|
raycast:
|
|
add edi,[step1] ; count caster steps
|
|
;jmp nodouble ; use this to prevent blinking/wobbling textures: much slower!
|
|
|
|
cmp edi,32
|
|
je double
|
|
cmp edi,512
|
|
je double
|
|
cmp edi,1024
|
|
je double
|
|
jmp nodouble
|
|
|
|
double:
|
|
mov edx,[step1]
|
|
sal edx,1
|
|
mov [step1],edx
|
|
|
|
mov edx,[vstepx]
|
|
sal edx,1
|
|
mov [vstepx],edx
|
|
|
|
mov edx,[vstepy]
|
|
sal edx,1
|
|
mov [vstepy],edx
|
|
|
|
nodouble:
|
|
|
|
mov eax,32000 ; 3600 ; determine Floors Height based on distance
|
|
mov edx,0
|
|
mov ebx,edi
|
|
|
|
div ebx
|
|
mov esi,eax
|
|
mov [vdd],esi
|
|
mov edx,260
|
|
sub edx,esi
|
|
mov [vh],edx
|
|
|
|
cmp edx,22
|
|
jb no_nu_pixel
|
|
cmp edx,259
|
|
jg no_nu_pixel ; draw only new pixels
|
|
cmp edx,[h_old]
|
|
je no_nu_pixel
|
|
|
|
mov eax,[vxx] ; calc floor pixel
|
|
mov ebx,[vyy]
|
|
|
|
and eax,0x0000FFFF
|
|
and ebx,0x0000FFFF
|
|
|
|
shr eax,10
|
|
shr ebx,10 ; pixel coords inside Texture x,y 64*64
|
|
mov [xfrac],eax
|
|
mov [yfrac],ebx
|
|
|
|
|
|
|
|
; plot floor pixel !!!!
|
|
mov [vl],edi ; save L
|
|
mov [ytemp],esi ; remember L bzw. H
|
|
|
|
mov edi,[yfrac] ; get pixel color of this floor pixel
|
|
sal edi,8
|
|
mov esi,[xfrac]
|
|
sal esi,2
|
|
add edi,esi
|
|
add edi,wall ; in fact its floor, just using the wall texture :)
|
|
mov edx,[edi]
|
|
mov [remesi],esi
|
|
|
|
;**** calculate pixel adress:****
|
|
mov esi,[ytemp]
|
|
add esi,240
|
|
imul esi,1920
|
|
add esi,[vx1]
|
|
add esi,[vx1]
|
|
add esi,[vx1]
|
|
add esi,0x80000
|
|
|
|
cmp esi,0x80000+1920*480
|
|
jg foff0
|
|
cmp esi,0x80000
|
|
jb foff0
|
|
; now we have the adress of the floor-pixel color in edi
|
|
; and the adress of the pixel in the image in esi
|
|
|
|
mov edx,[edi]
|
|
;******************** custom distance DARKEN Floor
|
|
|
|
mov eax,[vdd]
|
|
|
|
; jmp nodark0 ; use this to deactivate darkening floor (a bit faster)
|
|
|
|
cmp eax,80
|
|
jg nodark0
|
|
; split rgb
|
|
|
|
mov [blue],edx
|
|
and [blue],dword 255
|
|
|
|
shr edx,8
|
|
mov [green],edx
|
|
and [green],dword 255
|
|
|
|
shr edx,8
|
|
mov [red],edx
|
|
and [red],dword 255
|
|
|
|
mov eax,81 ; darkness parameter
|
|
sub eax,[vdd]
|
|
sal eax,1
|
|
|
|
; reduce rgb
|
|
sub [red],eax
|
|
cmp [red], dword 0
|
|
jg notblack10
|
|
mov [red],dword 0
|
|
notblack10:
|
|
|
|
sub [green],eax
|
|
cmp [green],dword 0
|
|
jg notblack20
|
|
mov [green],dword 0
|
|
notblack20:
|
|
|
|
mov edx,[blue]
|
|
sub [blue],eax
|
|
cmp [blue],dword 0
|
|
jg notblack30
|
|
mov [blue],dword 0
|
|
notblack30:
|
|
|
|
shl dword [red],16 ; reassemble rgb
|
|
shl dword [green],8
|
|
mov edx,[red]
|
|
or edx,[green]
|
|
or edx,[blue]
|
|
|
|
nodark0:
|
|
; eo custom darken floor
|
|
|
|
|
|
mov eax,edx
|
|
mov [esi],eax ; actually draw the floor pixel
|
|
|
|
; paint "forgotten" pixels
|
|
|
|
mov edx,[lasty]
|
|
sub edx,1920
|
|
cmp esi,edx
|
|
je foff0
|
|
mov [esi+1920],eax
|
|
|
|
sub edx,1920
|
|
cmp esi,edx
|
|
je foff0
|
|
mov [edx+1920],eax
|
|
|
|
sub edx,1920
|
|
cmp esi,edx
|
|
je foff0
|
|
mov [edx+1920],eax
|
|
|
|
foff0:
|
|
mov [lasty],esi
|
|
;**** end of draw floor pixel ****
|
|
|
|
mov esi,[remesi]
|
|
mov edi,[vl] ; restore L
|
|
|
|
no_nu_pixel:
|
|
|
|
|
|
mov esi,[vh]
|
|
mov [h_old],esi
|
|
|
|
mov eax,[vxx]
|
|
mov ebx,[vyy]
|
|
|
|
add eax,[vstepx] ; casting...
|
|
add ebx,[vstepy]
|
|
|
|
mov [vxx],eax
|
|
mov [vyy],ebx
|
|
|
|
sar eax,16
|
|
sar ebx,16
|
|
|
|
mov [vpxi],eax ; casters position in Map Grid
|
|
mov [vpyi],ebx
|
|
|
|
mov edx,ebx
|
|
; imul edx,32
|
|
shl edx,5
|
|
add edx,grid
|
|
add edx,eax
|
|
cmp [edx],byte 0 ; raycaster reached a wall? (0=no)
|
|
jne getout
|
|
cmp edi,10000 ; limit view range
|
|
jb raycast
|
|
;................................................
|
|
getout:
|
|
mov eax,[edx] ; store Grid Wall Value for Texture Selection
|
|
mov [vk],eax
|
|
|
|
call blur ; deactivate this (blurs the near floor) : a bit faster
|
|
|
|
; simply copy floor to ceil pixel column here
|
|
;jmp nocopy ; use this for test purposes
|
|
|
|
pusha
|
|
mov eax,0x80000+1920*240
|
|
mov ebx,0x80000+1920*240
|
|
|
|
copyfloor:
|
|
sub eax,1920
|
|
add ebx,1920
|
|
|
|
mov ecx,0
|
|
add ecx,[vx1]
|
|
add ecx,[vx1]
|
|
add ecx,[vx1]
|
|
|
|
mov edx,ecx
|
|
add ecx,eax
|
|
add edx,ebx
|
|
|
|
mov esi,[edx]
|
|
mov [ecx],esi
|
|
|
|
cmp eax,0x80000
|
|
jg copyfloor
|
|
|
|
popa
|
|
; *** end of copy floor to ceil
|
|
;nocopy:
|
|
;__________________________________________________________________________
|
|
|
|
|
|
; draw this pixelrows wall
|
|
mov [vl],edi
|
|
|
|
mov edi,260
|
|
sub edi,[vdd]
|
|
cmp edi,0
|
|
jg ok3
|
|
xor edi,edi
|
|
ok3:
|
|
mov [vbottom],edi ; end wall ceil (or window top)
|
|
|
|
mov esi,262
|
|
add esi,[vdd] ; start wall floor
|
|
|
|
xor edi,edi
|
|
|
|
; somethin is wrong with xfrac,so recalc...
|
|
|
|
mov eax,[vxx]
|
|
and eax,0x0000FFFF
|
|
shr eax,10
|
|
mov [xfrac],eax
|
|
|
|
mov eax,[vyy]
|
|
and eax,0x0000FFFF
|
|
shr eax,10
|
|
mov [yfrac],eax
|
|
|
|
pixelrow:
|
|
|
|
; find each pixels color:
|
|
|
|
add edi,64
|
|
sub esi,1
|
|
cmp esi, 502 ; dont calc offscreen-pixels
|
|
jg speedup
|
|
|
|
xor edx,edx
|
|
mov eax, edi
|
|
mov ebx,[vdd]
|
|
add ebx,[vdd]
|
|
div ebx
|
|
and eax,63
|
|
mov [ytemp],eax ; get y of texture for wall
|
|
|
|
mov eax,[xfrac]
|
|
add eax,[yfrac]
|
|
|
|
and eax,63
|
|
mov [xtemp],eax ; get x of texture for wall
|
|
|
|
; now prepare to plot that wall-pixel...
|
|
mov [remedi],edi
|
|
|
|
mov edi,[ytemp]
|
|
sal edi,8
|
|
mov edx,[xtemp]
|
|
sal edx,2
|
|
add edi,edx
|
|
|
|
mov eax,[vk] ; determine which texture should be used
|
|
and eax,255
|
|
|
|
cmp eax,1
|
|
jne checkmore1
|
|
add edi,ceil
|
|
jmp foundtex
|
|
checkmore1:
|
|
|
|
cmp eax,2
|
|
jne checkmore2
|
|
add edi,wall
|
|
jmp foundtex
|
|
checkmore2:
|
|
|
|
cmp eax,3
|
|
jne checkmore3
|
|
add edi,wall2
|
|
jmp foundtex
|
|
checkmore3:
|
|
|
|
cmp eax,4
|
|
jne checkmore4
|
|
add edi,wall3
|
|
jmp foundtex
|
|
checkmore4:
|
|
|
|
cmp eax,5
|
|
jne checkmore5
|
|
add edi,wall4
|
|
jmp foundtex
|
|
checkmore5:
|
|
|
|
cmp eax,6
|
|
jne checkmore6
|
|
add edi,wall5
|
|
jmp foundtex
|
|
checkmore6:
|
|
|
|
cmp eax,7
|
|
jne checkmore7
|
|
add edi,wall6
|
|
jmp foundtex
|
|
checkmore7:
|
|
|
|
cmp eax,8
|
|
jne checkmore8
|
|
add edi,wall7
|
|
jmp foundtex
|
|
checkmore8:
|
|
|
|
foundtex:
|
|
|
|
mov edx,[edi] ; get pixel color inside texture
|
|
|
|
; ***pseudoshade south-west
|
|
jmp east ; activate this for southwest pseudoshade : a bit slower + blink-bug
|
|
mov edi,[yfrac]
|
|
mov [pseudo],dword 0 ; store flag for custom distance darkening
|
|
cmp edi,[xfrac]
|
|
jge east
|
|
and edx,0x00FEFEFE
|
|
shr edx,1
|
|
mov [pseudo],dword 1
|
|
east:
|
|
|
|
call dark_distance ; deactivate wall distance darkening: a bit faster
|
|
|
|
; ******* DRAW WALL PIXEL *******
|
|
mov eax,esi
|
|
sub eax,22
|
|
imul eax,1920
|
|
add eax,[vx1]
|
|
add eax,[vx1]
|
|
add eax,[vx1]
|
|
add eax,0x80000
|
|
|
|
cmp eax,0x80000+1920*480
|
|
jg dont_draw
|
|
cmp eax,0x80000
|
|
jb dont_draw
|
|
mov [eax],edx ; actually set the pixel in the image
|
|
; *** eo draw wall pixel
|
|
dont_draw:
|
|
mov edi,[remedi]
|
|
speedup:
|
|
cmp esi,[vbottom] ; end of this column?
|
|
jg pixelrow
|
|
|
|
mov edi,[vl] ; restoring
|
|
mov eax,[vx1] ; inc X1
|
|
add eax,1
|
|
mov [vx1],eax
|
|
|
|
;*** NEXT A ***
|
|
mov esi,[va]
|
|
sub esi,1
|
|
mov [va],esi
|
|
cmp esi,[vacompare]
|
|
jg for_a
|
|
;*** EO NEXT A ***
|
|
;---------------------------------------------------------------------------
|
|
|
|
|
|
; **** put image !!!!!****
|
|
; ***********************
|
|
mov eax,7
|
|
mov ebx,0x80000
|
|
mov ecx,640*65536+480
|
|
mov edx,5*65536+20
|
|
int 0x40
|
|
|
|
ret
|
|
|
|
blur:
|
|
|
|
pusha
|
|
mov eax,0x080000+360*1920
|
|
|
|
copyfloor2:
|
|
add eax,1920
|
|
mov ebx,eax
|
|
add ebx,[vx1]
|
|
add ebx,[vx1]
|
|
add ebx,[vx1]
|
|
|
|
mov ecx,[ebx-15]
|
|
and ecx,0x00FEFEFE
|
|
shr ecx,1
|
|
mov edx,[ebx-12]
|
|
and edx,0x00FEFEFE
|
|
shr edx,1
|
|
add edx,ecx
|
|
and edx,0x00FEFEFE
|
|
shr edx,1
|
|
|
|
mov ecx,[ebx-9]
|
|
and ecx,0x00FEFEFE
|
|
shr ecx,1
|
|
add edx,ecx
|
|
|
|
and edx,0x00FEFEFE
|
|
shr edx,1
|
|
|
|
mov ecx,[ebx-6]
|
|
and ecx,0x00FEFEFE
|
|
shr ecx,1
|
|
add edx,ecx
|
|
|
|
and edx,0x00FEFEFE
|
|
shr edx,1
|
|
|
|
mov ecx,[ebx-3]
|
|
and ecx,0x00FEFEFE
|
|
shr ecx,1
|
|
add edx,ecx
|
|
|
|
and edx,0x00FEFEFE
|
|
shr edx,1
|
|
|
|
mov ecx,[ebx]
|
|
and ecx,0x00FEFEFE
|
|
shr ecx,1
|
|
add edx,ecx
|
|
|
|
mov [ebx],edx
|
|
|
|
cmp eax,0x80000+478*1920
|
|
jb copyfloor2
|
|
|
|
popa
|
|
|
|
ret
|
|
|
|
|
|
|
|
; ******* Darken by Distance *******
|
|
dark_distance:
|
|
|
|
; color must be in edx, wall height in [vdd]
|
|
|
|
mov eax,[vdd]
|
|
cmp eax,50
|
|
jg nodark
|
|
; split rgb
|
|
|
|
mov [blue],edx
|
|
and [blue],dword 255
|
|
|
|
shr edx,8
|
|
mov [green],edx
|
|
and [green],dword 255
|
|
|
|
shr edx,8
|
|
mov [red],edx
|
|
and [red],dword 255
|
|
|
|
mov eax,51 ; darkness parameter
|
|
sub eax,[vdd]
|
|
cmp [pseudo],dword 1
|
|
je isdarkside
|
|
sal eax,2
|
|
isdarkside:
|
|
|
|
; reduce rgb
|
|
sub [red],eax
|
|
cmp [red], dword 0
|
|
jg notblack10b
|
|
mov [red],dword 0
|
|
notblack10b:
|
|
|
|
sub [green],eax
|
|
cmp [green],dword 0
|
|
jg notblack20b
|
|
mov [green],dword 0
|
|
notblack20b:
|
|
|
|
mov edx,[blue]
|
|
sub [blue],eax
|
|
cmp [blue],dword 0
|
|
jg notblack30b
|
|
mov [blue],dword 0
|
|
notblack30b:
|
|
|
|
shl dword [red],16 ; reassemble rgb
|
|
shl dword [green],8
|
|
mov edx,[red]
|
|
or edx,[green]
|
|
or edx,[blue]
|
|
mov eax,edx
|
|
|
|
nodark:
|
|
|
|
ret
|
|
|
|
|
|
; DATA AREA
|
|
|
|
;ceil=ceil
|
|
;wall=wall floor
|
|
;2 corner stone
|
|
;3 leaf mosaic
|
|
;4 closed window
|
|
;5 greek mosaic
|
|
;6 old street stones
|
|
;7 maya wall
|
|
|
|
grid: ; 32*32 Blocks, Map: 0 = Air, 1 to 8 = Wall
|
|
db 2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,1,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
|
|
db 1,0,0,0,1,0,0,0,0,0,0,3,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8
|
|
db 5,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
|
|
db 1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,3,3,3,3,0,0,0,0,0,0,8
|
|
db 5,0,1,2,3,4,5,6,7,8,2,1,3,3,3,0,5,0,2,1,2,3,0,0,0,0,0,0,0,0,0,8
|
|
db 1,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,0,0,0,8
|
|
db 5,0,0,0,1,0,0,4,0,0,0,1,0,0,0,0,5,0,0,0,0,3,3,0,3,3,0,0,0,0,0,8
|
|
db 1,1,0,1,1,1,1,4,1,0,1,3,0,0,0,0,5,2,1,2,0,3,0,0,0,3,0,0,0,0,0,8
|
|
db 5,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,5,0,0,0,0,3,0,0,0,3,0,0,0,0,0,8
|
|
db 1,0,0,0,1,0,0,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3,0,0,0,0,0,8
|
|
db 5,0,0,0,0,0,0,5,0,0,0,1,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,0,0,0,8
|
|
db 1,4,4,4,4,4,4,4,4,4,4,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,8,8
|
|
db 2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,0,0,0,6,6,0,7,7,7,7,7,7,7,7,7,8,8
|
|
db 1,0,0,0,1,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1
|
|
db 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,2,2,2,2,0,0,0,0,3,3,3,3,3,1
|
|
db 1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,6,0,0,0,0,2,0,0,0,0,3,0,0,0,0,1
|
|
db 5,0,2,3,2,3,2,3,2,3,2,1,0,0,0,0,6,0,2,2,0,2,0,0,0,0,3,0,5,5,0,1
|
|
db 1,0,0,0,0,0,0,4,0,0,0,3,0,0,0,0,6,0,0,2,0,2,0,2,0,0,3,0,0,0,0,1
|
|
db 5,0,0,0,1,0,0,4,0,0,0,1,0,0,0,0,6,0,0,2,2,2,0,2,0,0,3,3,3,3,0,1
|
|
db 1,1,0,1,1,1,1,4,1,0,1,3,7,7,7,0,6,0,0,0,0,0,0,2,0,0,0,0,0,3,0,1
|
|
db 5,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,6,0,0,0,0,2,2,2,0,0,0,0,0,3,0,1
|
|
db 1,0,0,0,1,0,0,5,0,0,0,3,0,0,0,0,6,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1
|
|
db 5,0,0,0,0,0,0,5,0,0,0,1,0,0,0,0,6,0,5,1,0,2,0,0,4,4,0,4,4,0,0,1
|
|
db 1,4,1,4,1,4,1,4,1,4,1,3,0,0,0,0,6,0,0,5,0,2,0,0,0,4,0,4,0,0,0,1
|
|
db 1,0,0,0,0,0,0,4,0,0,0,3,0,3,3,3,6,0,0,1,0,1,0,0,4,4,0,4,4,0,0,1
|
|
db 5,0,0,0,1,0,0,4,0,0,0,1,0,0,0,0,6,0,0,5,0,1,0,4,4,0,0,0,4,4,0,1
|
|
db 1,1,0,1,1,1,1,4,1,0,1,3,0,0,0,0,6,0,0,1,0,1,0,4,0,0,0,0,0,4,0,1
|
|
db 5,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,6,0,0,5,0,1,0,4,0,0,0,0,0,4,0,1
|
|
db 1,0,0,0,1,0,0,5,0,0,0,3,0,0,0,0,6,1,5,1,0,1,0,4,4,0,0,0,4,4,0,1
|
|
db 5,0,0,0,0,0,0,5,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,4,4,4,4,4,0,0,1
|
|
db 1,4,1,4,1,4,1,4,1,4,1,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1
|
|
db 2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
|
|
|
|
|
sinus:
|
|
dd 0,11,23,34,46,57,69,80,92,103
|
|
dd 114,126,137,149,160,172,183,194,206,217
|
|
dd 229,240,252,263,274,286,297,309,320,332
|
|
dd 343,354,366,377,389,400,411,423,434,446
|
|
dd 457,469,480,491,503,514,526,537,548,560
|
|
dd 571,583,594,605,617,628,640,651,662,674
|
|
dd 685,696,708,719,731,742,753,765,776,787
|
|
dd 799,810,821,833,844,855,867,878,889,901
|
|
dd 912,923,935,946,957,969,980,991,1003,1014
|
|
dd 1025,1036,1048,1059,1070,1082,1093,1104,1115,1127
|
|
dd 1138,1149,1161,1172,1183,1194,1206,1217,1228,1239
|
|
dd 1250,1262,1273,1284,1295,1307,1318,1329,1340,1351
|
|
dd 1363,1374,1385,1396,1407,1418,1430,1441,1452,1463
|
|
dd 1474,1485,1496,1508,1519,1530,1541,1552,1563,1574
|
|
dd 1585,1597,1608,1619,1630,1641,1652,1663,1674,1685
|
|
dd 1696,1707,1718,1729,1740,1751,1762,1773,1784,1795
|
|
dd 1806,1817,1828,1839,1850,1861,1872,1883,1894,1905
|
|
dd 1916,1927,1938,1949,1960,1971,1982,1992,2003,2014
|
|
dd 2025,2036,2047,2058,2069,2079,2090,2101,2112,2123
|
|
dd 2134,2144,2155,2166,2177,2188,2198,2209,2220,2231
|
|
dd 2241,2252,2263,2274,2284,2295,2306,2316,2327,2338
|
|
dd 2349,2359,2370,2381,2391,2402,2413,2423,2434,2444
|
|
dd 2455,2466,2476,2487,2497,2508,2518,2529,2540,2550
|
|
dd 2561,2571,2582,2592,2603,2613,2624,2634,2645,2655
|
|
dd 2666,2676,2686,2697,2707,2718,2728,2738,2749,2759
|
|
dd 2770,2780,2790,2801,2811,2821,2832,2842,2852,2863
|
|
dd 2873,2883,2893,2904,2914,2924,2934,2945,2955,2965
|
|
dd 2975,2985,2996,3006,3016,3026,3036,3046,3056,3067
|
|
dd 3077,3087,3097,3107,3117,3127,3137,3147,3157,3167
|
|
dd 3177,3187,3197,3207,3217,3227,3237,3247,3257,3267
|
|
dd 3277,3287,3297,3306,3316,3326,3336,3346,3356,3365
|
|
dd 3375,3385,3395,3405,3414,3424,3434,3444,3453,3463
|
|
dd 3473,3483,3492,3502,3512,3521,3531,3540,3550,3560
|
|
dd 3569,3579,3588,3598,3608,3617,3627,3636,3646,3655
|
|
dd 3665,3674,3684,3693,3703,3712,3721,3731,3740,3750
|
|
dd 3759,3768,3778,3787,3796,3806,3815,3824,3834,3843
|
|
dd 3852,3861,3871,3880,3889,3898,3907,3917,3926,3935
|
|
dd 3944,3953,3962,3971,3980,3990,3999,4008,4017,4026
|
|
dd 4035,4044,4053,4062,4071,4080,4089,4098,4106,4115
|
|
dd 4124,4133,4142,4151,4160,4169,4177,4186,4195,4204
|
|
dd 4213,4221,4230,4239,4247,4256,4265,4274,4282,4291
|
|
dd 4299,4308,4317,4325,4334,4342,4351,4360,4368,4377
|
|
dd 4385,4394,4402,4411,4419,4427,4436,4444,4453,4461
|
|
dd 4469,4478,4486,4495,4503,4511,4519,4528,4536,4544
|
|
dd 4552,4561,4569,4577,4585,4593,4602,4610,4618,4626
|
|
dd 4634,4642,4650,4658,4666,4674,4682,4690,4698,4706
|
|
dd 4714,4722,4730,4738,4746,4754,4762,4769,4777,4785
|
|
dd 4793,4801,4808,4816,4824,4832,4839,4847,4855,4863
|
|
dd 4870,4878,4885,4893,4901,4908,4916,4923,4931,4938
|
|
dd 4946,4953,4961,4968,4976,4983,4991,4998,5006,5013
|
|
dd 5020,5028,5035,5042,5050,5057,5064,5071,5079,5086
|
|
dd 5093,5100,5107,5115,5122,5129,5136,5143,5150,5157
|
|
dd 5164,5171,5178,5185,5192,5199,5206,5213,5220,5227
|
|
dd 5234,5241,5248,5254,5261,5268,5275,5282,5288,5295
|
|
dd 5302,5309,5315,5322,5329,5335,5342,5349,5355,5362
|
|
dd 5368,5375,5381,5388,5394,5401,5407,5414,5420,5427
|
|
dd 5433,5439,5446,5452,5459,5465,5471,5477,5484,5490
|
|
dd 5496,5502,5509,5515,5521,5527,5533,5539,5546,5552
|
|
dd 5558,5564,5570,5576,5582,5588,5594,5600,5606,5612
|
|
dd 5617,5623,5629,5635,5641,5647,5652,5658,5664,5670
|
|
dd 5675,5681,5687,5693,5698,5704,5709,5715,5721,5726
|
|
dd 5732,5737,5743,5748,5754,5759,5765,5770,5776,5781
|
|
dd 5786,5792,5797,5802,5808,5813,5818,5824,5829,5834
|
|
dd 5839,5844,5850,5855,5860,5865,5870,5875,5880,5885
|
|
dd 5890,5895,5900,5905,5910,5915,5920,5925,5930,5935
|
|
dd 5939,5944,5949,5954,5959,5963,5968,5973,5978,5982
|
|
dd 5987,5992,5996,6001,6005,6010,6015,6019,6024,6028
|
|
dd 6033,6037,6041,6046,6050,6055,6059,6063,6068,6072
|
|
dd 6076,6081,6085,6089,6093,6097,6102,6106,6110,6114
|
|
dd 6118,6122,6126,6130,6134,6138,6142,6146,6150,6154
|
|
dd 6158,6162,6166,6170,6174,6178,6181,6185,6189,6193
|
|
dd 6196,6200,6204,6208,6211,6215,6218,6222,6226,6229
|
|
dd 6233,6236,6240,6243,6247,6250,6254,6257,6260,6264
|
|
dd 6267,6270,6274,6277,6280,6284,6287,6290,6293,6296
|
|
dd 6300,6303,6306,6309,6312,6315,6318,6321,6324,6327
|
|
dd 6330,6333,6336,6339,6342,6345,6348,6350,6353,6356
|
|
dd 6359,6362,6364,6367,6370,6372,6375,6378,6380,6383
|
|
dd 6386,6388,6391,6393,6396,6398,6401,6403,6405,6408
|
|
dd 6410,6413,6415,6417,6420,6422,6424,6426,6429,6431
|
|
dd 6433,6435,6437,6440,6442,6444,6446,6448,6450,6452
|
|
dd 6454,6456,6458,6460,6462,6464,6466,6467,6469,6471
|
|
dd 6473,6475,6476,6478,6480,6482,6483,6485,6486,6488
|
|
dd 6490,6491,6493,6494,6496,6497,6499,6500,6502,6503
|
|
dd 6505,6506,6507,6509,6510,6511,6513,6514,6515,6516
|
|
dd 6518,6519,6520,6521,6522,6523,6524,6525,6527,6528
|
|
dd 6529,6530,6531,6531,6532,6533,6534,6535,6536,6537
|
|
dd 6538,6538,6539,6540,6541,6541,6542,6543,6543,6544
|
|
dd 6545,6545,6546,6546,6547,6547,6548,6548,6549,6549
|
|
dd 6550,6550,6550,6551,6551,6551,6552,6552,6552,6552
|
|
dd 6553,6553,6553,6553,6553,6553,6553,6553,6553,6553
|
|
dd 6554,6553,6553,6553,6553,6553,6553,6553,6553,6553
|
|
dd 6553,6552,6552,6552,6552,6551,6551,6551,6550,6550
|
|
dd 6550,6549,6549,6548,6548,6547,6547,6546,6546,6545
|
|
dd 6545,6544,6543,6543,6542,6541,6541,6540,6539,6538
|
|
dd 6538,6537,6536,6535,6534,6533,6532,6531,6531,6530
|
|
dd 6529,6528,6527,6525,6524,6523,6522,6521,6520,6519
|
|
dd 6518,6516,6515,6514,6513,6511,6510,6509,6507,6506
|
|
dd 6505,6503,6502,6500,6499,6497,6496,6494,6493,6491
|
|
dd 6490,6488,6486,6485,6483,6482,6480,6478,6476,6475
|
|
dd 6473,6471,6469,6467,6466,6464,6462,6460,6458,6456
|
|
dd 6454,6452,6450,6448,6446,6444,6442,6440,6437,6435
|
|
dd 6433,6431,6429,6426,6424,6422,6420,6417,6415,6413
|
|
dd 6410,6408,6405,6403,6401,6398,6396,6393,6391,6388
|
|
dd 6386,6383,6380,6378,6375,6372,6370,6367,6364,6362
|
|
dd 6359,6356,6353,6350,6348,6345,6342,6339,6336,6333
|
|
dd 6330,6327,6324,6321,6318,6315,6312,6309,6306,6303
|
|
dd 6300,6296,6293,6290,6287,6284,6280,6277,6274,6270
|
|
dd 6267,6264,6260,6257,6254,6250,6247,6243,6240,6236
|
|
dd 6233,6229,6226,6222,6218,6215,6211,6208,6204,6200
|
|
dd 6196,6193,6189,6185,6181,6178,6174,6170,6166,6162
|
|
dd 6158,6154,6150,6146,6142,6138,6134,6130,6126,6122
|
|
dd 6118,6114,6110,6106,6102,6097,6093,6089,6085,6081
|
|
dd 6076,6072,6068,6063,6059,6055,6050,6046,6041,6037
|
|
dd 6033,6028,6024,6019,6015,6010,6005,6001,5996,5992
|
|
dd 5987,5982,5978,5973,5968,5963,5959,5954,5949,5944
|
|
dd 5939,5935,5930,5925,5920,5915,5910,5905,5900,5895
|
|
dd 5890,5885,5880,5875,5870,5865,5860,5855,5850,5844
|
|
dd 5839,5834,5829,5824,5818,5813,5808,5802,5797,5792
|
|
dd 5786,5781,5776,5770,5765,5759,5754,5748,5743,5737
|
|
dd 5732,5726,5721,5715,5709,5704,5698,5693,5687,5681
|
|
dd 5675,5670,5664,5658,5652,5647,5641,5635,5629,5623
|
|
dd 5617,5612,5606,5600,5594,5588,5582,5576,5570,5564
|
|
dd 5558,5552,5546,5539,5533,5527,5521,5515,5509,5502
|
|
dd 5496,5490,5484,5477,5471,5465,5459,5452,5446,5439
|
|
dd 5433,5427,5420,5414,5407,5401,5394,5388,5381,5375
|
|
dd 5368,5362,5355,5349,5342,5335,5329,5322,5315,5309
|
|
dd 5302,5295,5288,5282,5275,5268,5261,5254,5248,5241
|
|
dd 5234,5227,5220,5213,5206,5199,5192,5185,5178,5171
|
|
dd 5164,5157,5150,5143,5136,5129,5122,5115,5107,5100
|
|
dd 5093,5086,5079,5071,5064,5057,5050,5042,5035,5028
|
|
dd 5020,5013,5006,4998,4991,4983,4976,4968,4961,4953
|
|
dd 4946,4938,4931,4923,4916,4908,4901,4893,4885,4878
|
|
dd 4870,4863,4855,4847,4839,4832,4824,4816,4808,4801
|
|
dd 4793,4785,4777,4769,4762,4754,4746,4738,4730,4722
|
|
dd 4714,4706,4698,4690,4682,4674,4666,4658,4650,4642
|
|
dd 4634,4626,4618,4610,4602,4593,4585,4577,4569,4561
|
|
dd 4552,4544,4536,4528,4519,4511,4503,4495,4486,4478
|
|
dd 4469,4461,4453,4444,4436,4427,4419,4411,4402,4394
|
|
dd 4385,4377,4368,4360,4351,4342,4334,4325,4317,4308
|
|
dd 4299,4291,4282,4274,4265,4256,4247,4239,4230,4221
|
|
dd 4213,4204,4195,4186,4177,4169,4160,4151,4142,4133
|
|
dd 4124,4115,4106,4098,4089,4080,4071,4062,4053,4044
|
|
dd 4035,4026,4017,4008,3999,3990,3980,3971,3962,3953
|
|
dd 3944,3935,3926,3917,3907,3898,3889,3880,3871,3861
|
|
dd 3852,3843,3834,3824,3815,3806,3796,3787,3778,3768
|
|
dd 3759,3750,3740,3731,3721,3712,3703,3693,3684,3674
|
|
dd 3665,3655,3646,3636,3627,3617,3608,3598,3588,3579
|
|
dd 3569,3560,3550,3540,3531,3521,3512,3502,3492,3483
|
|
dd 3473,3463,3453,3444,3434,3424,3414,3405,3395,3385
|
|
dd 3375,3365,3356,3346,3336,3326,3316,3306,3297,3287
|
|
dd 3277,3267,3257,3247,3237,3227,3217,3207,3197,3187
|
|
dd 3177,3167,3157,3147,3137,3127,3117,3107,3097,3087
|
|
dd 3077,3067,3056,3046,3036,3026,3016,3006,2996,2985
|
|
dd 2975,2965,2955,2945,2934,2924,2914,2904,2893,2883
|
|
dd 2873,2863,2852,2842,2832,2821,2811,2801,2790,2780
|
|
dd 2770,2759,2749,2738,2728,2718,2707,2697,2686,2676
|
|
dd 2666,2655,2645,2634,2624,2613,2603,2592,2582,2571
|
|
dd 2561,2550,2540,2529,2518,2508,2497,2487,2476,2466
|
|
dd 2455,2444,2434,2423,2413,2402,2391,2381,2370,2359
|
|
dd 2349,2338,2327,2316,2306,2295,2284,2274,2263,2252
|
|
dd 2241,2231,2220,2209,2198,2188,2177,2166,2155,2144
|
|
dd 2134,2123,2112,2101,2090,2079,2069,2058,2047,2036
|
|
dd 2025,2014,2003,1992,1982,1971,1960,1949,1938,1927
|
|
dd 1916,1905,1894,1883,1872,1861,1850,1839,1828,1817
|
|
dd 1806,1795,1784,1773,1762,1751,1740,1729,1718,1707
|
|
dd 1696,1685,1674,1663,1652,1641,1630,1619,1608,1597
|
|
dd 1585,1574,1563,1552,1541,1530,1519,1508,1496,1485
|
|
dd 1474,1463,1452,1441,1430,1418,1407,1396,1385,1374
|
|
dd 1363,1351,1340,1329,1318,1307,1295,1284,1273,1262
|
|
dd 1250,1239,1228,1217,1206,1194,1183,1172,1161,1149
|
|
dd 1138,1127,1115,1104,1093,1082,1070,1059,1048,1036
|
|
dd 1025,1014,1003,991,980,969,957,946,935,923
|
|
dd 912,901,889,878,867,855,844,833,821,810
|
|
dd 799,787,776,765,753,742,731,719,708,696
|
|
dd 685,674,662,651,640,628,617,605,594,583
|
|
dd 571,560,548,537,526,514,503,491,480,469
|
|
dd 457,446,434,423,411,400,389,377,366,354
|
|
dd 343,332,320,309,297,286,274,263,252,240
|
|
dd 229,217,206,194,183,172,160,149,137,126
|
|
dd 114,103,92,80,69,57,46,34,23,11
|
|
dd 0,-11,-23,-34,-46,-57,-69,-80,-92,-103
|
|
dd -114,-126,-137,-149,-160,-172,-183,-194,-206,-217
|
|
dd -229,-240,-252,-263,-274,-286,-297,-309,-320,-332
|
|
dd -343,-354,-366,-377,-389,-400,-411,-423,-434,-446
|
|
dd -457,-469,-480,-491,-503,-514,-526,-537,-548,-560
|
|
dd -571,-583,-594,-605,-617,-628,-640,-651,-662,-674
|
|
dd -685,-696,-708,-719,-731,-742,-753,-765,-776,-787
|
|
dd -799,-810,-821,-833,-844,-855,-867,-878,-889,-901
|
|
dd -912,-923,-935,-946,-957,-969,-980,-991,-1003,-1014
|
|
dd -1025,-1036,-1048,-1059,-1070,-1082,-1093,-1104,-1115,-1127
|
|
dd -1138,-1149,-1161,-1172,-1183,-1194,-1206,-1217,-1228,-1239
|
|
dd -1250,-1262,-1273,-1284,-1295,-1307,-1318,-1329,-1340,-1351
|
|
dd -1363,-1374,-1385,-1396,-1407,-1418,-1430,-1441,-1452,-1463
|
|
dd -1474,-1485,-1496,-1508,-1519,-1530,-1541,-1552,-1563,-1574
|
|
dd -1585,-1597,-1608,-1619,-1630,-1641,-1652,-1663,-1674,-1685
|
|
dd -1696,-1707,-1718,-1729,-1740,-1751,-1762,-1773,-1784,-1795
|
|
dd -1806,-1817,-1828,-1839,-1850,-1861,-1872,-1883,-1894,-1905
|
|
dd -1916,-1927,-1938,-1949,-1960,-1971,-1982,-1992,-2003,-2014
|
|
dd -2025,-2036,-2047,-2058,-2069,-2079,-2090,-2101,-2112,-2123
|
|
dd -2134,-2144,-2155,-2166,-2177,-2188,-2198,-2209,-2220,-2231
|
|
dd -2241,-2252,-2263,-2274,-2284,-2295,-2306,-2316,-2327,-2338
|
|
dd -2349,-2359,-2370,-2381,-2391,-2402,-2413,-2423,-2434,-2444
|
|
dd -2455,-2466,-2476,-2487,-2497,-2508,-2518,-2529,-2540,-2550
|
|
dd -2561,-2571,-2582,-2592,-2603,-2613,-2624,-2634,-2645,-2655
|
|
dd -2666,-2676,-2686,-2697,-2707,-2718,-2728,-2738,-2749,-2759
|
|
dd -2770,-2780,-2790,-2801,-2811,-2821,-2832,-2842,-2852,-2863
|
|
dd -2873,-2883,-2893,-2904,-2914,-2924,-2934,-2945,-2955,-2965
|
|
dd -2975,-2985,-2996,-3006,-3016,-3026,-3036,-3046,-3056,-3067
|
|
dd -3077,-3087,-3097,-3107,-3117,-3127,-3137,-3147,-3157,-3167
|
|
dd -3177,-3187,-3197,-3207,-3217,-3227,-3237,-3247,-3257,-3267
|
|
dd -3277,-3287,-3297,-3306,-3316,-3326,-3336,-3346,-3356,-3365
|
|
dd -3375,-3385,-3395,-3405,-3414,-3424,-3434,-3444,-3453,-3463
|
|
dd -3473,-3483,-3492,-3502,-3512,-3521,-3531,-3540,-3550,-3560
|
|
dd -3569,-3579,-3588,-3598,-3608,-3617,-3627,-3636,-3646,-3655
|
|
dd -3665,-3674,-3684,-3693,-3703,-3712,-3721,-3731,-3740,-3750
|
|
dd -3759,-3768,-3778,-3787,-3796,-3806,-3815,-3824,-3834,-3843
|
|
dd -3852,-3861,-3871,-3880,-3889,-3898,-3907,-3917,-3926,-3935
|
|
dd -3944,-3953,-3962,-3971,-3980,-3990,-3999,-4008,-4017,-4026
|
|
dd -4035,-4044,-4053,-4062,-4071,-4080,-4089,-4098,-4106,-4115
|
|
dd -4124,-4133,-4142,-4151,-4160,-4169,-4177,-4186,-4195,-4204
|
|
dd -4213,-4221,-4230,-4239,-4247,-4256,-4265,-4274,-4282,-4291
|
|
dd -4299,-4308,-4317,-4325,-4334,-4342,-4351,-4360,-4368,-4377
|
|
dd -4385,-4394,-4402,-4411,-4419,-4427,-4436,-4444,-4453,-4461
|
|
dd -4469,-4478,-4486,-4495,-4503,-4511,-4519,-4528,-4536,-4544
|
|
dd -4552,-4561,-4569,-4577,-4585,-4593,-4602,-4610,-4618,-4626
|
|
dd -4634,-4642,-4650,-4658,-4666,-4674,-4682,-4690,-4698,-4706
|
|
dd -4714,-4722,-4730,-4738,-4746,-4754,-4762,-4769,-4777,-4785
|
|
dd -4793,-4801,-4808,-4816,-4824,-4832,-4839,-4847,-4855,-4863
|
|
dd -4870,-4878,-4885,-4893,-4901,-4908,-4916,-4923,-4931,-4938
|
|
dd -4946,-4953,-4961,-4968,-4976,-4983,-4991,-4998,-5006,-5013
|
|
dd -5020,-5028,-5035,-5042,-5050,-5057,-5064,-5071,-5079,-5086
|
|
dd -5093,-5100,-5107,-5115,-5122,-5129,-5136,-5143,-5150,-5157
|
|
dd -5164,-5171,-5178,-5185,-5192,-5199,-5206,-5213,-5220,-5227
|
|
dd -5234,-5241,-5248,-5254,-5261,-5268,-5275,-5282,-5288,-5295
|
|
dd -5302,-5309,-5315,-5322,-5329,-5335,-5342,-5349,-5355,-5362
|
|
dd -5368,-5375,-5381,-5388,-5394,-5401,-5407,-5414,-5420,-5427
|
|
dd -5433,-5439,-5446,-5452,-5459,-5465,-5471,-5477,-5484,-5490
|
|
dd -5496,-5502,-5509,-5515,-5521,-5527,-5533,-5539,-5546,-5552
|
|
dd -5558,-5564,-5570,-5576,-5582,-5588,-5594,-5600,-5606,-5612
|
|
dd -5617,-5623,-5629,-5635,-5641,-5647,-5652,-5658,-5664,-5670
|
|
dd -5675,-5681,-5687,-5693,-5698,-5704,-5709,-5715,-5721,-5726
|
|
dd -5732,-5737,-5743,-5748,-5754,-5759,-5765,-5770,-5776,-5781
|
|
dd -5786,-5792,-5797,-5802,-5808,-5813,-5818,-5824,-5829,-5834
|
|
dd -5839,-5844,-5850,-5855,-5860,-5865,-5870,-5875,-5880,-5885
|
|
dd -5890,-5895,-5900,-5905,-5910,-5915,-5920,-5925,-5930,-5935
|
|
dd -5939,-5944,-5949,-5954,-5959,-5963,-5968,-5973,-5978,-5982
|
|
dd -5987,-5992,-5996,-6001,-6005,-6010,-6015,-6019,-6024,-6028
|
|
dd -6033,-6037,-6041,-6046,-6050,-6055,-6059,-6063,-6068,-6072
|
|
dd -6076,-6081,-6085,-6089,-6093,-6097,-6102,-6106,-6110,-6114
|
|
dd -6118,-6122,-6126,-6130,-6134,-6138,-6142,-6146,-6150,-6154
|
|
dd -6158,-6162,-6166,-6170,-6174,-6178,-6181,-6185,-6189,-6193
|
|
dd -6196,-6200,-6204,-6208,-6211,-6215,-6218,-6222,-6226,-6229
|
|
dd -6233,-6236,-6240,-6243,-6247,-6250,-6254,-6257,-6260,-6264
|
|
dd -6267,-6270,-6274,-6277,-6280,-6284,-6287,-6290,-6293,-6296
|
|
dd -6300,-6303,-6306,-6309,-6312,-6315,-6318,-6321,-6324,-6327
|
|
dd -6330,-6333,-6336,-6339,-6342,-6345,-6348,-6350,-6353,-6356
|
|
dd -6359,-6362,-6364,-6367,-6370,-6372,-6375,-6378,-6380,-6383
|
|
dd -6386,-6388,-6391,-6393,-6396,-6398,-6401,-6403,-6405,-6408
|
|
dd -6410,-6413,-6415,-6417,-6420,-6422,-6424,-6426,-6429,-6431
|
|
dd -6433,-6435,-6437,-6440,-6442,-6444,-6446,-6448,-6450,-6452
|
|
dd -6454,-6456,-6458,-6460,-6462,-6464,-6466,-6467,-6469,-6471
|
|
dd -6473,-6475,-6476,-6478,-6480,-6482,-6483,-6485,-6486,-6488
|
|
dd -6490,-6491,-6493,-6494,-6496,-6497,-6499,-6500,-6502,-6503
|
|
dd -6505,-6506,-6507,-6509,-6510,-6511,-6513,-6514,-6515,-6516
|
|
dd -6518,-6519,-6520,-6521,-6522,-6523,-6524,-6525,-6527,-6528
|
|
dd -6529,-6530,-6531,-6531,-6532,-6533,-6534,-6535,-6536,-6537
|
|
dd -6538,-6538,-6539,-6540,-6541,-6541,-6542,-6543,-6543,-6544
|
|
dd -6545,-6545,-6546,-6546,-6547,-6547,-6548,-6548,-6549,-6549
|
|
dd -6550,-6550,-6550,-6551,-6551,-6551,-6552,-6552,-6552,-6552
|
|
dd -6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553
|
|
dd -6554,-6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553
|
|
dd -6553,-6552,-6552,-6552,-6552,-6551,-6551,-6551,-6550,-6550
|
|
dd -6550,-6549,-6549,-6548,-6548,-6547,-6547,-6546,-6546,-6545
|
|
dd -6545,-6544,-6543,-6543,-6542,-6541,-6541,-6540,-6539,-6538
|
|
dd -6538,-6537,-6536,-6535,-6534,-6533,-6532,-6531,-6531,-6530
|
|
dd -6529,-6528,-6527,-6525,-6524,-6523,-6522,-6521,-6520,-6519
|
|
dd -6518,-6516,-6515,-6514,-6513,-6511,-6510,-6509,-6507,-6506
|
|
dd -6505,-6503,-6502,-6500,-6499,-6497,-6496,-6494,-6493,-6491
|
|
dd -6490,-6488,-6486,-6485,-6483,-6482,-6480,-6478,-6476,-6475
|
|
dd -6473,-6471,-6469,-6467,-6466,-6464,-6462,-6460,-6458,-6456
|
|
dd -6454,-6452,-6450,-6448,-6446,-6444,-6442,-6440,-6437,-6435
|
|
dd -6433,-6431,-6429,-6426,-6424,-6422,-6420,-6417,-6415,-6413
|
|
dd -6410,-6408,-6405,-6403,-6401,-6398,-6396,-6393,-6391,-6388
|
|
dd -6386,-6383,-6380,-6378,-6375,-6372,-6370,-6367,-6364,-6362
|
|
dd -6359,-6356,-6353,-6350,-6348,-6345,-6342,-6339,-6336,-6333
|
|
dd -6330,-6327,-6324,-6321,-6318,-6315,-6312,-6309,-6306,-6303
|
|
dd -6300,-6296,-6293,-6290,-6287,-6284,-6280,-6277,-6274,-6270
|
|
dd -6267,-6264,-6260,-6257,-6254,-6250,-6247,-6243,-6240,-6236
|
|
dd -6233,-6229,-6226,-6222,-6218,-6215,-6211,-6208,-6204,-6200
|
|
dd -6196,-6193,-6189,-6185,-6181,-6178,-6174,-6170,-6166,-6162
|
|
dd -6158,-6154,-6150,-6146,-6142,-6138,-6134,-6130,-6126,-6122
|
|
dd -6118,-6114,-6110,-6106,-6102,-6097,-6093,-6089,-6085,-6081
|
|
dd -6076,-6072,-6068,-6063,-6059,-6055,-6050,-6046,-6041,-6037
|
|
dd -6033,-6028,-6024,-6019,-6015,-6010,-6005,-6001,-5996,-5992
|
|
dd -5987,-5982,-5978,-5973,-5968,-5963,-5959,-5954,-5949,-5944
|
|
dd -5939,-5935,-5930,-5925,-5920,-5915,-5910,-5905,-5900,-5895
|
|
dd -5890,-5885,-5880,-5875,-5870,-5865,-5860,-5855,-5850,-5844
|
|
dd -5839,-5834,-5829,-5824,-5818,-5813,-5808,-5802,-5797,-5792
|
|
dd -5786,-5781,-5776,-5770,-5765,-5759,-5754,-5748,-5743,-5737
|
|
dd -5732,-5726,-5721,-5715,-5709,-5704,-5698,-5693,-5687,-5681
|
|
dd -5675,-5670,-5664,-5658,-5652,-5647,-5641,-5635,-5629,-5623
|
|
dd -5617,-5612,-5606,-5600,-5594,-5588,-5582,-5576,-5570,-5564
|
|
dd -5558,-5552,-5546,-5539,-5533,-5527,-5521,-5515,-5509,-5502
|
|
dd -5496,-5490,-5484,-5477,-5471,-5465,-5459,-5452,-5446,-5439
|
|
dd -5433,-5427,-5420,-5414,-5407,-5401,-5394,-5388,-5381,-5375
|
|
dd -5368,-5362,-5355,-5349,-5342,-5335,-5329,-5322,-5315,-5309
|
|
dd -5302,-5295,-5288,-5282,-5275,-5268,-5261,-5254,-5248,-5241
|
|
dd -5234,-5227,-5220,-5213,-5206,-5199,-5192,-5185,-5178,-5171
|
|
dd -5164,-5157,-5150,-5143,-5136,-5129,-5122,-5115,-5107,-5100
|
|
dd -5093,-5086,-5079,-5071,-5064,-5057,-5050,-5042,-5035,-5028
|
|
dd -5020,-5013,-5006,-4998,-4991,-4983,-4976,-4968,-4961,-4953
|
|
dd -4946,-4938,-4931,-4923,-4916,-4908,-4901,-4893,-4885,-4878
|
|
dd -4870,-4863,-4855,-4847,-4839,-4832,-4824,-4816,-4808,-4801
|
|
dd -4793,-4785,-4777,-4769,-4762,-4754,-4746,-4738,-4730,-4722
|
|
dd -4714,-4706,-4698,-4690,-4682,-4674,-4666,-4658,-4650,-4642
|
|
dd -4634,-4626,-4618,-4610,-4602,-4593,-4585,-4577,-4569,-4561
|
|
dd -4552,-4544,-4536,-4528,-4519,-4511,-4503,-4495,-4486,-4478
|
|
dd -4469,-4461,-4453,-4444,-4436,-4427,-4419,-4411,-4402,-4394
|
|
dd -4385,-4377,-4368,-4360,-4351,-4342,-4334,-4325,-4317,-4308
|
|
dd -4299,-4291,-4282,-4274,-4265,-4256,-4247,-4239,-4230,-4221
|
|
dd -4213,-4204,-4195,-4186,-4177,-4169,-4160,-4151,-4142,-4133
|
|
dd -4124,-4115,-4106,-4098,-4089,-4080,-4071,-4062,-4053,-4044
|
|
dd -4035,-4026,-4017,-4008,-3999,-3990,-3980,-3971,-3962,-3953
|
|
dd -3944,-3935,-3926,-3917,-3907,-3898,-3889,-3880,-3871,-3861
|
|
dd -3852,-3843,-3834,-3824,-3815,-3806,-3796,-3787,-3778,-3768
|
|
dd -3759,-3750,-3740,-3731,-3721,-3712,-3703,-3693,-3684,-3674
|
|
dd -3665,-3655,-3646,-3636,-3627,-3617,-3608,-3598,-3588,-3579
|
|
dd -3569,-3560,-3550,-3540,-3531,-3521,-3512,-3502,-3492,-3483
|
|
dd -3473,-3463,-3453,-3444,-3434,-3424,-3414,-3405,-3395,-3385
|
|
dd -3375,-3365,-3356,-3346,-3336,-3326,-3316,-3306,-3297,-3287
|
|
dd -3277,-3267,-3257,-3247,-3237,-3227,-3217,-3207,-3197,-3187
|
|
dd -3177,-3167,-3157,-3147,-3137,-3127,-3117,-3107,-3097,-3087
|
|
dd -3077,-3067,-3056,-3046,-3036,-3026,-3016,-3006,-2996,-2985
|
|
dd -2975,-2965,-2955,-2945,-2934,-2924,-2914,-2904,-2893,-2883
|
|
dd -2873,-2863,-2852,-2842,-2832,-2821,-2811,-2801,-2790,-2780
|
|
dd -2770,-2759,-2749,-2738,-2728,-2718,-2707,-2697,-2686,-2676
|
|
dd -2666,-2655,-2645,-2634,-2624,-2613,-2603,-2592,-2582,-2571
|
|
dd -2561,-2550,-2540,-2529,-2518,-2508,-2497,-2487,-2476,-2466
|
|
dd -2455,-2444,-2434,-2423,-2413,-2402,-2391,-2381,-2370,-2359
|
|
dd -2349,-2338,-2327,-2316,-2306,-2295,-2284,-2274,-2263,-2252
|
|
dd -2241,-2231,-2220,-2209,-2198,-2188,-2177,-2166,-2155,-2144
|
|
dd -2134,-2123,-2112,-2101,-2090,-2079,-2069,-2058,-2047,-2036
|
|
dd -2025,-2014,-2003,-1992,-1982,-1971,-1960,-1949,-1938,-1927
|
|
dd -1916,-1905,-1894,-1883,-1872,-1861,-1850,-1839,-1828,-1817
|
|
dd -1806,-1795,-1784,-1773,-1762,-1751,-1740,-1729,-1718,-1707
|
|
dd -1696,-1685,-1674,-1663,-1652,-1641,-1630,-1619,-1608,-1597
|
|
dd -1585,-1574,-1563,-1552,-1541,-1530,-1519,-1508,-1496,-1485
|
|
dd -1474,-1463,-1452,-1441,-1430,-1418,-1407,-1396,-1385,-1374
|
|
dd -1363,-1351,-1340,-1329,-1318,-1307,-1295,-1284,-1273,-1262
|
|
dd -1250,-1239,-1228,-1217,-1206,-1194,-1183,-1172,-1161,-1149
|
|
dd -1138,-1127,-1115,-1104,-1093,-1082,-1070,-1059,-1048,-1036
|
|
dd -1025,-1014,-1003,-991,-980,-969,-957,-946,-935,-923
|
|
dd -912,-901,-889,-878,-867,-855,-844,-833,-821,-810
|
|
dd -799,-787,-776,-765,-753,-742,-731,-719,-708,-696
|
|
dd -685,-674,-662,-651,-640,-628,-617,-605,-594,-583
|
|
dd -571,-560,-548,-537,-526,-514,-503,-491,-480,-469
|
|
dd -457,-446,-434,-423,-411,-400,-389,-377,-366,-354
|
|
dd -343,-332,-320,-309,-297,-286,-274,-263,-252,-240
|
|
dd -229,-217,-206,-194,-183,-172,-160,-149,-137,-126
|
|
dd -114,-103,-92,-80,-69,-57,-46,-34,-23,-11
|
|
|
|
eosinus:
|
|
|
|
col1:
|
|
dd 0
|
|
; misc raycaster vars:
|
|
vxx:
|
|
dd 0
|
|
vyy:
|
|
dd 0
|
|
vl:
|
|
dd 0
|
|
vpx:
|
|
dd 0x0001FFFF ; initial player position * 0xFFFF
|
|
vpy:
|
|
dd 0x0001FFFF
|
|
vstepx:
|
|
dd 0
|
|
vstepy:
|
|
dd 0
|
|
vxxint:
|
|
dd 0
|
|
vyyint:
|
|
dd 0
|
|
vk:
|
|
dd 0
|
|
va:
|
|
dd 0
|
|
va2:
|
|
dd 0
|
|
vdd:
|
|
dd 0
|
|
vx1:
|
|
dd 0
|
|
vx1b:
|
|
dd 0
|
|
vh:
|
|
dd 0
|
|
vdt:
|
|
dd 0
|
|
vheading: ; initial heading: 0 to 3599
|
|
dd 0
|
|
vacompare:
|
|
dd 0
|
|
vpxi:
|
|
dd 0
|
|
vpyi:
|
|
dd 0
|
|
wtolong:
|
|
dw 0,0
|
|
|
|
xtemp:
|
|
dd 0
|
|
ytemp:
|
|
dd 0
|
|
xfrac:
|
|
dd 0
|
|
yfrac:
|
|
dd 0
|
|
h_old:
|
|
dd 0
|
|
vbottom:
|
|
dd 0
|
|
mouseya:
|
|
dd 0
|
|
remeax:
|
|
dd 0
|
|
remebx:
|
|
dd 0
|
|
remecx:
|
|
dd 0
|
|
remedx:
|
|
dd 0
|
|
remedi:
|
|
dd 0
|
|
remesi:
|
|
dd 0
|
|
red:
|
|
dd 0
|
|
green:
|
|
dd 0
|
|
blue:
|
|
dd 0
|
|
pseudo:
|
|
dd 0
|
|
step1:
|
|
dd 0
|
|
step64:
|
|
dd 0
|
|
lasty:
|
|
dd 0
|
|
ceil:
|
|
include "ceil.inc"
|
|
wall:
|
|
include "wall.inc"
|
|
wall2:
|
|
include "wall2.inc"
|
|
wall3:
|
|
include "wall3.inc"
|
|
wall4:
|
|
include "wall4.inc"
|
|
wall5:
|
|
include "wall5.inc"
|
|
wall6:
|
|
include "wall6.inc"
|
|
wall7:
|
|
include "wall7.inc"
|
|
|
|
|
|
|
|
labelt:
|
|
db 'FISHEYE RAYCASTING ENGINE ETC. FREE3D'
|
|
|
|
labellen:
|
|
|
|
I_END:
|
|
|
|
|
|
|
|
|
|
|