Rev 31 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 31 | Rev 37 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; Fisheye Raycasting Engine Etc. FREE3D for MENUETOS by Dieter Marfurt |
2 | ; Fisheye Raycasting Engine Etc. FREE3D for MENUETOS by Dieter Marfurt |
3 | ; Version 0.4 (requires some texture-files to compile (see Data Section)) |
3 | ; Version 0.4 (requires some texture-files to compile (see Data Section)) |
4 | ; dietermarfurt@angelfire.com - www.melog.ch/mos_pub/ |
4 | ; dietermarfurt@angelfire.com - www.melog.ch/mos_pub/ |
5 | ; Don't hit me - I'm an ASM-Newbie... since years :) |
5 | ; Don't hit me - I'm an ASM-Newbie... since years :) |
6 | ; |
6 | ; |
7 | ; Compile with FASM for Menuet (requires .INC files - see DATA Section) |
7 | ; Compile with FASM for Menuet (requires .INC files - see DATA Section) |
8 | ; |
8 | ; |
- | 9 | ; Willow - greatly srinked code size by using GIF texture and FPU to calculate sine table |
|
- | 10 | ; |
|
- | 11 | ; !!!! Don't use GIF.INC in your apps - it's modified for FREE3D !!!! |
|
- | 12 | ||
- | 13 | TEX_SIZE equ 64*64*4 |
|
- | 14 | ceil = sinus+16*1024 |
|
- | 15 | wall = ceil+TEX_SIZE*1 |
|
- | 16 | wall2 = ceil+TEX_SIZE*2 |
|
- | 17 | wall3 = ceil+TEX_SIZE*3 |
|
- | 18 | wall4 = ceil+TEX_SIZE*4 |
|
- | 19 | wall5 = ceil+TEX_SIZE*5 |
|
- | 20 | wall6 = ceil+TEX_SIZE*6 |
|
- | 21 | wall7 = ceil+TEX_SIZE*7 |
|
- | 22 | APP_MEM equ 0x200000 |
|
9 | 23 | ||
10 | use32 |
24 | use32 |
11 | 25 | ||
12 | org 0x0 |
26 | org 0x0 |
13 | 27 | ||
14 | db 'MENUET01' ; 8 byte id |
28 | db 'MENUET01' ; 8 byte id |
15 | dd 0x01 ; header version |
29 | dd 0x01 ; header version |
16 | dd START ; start of code |
30 | dd START ; start of code |
17 | dd I_END ; size of image |
31 | dd I_END ; size of image |
18 | dd 0x300000 ; memory for app |
32 | dd APP_MEM;0x300000 ; memory for app |
19 | dd 0x7fff0 ; esp |
33 | dd APP_MEM;0x300000 ; esp |
20 | dd 0x0 , 0x0 ; I_Param , I_Icon |
34 | dd 0x0 , 0x0 ; I_Param , I_Icon |
21 | - | ||
22 | include 'lang.inc' |
35 | include 'lang.inc' |
23 | START: ; start of execution |
36 | include 'macros.inc' |
- | 37 | COLOR_ORDER equ OTHER |
|
- | 38 | include 'gif.inc' |
|
- | 39 | ||
- | 40 | START: ; start of execution |
|
- | 41 | mov esi,textures |
|
- | 42 | mov edi,ceil |
|
- | 43 | mov eax,sinus |
|
- | 44 | call ReadGIF |
|
- | 45 | mov esi,sinus |
|
- | 46 | mov ecx,360*10 |
|
- | 47 | fninit |
|
- | 48 | fld [sindegree] |
|
- | 49 | .sinlp: |
|
- | 50 | fst st1 |
|
- | 51 | fsin |
|
- | 52 | fmul [sindiv] |
|
- | 53 | fistp dword[esi] |
|
- | 54 | add esi,4 |
|
- | 55 | fadd [sininc] |
|
24 | 56 | loop .sinlp |
|
25 | call draw_window ; at first, draw the window |
57 | call draw_window ; at first, draw the window |
26 | call draw_stuff |
58 | call draw_stuff |
27 | 59 | ||
28 | gamestart: |
60 | gamestart: |
29 | ; ******* MOUSE CHECK ******* |
61 | ; ******* MOUSE CHECK ******* |
30 | ; mov eax,37 ; check mouse (use mouse over window to navigate) |
62 | ; mov eax,37 ; check mouse (use mouse over window to navigate) |
31 | ; mov ebx,2 ; check mousebuttons |
63 | ; mov ebx,2 ; check mousebuttons |
32 | ; int 0x40 |
64 | ; int 0x40 |
33 | ; cmp eax,0 ; only use mouse when button down |
65 | ; cmp eax,0 ; only use mouse when button down |
34 | ; je noneed ; deactivated cause of disappear-bug etc. |
66 | ; je noneed ; deactivated cause of disappear-bug etc. |
35 | mov eax,37 |
67 | mov eax,37 |
36 | mov ebx,1 ; check mouseposition |
68 | mov ebx,1 ; check mouseposition |
37 | int 0x40 |
69 | int 0x40 |
38 | 70 | ||
39 | mov ebx,eax |
71 | mov ebx,eax |
40 | shr eax,16 |
72 | shr eax,16 |
41 | and eax,0x0000FFFF ; mousex |
73 | and eax,0x0000FFFF ; mousex |
42 | and ebx,0x0000FFFF ; mousey |
74 | and ebx,0x0000FFFF ; mousey |
43 | 75 | ||
44 | cmp eax,5 ; mouse out of window ? |
76 | cmp eax,5 ; mouse out of window ? |
45 | jb check_refresh ; it will prevent an app-crash |
77 | jb check_refresh ; it will prevent an app-crash |
46 | cmp ebx,22 |
78 | cmp ebx,22 |
47 | jb check_refresh |
79 | jb check_refresh |
48 | cmp eax, 640 |
80 | cmp eax, 640 |
49 | jg check_refresh |
81 | jg check_refresh |
50 | cmp ebx,501 |
82 | cmp ebx,501 |
51 | jg check_refresh |
83 | jg check_refresh |
52 | 84 | ||
53 | cmp eax,315 ; navigating? |
85 | cmp eax,315 ; navigating? |
54 | jb m_left |
86 | jb m_left |
55 | cmp eax,325 ; |
87 | cmp eax,325 ; |
56 | jg m_right |
88 | jg m_right |
57 | continue: |
89 | continue: |
58 | cmp ebx,220 ; |
90 | cmp ebx,220 ; |
59 | jb s_up |
91 | jb s_up |
60 | cmp ebx,260 ; |
92 | cmp ebx,260 ; |
61 | jg s_down |
93 | jg s_down |
62 | ; ******* END OF MOUSE CHECK ******* |
94 | ; ******* END OF MOUSE CHECK ******* |
63 | check_refresh: |
95 | check_refresh: |
64 | 96 | ||
65 | ; mov eax,23 ; wait for system event with 10 ms timeout |
97 | ; mov eax,23 ; wait for system event with 10 ms timeout |
66 | ; mov ebx,1 ; thats max 100 FPS |
98 | ; mov ebx,1 ; thats max 100 FPS |
67 | mov eax,11 ; ask no wait for full speed |
99 | mov eax,11 ; ask no wait for full speed |
68 | int 0x40 |
100 | int 0x40 |
69 | 101 | ||
70 | cmp eax,1 ; window redraw request ? |
102 | cmp eax,1 ; window redraw request ? |
71 | je red2 |
103 | je red2 |
72 | cmp eax,2 ; key in buffer ? |
104 | cmp eax,2 ; key in buffer ? |
73 | je key2 |
105 | je key2 |
74 | cmp eax,3 ; button in buffer ? |
106 | cmp eax,3 ; button in buffer ? |
75 | je button2 |
107 | je button2 |
76 | 108 | ||
77 | mov edi,[mouseya] ; check flag if a refresh has to be done |
109 | mov edi,[mouseya] ; check flag if a refresh has to be done |
78 | cmp edi,1 |
110 | cmp edi,1 |
79 | jne gamestart |
111 | jne gamestart |
80 | mov [mouseya],dword 0 |
112 | mov [mouseya],dword 0 |
81 | call draw_stuff |
113 | call draw_stuff |
82 | 114 | ||
83 | 115 | ||
84 | jmp gamestart |
116 | jmp gamestart |
85 | 117 | ||
86 | ; END OF MAINLOOP |
118 | ; END OF MAINLOOP |
87 | 119 | ||
88 | red2: ; redraw |
120 | red2: ; redraw |
89 | call draw_window |
121 | call draw_window |
90 | call draw_stuff |
122 | call draw_stuff |
91 | jmp gamestart |
123 | jmp gamestart |
92 | 124 | ||
93 | key2: ; key |
125 | key2: ; key |
94 | mov eax,2 |
126 | mov eax,2 |
95 | int 0x40 |
127 | int 0x40 |
96 | cmp al,1 |
128 | cmp al,1 |
97 | je gamestart ; keybuffer empty |
129 | je gamestart ; keybuffer empty |
98 | 130 | ||
99 | cmp ah,27 ; esc=End App |
131 | cmp ah,27 ; esc=End App |
100 | je finish |
132 | je finish |
101 | 133 | ||
102 | cmp ah,178 ; up |
134 | cmp ah,178 ; up |
103 | je s_up |
135 | je s_up |
104 | cmp ah,177 ; down |
136 | cmp ah,177 ; down |
105 | je s_down |
137 | je s_down |
106 | cmp ah,176 ; left |
138 | cmp ah,176 ; left |
107 | je s_left |
139 | je s_left |
108 | cmp ah,179 ; right |
140 | cmp ah,179 ; right |
109 | je s_right |
141 | je s_right |
110 | 142 | ||
111 | jmp gamestart ; was any other key |
143 | jmp gamestart ; was any other key |
112 | 144 | ||
113 | 145 | ||
114 | s_up: ; walk forward (key or mouse) |
146 | s_up: ; walk forward (key or mouse) |
115 | mov eax,[vpx] |
147 | mov eax,[vpx] |
116 | mov ebx,[vpy] |
148 | mov ebx,[vpy] |
117 | 149 | ||
118 | 150 | ||
119 | mov ecx,[vheading] |
151 | mov ecx,[vheading] |
120 | imul ecx,4 |
152 | imul ecx,4 |
121 | add ecx,sinus |
153 | add ecx,sinus |
122 | mov edi,[ecx] |
154 | mov edi,[ecx] |
123 | 155 | ||
124 | mov edx,[vheading] |
156 | mov edx,[vheading] |
125 | imul edx,4 |
157 | imul edx,4 |
126 | add edx,sinus |
158 | add edx,sinus |
127 | add edx,3600 |
159 | add edx,3600 |
128 | cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600 |
160 | cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600 |
129 | jb ok200 |
161 | jb ok200 |
130 | sub edx,14400 |
162 | sub edx,14400 |
131 | ok200: |
163 | ok200: |
132 | mov esi,[edx] |
164 | mov esi,[edx] |
133 | ; sal esi,1 ; edit walking speed here |
165 | ; sal esi,1 ; edit walking speed here |
134 | ; sal edi,1 |
166 | ; sal edi,1 |
135 | 167 | ||
136 | add eax,edi ; newPx |
168 | add eax,edi ; newPx |
137 | add ebx,esi ; newPy |
169 | add ebx,esi ; newPy |
138 | mov edi,eax ; newPx / ffff |
170 | mov edi,eax ; newPx / ffff |
139 | mov esi,ebx ; newPy / ffff |
171 | mov esi,ebx ; newPy / ffff |
140 | sar edi,16 |
172 | sar edi,16 |
141 | sar esi,16 |
173 | sar esi,16 |
142 | mov ecx,esi |
174 | mov ecx,esi |
143 | sal ecx,5 ; equal *32 |
175 | sal ecx,5 ; equal *32 |
144 | add ecx,edi |
176 | add ecx,edi |
145 | add ecx,grid |
177 | add ecx,grid |
146 | cmp [ecx],byte 0 ; collision check |
178 | cmp [ecx],byte 0 ; collision check |
147 | jne cannotwalk0 |
179 | jne cannotwalk0 |
148 | mov [vpx],eax |
180 | mov [vpx],eax |
149 | mov [vpy],ebx |
181 | mov [vpy],ebx |
150 | mov [mouseya],dword 1 ; set refresh flag |
182 | mov [mouseya],dword 1 ; set refresh flag |
151 | cannotwalk0: |
183 | cannotwalk0: |
152 | jmp check_refresh |
184 | jmp check_refresh |
153 | 185 | ||
154 | s_down: ; walk backward |
186 | s_down: ; walk backward |
155 | mov eax,[vpx] |
187 | mov eax,[vpx] |
156 | mov ebx,[vpy] |
188 | mov ebx,[vpy] |
157 | 189 | ||
158 | mov ecx,[vheading] |
190 | mov ecx,[vheading] |
159 | imul ecx,4 |
191 | imul ecx,4 |
160 | add ecx,sinus |
192 | add ecx,sinus |
161 | mov edi,[ecx] |
193 | mov edi,[ecx] |
162 | 194 | ||
163 | mov edx,[vheading] |
195 | mov edx,[vheading] |
164 | imul edx,4 |
196 | imul edx,4 |
165 | add edx,sinus |
197 | add edx,sinus |
166 | add edx,3600 |
198 | add edx,3600 |
167 | cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600 |
199 | cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600 |
168 | jb ok201 |
200 | jb ok201 |
169 | sub edx,14400 |
201 | sub edx,14400 |
170 | ok201: |
202 | ok201: |
171 | 203 | ||
172 | mov esi,[edx] |
204 | mov esi,[edx] |
173 | ; sal esi,1 ; edit walking speed here |
205 | ; sal esi,1 ; edit walking speed here |
174 | ; sal edi,1 |
206 | ; sal edi,1 |
175 | 207 | ||
176 | sub eax,edi ; newPx |
208 | sub eax,edi ; newPx |
177 | sub ebx,esi ; newPy |
209 | sub ebx,esi ; newPy |
178 | mov edi,eax ; newPx / ffff |
210 | mov edi,eax ; newPx / ffff |
179 | mov esi,ebx ; newPy / ffff |
211 | mov esi,ebx ; newPy / ffff |
180 | sar edi,16 |
212 | sar edi,16 |
181 | sar esi,16 |
213 | sar esi,16 |
182 | mov ecx,esi |
214 | mov ecx,esi |
183 | sal ecx,5 |
215 | sal ecx,5 |
184 | add ecx,edi |
216 | add ecx,edi |
185 | add ecx,grid |
217 | add ecx,grid |
186 | cmp [ecx],byte 0 |
218 | cmp [ecx],byte 0 |
187 | jne cannotwalk1 |
219 | jne cannotwalk1 |
188 | mov [vpx],eax |
220 | mov [vpx],eax |
189 | mov [vpy],ebx |
221 | mov [vpy],ebx |
190 | mov [mouseya],dword 1 |
222 | mov [mouseya],dword 1 |
191 | cannotwalk1: |
223 | cannotwalk1: |
192 | jmp check_refresh |
224 | jmp check_refresh |
193 | 225 | ||
194 | s_left: ; turn left (key) |
226 | s_left: ; turn left (key) |
195 | mov edi,[vheading] ; heading |
227 | mov edi,[vheading] ; heading |
196 | add edi,50 |
228 | add edi,50 |
197 | cmp edi,3600 |
229 | cmp edi,3600 |
198 | jb ok_heading0 |
230 | jb ok_heading0 |
199 | sub edi,3600 |
231 | sub edi,3600 |
200 | ok_heading0: |
232 | ok_heading0: |
201 | mov [vheading],edi |
233 | mov [vheading],edi |
202 | mov [mouseya],dword 1 |
234 | mov [mouseya],dword 1 |
203 | jmp check_refresh |
235 | jmp check_refresh |
204 | 236 | ||
205 | s_right: ; turn right |
237 | s_right: ; turn right |
206 | mov edi,[vheading] |
238 | mov edi,[vheading] |
207 | sub edi,50 |
239 | sub edi,50 |
208 | cmp edi,-1 |
240 | cmp edi,-1 |
209 | jg ok_heading1 |
241 | jg ok_heading1 |
210 | add edi,3600 |
242 | add edi,3600 |
211 | ok_heading1: |
243 | ok_heading1: |
212 | mov [vheading],edi |
244 | mov [vheading],edi |
213 | mov [mouseya],dword 1 |
245 | mov [mouseya],dword 1 |
214 | jmp check_refresh |
246 | jmp check_refresh |
215 | 247 | ||
216 | m_left: ; turn left (mouse) |
248 | m_left: ; turn left (mouse) |
217 | mov edi,[vheading] ; heading |
249 | mov edi,[vheading] ; heading |
218 | mov ecx,315 |
250 | mov ecx,315 |
219 | sub ecx,eax |
251 | sub ecx,eax |
220 | sar ecx,2 |
252 | sar ecx,2 |
221 | add edi,ecx |
253 | add edi,ecx |
222 | cmp edi,3600 |
254 | cmp edi,3600 |
223 | jb ok_heading2 |
255 | jb ok_heading2 |
224 | sub edi,3600 |
256 | sub edi,3600 |
225 | ok_heading2: |
257 | ok_heading2: |
226 | mov [vheading],edi |
258 | mov [vheading],edi |
227 | mov [mouseya],dword 1 |
259 | mov [mouseya],dword 1 |
228 | jmp continue ; allow both: walk and rotate |
260 | jmp continue ; allow both: walk and rotate |
229 | 261 | ||
230 | m_right: ; turn right |
262 | m_right: ; turn right |
231 | mov edi,[vheading] |
263 | mov edi,[vheading] |
232 | sub eax,325 |
264 | sub eax,325 |
233 | sar eax,2 |
265 | sar eax,2 |
234 | sub edi,eax |
266 | sub edi,eax |
235 | cmp edi,-1 |
267 | cmp edi,-1 |
236 | jg ok_heading3 |
268 | jg ok_heading3 |
237 | add edi,3600 |
269 | add edi,3600 |
238 | ok_heading3: |
270 | ok_heading3: |
239 | mov [vheading],edi |
271 | mov [vheading],edi |
240 | mov [mouseya],dword 1 |
272 | mov [mouseya],dword 1 |
241 | jmp continue |
273 | jmp continue |
242 | 274 | ||
243 | 275 | ||
244 | 276 | ||
245 | button2: ; button |
277 | button2: ; button |
246 | mov eax,17 ; get id |
278 | mov eax,17 ; get id |
247 | int 0x40 |
279 | int 0x40 |
248 | cmp ah,1 ; button id=1 ? |
280 | cmp ah,1 ; button id=1 ? |
249 | jne gamestart |
281 | jne gamestart |
250 | 282 | ||
251 | ; eo GAME mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm |
283 | ; eo GAME mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm |
252 | finish: |
284 | finish: |
253 | mov eax,-1 ; close this program |
285 | mov eax,-1 ; close this program |
254 | int 0x40 |
286 | int 0x40 |
255 | 287 | ||
256 | 288 | ||
257 | ; ********************************************* |
289 | ; ********************************************* |
258 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
290 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
259 | ; ********************************************* |
291 | ; ********************************************* |
260 | 292 | ||
261 | 293 | ||
262 | draw_window: |
294 | draw_window: |
263 | 295 | ||
264 | mov eax,12 ; function 12:tell os about windowdraw |
296 | mov eax,12 ; function 12:tell os about windowdraw |
265 | mov ebx,1 ; 1, start of draw |
297 | mov ebx,1 ; 1, start of draw |
266 | int 0x40 |
298 | int 0x40 |
267 | 299 | ||
268 | ; DRAW WINDOW |
300 | ; DRAW WINDOW |
269 | mov eax,0 ; function 0 : define and draw window |
301 | mov eax,0 ; function 0 : define and draw window |
270 | mov ebx,50*65536+649 ; [x start] *65536 + [x size] |
302 | mov ebx,50*65536+649 ; [x start] *65536 + [x size] |
271 | mov ecx,50*65536+504 ; [y start] *65536 + [y size] |
303 | mov ecx,50*65536+504 ; [y start] *65536 + [y size] |
272 | mov edx,0x02ffffff ; color of work area RRGGBB,8->color gl |
304 | mov edx,0x02ffffff ; color of work area RRGGBB,8->color gl |
273 | mov esi,0x80777777 ; color of grab bar RRGGBB,8->color gl |
305 | mov esi,0x80777777 ; color of grab bar RRGGBB,8->color gl |
274 | mov edi,0x00777777 ; color of frames RRGGBB |
306 | mov edi,0x00777777 ; color of frames RRGGBB |
275 | int 0x40 |
307 | int 0x40 |
276 | 308 | ||
277 | ; WINDOW LABEL |
309 | ; WINDOW LABEL |
278 | mov eax,4 ; function 4 : write text to window |
310 | mov eax,4 ; function 4 : write text to window |
279 | mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
311 | mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
280 | mov ecx,0x00ddeeff ; color of text RRGGBB |
312 | mov ecx,0x00ddeeff ; color of text RRGGBB |
281 | mov edx,labelt ; pointer to text beginning |
313 | mov edx,labelt ; pointer to text beginning |
282 | mov esi,labellen-labelt ; text length |
314 | mov esi,labellen-labelt ; text length |
283 | int 0x40 |
315 | int 0x40 |
284 | 316 | ||
285 | ; CLOSE BUTTON |
317 | ; CLOSE BUTTON |
286 | mov eax,8 ; function 8 : define and draw button |
318 | mov eax,8 ; function 8 : define and draw button |
287 | mov ebx,(649-19)*65536+12 ; [x start] *65536 + [x size] |
319 | mov ebx,(649-19)*65536+12 ; [x start] *65536 + [x size] |
288 | mov ecx,5*65536+12 ; [y start] *65536 + [y size] |
320 | mov ecx,5*65536+12 ; [y start] *65536 + [y size] |
289 | mov edx,1 ; button id |
321 | mov edx,1 ; button id |
290 | mov esi,0x777777 ; button color RRGGBB |
322 | mov esi,0x777777 ; button color RRGGBB |
291 | int 0x40 |
323 | int 0x40 |
292 | 324 | ||
293 | 325 | ||
294 | mov eax,12 ; function 12:tell os about windowdraw |
326 | mov eax,12 ; function 12:tell os about windowdraw |
295 | mov ebx,2 ; 2, end of draw |
327 | mov ebx,2 ; 2, end of draw |
296 | int 0x40 |
328 | int 0x40 |
297 | 329 | ||
298 | ret |
330 | ret |
299 | 331 | ||
300 | ; ********************************************* |
332 | ; ********************************************* |
301 | ; ******* COMPUTE 3D-VIEW ******** |
333 | ; ******* COMPUTE 3D-VIEW ******** |
302 | ; ********************************************* |
334 | ; ********************************************* |
303 | draw_stuff: |
335 | draw_stuff: |
304 | 336 | ||
305 | 337 | ||
306 | mov [step1],dword 1 |
338 | mov [step1],dword 1 |
307 | ;mov [step64],dword 64 |
339 | ;mov [step64],dword 64 |
308 | mov esi,[vheading] |
340 | mov esi,[vheading] |
309 | add esi,320 |
341 | add esi,320 |
310 | mov [va],esi |
342 | mov [va],esi |
311 | mov eax,[vheading] |
343 | mov eax,[vheading] |
312 | sub eax,320 |
344 | sub eax,320 |
313 | mov [vacompare],eax |
345 | mov [vacompare],eax |
314 | ;------------------------------------ CAST 640 PIXEL COLUMNS --------------- |
346 | ;------------------------------------ CAST 640 PIXEL COLUMNS --------------- |
315 | ; FOR A=320+heading to -319+heading step -1 (a is stored in [va]) |
347 | ; FOR A=320+heading to -319+heading step -1 (a is stored in [va]) |
316 | ;--------------------------------------------------------------------------- |
348 | ;--------------------------------------------------------------------------- |
317 | ; mov edx,5 |
349 | ; mov edx,5 |
318 | mov [vx1],dword 0 ;5 ;edx ; init x1 ... pixelcolumn |
350 | mov [vx1],dword 0 ;5 ;edx ; init x1 ... pixelcolumn |
319 | for_a: |
351 | for_a: |
320 | mov edx,[vx1] |
352 | mov edx,[vx1] |
321 | mov [vx1b],edx |
353 | mov [vx1b],edx |
322 | sub [vx1b],dword 320 |
354 | sub [vx1b],dword 320 |
323 | mov edx,[va] ; a2 |
355 | mov edx,[va] ; a2 |
324 | cmp edx,-1 ; a2 is a mod 3600 |
356 | cmp edx,-1 ; a2 is a mod 3600 |
325 | jg ok1 |
357 | jg ok1 |
326 | add edx,3600 |
358 | add edx,3600 |
327 | ok1: |
359 | ok1: |
328 | cmp edx,3600 |
360 | cmp edx,3600 |
329 | jb ok2 |
361 | jb ok2 |
330 | sub edx,3600 |
362 | sub edx,3600 |
331 | ok2: |
363 | ok2: |
332 | 364 | ||
333 | ; get stepx and stepy |
365 | ; get stepx and stepy |
334 | mov ecx,edx |
366 | mov ecx,edx |
335 | imul ecx,4 |
367 | imul ecx,4 |
336 | add ecx,sinus ; pointer to stepx |
368 | add ecx,sinus ; pointer to stepx |
337 | mov esi,[ecx] |
369 | mov esi,[ecx] |
338 | sar esi,4 ; accuracy |
370 | sar esi,4 ; accuracy |
339 | mov [vstepx],esi ; store stepx |
371 | mov [vstepx],esi ; store stepx |
340 | 372 | ||
341 | mov esi,edx |
373 | mov esi,edx |
342 | imul esi,4 |
374 | imul esi,4 |
343 | add esi,sinus ; pointer to stepy |
375 | add esi,sinus ; pointer to stepy |
344 | add esi,3600 |
376 | add esi,3600 |
345 | cmp esi,eosinus ;cosinus taken from ((sinus plus 900) mod 3600) |
377 | cmp esi,eosinus ;cosinus taken from ((sinus plus 900) mod 3600) |
346 | jb ok202 |
378 | jb ok202 |
347 | sub esi,14400 |
379 | sub esi,14400 |
348 | ok202: |
380 | ok202: |
349 | 381 | ||
350 | mov ecx,[esi] |
382 | mov ecx,[esi] |
351 | sar ecx,4 |
383 | sar ecx,4 |
352 | mov [vstepy],ecx ; store stepy |
384 | mov [vstepy],ecx ; store stepy |
353 | 385 | ||
354 | 386 | ||
355 | mov eax,[vpx] ; get Camera Position |
387 | mov eax,[vpx] ; get Camera Position |
356 | mov ebx,[vpy] |
388 | mov ebx,[vpy] |
357 | mov [vxx],eax ; init caster position |
389 | mov [vxx],eax ; init caster position |
358 | mov [vyy],ebx |
390 | mov [vyy],ebx |
359 | 391 | ||
360 | mov edi,0 ; init L (number of raycsting-steps) |
392 | mov edi,0 ; init L (number of raycsting-steps) |
361 | mov [step1],dword 1 ; init Caster stepwidth for L |
393 | mov [step1],dword 1 ; init Caster stepwidth for L |
362 | 394 | ||
363 | ; raycast a pixel column................................. |
395 | ; raycast a pixel column................................. |
364 | raycast: |
396 | raycast: |
365 | add edi,[step1] ; count caster steps |
397 | add edi,[step1] ; count caster steps |
366 | ;jmp nodouble ; use this to prevent blinking/wobbling textures: much slower! |
398 | ;jmp nodouble ; use this to prevent blinking/wobbling textures: much slower! |
367 | 399 | ||
368 | cmp edi,32 |
400 | cmp edi,32 |
369 | je double |
401 | je double |
370 | cmp edi,512 |
402 | cmp edi,512 |
371 | je double |
403 | je double |
372 | cmp edi,1024 |
404 | cmp edi,1024 |
373 | je double |
405 | je double |
374 | jmp nodouble |
406 | jmp nodouble |
375 | 407 | ||
376 | double: |
408 | double: |
377 | mov edx,[step1] |
409 | mov edx,[step1] |
378 | sal edx,1 |
410 | sal edx,1 |
379 | mov [step1],edx |
411 | mov [step1],edx |
380 | 412 | ||
381 | mov edx,[vstepx] |
413 | mov edx,[vstepx] |
382 | sal edx,1 |
414 | sal edx,1 |
383 | mov [vstepx],edx |
415 | mov [vstepx],edx |
384 | 416 | ||
385 | mov edx,[vstepy] |
417 | mov edx,[vstepy] |
386 | sal edx,1 |
418 | sal edx,1 |
387 | mov [vstepy],edx |
419 | mov [vstepy],edx |
388 | 420 | ||
389 | nodouble: |
421 | nodouble: |
390 | 422 | ||
391 | mov eax,32000 ; 3600 ; determine Floors Height based on distance |
423 | mov eax,32000 ; 3600 ; determine Floors Height based on distance |
392 | mov edx,0 |
424 | mov edx,0 |
393 | mov ebx,edi |
425 | mov ebx,edi |
394 | 426 | ||
395 | div ebx |
427 | div ebx |
396 | mov esi,eax |
428 | mov esi,eax |
397 | mov [vdd],esi |
429 | mov [vdd],esi |
398 | mov edx,260 |
430 | mov edx,260 |
399 | sub edx,esi |
431 | sub edx,esi |
400 | mov [vh],edx |
432 | mov [vh],edx |
401 | 433 | ||
402 | cmp edx,22 |
434 | cmp edx,22 |
403 | jb no_nu_pixel |
435 | jb no_nu_pixel |
404 | cmp edx,259 |
436 | cmp edx,259 |
405 | jg no_nu_pixel ; draw only new pixels |
437 | jg no_nu_pixel ; draw only new pixels |
406 | cmp edx,[h_old] |
438 | cmp edx,[h_old] |
407 | je no_nu_pixel |
439 | je no_nu_pixel |
408 | 440 | ||
409 | mov eax,[vxx] ; calc floor pixel |
441 | mov eax,[vxx] ; calc floor pixel |
410 | mov ebx,[vyy] |
442 | mov ebx,[vyy] |
411 | 443 | ||
412 | and eax,0x0000FFFF |
444 | and eax,0x0000FFFF |
413 | and ebx,0x0000FFFF |
445 | and ebx,0x0000FFFF |
414 | 446 | ||
415 | shr eax,10 |
447 | shr eax,10 |
416 | shr ebx,10 ; pixel coords inside Texture x,y 64*64 |
448 | shr ebx,10 ; pixel coords inside Texture x,y 64*64 |
417 | mov [xfrac],eax |
449 | mov [xfrac],eax |
418 | mov [yfrac],ebx |
450 | mov [yfrac],ebx |
419 | 451 | ||
420 | 452 | ||
421 | 453 | ||
422 | ; plot floor pixel !!!! |
454 | ; plot floor pixel !!!! |
423 | mov [vl],edi ; save L |
455 | mov [vl],edi ; save L |
424 | mov [ytemp],esi ; remember L bzw. H |
456 | mov [ytemp],esi ; remember L bzw. H |
425 | 457 | ||
426 | mov edi,[yfrac] ; get pixel color of this floor pixel |
458 | mov edi,[yfrac] ; get pixel color of this floor pixel |
427 | sal edi,8 |
459 | sal edi,8 |
428 | mov esi,[xfrac] |
460 | mov esi,[xfrac] |
429 | sal esi,2 |
461 | sal esi,2 |
430 | add edi,esi |
462 | add edi,esi |
431 | add edi,wall ; in fact its floor, just using the wall texture :) |
463 | add edi,wall ; in fact its floor, just using the wall texture :) |
432 | mov edx,[edi] |
464 | mov edx,[edi] |
433 | mov [remesi],esi |
465 | mov [remesi],esi |
434 | 466 | ||
435 | ;**** calculate pixel adress:**** |
467 | ;**** calculate pixel adress:**** |
436 | mov esi,[ytemp] |
468 | mov esi,[ytemp] |
437 | add esi,240 |
469 | add esi,240 |
438 | imul esi,1920 |
470 | imul esi,1920 |
439 | add esi,[vx1] |
471 | add esi,[vx1] |
440 | add esi,[vx1] |
472 | add esi,[vx1] |
441 | add esi,[vx1] |
473 | add esi,[vx1] |
442 | add esi,0x80000 |
474 | add esi,0x80000 |
443 | 475 | ||
444 | cmp esi,0x80000+1920*480 |
476 | cmp esi,0x80000+1920*480 |
445 | jg foff0 |
477 | jg foff0 |
446 | cmp esi,0x80000 |
478 | cmp esi,0x80000 |
447 | jb foff0 |
479 | jb foff0 |
448 | ; now we have the adress of the floor-pixel color in edi |
480 | ; now we have the adress of the floor-pixel color in edi |
449 | ; and the adress of the pixel in the image in esi |
481 | ; and the adress of the pixel in the image in esi |
450 | 482 | ||
451 | mov edx,[edi] |
483 | mov edx,[edi] |
452 | ;******************** custom distance DARKEN Floor |
484 | ;******************** custom distance DARKEN Floor |
453 | 485 | ||
454 | mov eax,[vdd] |
486 | mov eax,[vdd] |
455 | 487 | ||
456 | ; jmp nodark0 ; use this to deactivate darkening floor (a bit faster) |
488 | ; jmp nodark0 ; use this to deactivate darkening floor (a bit faster) |
457 | 489 | ||
458 | cmp eax,80 |
490 | cmp eax,80 |
459 | jg nodark0 |
491 | jg nodark0 |
460 | ; split rgb |
492 | ; split rgb |
461 | 493 | ||
462 | mov [blue],edx |
494 | mov [blue],edx |
463 | and [blue],dword 255 |
495 | and [blue],dword 255 |
464 | 496 | ||
465 | shr edx,8 |
497 | shr edx,8 |
466 | mov [green],edx |
498 | mov [green],edx |
467 | and [green],dword 255 |
499 | and [green],dword 255 |
468 | 500 | ||
469 | shr edx,8 |
501 | shr edx,8 |
470 | mov [red],edx |
502 | mov [red],edx |
471 | and [red],dword 255 |
503 | and [red],dword 255 |
472 | 504 | ||
473 | mov eax,81 ; darkness parameter |
505 | mov eax,81 ; darkness parameter |
474 | sub eax,[vdd] |
506 | sub eax,[vdd] |
475 | sal eax,1 |
507 | sal eax,1 |
476 | 508 | ||
477 | ; reduce rgb |
509 | ; reduce rgb |
478 | sub [red],eax |
510 | sub [red],eax |
479 | cmp [red], dword 0 |
511 | cmp [red], dword 0 |
480 | jg notblack10 |
512 | jg notblack10 |
481 | mov [red],dword 0 |
513 | mov [red],dword 0 |
482 | notblack10: |
514 | notblack10: |
483 | 515 | ||
484 | sub [green],eax |
516 | sub [green],eax |
485 | cmp [green],dword 0 |
517 | cmp [green],dword 0 |
486 | jg notblack20 |
518 | jg notblack20 |
487 | mov [green],dword 0 |
519 | mov [green],dword 0 |
488 | notblack20: |
520 | notblack20: |
489 | 521 | ||
490 | mov edx,[blue] |
522 | mov edx,[blue] |
491 | sub [blue],eax |
523 | sub [blue],eax |
492 | cmp [blue],dword 0 |
524 | cmp [blue],dword 0 |
493 | jg notblack30 |
525 | jg notblack30 |
494 | mov [blue],dword 0 |
526 | mov [blue],dword 0 |
495 | notblack30: |
527 | notblack30: |
496 | 528 | ||
497 | shl dword [red],16 ; reassemble rgb |
529 | shl dword [red],16 ; reassemble rgb |
498 | shl dword [green],8 |
530 | shl dword [green],8 |
499 | mov edx,[red] |
531 | mov edx,[red] |
500 | or edx,[green] |
532 | or edx,[green] |
501 | or edx,[blue] |
533 | or edx,[blue] |
502 | 534 | ||
503 | nodark0: |
535 | nodark0: |
504 | ; eo custom darken floor |
536 | ; eo custom darken floor |
505 | 537 | ||
506 | 538 | ||
507 | mov eax,edx |
539 | mov eax,edx |
508 | mov [esi],eax ; actually draw the floor pixel |
540 | mov [esi],eax ; actually draw the floor pixel |
509 | 541 | ||
510 | ; paint "forgotten" pixels |
542 | ; paint "forgotten" pixels |
511 | 543 | ||
512 | mov edx,[lasty] |
544 | mov edx,[lasty] |
513 | sub edx,1920 |
545 | sub edx,1920 |
514 | cmp esi,edx |
546 | cmp esi,edx |
515 | je foff0 |
547 | je foff0 |
516 | mov [esi+1920],eax |
548 | mov [esi+1920],eax |
517 | 549 | ||
518 | sub edx,1920 |
550 | sub edx,1920 |
519 | cmp esi,edx |
551 | cmp esi,edx |
520 | je foff0 |
552 | je foff0 |
521 | mov [edx+1920],eax |
553 | mov [edx+1920],eax |
522 | 554 | ||
523 | sub edx,1920 |
555 | sub edx,1920 |
524 | cmp esi,edx |
556 | cmp esi,edx |
525 | je foff0 |
557 | je foff0 |
526 | mov [edx+1920],eax |
558 | mov [edx+1920],eax |
527 | 559 | ||
528 | foff0: |
560 | foff0: |
529 | mov [lasty],esi |
561 | mov [lasty],esi |
530 | ;**** end of draw floor pixel **** |
562 | ;**** end of draw floor pixel **** |
531 | 563 | ||
532 | mov esi,[remesi] |
564 | mov esi,[remesi] |
533 | mov edi,[vl] ; restore L |
565 | mov edi,[vl] ; restore L |
534 | 566 | ||
535 | no_nu_pixel: |
567 | no_nu_pixel: |
536 | 568 | ||
537 | 569 | ||
538 | mov esi,[vh] |
570 | mov esi,[vh] |
539 | mov [h_old],esi |
571 | mov [h_old],esi |
540 | 572 | ||
541 | mov eax,[vxx] |
573 | mov eax,[vxx] |
542 | mov ebx,[vyy] |
574 | mov ebx,[vyy] |
543 | 575 | ||
544 | add eax,[vstepx] ; casting... |
576 | add eax,[vstepx] ; casting... |
545 | add ebx,[vstepy] |
577 | add ebx,[vstepy] |
546 | 578 | ||
547 | mov [vxx],eax |
579 | mov [vxx],eax |
548 | mov [vyy],ebx |
580 | mov [vyy],ebx |
549 | 581 | ||
550 | sar eax,16 |
582 | sar eax,16 |
551 | sar ebx,16 |
583 | sar ebx,16 |
552 | 584 | ||
553 | mov [vpxi],eax ; casters position in Map Grid |
585 | mov [vpxi],eax ; casters position in Map Grid |
554 | mov [vpyi],ebx |
586 | mov [vpyi],ebx |
555 | 587 | ||
556 | mov edx,ebx |
588 | mov edx,ebx |
557 | ; imul edx,32 |
589 | ; imul edx,32 |
558 | shl edx,5 |
590 | shl edx,5 |
559 | add edx,grid |
591 | add edx,grid |
560 | add edx,eax |
592 | add edx,eax |
561 | cmp [edx],byte 0 ; raycaster reached a wall? (0=no) |
593 | cmp [edx],byte 0 ; raycaster reached a wall? (0=no) |
562 | jne getout |
594 | jne getout |
563 | cmp edi,10000 ; limit view range |
595 | cmp edi,10000 ; limit view range |
564 | jb raycast |
596 | jb raycast |
565 | ;................................................ |
597 | ;................................................ |
566 | getout: |
598 | getout: |
567 | mov eax,[edx] ; store Grid Wall Value for Texture Selection |
599 | mov eax,[edx] ; store Grid Wall Value for Texture Selection |
568 | mov [vk],eax |
600 | mov [vk],eax |
569 | 601 | ||
570 | call blur ; deactivate this (blurs the near floor) : a bit faster |
602 | call blur ; deactivate this (blurs the near floor) : a bit faster |
571 | 603 | ||
572 | ; simply copy floor to ceil pixel column here |
604 | ; simply copy floor to ceil pixel column here |
573 | ;jmp nocopy ; use this for test purposes |
605 | ;jmp nocopy ; use this for test purposes |
574 | 606 | ||
575 | pusha |
607 | pusha |
576 | mov eax,0x80000+1920*240 |
608 | mov eax,0x80000+1920*240 |
577 | mov ebx,0x80000+1920*240 |
609 | mov ebx,0x80000+1920*240 |
578 | 610 | ||
579 | copyfloor: |
611 | copyfloor: |
580 | sub eax,1920 |
612 | sub eax,1920 |
581 | add ebx,1920 |
613 | add ebx,1920 |
582 | 614 | ||
583 | mov ecx,0 |
615 | mov ecx,0 |
584 | add ecx,[vx1] |
616 | add ecx,[vx1] |
585 | add ecx,[vx1] |
617 | add ecx,[vx1] |
586 | add ecx,[vx1] |
618 | add ecx,[vx1] |
587 | 619 | ||
588 | mov edx,ecx |
620 | mov edx,ecx |
589 | add ecx,eax |
621 | add ecx,eax |
590 | add edx,ebx |
622 | add edx,ebx |
591 | 623 | ||
592 | mov esi,[edx] |
624 | mov esi,[edx] |
593 | mov [ecx],esi |
625 | mov [ecx],esi |
594 | 626 | ||
595 | cmp eax,0x80000 |
627 | cmp eax,0x80000 |
596 | jg copyfloor |
628 | jg copyfloor |
597 | 629 | ||
598 | popa |
630 | popa |
599 | ; *** end of copy floor to ceil |
631 | ; *** end of copy floor to ceil |
600 | ;nocopy: |
632 | ;nocopy: |
601 | ;__________________________________________________________________________ |
633 | ;__________________________________________________________________________ |
602 | 634 | ||
603 | 635 | ||
604 | ; draw this pixelrows wall |
636 | ; draw this pixelrows wall |
605 | mov [vl],edi |
637 | mov [vl],edi |
606 | 638 | ||
607 | mov edi,260 |
639 | mov edi,260 |
608 | sub edi,[vdd] |
640 | sub edi,[vdd] |
609 | cmp edi,0 |
641 | cmp edi,0 |
610 | jg ok3 |
642 | jg ok3 |
611 | xor edi,edi |
643 | xor edi,edi |
612 | ok3: |
644 | ok3: |
613 | mov [vbottom],edi ; end wall ceil (or window top) |
645 | mov [vbottom],edi ; end wall ceil (or window top) |
614 | 646 | ||
615 | mov esi,262 |
647 | mov esi,262 |
616 | add esi,[vdd] ; start wall floor |
648 | add esi,[vdd] ; start wall floor |
617 | 649 | ||
618 | xor edi,edi |
650 | xor edi,edi |
619 | 651 | ||
620 | ; somethin is wrong with xfrac,so recalc... |
652 | ; somethin is wrong with xfrac,so recalc... |
621 | 653 | ||
622 | mov eax,[vxx] |
654 | mov eax,[vxx] |
623 | and eax,0x0000FFFF |
655 | and eax,0x0000FFFF |
624 | shr eax,10 |
656 | shr eax,10 |
625 | mov [xfrac],eax |
657 | mov [xfrac],eax |
626 | 658 | ||
627 | mov eax,[vyy] |
659 | mov eax,[vyy] |
628 | and eax,0x0000FFFF |
660 | and eax,0x0000FFFF |
629 | shr eax,10 |
661 | shr eax,10 |
630 | mov [yfrac],eax |
662 | mov [yfrac],eax |
631 | 663 | ||
632 | pixelrow: |
664 | pixelrow: |
633 | 665 | ||
634 | ; find each pixels color: |
666 | ; find each pixels color: |
635 | 667 | ||
636 | add edi,64 |
668 | add edi,64 |
637 | sub esi,1 |
669 | sub esi,1 |
638 | cmp esi, 502 ; dont calc offscreen-pixels |
670 | cmp esi, 502 ; dont calc offscreen-pixels |
639 | jg speedup |
671 | jg speedup |
640 | 672 | ||
641 | xor edx,edx |
673 | xor edx,edx |
642 | mov eax, edi |
674 | mov eax, edi |
643 | mov ebx,[vdd] |
675 | mov ebx,[vdd] |
644 | add ebx,[vdd] |
676 | add ebx,[vdd] |
645 | div ebx |
677 | div ebx |
646 | and eax,63 |
678 | and eax,63 |
647 | mov [ytemp],eax ; get y of texture for wall |
679 | mov [ytemp],eax ; get y of texture for wall |
648 | 680 | ||
649 | mov eax,[xfrac] |
681 | mov eax,[xfrac] |
650 | add eax,[yfrac] |
682 | add eax,[yfrac] |
651 | 683 | ||
652 | and eax,63 |
684 | and eax,63 |
653 | mov [xtemp],eax ; get x of texture for wall |
685 | mov [xtemp],eax ; get x of texture for wall |
654 | 686 | ||
655 | ; now prepare to plot that wall-pixel... |
687 | ; now prepare to plot that wall-pixel... |
656 | mov [remedi],edi |
688 | mov [remedi],edi |
657 | 689 | ||
658 | mov edi,[ytemp] |
690 | mov edi,[ytemp] |
659 | sal edi,8 |
691 | sal edi,8 |
660 | mov edx,[xtemp] |
692 | mov edx,[xtemp] |
661 | sal edx,2 |
693 | sal edx,2 |
662 | add edi,edx |
694 | add edi,edx |
663 | 695 | ||
664 | mov eax,[vk] ; determine which texture should be used |
696 | mov eax,[vk] ; determine which texture should be used |
665 | and eax,255 |
697 | and eax,255 |
666 | 698 | ||
667 | cmp eax,1 |
699 | cmp eax,1 |
668 | jne checkmore1 |
700 | jne checkmore1 |
669 | add edi,ceil |
701 | add edi,ceil |
670 | jmp foundtex |
702 | jmp foundtex |
671 | checkmore1: |
703 | checkmore1: |
672 | 704 | ||
673 | cmp eax,2 |
705 | cmp eax,2 |
674 | jne checkmore2 |
706 | jne checkmore2 |
675 | add edi,wall |
707 | add edi,wall |
676 | jmp foundtex |
708 | jmp foundtex |
677 | checkmore2: |
709 | checkmore2: |
678 | 710 | ||
679 | cmp eax,3 |
711 | cmp eax,3 |
680 | jne checkmore3 |
712 | jne checkmore3 |
681 | add edi,wall2 |
713 | add edi,wall2 |
682 | jmp foundtex |
714 | jmp foundtex |
683 | checkmore3: |
715 | checkmore3: |
684 | 716 | ||
685 | cmp eax,4 |
717 | cmp eax,4 |
686 | jne checkmore4 |
718 | jne checkmore4 |
687 | add edi,wall3 |
719 | add edi,wall3 |
688 | jmp foundtex |
720 | jmp foundtex |
689 | checkmore4: |
721 | checkmore4: |
690 | 722 | ||
691 | cmp eax,5 |
723 | cmp eax,5 |
692 | jne checkmore5 |
724 | jne checkmore5 |
693 | add edi,wall4 |
725 | add edi,wall4 |
694 | jmp foundtex |
726 | jmp foundtex |
695 | checkmore5: |
727 | checkmore5: |
696 | 728 | ||
697 | cmp eax,6 |
729 | cmp eax,6 |
698 | jne checkmore6 |
730 | jne checkmore6 |
699 | add edi,wall5 |
731 | add edi,wall5 |
700 | jmp foundtex |
732 | jmp foundtex |
701 | checkmore6: |
733 | checkmore6: |
702 | 734 | ||
703 | cmp eax,7 |
735 | cmp eax,7 |
704 | jne checkmore7 |
736 | jne checkmore7 |
705 | add edi,wall6 |
737 | add edi,wall6 |
706 | jmp foundtex |
738 | jmp foundtex |
707 | checkmore7: |
739 | checkmore7: |
708 | 740 | ||
709 | cmp eax,8 |
741 | cmp eax,8 |
710 | jne checkmore8 |
742 | jne checkmore8 |
711 | add edi,wall7 |
743 | add edi,wall7 |
712 | jmp foundtex |
744 | jmp foundtex |
713 | checkmore8: |
745 | checkmore8: |
714 | 746 | ||
715 | foundtex: |
747 | foundtex: |
716 | 748 | ||
717 | mov edx,[edi] ; get pixel color inside texture |
749 | mov edx,[edi] ; get pixel color inside texture |
718 | 750 | ||
719 | ; ***pseudoshade south-west |
751 | ; ***pseudoshade south-west |
720 | jmp east ; activate this for southwest pseudoshade : a bit slower + blink-bug |
752 | jmp east ; activate this for southwest pseudoshade : a bit slower + blink-bug |
721 | mov edi,[yfrac] |
753 | mov edi,[yfrac] |
722 | mov [pseudo],dword 0 ; store flag for custom distance darkening |
754 | mov [pseudo],dword 0 ; store flag for custom distance darkening |
723 | cmp edi,[xfrac] |
755 | cmp edi,[xfrac] |
724 | jge east |
756 | jge east |
725 | and edx,0x00FEFEFE |
757 | and edx,0x00FEFEFE |
726 | shr edx,1 |
758 | shr edx,1 |
727 | mov [pseudo],dword 1 |
759 | mov [pseudo],dword 1 |
728 | east: |
760 | east: |
729 | 761 | ||
730 | call dark_distance ; deactivate wall distance darkening: a bit faster |
762 | call dark_distance ; deactivate wall distance darkening: a bit faster |
731 | 763 | ||
732 | ; ******* DRAW WALL PIXEL ******* |
764 | ; ******* DRAW WALL PIXEL ******* |
733 | mov eax,esi |
765 | mov eax,esi |
734 | sub eax,22 |
766 | sub eax,22 |
735 | imul eax,1920 |
767 | imul eax,1920 |
736 | add eax,[vx1] |
768 | add eax,[vx1] |
737 | add eax,[vx1] |
769 | add eax,[vx1] |
738 | add eax,[vx1] |
770 | add eax,[vx1] |
739 | add eax,0x80000 |
771 | add eax,0x80000 |
740 | 772 | ||
741 | cmp eax,0x80000+1920*480 |
773 | cmp eax,0x80000+1920*480 |
742 | jg dont_draw |
774 | jg dont_draw |
743 | cmp eax,0x80000 |
775 | cmp eax,0x80000 |
744 | jb dont_draw |
776 | jb dont_draw |
745 | mov [eax],edx ; actually set the pixel in the image |
777 | mov [eax],edx ; actually set the pixel in the image |
746 | ; *** eo draw wall pixel |
778 | ; *** eo draw wall pixel |
747 | dont_draw: |
779 | dont_draw: |
748 | mov edi,[remedi] |
780 | mov edi,[remedi] |
749 | speedup: |
781 | speedup: |
750 | cmp esi,[vbottom] ; end of this column? |
782 | cmp esi,[vbottom] ; end of this column? |
751 | jg pixelrow |
783 | jg pixelrow |
752 | 784 | ||
753 | mov edi,[vl] ; restoring |
785 | mov edi,[vl] ; restoring |
754 | mov eax,[vx1] ; inc X1 |
786 | mov eax,[vx1] ; inc X1 |
755 | add eax,1 |
787 | add eax,1 |
756 | mov [vx1],eax |
788 | mov [vx1],eax |
757 | 789 | ||
758 | ;*** NEXT A *** |
790 | ;*** NEXT A *** |
759 | mov esi,[va] |
791 | mov esi,[va] |
760 | sub esi,1 |
792 | sub esi,1 |
761 | mov [va],esi |
793 | mov [va],esi |
762 | cmp esi,[vacompare] |
794 | cmp esi,[vacompare] |
763 | jg for_a |
795 | jg for_a |
764 | ;*** EO NEXT A *** |
796 | ;*** EO NEXT A *** |
765 | ;--------------------------------------------------------------------------- |
797 | ;--------------------------------------------------------------------------- |
766 | 798 | ||
767 | 799 | ||
768 | ; **** put image !!!!!**** |
800 | ; **** put image !!!!!**** |
769 | ; *********************** |
801 | ; *********************** |
770 | mov eax,7 |
802 | mov eax,7 |
771 | mov ebx,0x80000 |
803 | mov ebx,0x80000 |
772 | mov ecx,640*65536+480 |
804 | mov ecx,640*65536+480 |
773 | mov edx,5*65536+20 |
805 | mov edx,5*65536+20 |
774 | int 0x40 |
806 | int 0x40 |
775 | 807 | ||
776 | ret |
808 | ret |
777 | 809 | ||
778 | blur: |
810 | blur: |
779 | 811 | ||
780 | pusha |
812 | pusha |
781 | mov eax,0x080000+360*1920 |
813 | mov eax,0x080000+360*1920 |
782 | 814 | ||
783 | copyfloor2: |
815 | copyfloor2: |
784 | add eax,1920 |
816 | add eax,1920 |
785 | mov ebx,eax |
817 | mov ebx,eax |
786 | add ebx,[vx1] |
818 | add ebx,[vx1] |
787 | add ebx,[vx1] |
819 | add ebx,[vx1] |
788 | add ebx,[vx1] |
820 | add ebx,[vx1] |
789 | 821 | ||
790 | mov ecx,[ebx-15] |
822 | mov ecx,[ebx-15] |
791 | and ecx,0x00FEFEFE |
823 | and ecx,0x00FEFEFE |
792 | shr ecx,1 |
824 | shr ecx,1 |
793 | mov edx,[ebx-12] |
825 | mov edx,[ebx-12] |
794 | and edx,0x00FEFEFE |
826 | and edx,0x00FEFEFE |
795 | shr edx,1 |
827 | shr edx,1 |
796 | add edx,ecx |
828 | add edx,ecx |
797 | and edx,0x00FEFEFE |
829 | and edx,0x00FEFEFE |
798 | shr edx,1 |
830 | shr edx,1 |
799 | 831 | ||
800 | mov ecx,[ebx-9] |
832 | mov ecx,[ebx-9] |
801 | and ecx,0x00FEFEFE |
833 | and ecx,0x00FEFEFE |
802 | shr ecx,1 |
834 | shr ecx,1 |
803 | add edx,ecx |
835 | add edx,ecx |
804 | 836 | ||
805 | and edx,0x00FEFEFE |
837 | and edx,0x00FEFEFE |
806 | shr edx,1 |
838 | shr edx,1 |
807 | 839 | ||
808 | mov ecx,[ebx-6] |
840 | mov ecx,[ebx-6] |
809 | and ecx,0x00FEFEFE |
841 | and ecx,0x00FEFEFE |
810 | shr ecx,1 |
842 | shr ecx,1 |
811 | add edx,ecx |
843 | add edx,ecx |
812 | 844 | ||
813 | and edx,0x00FEFEFE |
845 | and edx,0x00FEFEFE |
814 | shr edx,1 |
846 | shr edx,1 |
815 | 847 | ||
816 | mov ecx,[ebx-3] |
848 | mov ecx,[ebx-3] |
817 | and ecx,0x00FEFEFE |
849 | and ecx,0x00FEFEFE |
818 | shr ecx,1 |
850 | shr ecx,1 |
819 | add edx,ecx |
851 | add edx,ecx |
820 | 852 | ||
821 | and edx,0x00FEFEFE |
853 | and edx,0x00FEFEFE |
822 | shr edx,1 |
854 | shr edx,1 |
823 | 855 | ||
824 | mov ecx,[ebx] |
856 | mov ecx,[ebx] |
825 | and ecx,0x00FEFEFE |
857 | and ecx,0x00FEFEFE |
826 | shr ecx,1 |
858 | shr ecx,1 |
827 | add edx,ecx |
859 | add edx,ecx |
828 | 860 | ||
829 | mov [ebx],edx |
861 | mov [ebx],edx |
830 | 862 | ||
831 | cmp eax,0x80000+478*1920 |
863 | cmp eax,0x80000+478*1920 |
832 | jb copyfloor2 |
864 | jb copyfloor2 |
833 | 865 | ||
834 | popa |
866 | popa |
835 | 867 | ||
836 | ret |
868 | ret |
837 | 869 | ||
838 | 870 | ||
839 | 871 | ||
840 | ; ******* Darken by Distance ******* |
872 | ; ******* Darken by Distance ******* |
841 | dark_distance: |
873 | dark_distance: |
842 | 874 | ||
843 | ; color must be in edx, wall height in [vdd] |
875 | ; color must be in edx, wall height in [vdd] |
844 | 876 | ||
845 | mov eax,[vdd] |
877 | mov eax,[vdd] |
846 | cmp eax,50 |
878 | cmp eax,50 |
847 | jg nodark |
879 | jg nodark |
848 | ; split rgb |
880 | ; split rgb |
849 | 881 | ||
850 | mov [blue],edx |
882 | mov [blue],edx |
851 | and [blue],dword 255 |
883 | and [blue],dword 255 |
852 | 884 | ||
853 | shr edx,8 |
885 | shr edx,8 |
854 | mov [green],edx |
886 | mov [green],edx |
855 | and [green],dword 255 |
887 | and [green],dword 255 |
856 | 888 | ||
857 | shr edx,8 |
889 | shr edx,8 |
858 | mov [red],edx |
890 | mov [red],edx |
859 | and [red],dword 255 |
891 | and [red],dword 255 |
860 | 892 | ||
861 | mov eax,51 ; darkness parameter |
893 | mov eax,51 ; darkness parameter |
862 | sub eax,[vdd] |
894 | sub eax,[vdd] |
863 | cmp [pseudo],dword 1 |
895 | cmp [pseudo],dword 1 |
864 | je isdarkside |
896 | je isdarkside |
865 | sal eax,2 |
897 | sal eax,2 |
866 | isdarkside: |
898 | isdarkside: |
867 | 899 | ||
868 | ; reduce rgb |
900 | ; reduce rgb |
869 | sub [red],eax |
901 | sub [red],eax |
870 | cmp [red], dword 0 |
902 | cmp [red], dword 0 |
871 | jg notblack10b |
903 | jg notblack10b |
872 | mov [red],dword 0 |
904 | mov [red],dword 0 |
873 | notblack10b: |
905 | notblack10b: |
874 | 906 | ||
875 | sub [green],eax |
907 | sub [green],eax |
876 | cmp [green],dword 0 |
908 | cmp [green],dword 0 |
877 | jg notblack20b |
909 | jg notblack20b |
878 | mov [green],dword 0 |
910 | mov [green],dword 0 |
879 | notblack20b: |
911 | notblack20b: |
880 | 912 | ||
881 | mov edx,[blue] |
913 | mov edx,[blue] |
882 | sub [blue],eax |
914 | sub [blue],eax |
883 | cmp [blue],dword 0 |
915 | cmp [blue],dword 0 |
884 | jg notblack30b |
916 | jg notblack30b |
885 | mov [blue],dword 0 |
917 | mov [blue],dword 0 |
886 | notblack30b: |
918 | notblack30b: |
887 | 919 | ||
888 | shl dword [red],16 ; reassemble rgb |
920 | shl dword [red],16 ; reassemble rgb |
889 | shl dword [green],8 |
921 | shl dword [green],8 |
890 | mov edx,[red] |
922 | mov edx,[red] |
891 | or edx,[green] |
923 | or edx,[green] |
892 | or edx,[blue] |
924 | or edx,[blue] |
893 | mov eax,edx |
925 | mov eax,edx |
894 | 926 | ||
895 | nodark: |
927 | nodark: |
896 | 928 | ||
897 | ret |
929 | ret |
898 | 930 | ||
899 | 931 | ||
900 | ; DATA AREA |
932 | ; DATA AREA |
901 | 933 | ||
902 | ;ceil=ceil |
934 | ;ceil=ceil |
903 | ;wall=wall floor |
935 | ;wall=wall floor |
904 | ;2 corner stone |
936 | ;2 corner stone |
905 | ;3 leaf mosaic |
937 | ;3 leaf mosaic |
906 | ;4 closed window |
938 | ;4 closed window |
907 | ;5 greek mosaic |
939 | ;5 greek mosaic |
908 | ;6 old street stones |
940 | ;6 old street stones |
909 | ;7 maya wall |
941 | ;7 maya wall |
910 | 942 | ||
911 | grid: ; 32*32 Blocks, Map: 0 = Air, 1 to 8 = Wall |
943 | grid: ; 32*32 Blocks, Map: 0 = Air, 1 to 8 = Wall |
912 | 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 |
944 | 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 |
913 | 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 |
945 | 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 |
914 | 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 |
946 | 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 |
915 | 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 |
947 | 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 |
916 | 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 |
948 | 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 |
917 | 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 |
949 | 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 |
918 | 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 |
950 | 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 |
919 | 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 |
951 | 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 |
920 | 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 |
952 | 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 |
921 | 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 |
953 | 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 |
922 | 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 |
954 | 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 |
923 | 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 |
955 | 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 |
924 | 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 |
956 | 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 |
925 | 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 |
957 | 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 |
926 | 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 |
958 | 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 |
927 | 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 |
959 | 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 |
928 | 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 |
960 | 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 |
929 | 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 |
961 | 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 |
930 | 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 |
962 | 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 |
931 | 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 |
963 | 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 |
932 | 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 |
964 | 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 |
933 | 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 |
965 | 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 |
934 | 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 |
966 | 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 |
935 | 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 |
967 | 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 |
936 | 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 |
968 | 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 |
937 | 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 |
969 | 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 |
938 | 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 |
970 | 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 |
939 | 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 |
971 | 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 |
940 | 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 |
972 | 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 |
941 | 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 |
973 | 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 |
942 | 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 |
974 | 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 |
943 | 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 |
975 | 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 |
- | 976 | ||
- | 977 | vpx: |
|
- | 978 | dd 0x0001FFFF ; initial player position * 0xFFFF |
|
- | 979 | vpy: |
|
944 | 980 | dd 0x0001FFFF |
|
945 | - | ||
946 | sinus: |
- | |
947 | dd 0,11,23,34,46,57,69,80,92,103 |
- | |
948 | dd 114,126,137,149,160,172,183,194,206,217 |
- | |
949 | dd 229,240,252,263,274,286,297,309,320,332 |
- | |
950 | dd 343,354,366,377,389,400,411,423,434,446 |
- | |
951 | dd 457,469,480,491,503,514,526,537,548,560 |
- | |
952 | dd 571,583,594,605,617,628,640,651,662,674 |
- | |
953 | dd 685,696,708,719,731,742,753,765,776,787 |
- | |
954 | dd 799,810,821,833,844,855,867,878,889,901 |
- | |
955 | dd 912,923,935,946,957,969,980,991,1003,1014 |
- | |
956 | dd 1025,1036,1048,1059,1070,1082,1093,1104,1115,1127 |
- | |
957 | dd 1138,1149,1161,1172,1183,1194,1206,1217,1228,1239 |
- | |
958 | dd 1250,1262,1273,1284,1295,1307,1318,1329,1340,1351 |
- | |
959 | dd 1363,1374,1385,1396,1407,1418,1430,1441,1452,1463 |
- | |
960 | dd 1474,1485,1496,1508,1519,1530,1541,1552,1563,1574 |
- | |
961 | dd 1585,1597,1608,1619,1630,1641,1652,1663,1674,1685 |
- | |
962 | dd 1696,1707,1718,1729,1740,1751,1762,1773,1784,1795 |
- | |
963 | dd 1806,1817,1828,1839,1850,1861,1872,1883,1894,1905 |
- | |
964 | dd 1916,1927,1938,1949,1960,1971,1982,1992,2003,2014 |
- | |
965 | dd 2025,2036,2047,2058,2069,2079,2090,2101,2112,2123 |
- | |
966 | dd 2134,2144,2155,2166,2177,2188,2198,2209,2220,2231 |
- | |
967 | dd 2241,2252,2263,2274,2284,2295,2306,2316,2327,2338 |
- | |
968 | dd 2349,2359,2370,2381,2391,2402,2413,2423,2434,2444 |
- | |
969 | dd 2455,2466,2476,2487,2497,2508,2518,2529,2540,2550 |
- | |
970 | dd 2561,2571,2582,2592,2603,2613,2624,2634,2645,2655 |
- | |
971 | dd 2666,2676,2686,2697,2707,2718,2728,2738,2749,2759 |
- | |
972 | dd 2770,2780,2790,2801,2811,2821,2832,2842,2852,2863 |
- | |
973 | dd 2873,2883,2893,2904,2914,2924,2934,2945,2955,2965 |
- | |
974 | dd 2975,2985,2996,3006,3016,3026,3036,3046,3056,3067 |
- | |
975 | dd 3077,3087,3097,3107,3117,3127,3137,3147,3157,3167 |
- | |
976 | dd 3177,3187,3197,3207,3217,3227,3237,3247,3257,3267 |
- | |
977 | dd 3277,3287,3297,3306,3316,3326,3336,3346,3356,3365 |
- | |
978 | dd 3375,3385,3395,3405,3414,3424,3434,3444,3453,3463 |
- | |
979 | dd 3473,3483,3492,3502,3512,3521,3531,3540,3550,3560 |
- | |
980 | dd 3569,3579,3588,3598,3608,3617,3627,3636,3646,3655 |
- | |
981 | dd 3665,3674,3684,3693,3703,3712,3721,3731,3740,3750 |
- | |
982 | dd 3759,3768,3778,3787,3796,3806,3815,3824,3834,3843 |
- | |
983 | dd 3852,3861,3871,3880,3889,3898,3907,3917,3926,3935 |
- | |
984 | dd 3944,3953,3962,3971,3980,3990,3999,4008,4017,4026 |
- | |
985 | dd 4035,4044,4053,4062,4071,4080,4089,4098,4106,4115 |
- | |
986 | dd 4124,4133,4142,4151,4160,4169,4177,4186,4195,4204 |
- | |
987 | dd 4213,4221,4230,4239,4247,4256,4265,4274,4282,4291 |
- | |
988 | dd 4299,4308,4317,4325,4334,4342,4351,4360,4368,4377 |
- | |
989 | dd 4385,4394,4402,4411,4419,4427,4436,4444,4453,4461 |
- | |
990 | dd 4469,4478,4486,4495,4503,4511,4519,4528,4536,4544 |
- | |
991 | dd 4552,4561,4569,4577,4585,4593,4602,4610,4618,4626 |
- | |
992 | dd 4634,4642,4650,4658,4666,4674,4682,4690,4698,4706 |
- | |
993 | dd 4714,4722,4730,4738,4746,4754,4762,4769,4777,4785 |
- | |
994 | dd 4793,4801,4808,4816,4824,4832,4839,4847,4855,4863 |
- | |
995 | dd 4870,4878,4885,4893,4901,4908,4916,4923,4931,4938 |
- | |
996 | dd 4946,4953,4961,4968,4976,4983,4991,4998,5006,5013 |
- | |
997 | dd 5020,5028,5035,5042,5050,5057,5064,5071,5079,5086 |
- | |
998 | dd 5093,5100,5107,5115,5122,5129,5136,5143,5150,5157 |
- | |
999 | dd 5164,5171,5178,5185,5192,5199,5206,5213,5220,5227 |
- | |
1000 | dd 5234,5241,5248,5254,5261,5268,5275,5282,5288,5295 |
- | |
1001 | dd 5302,5309,5315,5322,5329,5335,5342,5349,5355,5362 |
- | |
1002 | dd 5368,5375,5381,5388,5394,5401,5407,5414,5420,5427 |
- | |
1003 | dd 5433,5439,5446,5452,5459,5465,5471,5477,5484,5490 |
- | |
1004 | dd 5496,5502,5509,5515,5521,5527,5533,5539,5546,5552 |
- | |
1005 | dd 5558,5564,5570,5576,5582,5588,5594,5600,5606,5612 |
- | |
1006 | dd 5617,5623,5629,5635,5641,5647,5652,5658,5664,5670 |
- | |
1007 | dd 5675,5681,5687,5693,5698,5704,5709,5715,5721,5726 |
- | |
1008 | dd 5732,5737,5743,5748,5754,5759,5765,5770,5776,5781 |
- | |
1009 | dd 5786,5792,5797,5802,5808,5813,5818,5824,5829,5834 |
- | |
1010 | dd 5839,5844,5850,5855,5860,5865,5870,5875,5880,5885 |
- | |
1011 | dd 5890,5895,5900,5905,5910,5915,5920,5925,5930,5935 |
- | |
1012 | dd 5939,5944,5949,5954,5959,5963,5968,5973,5978,5982 |
- | |
1013 | dd 5987,5992,5996,6001,6005,6010,6015,6019,6024,6028 |
- | |
1014 | dd 6033,6037,6041,6046,6050,6055,6059,6063,6068,6072 |
- | |
1015 | dd 6076,6081,6085,6089,6093,6097,6102,6106,6110,6114 |
- | |
1016 | dd 6118,6122,6126,6130,6134,6138,6142,6146,6150,6154 |
- | |
1017 | dd 6158,6162,6166,6170,6174,6178,6181,6185,6189,6193 |
- | |
1018 | dd 6196,6200,6204,6208,6211,6215,6218,6222,6226,6229 |
- | |
1019 | dd 6233,6236,6240,6243,6247,6250,6254,6257,6260,6264 |
- | |
1020 | dd 6267,6270,6274,6277,6280,6284,6287,6290,6293,6296 |
- | |
1021 | dd 6300,6303,6306,6309,6312,6315,6318,6321,6324,6327 |
- | |
1022 | dd 6330,6333,6336,6339,6342,6345,6348,6350,6353,6356 |
- | |
1023 | dd 6359,6362,6364,6367,6370,6372,6375,6378,6380,6383 |
- | |
1024 | dd 6386,6388,6391,6393,6396,6398,6401,6403,6405,6408 |
- | |
1025 | dd 6410,6413,6415,6417,6420,6422,6424,6426,6429,6431 |
- | |
1026 | dd 6433,6435,6437,6440,6442,6444,6446,6448,6450,6452 |
- | |
1027 | dd 6454,6456,6458,6460,6462,6464,6466,6467,6469,6471 |
- | |
1028 | dd 6473,6475,6476,6478,6480,6482,6483,6485,6486,6488 |
- | |
1029 | dd 6490,6491,6493,6494,6496,6497,6499,6500,6502,6503 |
- | |
1030 | dd 6505,6506,6507,6509,6510,6511,6513,6514,6515,6516 |
- | |
1031 | dd 6518,6519,6520,6521,6522,6523,6524,6525,6527,6528 |
- | |
1032 | dd 6529,6530,6531,6531,6532,6533,6534,6535,6536,6537 |
- | |
1033 | dd 6538,6538,6539,6540,6541,6541,6542,6543,6543,6544 |
- | |
1034 | dd 6545,6545,6546,6546,6547,6547,6548,6548,6549,6549 |
- | |
1035 | dd 6550,6550,6550,6551,6551,6551,6552,6552,6552,6552 |
- | |
1036 | dd 6553,6553,6553,6553,6553,6553,6553,6553,6553,6553 |
- | |
1037 | dd 6554,6553,6553,6553,6553,6553,6553,6553,6553,6553 |
- | |
1038 | dd 6553,6552,6552,6552,6552,6551,6551,6551,6550,6550 |
- | |
1039 | dd 6550,6549,6549,6548,6548,6547,6547,6546,6546,6545 |
- | |
1040 | dd 6545,6544,6543,6543,6542,6541,6541,6540,6539,6538 |
- | |
1041 | dd 6538,6537,6536,6535,6534,6533,6532,6531,6531,6530 |
- | |
1042 | dd 6529,6528,6527,6525,6524,6523,6522,6521,6520,6519 |
- | |
1043 | dd 6518,6516,6515,6514,6513,6511,6510,6509,6507,6506 |
- | |
1044 | dd 6505,6503,6502,6500,6499,6497,6496,6494,6493,6491 |
- | |
1045 | dd 6490,6488,6486,6485,6483,6482,6480,6478,6476,6475 |
- | |
1046 | dd 6473,6471,6469,6467,6466,6464,6462,6460,6458,6456 |
- | |
1047 | dd 6454,6452,6450,6448,6446,6444,6442,6440,6437,6435 |
- | |
1048 | dd 6433,6431,6429,6426,6424,6422,6420,6417,6415,6413 |
- | |
1049 | dd 6410,6408,6405,6403,6401,6398,6396,6393,6391,6388 |
- | |
1050 | dd 6386,6383,6380,6378,6375,6372,6370,6367,6364,6362 |
- | |
1051 | dd 6359,6356,6353,6350,6348,6345,6342,6339,6336,6333 |
- | |
1052 | dd 6330,6327,6324,6321,6318,6315,6312,6309,6306,6303 |
- | |
1053 | dd 6300,6296,6293,6290,6287,6284,6280,6277,6274,6270 |
- | |
1054 | dd 6267,6264,6260,6257,6254,6250,6247,6243,6240,6236 |
- | |
1055 | dd 6233,6229,6226,6222,6218,6215,6211,6208,6204,6200 |
- | |
1056 | dd 6196,6193,6189,6185,6181,6178,6174,6170,6166,6162 |
- | |
1057 | dd 6158,6154,6150,6146,6142,6138,6134,6130,6126,6122 |
- | |
1058 | dd 6118,6114,6110,6106,6102,6097,6093,6089,6085,6081 |
- | |
1059 | dd 6076,6072,6068,6063,6059,6055,6050,6046,6041,6037 |
- | |
1060 | dd 6033,6028,6024,6019,6015,6010,6005,6001,5996,5992 |
- | |
1061 | dd 5987,5982,5978,5973,5968,5963,5959,5954,5949,5944 |
- | |
1062 | dd 5939,5935,5930,5925,5920,5915,5910,5905,5900,5895 |
- | |
1063 | dd 5890,5885,5880,5875,5870,5865,5860,5855,5850,5844 |
- | |
1064 | dd 5839,5834,5829,5824,5818,5813,5808,5802,5797,5792 |
- | |
1065 | dd 5786,5781,5776,5770,5765,5759,5754,5748,5743,5737 |
- | |
1066 | dd 5732,5726,5721,5715,5709,5704,5698,5693,5687,5681 |
- | |
1067 | dd 5675,5670,5664,5658,5652,5647,5641,5635,5629,5623 |
- | |
1068 | dd 5617,5612,5606,5600,5594,5588,5582,5576,5570,5564 |
- | |
1069 | dd 5558,5552,5546,5539,5533,5527,5521,5515,5509,5502 |
- | |
1070 | dd 5496,5490,5484,5477,5471,5465,5459,5452,5446,5439 |
- | |
1071 | dd 5433,5427,5420,5414,5407,5401,5394,5388,5381,5375 |
- | |
1072 | dd 5368,5362,5355,5349,5342,5335,5329,5322,5315,5309 |
- | |
1073 | dd 5302,5295,5288,5282,5275,5268,5261,5254,5248,5241 |
- | |
1074 | dd 5234,5227,5220,5213,5206,5199,5192,5185,5178,5171 |
- | |
1075 | dd 5164,5157,5150,5143,5136,5129,5122,5115,5107,5100 |
- | |
1076 | dd 5093,5086,5079,5071,5064,5057,5050,5042,5035,5028 |
- | |
1077 | dd 5020,5013,5006,4998,4991,4983,4976,4968,4961,4953 |
- | |
1078 | dd 4946,4938,4931,4923,4916,4908,4901,4893,4885,4878 |
- | |
1079 | dd 4870,4863,4855,4847,4839,4832,4824,4816,4808,4801 |
- | |
1080 | dd 4793,4785,4777,4769,4762,4754,4746,4738,4730,4722 |
- | |
1081 | dd 4714,4706,4698,4690,4682,4674,4666,4658,4650,4642 |
- | |
1082 | dd 4634,4626,4618,4610,4602,4593,4585,4577,4569,4561 |
- | |
1083 | dd 4552,4544,4536,4528,4519,4511,4503,4495,4486,4478 |
- | |
1084 | dd 4469,4461,4453,4444,4436,4427,4419,4411,4402,4394 |
- | |
1085 | dd 4385,4377,4368,4360,4351,4342,4334,4325,4317,4308 |
- | |
1086 | dd 4299,4291,4282,4274,4265,4256,4247,4239,4230,4221 |
- | |
1087 | dd 4213,4204,4195,4186,4177,4169,4160,4151,4142,4133 |
- | |
1088 | dd 4124,4115,4106,4098,4089,4080,4071,4062,4053,4044 |
- | |
1089 | dd 4035,4026,4017,4008,3999,3990,3980,3971,3962,3953 |
- | |
1090 | dd 3944,3935,3926,3917,3907,3898,3889,3880,3871,3861 |
- | |
1091 | dd 3852,3843,3834,3824,3815,3806,3796,3787,3778,3768 |
- | |
1092 | dd 3759,3750,3740,3731,3721,3712,3703,3693,3684,3674 |
- | |
1093 | dd 3665,3655,3646,3636,3627,3617,3608,3598,3588,3579 |
- | |
1094 | dd 3569,3560,3550,3540,3531,3521,3512,3502,3492,3483 |
981 | |
1095 | dd 3473,3463,3453,3444,3434,3424,3414,3405,3395,3385 |
- | |
1096 | dd 3375,3365,3356,3346,3336,3326,3316,3306,3297,3287 |
- | |
1097 | dd 3277,3267,3257,3247,3237,3227,3217,3207,3197,3187 |
- | |
1098 | dd 3177,3167,3157,3147,3137,3127,3117,3107,3097,3087 |
- | |
1099 | dd 3077,3067,3056,3046,3036,3026,3016,3006,2996,2985 |
- | |
1100 | dd 2975,2965,2955,2945,2934,2924,2914,2904,2893,2883 |
- | |
1101 | dd 2873,2863,2852,2842,2832,2821,2811,2801,2790,2780 |
- | |
1102 | dd 2770,2759,2749,2738,2728,2718,2707,2697,2686,2676 |
- | |
1103 | dd 2666,2655,2645,2634,2624,2613,2603,2592,2582,2571 |
- | |
1104 | dd 2561,2550,2540,2529,2518,2508,2497,2487,2476,2466 |
- | |
1105 | dd 2455,2444,2434,2423,2413,2402,2391,2381,2370,2359 |
- | |
1106 | dd 2349,2338,2327,2316,2306,2295,2284,2274,2263,2252 |
- | |
1107 | dd 2241,2231,2220,2209,2198,2188,2177,2166,2155,2144 |
- | |
1108 | dd 2134,2123,2112,2101,2090,2079,2069,2058,2047,2036 |
- | |
1109 | dd 2025,2014,2003,1992,1982,1971,1960,1949,1938,1927 |
- | |
1110 | dd 1916,1905,1894,1883,1872,1861,1850,1839,1828,1817 |
- | |
1111 | dd 1806,1795,1784,1773,1762,1751,1740,1729,1718,1707 |
- | |
1112 | dd 1696,1685,1674,1663,1652,1641,1630,1619,1608,1597 |
- | |
1113 | dd 1585,1574,1563,1552,1541,1530,1519,1508,1496,1485 |
- | |
1114 | dd 1474,1463,1452,1441,1430,1418,1407,1396,1385,1374 |
- | |
1115 | dd 1363,1351,1340,1329,1318,1307,1295,1284,1273,1262 |
- | |
1116 | dd 1250,1239,1228,1217,1206,1194,1183,1172,1161,1149 |
- | |
1117 | dd 1138,1127,1115,1104,1093,1082,1070,1059,1048,1036 |
- | |
1118 | dd 1025,1014,1003,991,980,969,957,946,935,923 |
- | |
1119 | dd 912,901,889,878,867,855,844,833,821,810 |
- | |
1120 | dd 799,787,776,765,753,742,731,719,708,696 |
- | |
1121 | dd 685,674,662,651,640,628,617,605,594,583 |
- | |
1122 | dd 571,560,548,537,526,514,503,491,480,469 |
- | |
1123 | dd 457,446,434,423,411,400,389,377,366,354 |
- | |
1124 | dd 343,332,320,309,297,286,274,263,252,240 |
- | |
1125 | dd 229,217,206,194,183,172,160,149,137,126 |
- | |
1126 | dd 114,103,92,80,69,57,46,34,23,11 |
- | |
1127 | dd 0,-11,-23,-34,-46,-57,-69,-80,-92,-103 |
- | |
1128 | dd -114,-126,-137,-149,-160,-172,-183,-194,-206,-217 |
- | |
1129 | dd -229,-240,-252,-263,-274,-286,-297,-309,-320,-332 |
- | |
1130 | dd -343,-354,-366,-377,-389,-400,-411,-423,-434,-446 |
- | |
1131 | dd -457,-469,-480,-491,-503,-514,-526,-537,-548,-560 |
- | |
1132 | dd -571,-583,-594,-605,-617,-628,-640,-651,-662,-674 |
- | |
1133 | dd -685,-696,-708,-719,-731,-742,-753,-765,-776,-787 |
- | |
1134 | dd -799,-810,-821,-833,-844,-855,-867,-878,-889,-901 |
- | |
1135 | dd -912,-923,-935,-946,-957,-969,-980,-991,-1003,-1014 |
- | |
1136 | dd -1025,-1036,-1048,-1059,-1070,-1082,-1093,-1104,-1115,-1127 |
- | |
1137 | dd -1138,-1149,-1161,-1172,-1183,-1194,-1206,-1217,-1228,-1239 |
- | |
1138 | dd -1250,-1262,-1273,-1284,-1295,-1307,-1318,-1329,-1340,-1351 |
- | |
1139 | dd -1363,-1374,-1385,-1396,-1407,-1418,-1430,-1441,-1452,-1463 |
- | |
1140 | dd -1474,-1485,-1496,-1508,-1519,-1530,-1541,-1552,-1563,-1574 |
- | |
1141 | dd -1585,-1597,-1608,-1619,-1630,-1641,-1652,-1663,-1674,-1685 |
- | |
1142 | dd -1696,-1707,-1718,-1729,-1740,-1751,-1762,-1773,-1784,-1795 |
- | |
1143 | dd -1806,-1817,-1828,-1839,-1850,-1861,-1872,-1883,-1894,-1905 |
- | |
1144 | dd -1916,-1927,-1938,-1949,-1960,-1971,-1982,-1992,-2003,-2014 |
- | |
1145 | dd -2025,-2036,-2047,-2058,-2069,-2079,-2090,-2101,-2112,-2123 |
- | |
1146 | dd -2134,-2144,-2155,-2166,-2177,-2188,-2198,-2209,-2220,-2231 |
- | |
1147 | dd -2241,-2252,-2263,-2274,-2284,-2295,-2306,-2316,-2327,-2338 |
- | |
1148 | dd -2349,-2359,-2370,-2381,-2391,-2402,-2413,-2423,-2434,-2444 |
- | |
1149 | dd -2455,-2466,-2476,-2487,-2497,-2508,-2518,-2529,-2540,-2550 |
- | |
1150 | dd -2561,-2571,-2582,-2592,-2603,-2613,-2624,-2634,-2645,-2655 |
- | |
1151 | dd -2666,-2676,-2686,-2697,-2707,-2718,-2728,-2738,-2749,-2759 |
- | |
1152 | dd -2770,-2780,-2790,-2801,-2811,-2821,-2832,-2842,-2852,-2863 |
- | |
1153 | dd -2873,-2883,-2893,-2904,-2914,-2924,-2934,-2945,-2955,-2965 |
- | |
1154 | dd -2975,-2985,-2996,-3006,-3016,-3026,-3036,-3046,-3056,-3067 |
- | |
1155 | dd -3077,-3087,-3097,-3107,-3117,-3127,-3137,-3147,-3157,-3167 |
- | |
1156 | dd -3177,-3187,-3197,-3207,-3217,-3227,-3237,-3247,-3257,-3267 |
- | |
1157 | dd -3277,-3287,-3297,-3306,-3316,-3326,-3336,-3346,-3356,-3365 |
- | |
1158 | dd -3375,-3385,-3395,-3405,-3414,-3424,-3434,-3444,-3453,-3463 |
- | |
1159 | dd -3473,-3483,-3492,-3502,-3512,-3521,-3531,-3540,-3550,-3560 |
- | |
1160 | dd -3569,-3579,-3588,-3598,-3608,-3617,-3627,-3636,-3646,-3655 |
- | |
1161 | dd -3665,-3674,-3684,-3693,-3703,-3712,-3721,-3731,-3740,-3750 |
- | |
1162 | dd -3759,-3768,-3778,-3787,-3796,-3806,-3815,-3824,-3834,-3843 |
- | |
1163 | dd -3852,-3861,-3871,-3880,-3889,-3898,-3907,-3917,-3926,-3935 |
- | |
1164 | dd -3944,-3953,-3962,-3971,-3980,-3990,-3999,-4008,-4017,-4026 |
- | |
1165 | dd -4035,-4044,-4053,-4062,-4071,-4080,-4089,-4098,-4106,-4115 |
- | |
1166 | dd -4124,-4133,-4142,-4151,-4160,-4169,-4177,-4186,-4195,-4204 |
- | |
1167 | dd -4213,-4221,-4230,-4239,-4247,-4256,-4265,-4274,-4282,-4291 |
- | |
1168 | dd -4299,-4308,-4317,-4325,-4334,-4342,-4351,-4360,-4368,-4377 |
- | |
1169 | dd -4385,-4394,-4402,-4411,-4419,-4427,-4436,-4444,-4453,-4461 |
- | |
1170 | dd -4469,-4478,-4486,-4495,-4503,-4511,-4519,-4528,-4536,-4544 |
- | |
1171 | dd -4552,-4561,-4569,-4577,-4585,-4593,-4602,-4610,-4618,-4626 |
- | |
1172 | dd -4634,-4642,-4650,-4658,-4666,-4674,-4682,-4690,-4698,-4706 |
- | |
1173 | dd -4714,-4722,-4730,-4738,-4746,-4754,-4762,-4769,-4777,-4785 |
- | |
1174 | dd -4793,-4801,-4808,-4816,-4824,-4832,-4839,-4847,-4855,-4863 |
- | |
1175 | dd -4870,-4878,-4885,-4893,-4901,-4908,-4916,-4923,-4931,-4938 |
- | |
1176 | dd -4946,-4953,-4961,-4968,-4976,-4983,-4991,-4998,-5006,-5013 |
- | |
1177 | dd -5020,-5028,-5035,-5042,-5050,-5057,-5064,-5071,-5079,-5086 |
- | |
1178 | dd -5093,-5100,-5107,-5115,-5122,-5129,-5136,-5143,-5150,-5157 |
- | |
1179 | dd -5164,-5171,-5178,-5185,-5192,-5199,-5206,-5213,-5220,-5227 |
- | |
1180 | dd -5234,-5241,-5248,-5254,-5261,-5268,-5275,-5282,-5288,-5295 |
- | |
1181 | dd -5302,-5309,-5315,-5322,-5329,-5335,-5342,-5349,-5355,-5362 |
- | |
1182 | dd -5368,-5375,-5381,-5388,-5394,-5401,-5407,-5414,-5420,-5427 |
- | |
1183 | dd -5433,-5439,-5446,-5452,-5459,-5465,-5471,-5477,-5484,-5490 |
- | |
1184 | dd -5496,-5502,-5509,-5515,-5521,-5527,-5533,-5539,-5546,-5552 |
- | |
1185 | dd -5558,-5564,-5570,-5576,-5582,-5588,-5594,-5600,-5606,-5612 |
- | |
1186 | dd -5617,-5623,-5629,-5635,-5641,-5647,-5652,-5658,-5664,-5670 |
- | |
1187 | dd -5675,-5681,-5687,-5693,-5698,-5704,-5709,-5715,-5721,-5726 |
- | |
1188 | dd -5732,-5737,-5743,-5748,-5754,-5759,-5765,-5770,-5776,-5781 |
- | |
1189 | dd -5786,-5792,-5797,-5802,-5808,-5813,-5818,-5824,-5829,-5834 |
- | |
1190 | dd -5839,-5844,-5850,-5855,-5860,-5865,-5870,-5875,-5880,-5885 |
- | |
1191 | dd -5890,-5895,-5900,-5905,-5910,-5915,-5920,-5925,-5930,-5935 |
- | |
1192 | dd -5939,-5944,-5949,-5954,-5959,-5963,-5968,-5973,-5978,-5982 |
- | |
1193 | dd -5987,-5992,-5996,-6001,-6005,-6010,-6015,-6019,-6024,-6028 |
- | |
1194 | dd -6033,-6037,-6041,-6046,-6050,-6055,-6059,-6063,-6068,-6072 |
- | |
1195 | dd -6076,-6081,-6085,-6089,-6093,-6097,-6102,-6106,-6110,-6114 |
- | |
1196 | dd -6118,-6122,-6126,-6130,-6134,-6138,-6142,-6146,-6150,-6154 |
- | |
1197 | dd -6158,-6162,-6166,-6170,-6174,-6178,-6181,-6185,-6189,-6193 |
- | |
1198 | dd -6196,-6200,-6204,-6208,-6211,-6215,-6218,-6222,-6226,-6229 |
- | |
1199 | dd -6233,-6236,-6240,-6243,-6247,-6250,-6254,-6257,-6260,-6264 |
- | |
1200 | dd -6267,-6270,-6274,-6277,-6280,-6284,-6287,-6290,-6293,-6296 |
- | |
1201 | dd -6300,-6303,-6306,-6309,-6312,-6315,-6318,-6321,-6324,-6327 |
- | |
1202 | dd -6330,-6333,-6336,-6339,-6342,-6345,-6348,-6350,-6353,-6356 |
- | |
1203 | dd -6359,-6362,-6364,-6367,-6370,-6372,-6375,-6378,-6380,-6383 |
- | |
1204 | dd -6386,-6388,-6391,-6393,-6396,-6398,-6401,-6403,-6405,-6408 |
- | |
1205 | dd -6410,-6413,-6415,-6417,-6420,-6422,-6424,-6426,-6429,-6431 |
- | |
1206 | dd -6433,-6435,-6437,-6440,-6442,-6444,-6446,-6448,-6450,-6452 |
- | |
1207 | dd -6454,-6456,-6458,-6460,-6462,-6464,-6466,-6467,-6469,-6471 |
- | |
1208 | dd -6473,-6475,-6476,-6478,-6480,-6482,-6483,-6485,-6486,-6488 |
- | |
1209 | dd -6490,-6491,-6493,-6494,-6496,-6497,-6499,-6500,-6502,-6503 |
- | |
1210 | dd -6505,-6506,-6507,-6509,-6510,-6511,-6513,-6514,-6515,-6516 |
- | |
1211 | dd -6518,-6519,-6520,-6521,-6522,-6523,-6524,-6525,-6527,-6528 |
- | |
1212 | dd -6529,-6530,-6531,-6531,-6532,-6533,-6534,-6535,-6536,-6537 |
- | |
1213 | dd -6538,-6538,-6539,-6540,-6541,-6541,-6542,-6543,-6543,-6544 |
- | |
1214 | dd -6545,-6545,-6546,-6546,-6547,-6547,-6548,-6548,-6549,-6549 |
- | |
1215 | dd -6550,-6550,-6550,-6551,-6551,-6551,-6552,-6552,-6552,-6552 |
- | |
1216 | dd -6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553 |
- | |
1217 | dd -6554,-6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553,-6553 |
- | |
1218 | dd -6553,-6552,-6552,-6552,-6552,-6551,-6551,-6551,-6550,-6550 |
- | |
1219 | dd -6550,-6549,-6549,-6548,-6548,-6547,-6547,-6546,-6546,-6545 |
- | |
1220 | dd -6545,-6544,-6543,-6543,-6542,-6541,-6541,-6540,-6539,-6538 |
- | |
1221 | dd -6538,-6537,-6536,-6535,-6534,-6533,-6532,-6531,-6531,-6530 |
- | |
1222 | dd -6529,-6528,-6527,-6525,-6524,-6523,-6522,-6521,-6520,-6519 |
- | |
1223 | dd -6518,-6516,-6515,-6514,-6513,-6511,-6510,-6509,-6507,-6506 |
- | |
1224 | dd -6505,-6503,-6502,-6500,-6499,-6497,-6496,-6494,-6493,-6491 |
- | |
1225 | dd -6490,-6488,-6486,-6485,-6483,-6482,-6480,-6478,-6476,-6475 |
- | |
1226 | dd -6473,-6471,-6469,-6467,-6466,-6464,-6462,-6460,-6458,-6456 |
- | |
1227 | dd -6454,-6452,-6450,-6448,-6446,-6444,-6442,-6440,-6437,-6435 |
- | |
1228 | dd -6433,-6431,-6429,-6426,-6424,-6422,-6420,-6417,-6415,-6413 |
- | |
1229 | dd -6410,-6408,-6405,-6403,-6401,-6398,-6396,-6393,-6391,-6388 |
- | |
1230 | dd -6386,-6383,-6380,-6378,-6375,-6372,-6370,-6367,-6364,-6362 |
- | |
1231 | dd -6359,-6356,-6353,-6350,-6348,-6345,-6342,-6339,-6336,-6333 |
- | |
1232 | dd -6330,-6327,-6324,-6321,-6318,-6315,-6312,-6309,-6306,-6303 |
- | |
1233 | dd -6300,-6296,-6293,-6290,-6287,-6284,-6280,-6277,-6274,-6270 |
- | |
1234 | dd -6267,-6264,-6260,-6257,-6254,-6250,-6247,-6243,-6240,-6236 |
- | |
1235 | dd -6233,-6229,-6226,-6222,-6218,-6215,-6211,-6208,-6204,-6200 |
- | |
1236 | dd -6196,-6193,-6189,-6185,-6181,-6178,-6174,-6170,-6166,-6162 |
- | |
1237 | dd -6158,-6154,-6150,-6146,-6142,-6138,-6134,-6130,-6126,-6122 |
- | |
1238 | dd -6118,-6114,-6110,-6106,-6102,-6097,-6093,-6089,-6085,-6081 |
- | |
1239 | dd -6076,-6072,-6068,-6063,-6059,-6055,-6050,-6046,-6041,-6037 |
- | |
1240 | dd -6033,-6028,-6024,-6019,-6015,-6010,-6005,-6001,-5996,-5992 |
- | |
1241 | dd -5987,-5982,-5978,-5973,-5968,-5963,-5959,-5954,-5949,-5944 |
- | |
1242 | dd -5939,-5935,-5930,-5925,-5920,-5915,-5910,-5905,-5900,-5895 |
- | |
1243 | dd -5890,-5885,-5880,-5875,-5870,-5865,-5860,-5855,-5850,-5844 |
- | |
1244 | dd -5839,-5834,-5829,-5824,-5818,-5813,-5808,-5802,-5797,-5792 |
- | |
1245 | dd -5786,-5781,-5776,-5770,-5765,-5759,-5754,-5748,-5743,-5737 |
- | |
1246 | dd -5732,-5726,-5721,-5715,-5709,-5704,-5698,-5693,-5687,-5681 |
- | |
1247 | dd -5675,-5670,-5664,-5658,-5652,-5647,-5641,-5635,-5629,-5623 |
- | |
1248 | dd -5617,-5612,-5606,-5600,-5594,-5588,-5582,-5576,-5570,-5564 |
- | |
1249 | dd -5558,-5552,-5546,-5539,-5533,-5527,-5521,-5515,-5509,-5502 |
- | |
1250 | dd -5496,-5490,-5484,-5477,-5471,-5465,-5459,-5452,-5446,-5439 |
- | |
1251 | dd -5433,-5427,-5420,-5414,-5407,-5401,-5394,-5388,-5381,-5375 |
- | |
1252 | dd -5368,-5362,-5355,-5349,-5342,-5335,-5329,-5322,-5315,-5309 |
- | |
1253 | dd -5302,-5295,-5288,-5282,-5275,-5268,-5261,-5254,-5248,-5241 |
- | |
1254 | dd -5234,-5227,-5220,-5213,-5206,-5199,-5192,-5185,-5178,-5171 |
- | |
1255 | dd -5164,-5157,-5150,-5143,-5136,-5129,-5122,-5115,-5107,-5100 |
- | |
1256 | dd -5093,-5086,-5079,-5071,-5064,-5057,-5050,-5042,-5035,-5028 |
- | |
1257 | dd -5020,-5013,-5006,-4998,-4991,-4983,-4976,-4968,-4961,-4953 |
- | |
1258 | dd -4946,-4938,-4931,-4923,-4916,-4908,-4901,-4893,-4885,-4878 |
- | |
1259 | dd -4870,-4863,-4855,-4847,-4839,-4832,-4824,-4816,-4808,-4801 |
- | |
1260 | dd -4793,-4785,-4777,-4769,-4762,-4754,-4746,-4738,-4730,-4722 |
- | |
1261 | dd -4714,-4706,-4698,-4690,-4682,-4674,-4666,-4658,-4650,-4642 |
- | |
1262 | dd -4634,-4626,-4618,-4610,-4602,-4593,-4585,-4577,-4569,-4561 |
- | |
1263 | dd -4552,-4544,-4536,-4528,-4519,-4511,-4503,-4495,-4486,-4478 |
- | |
1264 | dd -4469,-4461,-4453,-4444,-4436,-4427,-4419,-4411,-4402,-4394 |
- | |
1265 | dd -4385,-4377,-4368,-4360,-4351,-4342,-4334,-4325,-4317,-4308 |
- | |
1266 | dd -4299,-4291,-4282,-4274,-4265,-4256,-4247,-4239,-4230,-4221 |
- | |
1267 | dd -4213,-4204,-4195,-4186,-4177,-4169,-4160,-4151,-4142,-4133 |
- | |
1268 | dd -4124,-4115,-4106,-4098,-4089,-4080,-4071,-4062,-4053,-4044 |
- | |
1269 | dd -4035,-4026,-4017,-4008,-3999,-3990,-3980,-3971,-3962,-3953 |
- | |
1270 | dd -3944,-3935,-3926,-3917,-3907,-3898,-3889,-3880,-3871,-3861 |
- | |
1271 | dd -3852,-3843,-3834,-3824,-3815,-3806,-3796,-3787,-3778,-3768 |
- | |
1272 | dd -3759,-3750,-3740,-3731,-3721,-3712,-3703,-3693,-3684,-3674 |
- | |
1273 | dd -3665,-3655,-3646,-3636,-3627,-3617,-3608,-3598,-3588,-3579 |
- | |
1274 | dd -3569,-3560,-3550,-3540,-3531,-3521,-3512,-3502,-3492,-3483 |
- | |
1275 | dd -3473,-3463,-3453,-3444,-3434,-3424,-3414,-3405,-3395,-3385 |
- | |
1276 | dd -3375,-3365,-3356,-3346,-3336,-3326,-3316,-3306,-3297,-3287 |
- | |
1277 | dd -3277,-3267,-3257,-3247,-3237,-3227,-3217,-3207,-3197,-3187 |
- | |
1278 | dd -3177,-3167,-3157,-3147,-3137,-3127,-3117,-3107,-3097,-3087 |
- | |
1279 | dd -3077,-3067,-3056,-3046,-3036,-3026,-3016,-3006,-2996,-2985 |
- | |
1280 | dd -2975,-2965,-2955,-2945,-2934,-2924,-2914,-2904,-2893,-2883 |
- | |
1281 | dd -2873,-2863,-2852,-2842,-2832,-2821,-2811,-2801,-2790,-2780 |
- | |
1282 | dd -2770,-2759,-2749,-2738,-2728,-2718,-2707,-2697,-2686,-2676 |
- | |
1283 | dd -2666,-2655,-2645,-2634,-2624,-2613,-2603,-2592,-2582,-2571 |
- | |
1284 | dd -2561,-2550,-2540,-2529,-2518,-2508,-2497,-2487,-2476,-2466 |
- | |
1285 | dd -2455,-2444,-2434,-2423,-2413,-2402,-2391,-2381,-2370,-2359 |
- | |
1286 | dd -2349,-2338,-2327,-2316,-2306,-2295,-2284,-2274,-2263,-2252 |
- | |
1287 | dd -2241,-2231,-2220,-2209,-2198,-2188,-2177,-2166,-2155,-2144 |
- | |
1288 | dd -2134,-2123,-2112,-2101,-2090,-2079,-2069,-2058,-2047,-2036 |
- | |
1289 | dd -2025,-2014,-2003,-1992,-1982,-1971,-1960,-1949,-1938,-1927 |
- | |
1290 | dd -1916,-1905,-1894,-1883,-1872,-1861,-1850,-1839,-1828,-1817 |
- | |
1291 | dd -1806,-1795,-1784,-1773,-1762,-1751,-1740,-1729,-1718,-1707 |
- | |
1292 | dd -1696,-1685,-1674,-1663,-1652,-1641,-1630,-1619,-1608,-1597 |
- | |
1293 | dd -1585,-1574,-1563,-1552,-1541,-1530,-1519,-1508,-1496,-1485 |
- | |
1294 | dd -1474,-1463,-1452,-1441,-1430,-1418,-1407,-1396,-1385,-1374 |
- | |
1295 | dd -1363,-1351,-1340,-1329,-1318,-1307,-1295,-1284,-1273,-1262 |
- | |
1296 | dd -1250,-1239,-1228,-1217,-1206,-1194,-1183,-1172,-1161,-1149 |
- | |
1297 | dd -1138,-1127,-1115,-1104,-1093,-1082,-1070,-1059,-1048,-1036 |
- | |
1298 | dd -1025,-1014,-1003,-991,-980,-969,-957,-946,-935,-923 |
- | |
1299 | dd -912,-901,-889,-878,-867,-855,-844,-833,-821,-810 |
- | |
1300 | dd -799,-787,-776,-765,-753,-742,-731,-719,-708,-696 |
- | |
1301 | dd -685,-674,-662,-651,-640,-628,-617,-605,-594,-583 |
- | |
1302 | dd -571,-560,-548,-537,-526,-514,-503,-491,-480,-469 |
- | |
1303 | dd -457,-446,-434,-423,-411,-400,-389,-377,-366,-354 |
- | |
1304 | dd -343,-332,-320,-309,-297,-286,-274,-263,-252,-240 |
- | |
- | 982 | labelt: |
|
- | 983 | db 'FISHEYE RAYCASTING ENGINE ETC. FREE3D' |
|
- | 984 | ||
- | 985 | labellen: |
|
1305 | dd -229,-217,-206,-194,-183,-172,-160,-149,-137,-126 |
986 | sindegree dd 0.0 |
- | 987 | sininc dd 0.0017453292519943295769236907684886 |
|
- | 988 | sindiv dd 6553.5 |
|
1306 | dd -114,-103,-92,-80,-69,-57,-46,-34,-23,-11 |
989 | textures: |
1307 | 990 | file 'texture.gif' |
|
1308 | eosinus: |
991 | I_END: |
1309 | 992 | ||
1310 | col1: |
993 | col1: |
1311 | dd 0 |
994 | dd ?;- |
1312 | ; misc raycaster vars: |
995 | ; misc raycaster vars: |
1313 | vxx: |
996 | vxx: |
1314 | dd 0 |
997 | dd ?;- |
1315 | vyy: |
- | |
1316 | dd 0 |
- | |
1317 | vl: |
- | |
1318 | dd 0 |
- | |
1319 | vpx: |
998 | vyy: |
1320 | dd 0x0001FFFF ; initial player position * 0xFFFF |
999 | dd ?;- |
1321 | vpy: |
1000 | vl: |
1322 | dd 0x0001FFFF |
1001 | dd ?;- |
1323 | vstepx: |
1002 | vstepx: |
1324 | dd 0 |
1003 | dd ?;- |
1325 | vstepy: |
1004 | vstepy: |
1326 | dd 0 |
1005 | dd ?;- |
1327 | vxxint: |
1006 | vxxint: |
1328 | dd 0 |
1007 | dd ?;- |
1329 | vyyint: |
1008 | vyyint: |
1330 | dd 0 |
1009 | dd ?;- |
1331 | vk: |
1010 | vk: |
1332 | dd 0 |
1011 | dd ?;- |
1333 | va: |
1012 | va: |
1334 | dd 0 |
1013 | dd ?;- |
1335 | va2: |
1014 | va2: |
1336 | dd 0 |
1015 | dd ?;- |
1337 | vdd: |
1016 | vdd: |
1338 | dd 0 |
1017 | dd ?;- |
1339 | vx1: |
1018 | vx1: |
1340 | dd 0 |
1019 | dd ?;- |
1341 | vx1b: |
1020 | vx1b: |
1342 | dd 0 |
1021 | dd ?;- |
1343 | vh: |
1022 | vh: |
1344 | dd 0 |
1023 | dd ?;- |
1345 | vdt: |
1024 | vdt: |
1346 | dd 0 |
1025 | dd ?;- |
1347 | vheading: ; initial heading: 0 to 3599 |
1026 | vheading: ; initial heading: 0 to 3599 |
1348 | dd 0 |
1027 | dd ?;- |
1349 | vacompare: |
1028 | vacompare: |
1350 | dd 0 |
1029 | dd ?;- |
1351 | vpxi: |
1030 | vpxi: |
1352 | dd 0 |
1031 | dd ?;- |
1353 | vpyi: |
1032 | vpyi: |
1354 | dd 0 |
1033 | dd ?;- |
1355 | wtolong: |
1034 | wtolong: |
1356 | dw 0,0 |
1035 | dw ?,?;-,?;- |
1357 | 1036 | ||
1358 | xtemp: |
1037 | xtemp: |
1359 | dd 0 |
1038 | dd ?;- |
1360 | ytemp: |
1039 | ytemp: |
1361 | dd 0 |
1040 | dd ?;- |
1362 | xfrac: |
1041 | xfrac: |
1363 | dd 0 |
1042 | dd ?;- |
1364 | yfrac: |
1043 | yfrac: |
1365 | dd 0 |
1044 | dd ?;- |
1366 | h_old: |
1045 | h_old: |
1367 | dd 0 |
1046 | dd ?;- |
1368 | vbottom: |
1047 | vbottom: |
1369 | dd 0 |
1048 | dd ?;- |
1370 | mouseya: |
1049 | mouseya: |
1371 | dd 0 |
1050 | dd ?;- |
1372 | remeax: |
1051 | remeax: |
1373 | dd 0 |
1052 | dd ?;- |
1374 | remebx: |
1053 | remebx: |
1375 | dd 0 |
1054 | dd ?;- |
1376 | remecx: |
1055 | remecx: |
1377 | dd 0 |
1056 | dd ?;- |
1378 | remedx: |
1057 | remedx: |
1379 | dd 0 |
1058 | dd ?;- |
1380 | remedi: |
1059 | remedi: |
1381 | dd 0 |
1060 | dd ?;- |
1382 | remesi: |
1061 | remesi: |
1383 | dd 0 |
1062 | dd ?;- |
1384 | red: |
1063 | red: |
1385 | dd 0 |
1064 | dd ?;- |
1386 | green: |
1065 | green: |
1387 | dd 0 |
1066 | dd ?;- |
1388 | blue: |
1067 | blue: |
1389 | dd 0 |
1068 | dd ?;- |
1390 | pseudo: |
1069 | pseudo: |
1391 | dd 0 |
1070 | dd ?;- |
1392 | step1: |
1071 | step1: |
1393 | dd 0 |
- | |
1394 | step64: |
- | |
1395 | dd 0 |
- | |
1396 | lasty: |
- | |
1397 | dd 0 |
- | |
1398 | ceil: |
- | |
1399 | include "ceil.inc" |
- | |
1400 | wall: |
- | |
1401 | include "wall.inc" |
- | |
1402 | wall2: |
- | |
1403 | include "wall2.inc" |
- | |
1404 | wall3: |
- | |
1405 | include "wall3.inc" |
- | |
1406 | wall4: |
- | |
1407 | include "wall4.inc" |
- | |
1408 | wall5: |
- | |
1409 | include "wall5.inc" |
- | |
1410 | wall6: |
- | |
1411 | include "wall6.inc" |
- | |
1412 | wall7: |
- | |
1413 | include "wall7.inc" |
- | |
1414 | - | ||
1415 | - | ||
1416 | - | ||
1417 | labelt: |
- | |
1418 | db 'FISHEYE RAYCASTING ENGINE ETC. FREE3D' |
- | |
1419 | - | ||
1420 | labellen: |
- | |
1421 | - | ||
1422 | I_END: |
1072 | dd ?;- |
- | 1073 | step64: |
|
- | 1074 | dd ?;- |
|
- | 1075 | lasty: |
|
- | 1076 | dd ?;- |
|
- | 1077 | ||
- | 1078 | sinus rd 360*10 |
|
- | 1079 | eosinus: |