Rev 7350 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7350 | leency | 1 | ;MOS3DE V 0.1 - MENUETOS 3D Engine V 0.1 |
2 | |||
3 | ; Compile with FASM for MENUET |
||
4 | |||
5 | ; this is a very early Version: I'm so happy that it runs at all. |
||
6 | ; Of course it's a bad ASM style and it can be optimized a lot. |
||
7 | |||
8 | ; anyway - I have thought I uploap this so other PPL might optimize it |
||
9 | ; as well or transform it to something completely diffrent. |
||
10 | |||
11 | ; There are some Mouse- and Keyboardhandling Subs and Constructs. They are here |
||
12 | ; because I will probably use them for the Navigation in a First Person |
||
13 | ; Perspective Game - which is the goal of this project. |
||
14 | ; http://www.melog.ch/mos_pub/ dietermarfurt@angelfire.com |
||
15 | |||
16 | ; of course you can remove or replace them. It has only linear Texturemapping. |
||
17 | ; Perspective Correction is a future option. |
||
18 | ; a flag for multiple Textures selection should be implemented in the |
||
19 | ; Meshfile Format. As I said - it's a very erarly version. |
||
20 | |||
21 | use32 |
||
22 | |||
23 | org 0x0 |
||
24 | |||
25 | db 'MENUET01' ; 8 byte id |
||
26 | dd 0x01 ; header version |
||
27 | dd START ; start of code |
||
28 | dd I_END ; size of image |
||
29 | dd 0x200000 ; memory for app |
||
30 | dd 0x7fff0 ; esp |
||
31 | dd 0x0 , 0x0 ; I_Param , I_Icon |
||
32 | |||
33 | IMAGE_W = 320 |
||
34 | IMAGE_H = 240 |
||
35 | |||
36 | START: ; start of execution |
||
37 | |||
38 | call init_gfx |
||
39 | call draw_window ; at first, draw the window |
||
40 | |||
41 | gamestart: |
||
42 | ; ******* MOUSE CHECK ******* |
||
43 | mov eax,37 |
||
44 | mov ebx,1 ; check mouseposition |
||
45 | int 0x40 |
||
46 | |||
47 | mov ebx,eax |
||
48 | shr eax,16 |
||
49 | and eax,0x0000FFFF ; mousex |
||
50 | and ebx,0x0000FFFF ; mousey |
||
51 | mov [mousex],eax |
||
52 | mov [mousey],ebx |
||
53 | cmp eax,5 ; mouse out of window ? |
||
54 | jb check_refresh ; it will prevent an app-crash |
||
55 | cmp ebx,22 |
||
56 | jb check_refresh |
||
57 | cmp eax, IMAGE_W |
||
58 | jg check_refresh |
||
59 | cmp ebx,221 |
||
60 | jg check_refresh |
||
61 | |||
62 | cmp eax,160 ; navigating? |
||
63 | jb m_left |
||
64 | cmp eax,170 ; |
||
65 | jg m_right |
||
66 | continue: |
||
67 | cmp ebx,100 ; |
||
68 | jb s_up |
||
69 | cmp ebx,144 ; |
||
70 | jg s_down |
||
71 | ; ******* END OF MOUSE CHECK ******* |
||
72 | check_refresh: |
||
73 | |||
74 | mov eax,23 ; wait for system event with 10 ms timeout |
||
75 | mov ebx,1 ; wait 10 ms, then continue |
||
76 | int 0x40 |
||
77 | ; mov eax,11 ; or use this for full speed instead |
||
78 | ; int 0x40 |
||
79 | |||
80 | cmp eax,1 ; window redraw request ? |
||
81 | je red2 |
||
82 | cmp eax,2 ; key in buffer ? |
||
83 | je key2 |
||
84 | cmp eax,3 ; button in buffer ? |
||
85 | je button2 |
||
86 | |||
87 | call clear_screen |
||
88 | call updateworld |
||
89 | call put_screen |
||
90 | ;call log ; used for debugging |
||
91 | |||
92 | mov edi,[mouseya] ; check flag if a refresh has to be done |
||
93 | cmp edi,1 |
||
94 | jne gamestart |
||
95 | mov [mouseya],dword 0 |
||
96 | |||
97 | jmp gamestart |
||
98 | |||
99 | ; END OF MAINLOOP |
||
100 | |||
101 | red2: ; redraw |
||
102 | call draw_window |
||
103 | ; call draw_stuff |
||
104 | jmp gamestart |
||
105 | |||
106 | key2: ; key |
||
107 | mov eax,2 |
||
108 | int 0x40 |
||
109 | cmp al,1 |
||
110 | je gamestart ; keybuffer empty |
||
111 | |||
112 | cmp ah,27 ; esc=End App |
||
113 | je finish |
||
114 | |||
115 | cmp ah,178 ; up |
||
116 | je s_up |
||
117 | cmp ah,177 ; down |
||
118 | je s_down |
||
119 | cmp ah,176 ; left |
||
120 | je s_left |
||
121 | cmp ah,179 ; right |
||
122 | je s_right |
||
123 | |||
124 | jmp gamestart ; was any other key |
||
125 | |||
126 | |||
127 | s_up: ; walk forward (key or mouse) |
||
128 | mov eax,[vpx] |
||
129 | mov ebx,[vpy] |
||
130 | |||
131 | |||
132 | mov ecx,[vheading] |
||
133 | imul ecx,4 |
||
134 | add ecx,sinus |
||
135 | mov edi,[ecx] |
||
136 | |||
137 | mov edx,[vheading] |
||
138 | imul edx,4 |
||
139 | add edx,sinus |
||
140 | add edx,3600 |
||
141 | cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600 |
||
142 | jb ok200 |
||
143 | sub edx,14400 |
||
144 | ok200: |
||
145 | mov esi,[edx] |
||
146 | ; sal esi,1 ; edit walking speed here |
||
147 | ; sal edi,1 |
||
148 | |||
149 | add eax,edi ; newPx |
||
150 | add ebx,esi ; newPy |
||
151 | mov edi,eax ; newPx / ffff |
||
152 | mov esi,ebx ; newPy / ffff |
||
153 | sar edi,16 |
||
154 | sar esi,16 |
||
155 | mov ecx,esi |
||
156 | sal ecx,5 ; equal *32 |
||
157 | add ecx,edi |
||
158 | add ecx,grid |
||
159 | cmp [ecx],byte 0 ; collision check |
||
160 | jne cannotwalk0 |
||
161 | mov [vpx],eax |
||
162 | mov [vpy],ebx |
||
163 | mov [mouseya],dword 1 ; set refresh flag |
||
164 | cannotwalk0: |
||
165 | jmp check_refresh |
||
166 | |||
167 | s_down: ; walk backward |
||
168 | mov eax,[vpx] |
||
169 | mov ebx,[vpy] |
||
170 | |||
171 | mov ecx,[vheading] |
||
172 | imul ecx,4 |
||
173 | add ecx,sinus |
||
174 | mov edi,[ecx] |
||
175 | |||
176 | mov edx,[vheading] |
||
177 | imul edx,4 |
||
178 | add edx,sinus |
||
179 | add edx,3600 |
||
180 | cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600 |
||
181 | jb ok201 |
||
182 | sub edx,14400 |
||
183 | ok201: |
||
184 | |||
185 | mov esi,[edx] |
||
186 | ; sal esi,1 ; edit walking speed here |
||
187 | ; sal edi,1 |
||
188 | |||
189 | sub eax,edi ; newPx |
||
190 | sub ebx,esi ; newPy |
||
191 | mov edi,eax ; newPx / ffff |
||
192 | mov esi,ebx ; newPy / ffff |
||
193 | sar edi,16 |
||
194 | sar esi,16 |
||
195 | mov ecx,esi |
||
196 | sal ecx,5 |
||
197 | add ecx,edi |
||
198 | add ecx,grid |
||
199 | cmp [ecx],byte 0 |
||
200 | jne cannotwalk1 |
||
201 | mov [vpx],eax |
||
202 | mov [vpy],ebx |
||
203 | mov [mouseya],dword 1 |
||
204 | cannotwalk1: |
||
205 | jmp check_refresh |
||
206 | |||
207 | s_left: ; turn left (key) |
||
208 | mov edi,[vheading] ; heading |
||
209 | add edi,50 |
||
210 | cmp edi,1800 |
||
211 | jb ok_heading0 |
||
212 | sub edi,1800 |
||
213 | ok_heading0: |
||
214 | mov [vheading],edi |
||
215 | mov [mouseya],dword 1 |
||
216 | jmp check_refresh |
||
217 | |||
218 | s_right: ; turn right |
||
219 | mov edi,[vheading] |
||
220 | sub edi,50 |
||
221 | cmp edi,-1 |
||
222 | jg ok_heading1 |
||
223 | add edi,1800 |
||
224 | ok_heading1: |
||
225 | mov [vheading],edi |
||
226 | mov [mouseya],dword 1 |
||
227 | jmp check_refresh |
||
228 | |||
229 | m_left: ; turn left (mouse) |
||
230 | mov edi,[vheading] ; heading |
||
231 | mov ecx,160 |
||
232 | sub ecx,eax |
||
233 | sar ecx,2 |
||
234 | add edi,ecx |
||
235 | cmp edi,1800 |
||
236 | jb ok_heading2 |
||
237 | sub edi,1800 |
||
238 | ok_heading2: |
||
239 | mov [vheading],edi |
||
240 | mov [mouseya],dword 1 |
||
241 | jmp continue ; allow both: walk and rotate |
||
242 | |||
243 | m_right: ; turn right |
||
244 | mov edi,[vheading] |
||
245 | sub eax,170 |
||
246 | sar eax,2 |
||
247 | sub edi,eax |
||
248 | cmp edi,-1 |
||
249 | jg ok_heading3 |
||
250 | add edi,1800 |
||
251 | ok_heading3: |
||
252 | mov [vheading],edi |
||
253 | mov [mouseya],dword 1 |
||
254 | jmp continue |
||
255 | |||
256 | |||
257 | |||
258 | button2: ; button |
||
259 | mov eax,17 ; get id |
||
260 | int 0x40 |
||
261 | cmp ah,1 ; button id=1 ? |
||
262 | jne gamestart |
||
263 | |||
264 | ; eo GAME mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm |
||
265 | finish: |
||
266 | mov eax,-1 ; close this program |
||
267 | int 0x40 |
||
268 | |||
269 | |||
270 | ; ********************************************* |
||
271 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
||
272 | ; ********************************************* |
||
273 | |||
274 | |||
275 | draw_window: |
||
276 | |||
277 | mov eax,12 ; function 12:tell os about windowdraw |
||
278 | mov ebx,1 ; 1, start of draw; 2 - end |
||
279 | int 0x40 |
||
280 | |||
281 | mov eax, 48 ; get skin height |
||
282 | mov ebx, 4 |
||
283 | int 0x40 |
||
284 | |||
285 | lea ecx,[eax + (119 shl 16) + IMAGE_H + 4] |
||
286 | mov ebx,192*65536+IMAGE_W+9 ; [x start] *65536 + [x size] |
||
287 | mov edx,0x74000000 ; skinned window, not resizable |
||
288 | mov edi,labelt ; window title |
||
289 | mov eax,0 ; function 0 : define and draw window |
||
290 | int 0x40 |
||
291 | |||
292 | mov eax,12 |
||
293 | mov ebx,2 |
||
294 | int 0x40 |
||
295 | |||
296 | ret |
||
297 | |||
298 | |||
299 | ; --------------------------------------------------------------------- |
||
300 | init_gfx: |
||
301 | |||
302 | ; Pwidth = 63 Shl 16 ;original texture width in pixels -1 shl 16 |
||
303 | ; Pheight = 63 Shl 16 ;original texture height in pixels -1 shl 16 |
||
304 | |||
305 | mov [pwidth],dword 63 |
||
306 | shl dword[pwidth],16 |
||
307 | mov [pheight],dword 63 |
||
308 | shl dword[pheight],16 |
||
309 | |||
310 | ;; Read in a mesh |
||
311 | mov eax,0 ; tex1+4 |
||
312 | mov edi,anz |
||
313 | add edi,4 ; beginning of mesh data |
||
314 | |||
315 | ;using a copy will allow inverse kinematic transformations (future option) |
||
316 | |||
317 | readmesh: |
||
318 | mov edx,eax |
||
319 | add edx,a_xwww ; desti |
||
320 | mov ecx,[edi] ; value in ecx |
||
321 | mov [edx],ecx |
||
322 | add edi,4 |
||
323 | ;--- |
||
324 | mov edx,eax |
||
325 | add edx,a_ywww ; desti |
||
326 | mov ecx,[edi] ; value in ecx |
||
327 | mov [edx],ecx |
||
328 | add edi,4 |
||
329 | ;--- |
||
330 | mov edx,eax |
||
331 | add edx,a_zwww ; desti |
||
332 | mov ecx,[edi] ; value in ecx |
||
333 | mov [edx],ecx |
||
334 | add edi,4 |
||
335 | ;--- |
||
336 | |||
337 | add eax,4 |
||
338 | cmp edi,eo_mesh |
||
339 | jl readmesh |
||
340 | |||
341 | ; zoom=-500 |
||
342 | mov [zoom],dword -500 |
||
343 | |||
344 | ret |
||
345 | ;------------------------------------------------------------------ |
||
346 | |||
347 | |||
348 | |||
349 | log: |
||
350 | ;write some Variable info to screen (used for debugging) |
||
351 | pusha |
||
352 | mov edi,wonder ;a_xwww |
||
353 | ;add edi,200 |
||
354 | mov [remecx], dword 24 |
||
355 | print: |
||
356 | mov eax,47 |
||
357 | mov ebx,0x000f0000 |
||
358 | ;mov ebx,0x000f0100 ; hex |
||
359 | mov ecx,[edi] |
||
360 | mov edx,[remecx] |
||
361 | or edx,0x000C0000 |
||
362 | mov esi,0x00ff0000 |
||
363 | int 0x40 |
||
364 | add [remecx],dword 8 |
||
365 | add edi,dword 4 |
||
366 | cmp [remecx], dword 250 |
||
367 | jl print |
||
368 | popa |
||
369 | ret |
||
370 | |||
371 | |||
372 | ; --------------------------------------------------------------------- |
||
373 | ; UPDATE WORLD |
||
374 | ; --------------------------------------------------------------------- |
||
375 | |||
376 | updateworld: |
||
377 | |||
378 | mov edx,[a_xw] |
||
379 | |||
380 | ; Miny% = 32767 |
||
381 | ; Maxy% = 0 |
||
382 | mov [miny],dword 32737 |
||
383 | mov [maxy],dword 0 |
||
384 | |||
385 | ; Color 0,0,0 ; clear screen - l8er |
||
386 | ; Rect 0,0,320,240,1 |
||
387 | |||
388 | ; a=a+1.0 ; automatic rotation... |
||
389 | add [a],dword 10 |
||
390 | cmp [a],dword 3598 |
||
391 | jl ok360 |
||
392 | mov [a],dword 0 |
||
393 | ok360: |
||
394 | |||
395 | ; If a>359.9 Then a=0 |
||
396 | ; alpha=a |
||
397 | ; beta=a |
||
398 | ; gamma=a+a Mod 360 |
||
399 | |||
400 | mov eax,[a] |
||
401 | mov [alpha],eax |
||
402 | mov [beta], eax |
||
403 | mov [gamma],eax |
||
404 | add [gamma],eax |
||
405 | cmp [gamma],dword 3599 |
||
406 | jl ok360_2 |
||
407 | sub [gamma],dword 3600 |
||
408 | ok360_2: |
||
409 | |||
410 | ; mausy#=0.1+(MouseY()/50.0) ; >>>>>>l8er |
||
411 | |||
412 | mov eax,[alpha] |
||
413 | mov [alphacopy],eax |
||
414 | mov eax,[beta] |
||
415 | mov [betacopy],eax |
||
416 | mov eax,[gamma] |
||
417 | mov [gammacopy],eax |
||
418 | |||
419 | ; For i=0 To anz ; do rotation and projection etc |
||
420 | mov esi,0 |
||
421 | for_i: |
||
422 | |||
423 | ; ***************************** |
||
424 | ; ROTATE pitch jaw roll... |
||
425 | ; ***************************** |
||
426 | |||
427 | ;; xl1#=zwww(i)*Sin(gamma)+xwww(i)*Cos(gamma) |
||
428 | mov eax,esi |
||
429 | imul eax,4 |
||
430 | add eax,a_zwww |
||
431 | mov ebx,[eax] |
||
432 | mov eax,[gammacopy] |
||
433 | call get_sinus |
||
434 | imul ebx,[eax] |
||
435 | mov [tempdiv],ebx ; is zwww(i)*sin(gamma) |
||
436 | |||
437 | mov eax,esi |
||
438 | imul eax,4 |
||
439 | add eax,a_xwww |
||
440 | mov ebx,[eax] |
||
441 | |||
442 | mov eax,[gammacopy] |
||
443 | call get_cosinus |
||
444 | imul ebx,[eax] ; is xwww*cos(gamma |
||
445 | |||
446 | add ebx,[tempdiv] |
||
447 | mov eax,ebx |
||
448 | ;or eax,1 |
||
449 | cdq |
||
450 | mov ecx,6553 |
||
451 | idiv ecx |
||
452 | mov [xl1],eax |
||
453 | |||
454 | |||
455 | ;; yl1#=ywww(i) |
||
456 | mov eax,esi |
||
457 | imul eax,4 |
||
458 | add eax,a_ywww |
||
459 | mov ebx,[eax] |
||
460 | mov [yl1],ebx |
||
461 | |||
462 | |||
463 | ;; zl1#=zwww(i)*Cos(gamma)-xwww(i)*Sin(gamma) |
||
464 | mov eax,esi |
||
465 | imul eax,4 |
||
466 | add eax,a_zwww |
||
467 | mov ebx,[eax] |
||
468 | mov eax,[gammacopy] |
||
469 | call get_cosinus |
||
470 | imul ebx,[eax] |
||
471 | mov [tempdiv],ebx ; is zwww(i)*cos(gamma) |
||
472 | |||
473 | mov eax,esi |
||
474 | imul eax,4 |
||
475 | add eax,a_xwww |
||
476 | mov ebx,[eax] |
||
477 | |||
478 | mov eax,[gammacopy] |
||
479 | call get_sinus |
||
480 | imul ebx,[eax] ; is xwww*sin(gamma |
||
481 | |||
482 | sub [tempdiv],ebx |
||
483 | mov eax,[tempdiv] |
||
484 | ;or eax,1 |
||
485 | cdq |
||
486 | mov ecx,6553 ; once 6500 |
||
487 | idiv ecx |
||
488 | mov [zl1],eax |
||
489 | |||
490 | |||
491 | |||
492 | ; |
||
493 | ;----------------------------------------------------------------------- |
||
494 | ;; xl2#=xl1 |
||
495 | mov eax,[xl1] |
||
496 | mov [xl2],eax |
||
497 | |||
498 | ;; yl2#=yl1*Cos(beta)-zl1*Sin(beta) |
||
499 | mov ebx,[yl1] |
||
500 | mov eax,[betacopy] |
||
501 | call get_cosinus |
||
502 | imul ebx,[eax] |
||
503 | mov [tempdiv],ebx ; is yl1*cos(beta) |
||
504 | |||
505 | mov ebx,[zl1] ; zl1 |
||
506 | |||
507 | mov eax,[betacopy] |
||
508 | call get_sinus |
||
509 | imul ebx,[eax] ; is zl1*sin(beta |
||
510 | |||
511 | sub [tempdiv],ebx |
||
512 | mov eax,[tempdiv] |
||
513 | ;or eax,1 |
||
514 | cdq |
||
515 | mov ecx,6553 |
||
516 | idiv ecx |
||
517 | mov [yl2],eax |
||
518 | |||
519 | |||
520 | |||
521 | ;; zl2#=yl1*Sin(beta)+zl1*Cos(beta) |
||
522 | mov ebx,[yl1] |
||
523 | mov eax,[betacopy] |
||
524 | call get_sinus |
||
525 | imul ebx,[eax] |
||
526 | mov [tempdiv],ebx ; is yl1*sin(beta) |
||
527 | |||
528 | mov ebx,[zl1] ; zl1 |
||
529 | |||
530 | mov eax,[betacopy] |
||
531 | call get_cosinus |
||
532 | imul ebx,[eax] ; is zl1*cos(beta |
||
533 | |||
534 | add ebx,[tempdiv] |
||
535 | mov eax,ebx |
||
536 | ;or eax,1 |
||
537 | cdq |
||
538 | mov ecx,6553 |
||
539 | idiv ecx |
||
540 | mov [zl2],eax |
||
541 | |||
542 | |||
543 | ;----------------------------------------------------------------------- |
||
544 | ;; xl3#=(yl2*Sin(alpha)+xl2*Cos(alpha)) |
||
545 | mov ebx,[yl2] |
||
546 | mov eax,[alphacopy] |
||
547 | call get_sinus |
||
548 | imul ebx,[eax] |
||
549 | mov [tempdiv],ebx ; is yl2*sin(alpha) |
||
550 | |||
551 | mov ebx,[xl2] ; xl2 |
||
552 | mov eax,[alphacopy] |
||
553 | call get_cosinus |
||
554 | imul ebx,[eax] ; is xl2*cos(alpha |
||
555 | |||
556 | add ebx,[tempdiv] |
||
557 | mov eax,ebx |
||
558 | ;or eax,1 |
||
559 | cdq |
||
560 | mov ecx,6553 |
||
561 | idiv ecx |
||
562 | mov [xl3],eax |
||
563 | |||
564 | |||
565 | ;; yl3#=(yl2*Cos(alpha)-xl2*Sin(alpha)) |
||
566 | mov ebx,[yl2] |
||
567 | mov eax,[alphacopy] |
||
568 | call get_cosinus |
||
569 | imul ebx,[eax] |
||
570 | mov [tempdiv],ebx ; is yl2*cos(alpha) |
||
571 | |||
572 | mov ebx,[xl2] ; xl2 |
||
573 | mov eax,[alphacopy] |
||
574 | call get_sinus |
||
575 | imul ebx,[eax] ; is xl2*sin(alpha |
||
576 | |||
577 | sub [tempdiv],ebx |
||
578 | mov eax,[tempdiv] |
||
579 | ;or eax,1 |
||
580 | cdq |
||
581 | mov ecx,6553 |
||
582 | idiv ecx |
||
583 | mov [yl3],eax |
||
584 | |||
585 | |||
586 | ;; zl3#=(zl2) |
||
587 | mov eax,[zl2] |
||
588 | mov [zl3],eax |
||
589 | |||
590 | ;----------------------------------------------------------------------- |
||
591 | |||
592 | ; ********************* |
||
593 | ; PROJECTING 3D to 2D |
||
594 | |||
595 | ; If yloc# - Zoom <> 0 Then yloc = Int(yl3 ) * 200 / (zl3 - Zoom) |
||
596 | ;------- |
||
597 | mov ecx,[zl3] |
||
598 | sub ecx,[zoom] |
||
599 | mov eax,[yl3] |
||
600 | imul eax,200 |
||
601 | or eax,1 |
||
602 | cdq |
||
603 | idiv ecx |
||
604 | ;mov eax,[yl3] ; no perpective |
||
605 | mov [yloc],eax |
||
606 | ;------ |
||
607 | |||
608 | ; If xloc# - Zoom <> 0 Then xloc = Int(xl3 ) * 200 / (zl3 - Zoom) |
||
609 | |||
610 | ;------ |
||
611 | mov ecx,[zl3] |
||
612 | sub ecx,[zoom] |
||
613 | mov eax,[xl3] |
||
614 | imul eax,200 |
||
615 | or eax,1 |
||
616 | cdq |
||
617 | idiv ecx |
||
618 | ;mov eax,[xl3] ; no perspective |
||
619 | mov [xloc],eax |
||
620 | ;------ |
||
621 | |||
622 | ; xw(i)=((mausy#)*xloc) +160 |
||
623 | ; yw(i)=((mausy#)*yloc) +120 |
||
624 | ; zw(i)=(zl3+256) |
||
625 | |||
626 | mov eax,[mousey] ; define scaling |
||
627 | mov [factor],eax |
||
628 | cmp eax,32000 |
||
629 | jl positivemousey |
||
630 | mov [factor],dword 10 |
||
631 | jmp less220 |
||
632 | positivemousey: |
||
633 | cmp eax,10 |
||
634 | jg more20 |
||
635 | mov [factor],dword 10 |
||
636 | jmp less220 |
||
637 | more20: |
||
638 | cmp eax,220 |
||
639 | jl less220 |
||
640 | mov [factor],dword 220 |
||
641 | less220: |
||
642 | |||
643 | mov eax,esi ; i... |
||
644 | imul eax,4 |
||
645 | |||
646 | mov ecx,[xloc] |
||
647 | mov eax,esi |
||
648 | imul eax,4 |
||
649 | mov ebx,a_xw |
||
650 | add ebx,eax |
||
651 | imul ecx,[factor] |
||
652 | sar ecx,5 |
||
653 | mov [ebx],ecx |
||
654 | add [ebx],dword 160 |
||
655 | |||
656 | mov ecx,[yloc] |
||
657 | ; mov eax,esi |
||
658 | ; imul eax,4 |
||
659 | mov ebx,a_yw |
||
660 | add ebx,eax |
||
661 | imul ecx,[factor] |
||
662 | sar ecx,5 |
||
663 | mov [ebx],ecx |
||
664 | add [ebx],dword 120 |
||
665 | |||
666 | mov ecx,[zl3] ; used for z sorting |
||
667 | mov ebx,a_zw |
||
668 | add ebx,eax |
||
669 | mov [ebx],ecx |
||
670 | add [ebx],dword 256 |
||
671 | |||
672 | ; Next |
||
673 | inc esi |
||
674 | cmp esi,[anz] |
||
675 | jle for_i |
||
676 | ;--------------- |
||
677 | |||
678 | |||
679 | mov [sorted_quads],dword 0 |
||
680 | |||
681 | |||
682 | ; ; z-sorting... |
||
683 | ; For i=0 To 10000 ; clear old info |
||
684 | ; zbuffer(i)=-1 |
||
685 | ; Next |
||
686 | mov eax,zbuffer |
||
687 | mov ebx,eax |
||
688 | add ebx,40000 |
||
689 | clear_zbuffer: |
||
690 | mov [eax],dword 1000000 |
||
691 | add eax,4 |
||
692 | cmp eax,ebx |
||
693 | jle clear_zbuffer |
||
694 | |||
695 | |||
696 | |||
697 | ; For i=0 To anz-3 Step 4 |
||
698 | mov eax,0 |
||
699 | mov ebx,[anz] |
||
700 | for_i_0_to_anz: |
||
701 | |||
702 | ; If zw(i)>=0 ; clip Quads behind Camera |
||
703 | mov ecx,eax |
||
704 | imul ecx,4 |
||
705 | add ecx,a_zw |
||
706 | mov edx,[ecx] |
||
707 | cmp edx,0 |
||
708 | jle behindcamera |
||
709 | |||
710 | ; zwmax=zw(i) |
||
711 | mov esi,edx |
||
712 | |||
713 | ; ;find quads internal most far point |
||
714 | ; If zwmax |
||
715 | ; If zwmax |
||
716 | ; If zwmax |
||
717 | ; skip this for debugging |
||
718 | ; jmp no_internal_sorting |
||
719 | cmp esi,[ecx+4] |
||
720 | jge checkmore1 |
||
721 | mov esi,[ecx+4] |
||
722 | checkmore1: |
||
723 | |||
724 | cmp esi,[ecx+8] |
||
725 | jge checkmore2 |
||
726 | mov esi,[ecx+8] |
||
727 | checkmore2: |
||
728 | |||
729 | cmp esi,[ecx+12] |
||
730 | jge checkmore3 |
||
731 | mov esi,[ecx+12] |
||
732 | checkmore3: |
||
733 | |||
734 | no_internal_sorting: |
||
735 | |||
736 | mov [i],eax ; anz-ID in [i] (not times 4) |
||
737 | push eax |
||
738 | push ebx |
||
739 | |||
740 | ; While zbuffer(zwmax)<>-1 And zwmax<10000 |
||
741 | ; zwmax=zwmax+1 |
||
742 | ; Wend |
||
743 | mov eax,esi ; is actual z/poititon of point (used for z-order) |
||
744 | imul eax,4 |
||
745 | |||
746 | findslot: |
||
747 | mov ebx,eax |
||
748 | add ebx,zbuffer |
||
749 | cmp [ebx],dword 1000000 |
||
750 | je found_empty_slot |
||
751 | add eax,4 |
||
752 | cmp eax,40000 |
||
753 | jl findslot |
||
754 | found_empty_slot: |
||
755 | |||
756 | ; zbuffer(zwmax)=i |
||
757 | inc dword[sorted_quads] ; check slot writing |
||
758 | |||
759 | mov ecx,[i] |
||
760 | mov [ebx],ecx |
||
761 | |||
762 | pop ebx |
||
763 | pop eax |
||
764 | |||
765 | ; EndIf |
||
766 | behindcamera: |
||
767 | ; Next |
||
768 | add eax,4 |
||
769 | cmp eax,[anz] ;ebx |
||
770 | jl for_i_0_to_anz |
||
771 | ;---------------- |
||
772 | |||
773 | ;mov [rendered_quads],dword 0 ; debugging... |
||
774 | |||
775 | ; For i2=10000 To 0 Step -1 ; reading quads in z-order from far to near |
||
776 | mov eax,40000 |
||
777 | mov ebx,0 |
||
778 | for_i_0_to_10000: |
||
779 | |||
780 | |||
781 | ; i=zbuffer(i2) |
||
782 | mov edx,eax |
||
783 | add edx,zbuffer |
||
784 | mov ecx,[edx] ; i... |
||
785 | |||
786 | ; If i>-1 And i< anz-2 ; if it isn't -1 then it's a Quad Point 1 ID |
||
787 | cmp ecx,1000000 |
||
788 | je is_empty_slot |
||
789 | |||
790 | ;inc dword[rendered_quads] ; used for debugging |
||
791 | |||
792 | ; ;***Mapping*** |
||
793 | |||
794 | ; ;GetPolygonPoints(i) |
||
795 | ; ;FindSmallLargeY() |
||
796 | |||
797 | mov [ilocal],ecx |
||
798 | call get_polygon_points |
||
799 | call find_small_large_y |
||
800 | |||
801 | ; X1% = Polypoints%(0, 0) |
||
802 | mov edi,[polypoints] |
||
803 | mov [x1],edi |
||
804 | ; Y1% = Polypoints%(0, 1) |
||
805 | mov edi,[polypoints+4] |
||
806 | mov [y1],edi |
||
807 | ; X2% = Polypoints%(1, 0) |
||
808 | mov edi,[polypoints+8] |
||
809 | mov [x2],edi |
||
810 | ; Y2% = Polypoints%(1, 1) |
||
811 | mov edi,[polypoints+12] |
||
812 | mov [y2],edi |
||
813 | |||
814 | ; ScanConvert(X1%, Y1%, X2%, Y2%, 1) ;scan top of picture |
||
815 | mov [pside],dword 1 |
||
816 | call scan_convert |
||
817 | |||
818 | ; X1% = Polypoints%(1, 0) |
||
819 | mov edi,[polypoints+8] |
||
820 | mov [x1],edi |
||
821 | ; Y1% = Polypoints%(1, 1) |
||
822 | mov edi,[polypoints+12] |
||
823 | mov [y1],edi |
||
824 | ; X2% = Polypoints%(2, 0) |
||
825 | mov edi,[polypoints+16] |
||
826 | mov [x2],edi |
||
827 | ; Y2% = Polypoints%(2, 1) |
||
828 | mov edi,[polypoints+20] |
||
829 | mov [y2],edi |
||
830 | |||
831 | ; ScanConvert(X1%, Y1%, X2%, Y2%, 2) ;scan Right of picture |
||
832 | mov [pside],dword 2 |
||
833 | call scan_convert |
||
834 | |||
835 | ; X1% = Polypoints%(2, 0) |
||
836 | mov edi,[polypoints+16] |
||
837 | mov [x1],edi |
||
838 | ; Y1% = Polypoints%(2, 1) |
||
839 | mov edi,[polypoints+20] |
||
840 | mov [y1],edi |
||
841 | ; X2% = Polypoints%(3, 0) |
||
842 | mov edi,[polypoints+24] |
||
843 | mov [x2],edi |
||
844 | ; Y2% = Polypoints%(3, 1) |
||
845 | mov edi,[polypoints+28] |
||
846 | mov [y2],edi |
||
847 | |||
848 | ; ScanConvert(X1%, Y1%, X2%, Y2%, 3) ;scan bottom of picture |
||
849 | mov [pside],dword 3 |
||
850 | call scan_convert |
||
851 | |||
852 | ; X1% = Polypoints%(3, 0) |
||
853 | mov edi,[polypoints+24] |
||
854 | mov [x1],edi |
||
855 | ; Y1% = Polypoints%(3, 1) |
||
856 | mov edi,[polypoints+28] |
||
857 | mov [y1],edi |
||
858 | ; X2% = Polypoints%(0, 0) |
||
859 | mov edi,[polypoints] |
||
860 | mov [x2],edi |
||
861 | ; Y2% = Polypoints%(0, 1) |
||
862 | mov edi,[polypoints+4] |
||
863 | mov [y2],edi |
||
864 | |||
865 | ; ScanConvert(X1%, Y1%, X2%, Y2%, 4) ;scan Left of picture |
||
866 | mov [pside],dword 4 |
||
867 | call scan_convert |
||
868 | |||
869 | ; TextureMap() |
||
870 | call texture_map |
||
871 | |||
872 | ; EndIf |
||
873 | is_empty_slot: |
||
874 | |||
875 | ; Next |
||
876 | sub eax,4 |
||
877 | cmp eax,0 ;ebx |
||
878 | jge for_i_0_to_10000 |
||
879 | |||
880 | ;Wend |
||
881 | ret |
||
882 | |||
883 | ;End |
||
884 | |||
885 | |||
886 | |||
887 | |||
888 | ; --------------------------------------------------------------------- |
||
889 | |||
890 | get_sinus: |
||
891 | imul eax,4 ; expects degree*10 |
||
892 | add eax,sinus |
||
893 | ret |
||
894 | |||
895 | get_cosinus: |
||
896 | imul eax,4 ; expects degree*10 |
||
897 | add eax,sinus |
||
898 | add eax,10804 |
||
899 | cmp eax,eosinus |
||
900 | jl ok3600sub |
||
901 | sub eax,14400 |
||
902 | ok3600sub: |
||
903 | ret |
||
904 | |||
905 | |||
906 | |||
907 | |||
908 | |||
909 | |||
910 | ;; ------------------ texture mapping functions----------------------------- |
||
911 | |||
912 | ;Function GetPolygonPoints(ilocal%) ; initially read in a rectangle |
||
913 | get_polygon_points: |
||
914 | pusha |
||
915 | ; For Count% = 0 To 3 |
||
916 | ; Polypoints%(Count%, 0) = xw(ilocal%+Count%) |
||
917 | ; Polypoints%(Count%, 1) = yw(ilocal%+Count%) |
||
918 | ; Next |
||
919 | mov eax,0 |
||
920 | ; --- |
||
921 | count_0_3: |
||
922 | |||
923 | mov ebx,eax |
||
924 | imul ebx,8 ; count |
||
925 | add ebx,polypoints ; desti adr |
||
926 | mov ecx,eax |
||
927 | add ecx,[ilocal] |
||
928 | imul ecx,4 |
||
929 | add ecx,a_xw ; src adr |
||
930 | mov edx,[ecx] |
||
931 | mov [ebx],edx |
||
932 | ; ---- |
||
933 | add ebx,4 ; desti 2 |
||
934 | mov ecx,eax |
||
935 | add ecx,[ilocal] |
||
936 | imul ecx,4 |
||
937 | add ecx,a_yw ; src 2 |
||
938 | mov edx,[ecx] |
||
939 | mov [ebx],edx |
||
940 | ; ---- |
||
941 | inc eax |
||
942 | cmp eax,4 |
||
943 | jl count_0_3 |
||
944 | |||
945 | ;End Function |
||
946 | popa |
||
947 | ret |
||
948 | |||
949 | ; ------------------------------------------------------------------------- |
||
950 | |||
951 | ;Function FindSmallLargeY() |
||
952 | find_small_large_y: |
||
953 | pusha |
||
954 | ; For Count% = 0 To 3 |
||
955 | mov eax,0 |
||
956 | for03b: |
||
957 | |||
958 | ; Ycoord% = Polypoints%(Count%, 1) |
||
959 | mov ebx,eax |
||
960 | imul ebx,8 |
||
961 | add ebx,4 |
||
962 | add ebx,polypoints |
||
963 | mov ecx,[ebx] |
||
964 | |||
965 | ; If Ycoord% < Miny% Then ; is this the New lowest y co-ord? |
||
966 | ; Miny% = Ycoord% ; Yes... |
||
967 | ; End If |
||
968 | cmp ecx,[miny] |
||
969 | jge isge0 |
||
970 | mov [miny],ecx |
||
971 | isge0: |
||
972 | |||
973 | ; If Ycoord% > Maxy% Then ; is this the New highest y co-ord? |
||
974 | ; Maxy% = Ycoord% ; Yes... |
||
975 | ; End If |
||
976 | cmp ecx,[maxy] |
||
977 | jle isge1 |
||
978 | mov [maxy],ecx |
||
979 | isge1: |
||
980 | |||
981 | ; Next |
||
982 | inc eax |
||
983 | cmp eax,4 |
||
984 | jl for03b |
||
985 | |||
986 | ;End Function |
||
987 | popa |
||
988 | ret |
||
989 | |||
990 | ; ------------------------------------------------------------------------- |
||
991 | |||
992 | |||
993 | ;Function ScanConvert (X1%, Y1%, X2%, Y2%, Pside) |
||
994 | scan_convert: |
||
995 | pusha |
||
996 | ; If Y2% < Y1% Then |
||
997 | mov eax,[y1] |
||
998 | mov ebx,[y2] |
||
999 | cmp eax,ebx |
||
1000 | jl l_else0 |
||
1001 | |||
1002 | ; temp%=X1% : X1%=X2% : X2%=temp% |
||
1003 | ; temp%=Y1% : Y1%=Y2% : Y2%=temp% |
||
1004 | ; Lineheight% = (Y2% - Y1%) |
||
1005 | ; ScanLeftSide(X1%, X2%, Y1%, Lineheight%, Pside) |
||
1006 | mov [y1],ebx ; swap y,x |
||
1007 | mov [y2],eax |
||
1008 | mov eax,[x1] |
||
1009 | mov ebx,[x2] |
||
1010 | mov [x1],ebx |
||
1011 | mov [x2],eax |
||
1012 | mov eax,[y1] |
||
1013 | mov ebx,[y2] |
||
1014 | ; eo swap |
||
1015 | sub ebx,eax |
||
1016 | mov [lineheight],ebx |
||
1017 | call scan_left_side |
||
1018 | jmp l_endif0 |
||
1019 | |||
1020 | ; Else |
||
1021 | l_else0: |
||
1022 | |||
1023 | ; Lineheight% = (Y2% - Y1%) |
||
1024 | ; ScanRightSide(X1%, X2%, Y1%, Lineheight%, Pside) |
||
1025 | sub ebx,eax |
||
1026 | mov [lineheight],ebx |
||
1027 | call scan_right_side |
||
1028 | |||
1029 | ; End If |
||
1030 | l_endif0: |
||
1031 | ;End Function |
||
1032 | popa |
||
1033 | ret |
||
1034 | ; ------------------------------------------------------------------------- |
||
1035 | |||
1036 | |||
1037 | ;Function ScanLeftSide (X1%, X2%, Ytop%, Lineheight%, Pside) |
||
1038 | scan_left_side: |
||
1039 | pusha |
||
1040 | |||
1041 | mov eax,[y1] |
||
1042 | mov [ytop],eax |
||
1043 | |||
1044 | ; Lineheight% = Lineheight% + 1 ; prevent divide by zero |
||
1045 | inc dword[lineheight] |
||
1046 | ; Xadd = (X2% - X1%) Shl 16 |
||
1047 | mov edi,[x2] |
||
1048 | sub edi,[x1] |
||
1049 | sal edi,16 |
||
1050 | |||
1051 | ; Xadd = Xadd / Lineheight% |
||
1052 | mov eax,edi ; whole |
||
1053 | cdq |
||
1054 | mov ebx,[lineheight] ; divisor |
||
1055 | ; or ebx,1 |
||
1056 | idiv ebx ; result now in eax |
||
1057 | mov [v_xadd],eax |
||
1058 | |||
1059 | ; ------------ |
||
1060 | ; If Pside = 1 Then |
||
1061 | cmp [pside],dword 1 |
||
1062 | jne psidenot10 |
||
1063 | |||
1064 | ; Px = Pwidth% - 1 |
||
1065 | ; Py = 0 |
||
1066 | mov edi,[pwidth] |
||
1067 | mov esi,edi |
||
1068 | sub esi,1 |
||
1069 | mov [px],esi |
||
1070 | mov [py],dword 0 |
||
1071 | ; Pxadd = -Pwidth% / Lineheight% |
||
1072 | ; Pyadd = 0 |
||
1073 | mov eax,0 |
||
1074 | sub eax,[pwidth] |
||
1075 | cdq |
||
1076 | mov ebx,[lineheight] ; divisor |
||
1077 | ;or ebx,1 |
||
1078 | idiv ebx ; result now in eax |
||
1079 | mov [pxadd],eax |
||
1080 | mov [pyadd],dword 0 |
||
1081 | ; End If |
||
1082 | psidenot10: |
||
1083 | |||
1084 | ; ------------ |
||
1085 | ; If Pside = 2 Then |
||
1086 | cmp [pside],dword 2 |
||
1087 | jne psidenot20 |
||
1088 | |||
1089 | ; Px = Pwidth% |
||
1090 | ; Py = Pheight% |
||
1091 | mov edi,[pwidth] |
||
1092 | mov esi,[pheight] |
||
1093 | mov [px],edi |
||
1094 | mov [py],esi |
||
1095 | ; Pxadd = 0 |
||
1096 | ; Pyadd = -Pheight% / Lineheight% |
||
1097 | mov [pxadd],dword 0 |
||
1098 | mov eax,0 |
||
1099 | sub eax,[pheight] |
||
1100 | cdq |
||
1101 | mov ebx,[lineheight] ; divisor |
||
1102 | ;or ebx,1 |
||
1103 | idiv ebx ; result now in eax |
||
1104 | mov [pyadd],eax |
||
1105 | ; End If |
||
1106 | psidenot20: |
||
1107 | |||
1108 | ; ------------ |
||
1109 | ; If Pside = 3 Then |
||
1110 | cmp [pside],dword 3 |
||
1111 | jne psidenot30 |
||
1112 | ; Px = 0 |
||
1113 | ; Py = Pheight% |
||
1114 | mov [px],dword 0 |
||
1115 | mov edi,[pheight] |
||
1116 | mov [py],edi |
||
1117 | ; Pxadd = Pwidth% / Lineheight% |
||
1118 | ; Pyadd = 0 |
||
1119 | mov eax,[pwidth] |
||
1120 | cdq |
||
1121 | mov ebx,[lineheight] ; divisor |
||
1122 | ;or ebx,1 |
||
1123 | idiv ebx ; result now in eax |
||
1124 | mov [pxadd],eax |
||
1125 | mov [pyadd],dword 0 |
||
1126 | ; End If |
||
1127 | psidenot30: |
||
1128 | |||
1129 | ; ------------ |
||
1130 | ; If Pside = 4 Then |
||
1131 | cmp [pside],dword 4 |
||
1132 | jne psidenot40 ; jne |
||
1133 | ; Px = 0 |
||
1134 | ; Py = 0 |
||
1135 | mov [px],dword 0 |
||
1136 | mov [py],dword 0 |
||
1137 | ; Pxadd = 0 |
||
1138 | ; Pyadd = Pheight% / Lineheight% |
||
1139 | mov [pxadd],dword 0 |
||
1140 | mov eax,[pheight] |
||
1141 | cdq |
||
1142 | mov ebx,[lineheight] ; divisor |
||
1143 | ;or ebx,1 |
||
1144 | idiv ebx |
||
1145 | mov [pyadd],eax |
||
1146 | ; End If |
||
1147 | psidenot40: |
||
1148 | ; ------------ |
||
1149 | ; x = X1% Shl 16 |
||
1150 | mov edx,[x1] ; used for x |
||
1151 | mov edi,[px] ; used for px |
||
1152 | mov esi,[py] ; used for py |
||
1153 | sal edx,16 |
||
1154 | ;mov [x],edx |
||
1155 | ;------ |
||
1156 | ; For y% = 0 To Lineheight% |
||
1157 | mov eax,0 |
||
1158 | for0lineheight0: |
||
1159 | |||
1160 | ; Ytopy%=Ytop%+y% |
||
1161 | mov ebx,[ytop] |
||
1162 | mov [ytopy],ebx |
||
1163 | add [ytopy],eax |
||
1164 | |||
1165 | ; If Ytopy%<0 Then Ytopy%=0 ; prevent read pre array |
||
1166 | cmp [ytopy], dword 0 |
||
1167 | jge isnot00 |
||
1168 | mov [ytopy],dword 0 |
||
1169 | isnot00: |
||
1170 | |||
1171 | ; Lefttable(Ytopy%, 0) = x Sar 16 ;polygon x |
||
1172 | mov ecx,[ytopy] |
||
1173 | imul ecx,16 |
||
1174 | add ecx,lefttable |
||
1175 | mov [ecx],edx |
||
1176 | sar dword[ecx],16 |
||
1177 | |||
1178 | ; Lefttable(Ytopy%, 1) = Px ;picture x |
||
1179 | add ecx,4 |
||
1180 | mov [ecx],edi |
||
1181 | |||
1182 | ; Lefttable(Ytopy%, 2) = Py ;picture y |
||
1183 | add ecx,4 |
||
1184 | mov [ecx],esi |
||
1185 | |||
1186 | ; x = x + Xadd ;Next polygon x |
||
1187 | ; Px = Px + Pxadd ;Next picture x |
||
1188 | ; Py = Py + Pyadd ;Next picture y |
||
1189 | add edx,[v_xadd] |
||
1190 | add edi,[pxadd] |
||
1191 | add esi,[pyadd] |
||
1192 | |||
1193 | ;------ |
||
1194 | ; Next |
||
1195 | inc eax |
||
1196 | cmp eax,[lineheight] |
||
1197 | jl for0lineheight0 |
||
1198 | |||
1199 | |||
1200 | ;End Function |
||
1201 | popa |
||
1202 | ret |
||
1203 | |||
1204 | ; ------------------------------------------------------------------------- |
||
1205 | |||
1206 | ; ------------------------------------------------------------------------- |
||
1207 | |||
1208 | ;Function ScanRightSide (X1%, X2%, Ytop%, Lineheight%, Pside) |
||
1209 | scan_right_side: |
||
1210 | pusha |
||
1211 | mov eax,[y1] |
||
1212 | mov [ytop],eax |
||
1213 | |||
1214 | ; Lineheight% = Lineheight% + 1 ; prevent divide by zero |
||
1215 | inc dword[lineheight] |
||
1216 | |||
1217 | ; Xadd = (X2% - X1%) Shl 16 |
||
1218 | mov edi,[x2] |
||
1219 | sub edi,[x1] |
||
1220 | sal edi,16 |
||
1221 | ; Xadd = Xadd / Lineheight% |
||
1222 | mov eax,edi ; whole |
||
1223 | cdq |
||
1224 | mov ebx,[lineheight] ; divisor |
||
1225 | ;or ebx,1 |
||
1226 | idiv ebx ; result now in eax |
||
1227 | mov [v_xadd],eax |
||
1228 | |||
1229 | |||
1230 | |||
1231 | ; ------------ |
||
1232 | ; If Pside = 1 Then |
||
1233 | cmp [pside],dword 1 |
||
1234 | jne psidenot11 |
||
1235 | ; Px = 0 |
||
1236 | ; Py = 0 |
||
1237 | mov [px],dword 0 |
||
1238 | mov [py],dword 0 |
||
1239 | ; Pxadd = Pwidth% / Lineheight% |
||
1240 | ; Pyadd = 0 |
||
1241 | mov eax,[pwidth] |
||
1242 | cdq |
||
1243 | mov ebx,[lineheight] ; divisor |
||
1244 | ;or ebx,1 |
||
1245 | idiv ebx ; result now in eax |
||
1246 | mov [pxadd],eax |
||
1247 | mov [pyadd],dword 0 |
||
1248 | ; End If |
||
1249 | psidenot11: |
||
1250 | ; ------------ |
||
1251 | |||
1252 | ; If Pside = 2 Then |
||
1253 | cmp [pside],dword 2 |
||
1254 | jne psidenot21 |
||
1255 | ; Px = Pwidth% |
||
1256 | ; Py = 0 |
||
1257 | mov edi,[pwidth] |
||
1258 | mov [px],edi |
||
1259 | mov [py],dword 0 |
||
1260 | ; Pxadd = 0 |
||
1261 | ; Pyadd = Pheight% / Lineheight% |
||
1262 | mov [pxadd],dword 0 |
||
1263 | mov eax,[pheight] |
||
1264 | cdq |
||
1265 | mov ebx,[lineheight] ; divisor |
||
1266 | ;or ebx,1 |
||
1267 | idiv ebx ; result now in eax |
||
1268 | mov [pyadd],eax |
||
1269 | ; End If |
||
1270 | psidenot21: |
||
1271 | ; ------------ |
||
1272 | |||
1273 | ; If Pside = 3 Then |
||
1274 | cmp [pside],dword 3 |
||
1275 | jne psidenot31 |
||
1276 | ; Px = Pwidth% |
||
1277 | ; Py = Pheight% |
||
1278 | mov edi,[pwidth] |
||
1279 | mov [px],edi |
||
1280 | mov esi,[pheight] |
||
1281 | mov [py],esi |
||
1282 | ; Pxadd = -Pwidth% / Lineheight% |
||
1283 | ; Pyadd = 0 |
||
1284 | mov eax,0 |
||
1285 | sub eax,[pwidth] |
||
1286 | cdq |
||
1287 | mov ebx,[lineheight] ; divisor |
||
1288 | ;or ebx,3 ; prevent div 0 |
||
1289 | idiv ebx ; result now in eax |
||
1290 | mov [pxadd],eax |
||
1291 | mov [pyadd],dword 0 |
||
1292 | ; End If |
||
1293 | psidenot31: |
||
1294 | |||
1295 | ; ------------ |
||
1296 | ; If Pside = 4 Then |
||
1297 | cmp [pside],dword 4 |
||
1298 | jne psidenot41 ; jne |
||
1299 | ; Px = 0 |
||
1300 | ; Py = Pheight% |
||
1301 | mov [px],dword 0 |
||
1302 | mov esi,[pheight] |
||
1303 | mov [py],esi |
||
1304 | ; Pxadd = 0 |
||
1305 | ; Pyadd = -Pheight% / Lineheight% |
||
1306 | mov [pxadd],dword 0 |
||
1307 | mov eax,0 |
||
1308 | sub eax,[pheight] |
||
1309 | cdq |
||
1310 | mov ebx,[lineheight] ; divisor |
||
1311 | ;or ebx,1 |
||
1312 | idiv ebx |
||
1313 | mov [pyadd],eax |
||
1314 | ; End If |
||
1315 | psidenot41: |
||
1316 | push edx |
||
1317 | push edi |
||
1318 | push esi |
||
1319 | ; ------------ |
||
1320 | ; x = X1% Shl 16 |
||
1321 | mov edx,[x1] ; used for x |
||
1322 | mov edi,[px] ; used for px |
||
1323 | mov esi,[py] ; used for py |
||
1324 | sal edx,16 |
||
1325 | |||
1326 | cmp [lineheight],dword 100 ; lineheight is up to 33 mio ??? |
||
1327 | jle okok |
||
1328 | mov eax,[lineheight] |
||
1329 | mov [wonder+4],eax |
||
1330 | okok: |
||
1331 | |||
1332 | ;------ |
||
1333 | ; For y% = 0 To Lineheight% |
||
1334 | mov eax,0 |
||
1335 | for0lineheight1b: |
||
1336 | ; Ytopy%=Ytop%+y% |
||
1337 | mov ebx,[ytop] |
||
1338 | mov [ytopy],ebx |
||
1339 | add [ytopy],eax |
||
1340 | |||
1341 | ; If Ytopy%<0 Then Ytopy%=0 ; prevent read pre array |
||
1342 | cmp [ytopy], dword 0 |
||
1343 | jg isnot01 |
||
1344 | mov [ytopy],dword 0 |
||
1345 | isnot01: |
||
1346 | ; righttable(Ytopy%, 0) = x Sar 16 ;polygon x |
||
1347 | mov ecx,[ytopy] |
||
1348 | imul ecx,16 |
||
1349 | add ecx,righttable |
||
1350 | mov [ecx],edx |
||
1351 | sar dword[ecx],16 |
||
1352 | |||
1353 | ; righttable(Ytopy%, 1) = Px ;picture x |
||
1354 | add ecx,4 |
||
1355 | mov [ecx],edi |
||
1356 | ; righttable(Ytopy%, 2) = Py ;picture y |
||
1357 | add ecx,4 |
||
1358 | mov [ecx],esi |
||
1359 | ; x = x + Xadd ;Next polygon x |
||
1360 | ; Px = Px + Pxadd ;Next picture x |
||
1361 | ; Py = Py + Pyadd ;Next picture y |
||
1362 | add edx,[v_xadd] |
||
1363 | add edi,[pxadd] |
||
1364 | add esi,[pyadd] |
||
1365 | ;------ |
||
1366 | ; Next |
||
1367 | inc eax |
||
1368 | cmp eax,[lineheight] |
||
1369 | jl for0lineheight1b |
||
1370 | dbg2: |
||
1371 | pop esi |
||
1372 | pop edi |
||
1373 | pop edx |
||
1374 | |||
1375 | ;End Function |
||
1376 | popa |
||
1377 | ret |
||
1378 | |||
1379 | |||
1380 | ; ------------------------------------------------------------------------- |
||
1381 | |||
1382 | ; well I'm shure the following Sub CAN and SHOULD be optimized a LOT. |
||
1383 | |||
1384 | |||
1385 | ;Function TextureMap() |
||
1386 | texture_map: |
||
1387 | pusha |
||
1388 | |||
1389 | ; For y% = Miny% To Maxy% |
||
1390 | mov eax,[miny] |
||
1391 | for_miny_maxy: |
||
1392 | |||
1393 | ; If y>0 And y<=239 |
||
1394 | cmp eax,0 |
||
1395 | jle clipy |
||
1396 | cmp eax,239 |
||
1397 | jg clipy |
||
1398 | |||
1399 | mov [y],eax |
||
1400 | |||
1401 | ; Polyx1% = Lefttable((y%), 0) |
||
1402 | mov ebx,eax |
||
1403 | sal ebx,4 |
||
1404 | add ebx,lefttable |
||
1405 | mov ecx,[ebx] |
||
1406 | mov [polyx1],ecx |
||
1407 | ; Px1 = Lefttable(y%, 1) |
||
1408 | add ebx,4 |
||
1409 | mov ecx,[ebx] |
||
1410 | mov [px1],ecx |
||
1411 | ; Py1 = Lefttable(y%, 2) |
||
1412 | add ebx,4 |
||
1413 | mov ecx,[ebx] |
||
1414 | mov [py1],ecx |
||
1415 | |||
1416 | |||
1417 | ; Polyx2% = Righttable((y%), 0) |
||
1418 | mov ebx,eax |
||
1419 | sal ebx,4 |
||
1420 | add ebx,righttable |
||
1421 | mov ecx,[ebx] |
||
1422 | mov [polyx2],ecx |
||
1423 | ; Px2 = Righttable(y%, 1) |
||
1424 | add ebx,4 |
||
1425 | mov ecx,[ebx] |
||
1426 | mov [px2],ecx |
||
1427 | ; Py2 = Righttable(y%, 2) |
||
1428 | add ebx,4 |
||
1429 | mov ecx,[ebx] |
||
1430 | mov [py2],ecx |
||
1431 | |||
1432 | |||
1433 | ; Linewidth% = Polyx2% - Polyx1% |
||
1434 | mov ecx,[polyx2] |
||
1435 | sub ecx,[polyx1] |
||
1436 | |||
1437 | ; Linewidth%=Linewidth% Or 1 |
||
1438 | or ecx,1 |
||
1439 | mov [linewidth],ecx |
||
1440 | |||
1441 | ; Pxadd = ((Px2 - Px1)) / Linewidth% |
||
1442 | mov eax,[px2] |
||
1443 | sub eax,[px1] |
||
1444 | cdq |
||
1445 | mov ebx,[linewidth] ; divisor |
||
1446 | or ebx,1 |
||
1447 | idiv ebx ; should be idiv ... probs |
||
1448 | mov [pxadd],eax |
||
1449 | |||
1450 | ; Pyadd = ((Py2 - Py1)) / Linewidth% |
||
1451 | mov eax,[py2] |
||
1452 | sub eax,[py1] |
||
1453 | cdq |
||
1454 | mov ebx,[linewidth] ; divisor |
||
1455 | or ebx,1 |
||
1456 | idiv ebx ; should be idiv ...probs |
||
1457 | mov [pyadd],eax |
||
1458 | |||
1459 | mov edi,[px1] |
||
1460 | mov esi,[py1] |
||
1461 | |||
1462 | |||
1463 | ; For x% = Polyx1% To Polyx2% |
||
1464 | mov eax,[polyx1] |
||
1465 | cmp eax,[polyx2] |
||
1466 | jge clipxfully |
||
1467 | for_polyx1_polyx2: |
||
1468 | |||
1469 | ; If x>0 And x<=319 |
||
1470 | cmp eax,0 |
||
1471 | jl clipx |
||
1472 | cmp eax,319 |
||
1473 | jg clipx |
||
1474 | |||
1475 | ; Col%=ReadPixelFast((Px1 Shr 16),(Py1 Shr 16),imgtxt) |
||
1476 | |||
1477 | mov ebx,edi |
||
1478 | sar ebx,16 ; is eq (px1 shr 16)*64 |
||
1479 | and ebx,63 |
||
1480 | sal ebx,2 ; is x |
||
1481 | |||
1482 | mov ecx,esi |
||
1483 | sar ecx,16 |
||
1484 | and ecx,63 |
||
1485 | sal ecx,8 ; y |
||
1486 | add ecx,ebx |
||
1487 | add ecx,tex1 ; adr of texturepixel now in ecx |
||
1488 | |||
1489 | mov edx,[ecx]; rgb now in edx |
||
1490 | |||
1491 | ; WritePixelFast x%,y%,Col% |
||
1492 | mov ebx,[y] |
||
1493 | mov [tempdiv],ebx |
||
1494 | shl dword [tempdiv],6 |
||
1495 | shl ebx,10 |
||
1496 | sub ebx,[tempdiv] |
||
1497 | ;this was imul ebx,960 ; *1024 - *64 |
||
1498 | add ebx,eax |
||
1499 | add ebx,eax |
||
1500 | add ebx,eax |
||
1501 | add ebx,0x80000 |
||
1502 | or [ebx],edx |
||
1503 | ; EndIf |
||
1504 | clipx: |
||
1505 | |||
1506 | ; Px1 = Px1 + Pxadd |
||
1507 | ; Py1 = Py1 + Pyadd |
||
1508 | add edi,dword [pxadd] |
||
1509 | add esi,dword [pyadd] |
||
1510 | |||
1511 | ; Next x |
||
1512 | inc eax |
||
1513 | cmp eax,[polyx2] |
||
1514 | jl for_polyx1_polyx2 |
||
1515 | clipxfully: |
||
1516 | mov eax,[y] |
||
1517 | |||
1518 | ; EndIf |
||
1519 | clipy: |
||
1520 | ; Next y |
||
1521 | inc eax |
||
1522 | cmp eax,[maxy] |
||
1523 | jl for_miny_maxy |
||
1524 | |||
1525 | ;End Function |
||
1526 | |||
1527 | |||
1528 | popa |
||
1529 | ret |
||
1530 | ; ------------------------------------------------------------------------- |
||
1531 | |||
1532 | |||
1533 | |||
1534 | put_screen: |
||
1535 | pusha |
||
1536 | mov eax,7 |
||
1537 | mov ebx,0x80000 |
||
1538 | mov ecx,IMAGE_W*65536+IMAGE_H |
||
1539 | mov edx,0 |
||
1540 | int 0x40 |
||
1541 | popa |
||
1542 | ret |
||
1543 | |||
1544 | |||
1545 | clear_screen: |
||
1546 | push ebx |
||
1547 | mov ebx,0x80000 |
||
1548 | cls: |
||
1549 | mov [ebx],dword 0 |
||
1550 | add ebx,4 |
||
1551 | cmp ebx,0x80000+(IMAGE_W*IMAGE_H*3) |
||
1552 | jl cls |
||
1553 | pop ebx |
||
1554 | ret |
||
1555 | |||
1556 | ; ------------------------------------------------------------------------- |
||
1557 | |||
1558 | ; DATA AREA |
||
1559 | |||
1560 | |||
1561 | ; cube.inc includes the mesh 3D Data, in this case a simple cube. Any Model |
||
1562 | ; is theoreticly possible. Check the File, the Format is trivial. |
||
1563 | ; The Quads should not intersect for a bearable z-sorting. The Quads must be |
||
1564 | ; clockwise. |
||
1565 | |||
7351 | leency | 1566 | include "cube.inc" |
7350 | leency | 1567 | |
1568 | ;;------------------------------ |
||
1569 | |||
1570 | grid: ; 32*32 Blocks, Map: 0 = Air, 1 to 5 = Wall |
||
1571 | ; this is a relict from an other program. I leave it here to keep |
||
1572 | ; the Navigation Subs compatible (planning to recycle them) |
||
1573 | 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 |
||
1574 | 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 |
||
1575 | 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 |
||
1576 | 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 |
||
1577 | 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 |
||
1578 | 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 |
||
1579 | 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 |
||
1580 | 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 |
||
1581 | 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 |
||
1582 | 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 |
||
1583 | 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 |
||
1584 | 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 |
||
1585 | 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 |
||
1586 | 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 |
||
1587 | 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 |
||
1588 | 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 |
||
1589 | 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 |
||
1590 | 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 |
||
1591 | 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 |
||
1592 | 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 |
||
1593 | 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 |
||
1594 | 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 |
||
1595 | 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 |
||
1596 | 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 |
||
1597 | 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 |
||
1598 | 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 |
||
1599 | 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 |
||
1600 | 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 |
||
1601 | 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 |
||
1602 | 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 |
||
1603 | 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 |
||
1604 | 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 |
||
1605 | |||
1606 | sinus: |
||
1607 | dd 0,11,22,34,45,57,68,80,91,102 |
||
1608 | dd 114,125,137,148,160,171,182,194,205,217 |
||
1609 | dd 228,240,251,263,274,285,297,308,320,331 |
||
1610 | dd 342,354,365,377,388,400,411,422,434,445 |
||
1611 | dd 457,468,479,491,502,514,525,536,548,559 |
||
1612 | dd 571,582,593,605,616,628,639,650,662,673 |
||
1613 | dd 685,696,707,719,730,741,753,764,775,787 |
||
1614 | dd 798,810,821,832,844,855,866,878,889,900 |
||
1615 | dd 912,923,934,946,957,968,979,991,1002,1013 |
||
1616 | dd 1025,1036,1047,1059,1070,1081,1092,1104,1115,1126 |
||
1617 | dd 1138,1149,1160,1171,1183,1194,1205,1216,1228,1239 |
||
1618 | dd 1250,1261,1272,1284,1295,1306,1317,1328,1340,1351 |
||
1619 | dd 1362,1373,1384,1396,1407,1418,1429,1440,1451,1463 |
||
1620 | dd 1474,1485,1496,1507,1518,1529,1541,1552,1563,1574 |
||
1621 | dd 1585,1596,1607,1618,1629,1640,1651,1663,1674,1685 |
||
1622 | dd 1696,1707,1718,1729,1740,1751,1762,1773,1784,1795 |
||
1623 | dd 1806,1817,1828,1839,1850,1861,1872,1883,1894,1905 |
||
1624 | dd 1916,1926,1937,1948,1959,1970,1981,1992,2003,2014 |
||
1625 | dd 2025,2036,2046,2057,2068,2079,2090,2101,2111,2122 |
||
1626 | dd 2133,2144,2155,2166,2176,2187,2198,2209,2219,2230 |
||
1627 | dd 2241,2252,2262,2273,2284,2295,2305,2316,2327,2337 |
||
1628 | dd 2348,2359,2369,2380,2391,2401,2412,2423,2433,2444 |
||
1629 | dd 2454,2465,2476,2486,2497,2507,2518,2529,2539,2550 |
||
1630 | dd 2560,2571,2581,2592,2602,2613,2623,2634,2644,2655 |
||
1631 | dd 2665,2675,2686,2696,2707,2717,2728,2738,2748,2759 |
||
1632 | dd 2769,2779,2790,2800,2811,2821,2831,2841,2852,2862 |
||
1633 | dd 2872,2883,2893,2903,2913,2924,2934,2944,2954,2965 |
||
1634 | dd 2975,2985,2995,3005,3015,3026,3036,3046,3056,3066 |
||
1635 | dd 3076,3086,3096,3106,3117,3127,3137,3147,3157,3167 |
||
1636 | dd 3177,3187,3197,3207,3217,3227,3237,3246,3256,3266 |
||
1637 | dd 3276,3286,3296,3306,3316,3326,3336,3345,3355,3365 |
||
1638 | dd 3375,3385,3394,3404,3414,3424,3433,3443,3453,3463 |
||
1639 | dd 3472,3482,3492,3501,3511,3521,3530,3540,3550,3559 |
||
1640 | dd 3569,3578,3588,3598,3607,3617,3626,3636,3645,3655 |
||
1641 | dd 3664,3674,3683,3693,3702,3711,3721,3730,3740,3749 |
||
1642 | dd 3758,3768,3777,3786,3796,3805,3814,3824,3833,3842 |
||
1643 | dd 3852,3861,3870,3879,3888,3898,3907,3916,3925,3934 |
||
1644 | dd 3943,3953,3962,3971,3980,3989,3998,4007,4016,4025 |
||
1645 | dd 4034,4043,4052,4061,4070,4079,4088,4097,4106,4115 |
||
1646 | dd 4124,4133,4142,4150,4159,4168,4177,4186,4194,4203 |
||
1647 | dd 4212,4221,4230,4238,4247,4256,4264,4273,4282,4290 |
||
1648 | dd 4299,4308,4316,4325,4333,4342,4351,4359,4368,4376 |
||
1649 | dd 4385,4393,4402,4410,4419,4427,4435,4444,4452,4461 |
||
1650 | dd 4469,4477,4486,4494,4502,4511,4519,4527,4535,4544 |
||
1651 | dd 4552,4560,4568,4577,4585,4593,4601,4609,4617,4625 |
||
1652 | dd 4634,4642,4650,4658,4666,4674,4682,4690,4698,4706 |
||
1653 | dd 4714,4722,4730,4737,4745,4753,4761,4769,4777,4785 |
||
1654 | dd 4792,4800,4808,4816,4824,4831,4839,4847,4854,4862 |
||
1655 | dd 4870,4877,4885,4893,4900,4908,4915,4923,4930,4938 |
||
1656 | dd 4945,4953,4960,4968,4975,4983,4990,4998,5005,5012 |
||
1657 | dd 5020,5027,5034,5042,5049,5056,5064,5071,5078,5085 |
||
1658 | dd 5093,5100,5107,5114,5121,5128,5135,5143,5150,5157 |
||
1659 | dd 5164,5171,5178,5185,5192,5199,5206,5213,5220,5226 |
||
1660 | dd 5233,5240,5247,5254,5261,5268,5274,5281,5288,5295 |
||
1661 | dd 5301,5308,5315,5321,5328,5335,5341,5348,5355,5361 |
||
1662 | dd 5368,5374,5381,5387,5394,5400,5407,5413,5420,5426 |
||
1663 | dd 5433,5439,5445,5452,5458,5464,5471,5477,5483,5489 |
||
1664 | dd 5496,5502,5508,5514,5521,5527,5533,5539,5545,5551 |
||
1665 | dd 5557,5563,5569,5575,5581,5587,5593,5599,5605,5611 |
||
1666 | dd 5617,5623,5629,5635,5640,5646,5652,5658,5664,5669 |
||
1667 | dd 5675,5681,5686,5692,5698,5703,5709,5715,5720,5726 |
||
1668 | dd 5731,5737,5742,5748,5753,5759,5764,5770,5775,5781 |
||
1669 | dd 5786,5791,5797,5802,5807,5813,5818,5823,5828,5834 |
||
1670 | dd 5839,5844,5849,5854,5859,5864,5870,5875,5880,5885 |
||
1671 | dd 5890,5895,5900,5905,5910,5915,5920,5924,5929,5934 |
||
1672 | dd 5939,5944,5949,5953,5958,5963,5968,5972,5977,5982 |
||
1673 | dd 5986,5991,5996,6000,6005,6009,6014,6019,6023,6028 |
||
1674 | dd 6032,6036,6041,6045,6050,6054,6059,6063,6067,6072 |
||
1675 | dd 6076,6080,6084,6089,6093,6097,6101,6105,6109,6114 |
||
1676 | dd 6118,6122,6126,6130,6134,6138,6142,6146,6150,6154 |
||
1677 | dd 6158,6162,6166,6169,6173,6177,6181,6185,6188,6192 |
||
1678 | dd 6196,6200,6203,6207,6211,6214,6218,6222,6225,6229 |
||
1679 | dd 6232,6236,6239,6243,6246,6250,6253,6257,6260,6263 |
||
1680 | dd 6267,6270,6273,6277,6280,6283,6286,6290,6293,6296 |
||
1681 | dd 6299,6302,6305,6309,6312,6315,6318,6321,6324,6327 |
||
1682 | dd 6330,6333,6336,6338,6341,6344,6347,6350,6353,6356 |
||
1683 | dd 6358,6361,6364,6367,6369,6372,6375,6377,6380,6382 |
||
1684 | dd 6385,6388,6390,6393,6395,6398,6400,6403,6405,6407 |
||
1685 | dd 6410,6412,6415,6417,6419,6421,6424,6426,6428,6430 |
||
1686 | dd 6433,6435,6437,6439,6441,6443,6445,6447,6449,6451 |
||
1687 | dd 6453,6455,6457,6459,6461,6463,6465,6467,6469,6471 |
||
1688 | dd 6472,6474,6476,6478,6479,6481,6483,6484,6486,6488 |
||
1689 | dd 6489,6491,6492,6494,6495,6497,6498,6500,6501,6503 |
||
1690 | dd 6504,6506,6507,6508,6510,6511,6512,6513,6515,6516 |
||
1691 | dd 6517,6518,6519,6521,6522,6523,6524,6525,6526,6527 |
||
1692 | dd 6528,6529,6530,6531,6532,6533,6534,6535,6535,6536 |
||
1693 | dd 6537,6538,6539,6539,6540,6541,6541,6542,6543,6543 |
||
1694 | dd 6544,6545,6545,6546,6546,6547,6547,6548,6548,6549 |
||
1695 | dd 6549,6549,6550,6550,6550,6551,6551,6551,6552,6552 |
||
1696 | dd 6552,6552,6552,6553,6553,6553,6553,6553,6553,6553 |
||
1697 | dd 6553,6553,6553,6553,6553,6553,6553,6553,6552,6552 |
||
1698 | dd 6552,6552,6552,6551,6551,6551,6550,6550,6550,6549 |
||
1699 | dd 6549,6549,6548,6548,6547,6547,6546,6546,6545,6545 |
||
1700 | dd 6544,6543,6543,6542,6541,6541,6540,6539,6539,6538 |
||
1701 | dd 6537,6536,6535,6535,6534,6533,6532,6531,6530,6529 |
||
1702 | dd 6528,6527,6526,6525,6524,6523,6522,6521,6519,6518 |
||
1703 | dd 6517,6516,6515,6513,6512,6511,6510,6508,6507,6506 |
||
1704 | dd 6504,6503,6501,6500,6498,6497,6495,6494,6492,6491 |
||
1705 | dd 6489,6488,6486,6484,6483,6481,6479,6478,6476,6474 |
||
1706 | dd 6472,6471,6469,6467,6465,6463,6461,6459,6457,6455 |
||
1707 | dd 6453,6451,6449,6447,6445,6443,6441,6439,6437,6435 |
||
1708 | dd 6433,6430,6428,6426,6424,6421,6419,6417,6415,6412 |
||
1709 | dd 6410,6407,6405,6403,6400,6398,6395,6393,6390,6388 |
||
1710 | dd 6385,6382,6380,6377,6375,6372,6369,6367,6364,6361 |
||
1711 | dd 6358,6356,6353,6350,6347,6344,6341,6338,6336,6333 |
||
1712 | dd 6330,6327,6324,6321,6318,6315,6312,6309,6305,6302 |
||
1713 | dd 6299,6296,6293,6290,6286,6283,6280,6277,6273,6270 |
||
1714 | dd 6267,6263,6260,6257,6253,6250,6246,6243,6239,6236 |
||
1715 | dd 6232,6229,6225,6222,6218,6214,6211,6207,6203,6200 |
||
1716 | dd 6196,6192,6188,6185,6181,6177,6173,6169,6166,6162 |
||
1717 | dd 6158,6154,6150,6146,6142,6138,6134,6130,6126,6122 |
||
1718 | dd 6118,6114,6109,6105,6101,6097,6093,6089,6084,6080 |
||
1719 | dd 6076,6072,6067,6063,6059,6054,6050,6045,6041,6036 |
||
1720 | dd 6032,6028,6023,6019,6014,6009,6005,6000,5996,5991 |
||
1721 | dd 5986,5982,5977,5972,5968,5963,5958,5953,5949,5944 |
||
1722 | dd 5939,5934,5929,5924,5920,5915,5910,5905,5900,5895 |
||
1723 | dd 5890,5885,5880,5875,5870,5864,5859,5854,5849,5844 |
||
1724 | dd 5839,5834,5828,5823,5818,5813,5807,5802,5797,5791 |
||
1725 | dd 5786,5781,5775,5770,5764,5759,5753,5748,5742,5737 |
||
1726 | dd 5731,5726,5720,5715,5709,5703,5698,5692,5686,5681 |
||
1727 | dd 5675,5669,5664,5658,5652,5646,5640,5635,5629,5623 |
||
1728 | dd 5617,5611,5605,5599,5593,5587,5581,5575,5569,5563 |
||
1729 | dd 5557,5551,5545,5539,5533,5527,5521,5514,5508,5502 |
||
1730 | dd 5496,5489,5483,5477,5471,5464,5458,5452,5445,5439 |
||
1731 | dd 5433,5426,5420,5413,5407,5400,5394,5387,5381,5374 |
||
1732 | dd 5368,5361,5355,5348,5341,5335,5328,5321,5315,5308 |
||
1733 | dd 5301,5295,5288,5281,5274,5268,5261,5254,5247,5240 |
||
1734 | dd 5233,5226,5220,5213,5206,5199,5192,5185,5178,5171 |
||
1735 | dd 5164,5157,5150,5143,5135,5128,5121,5114,5107,5100 |
||
1736 | dd 5093,5085,5078,5071,5064,5056,5049,5042,5034,5027 |
||
1737 | dd 5020,5012,5005,4998,4990,4983,4975,4968,4960,4953 |
||
1738 | dd 4945,4938,4930,4923,4915,4908,4900,4893,4885,4877 |
||
1739 | dd 4870,4862,4854,4847,4839,4831,4824,4816,4808,4800 |
||
1740 | dd 4792,4785,4777,4769,4761,4753,4745,4737,4730,4722 |
||
1741 | dd 4714,4706,4698,4690,4682,4674,4666,4658,4650,4642 |
||
1742 | dd 4634,4625,4617,4609,4601,4593,4585,4577,4568,4560 |
||
1743 | dd 4552,4544,4535,4527,4519,4511,4502,4494,4486,4477 |
||
1744 | dd 4469,4461,4452,4444,4435,4427,4419,4410,4402,4393 |
||
1745 | dd 4385,4376,4368,4359,4351,4342,4333,4325,4316,4308 |
||
1746 | dd 4299,4290,4282,4273,4264,4256,4247,4238,4230,4221 |
||
1747 | dd 4212,4203,4194,4186,4177,4168,4159,4150,4142,4133 |
||
1748 | dd 4124,4115,4106,4097,4088,4079,4070,4061,4052,4043 |
||
1749 | dd 4034,4025,4016,4007,3998,3989,3980,3971,3962,3953 |
||
1750 | dd 3943,3934,3925,3916,3907,3898,3888,3879,3870,3861 |
||
1751 | dd 3852,3842,3833,3824,3814,3805,3796,3786,3777,3768 |
||
1752 | dd 3758,3749,3740,3730,3721,3711,3702,3693,3683,3674 |
||
1753 | dd 3664,3655,3645,3636,3626,3617,3607,3598,3588,3578 |
||
1754 | dd 3569,3559,3550,3540,3530,3521,3511,3501,3492,3482 |
||
1755 | dd 3472,3463,3453,3443,3433,3424,3414,3404,3394,3385 |
||
1756 | dd 3375,3365,3355,3345,3336,3326,3316,3306,3296,3286 |
||
1757 | dd 3276,3266,3256,3246,3237,3227,3217,3207,3197,3187 |
||
1758 | dd 3177,3167,3157,3147,3137,3127,3117,3106,3096,3086 |
||
1759 | dd 3076,3066,3056,3046,3036,3026,3015,3005,2995,2985 |
||
1760 | dd 2975,2965,2954,2944,2934,2924,2913,2903,2893,2883 |
||
1761 | dd 2872,2862,2852,2841,2831,2821,2811,2800,2790,2779 |
||
1762 | dd 2769,2759,2748,2738,2728,2717,2707,2696,2686,2675 |
||
1763 | dd 2665,2655,2644,2634,2623,2613,2602,2592,2581,2571 |
||
1764 | dd 2560,2550,2539,2529,2518,2507,2497,2486,2476,2465 |
||
1765 | dd 2454,2444,2433,2423,2412,2401,2391,2380,2369,2359 |
||
1766 | dd 2348,2337,2327,2316,2305,2295,2284,2273,2262,2252 |
||
1767 | dd 2241,2230,2219,2209,2198,2187,2176,2166,2155,2144 |
||
1768 | dd 2133,2122,2111,2101,2090,2079,2068,2057,2046,2036 |
||
1769 | dd 2025,2014,2003,1992,1981,1970,1959,1948,1937,1926 |
||
1770 | dd 1916,1905,1894,1883,1872,1861,1850,1839,1828,1817 |
||
1771 | dd 1806,1795,1784,1773,1762,1751,1740,1729,1718,1707 |
||
1772 | dd 1696,1685,1674,1663,1651,1640,1629,1618,1607,1596 |
||
1773 | dd 1585,1574,1563,1552,1541,1529,1518,1507,1496,1485 |
||
1774 | dd 1474,1463,1451,1440,1429,1418,1407,1396,1384,1373 |
||
1775 | dd 1362,1351,1340,1328,1317,1306,1295,1284,1272,1261 |
||
1776 | dd 1250,1239,1228,1216,1205,1194,1183,1171,1160,1149 |
||
1777 | dd 1138,1126,1115,1104,1092,1081,1070,1059,1047,1036 |
||
1778 | dd 1025,1013,1002,991,979,968,957,946,934,923 |
||
1779 | dd 912,900,889,878,866,855,844,832,821,810 |
||
1780 | dd 798,787,775,764,753,741,730,719,707,696 |
||
1781 | dd 685,673,662,650,639,628,616,605,593,582 |
||
1782 | dd 571,559,548,536,525,514,502,491,479,468 |
||
1783 | dd 457,445,434,422,411,400,388,377,365,354 |
||
1784 | dd 342,331,320,308,297,285,274,263,251,240 |
||
1785 | dd 228,217,205,194,182,171,160,148,137,125 |
||
1786 | dd 114,102,91,80,68,57,45,34,22,11 |
||
1787 | dd 0,-12,-23,-35,-46,-58,-69,-81,-92,-103 |
||
1788 | dd -115,-126,-138,-149,-161,-172,-183,-195,-206,-218 |
||
1789 | dd -229,-241,-252,-264,-275,-286,-298,-309,-321,-332 |
||
1790 | dd -343,-355,-366,-378,-389,-401,-412,-423,-435,-446 |
||
1791 | dd -458,-469,-480,-492,-503,-515,-526,-537,-549,-560 |
||
1792 | dd -572,-583,-594,-606,-617,-629,-640,-651,-663,-674 |
||
1793 | dd -686,-697,-708,-720,-731,-742,-754,-765,-776,-788 |
||
1794 | dd -799,-811,-822,-833,-845,-856,-867,-879,-890,-901 |
||
1795 | dd -913,-924,-935,-947,-958,-969,-980,-992,-1003,-1014 |
||
1796 | dd -1026,-1037,-1048,-1060,-1071,-1082,-1093,-1105,-1116,-1127 |
||
1797 | dd -1139,-1150,-1161,-1172,-1184,-1195,-1206,-1217,-1229,-1240 |
||
1798 | dd -1251,-1262,-1273,-1285,-1296,-1307,-1318,-1329,-1341,-1352 |
||
1799 | dd -1363,-1374,-1385,-1397,-1408,-1419,-1430,-1441,-1452,-1464 |
||
1800 | dd -1475,-1486,-1497,-1508,-1519,-1530,-1542,-1553,-1564,-1575 |
||
1801 | dd -1586,-1597,-1608,-1619,-1630,-1641,-1652,-1664,-1675,-1686 |
||
1802 | dd -1697,-1708,-1719,-1730,-1741,-1752,-1763,-1774,-1785,-1796 |
||
1803 | dd -1807,-1818,-1829,-1840,-1851,-1862,-1873,-1884,-1895,-1906 |
||
1804 | dd -1917,-1927,-1938,-1949,-1960,-1971,-1982,-1993,-2004,-2015 |
||
1805 | dd -2026,-2037,-2047,-2058,-2069,-2080,-2091,-2102,-2112,-2123 |
||
1806 | dd -2134,-2145,-2156,-2167,-2177,-2188,-2199,-2210,-2220,-2231 |
||
1807 | dd -2242,-2253,-2263,-2274,-2285,-2296,-2306,-2317,-2328,-2338 |
||
1808 | dd -2349,-2360,-2370,-2381,-2392,-2402,-2413,-2424,-2434,-2445 |
||
1809 | dd -2455,-2466,-2477,-2487,-2498,-2508,-2519,-2530,-2540,-2551 |
||
1810 | dd -2561,-2572,-2582,-2593,-2603,-2614,-2624,-2635,-2645,-2656 |
||
1811 | dd -2666,-2676,-2687,-2697,-2708,-2718,-2729,-2739,-2749,-2760 |
||
1812 | dd -2770,-2780,-2791,-2801,-2812,-2822,-2832,-2842,-2853,-2863 |
||
1813 | dd -2873,-2884,-2894,-2904,-2914,-2925,-2935,-2945,-2955,-2966 |
||
1814 | dd -2976,-2986,-2996,-3006,-3016,-3027,-3037,-3047,-3057,-3067 |
||
1815 | dd -3077,-3087,-3097,-3107,-3118,-3128,-3138,-3148,-3158,-3168 |
||
1816 | dd -3178,-3188,-3198,-3208,-3218,-3228,-3238,-3247,-3257,-3267 |
||
1817 | dd -3277,-3287,-3297,-3307,-3317,-3327,-3337,-3346,-3356,-3366 |
||
1818 | dd -3376,-3386,-3395,-3405,-3415,-3425,-3434,-3444,-3454,-3464 |
||
1819 | dd -3473,-3483,-3493,-3502,-3512,-3522,-3531,-3541,-3551,-3560 |
||
1820 | dd -3570,-3579,-3589,-3599,-3608,-3618,-3627,-3637,-3646,-3656 |
||
1821 | dd -3665,-3675,-3684,-3694,-3703,-3712,-3722,-3731,-3741,-3750 |
||
1822 | dd -3759,-3769,-3778,-3787,-3797,-3806,-3815,-3825,-3834,-3843 |
||
1823 | dd -3853,-3862,-3871,-3880,-3889,-3899,-3908,-3917,-3926,-3935 |
||
1824 | dd -3944,-3954,-3963,-3972,-3981,-3990,-3999,-4008,-4017,-4026 |
||
1825 | dd -4035,-4044,-4053,-4062,-4071,-4080,-4089,-4098,-4107,-4116 |
||
1826 | dd -4125,-4134,-4143,-4151,-4160,-4169,-4178,-4187,-4195,-4204 |
||
1827 | dd -4213,-4222,-4231,-4239,-4248,-4257,-4265,-4274,-4283,-4291 |
||
1828 | dd -4300,-4309,-4317,-4326,-4334,-4343,-4352,-4360,-4369,-4377 |
||
1829 | dd -4386,-4394,-4403,-4411,-4420,-4428,-4436,-4445,-4453,-4462 |
||
1830 | dd -4470,-4478,-4487,-4495,-4503,-4512,-4520,-4528,-4536,-4545 |
||
1831 | dd -4553,-4561,-4569,-4578,-4586,-4594,-4602,-4610,-4618,-4626 |
||
1832 | dd -4635,-4643,-4651,-4659,-4667,-4675,-4683,-4691,-4699,-4707 |
||
1833 | dd -4715,-4723,-4731,-4738,-4746,-4754,-4762,-4770,-4778,-4786 |
||
1834 | dd -4793,-4801,-4809,-4817,-4825,-4832,-4840,-4848,-4855,-4863 |
||
1835 | dd -4871,-4878,-4886,-4894,-4901,-4909,-4916,-4924,-4931,-4939 |
||
1836 | dd -4946,-4954,-4961,-4969,-4976,-4984,-4991,-4999,-5006,-5013 |
||
1837 | dd -5021,-5028,-5035,-5043,-5050,-5057,-5065,-5072,-5079,-5086 |
||
1838 | dd -5094,-5101,-5108,-5115,-5122,-5129,-5136,-5144,-5151,-5158 |
||
1839 | dd -5165,-5172,-5179,-5186,-5193,-5200,-5207,-5214,-5221,-5227 |
||
1840 | dd -5234,-5241,-5248,-5255,-5262,-5269,-5275,-5282,-5289,-5296 |
||
1841 | dd -5302,-5309,-5316,-5322,-5329,-5336,-5342,-5349,-5356,-5362 |
||
1842 | dd -5369,-5375,-5382,-5388,-5395,-5401,-5408,-5414,-5421,-5427 |
||
1843 | dd -5434,-5440,-5446,-5453,-5459,-5465,-5472,-5478,-5484,-5490 |
||
1844 | dd -5497,-5503,-5509,-5515,-5522,-5528,-5534,-5540,-5546,-5552 |
||
1845 | dd -5558,-5564,-5570,-5576,-5582,-5588,-5594,-5600,-5606,-5612 |
||
1846 | dd -5618,-5624,-5630,-5636,-5641,-5647,-5653,-5659,-5665,-5670 |
||
1847 | dd -5676,-5682,-5687,-5693,-5699,-5704,-5710,-5716,-5721,-5727 |
||
1848 | dd -5732,-5738,-5743,-5749,-5754,-5760,-5765,-5771,-5776,-5782 |
||
1849 | dd -5787,-5792,-5798,-5803,-5808,-5814,-5819,-5824,-5829,-5835 |
||
1850 | dd -5840,-5845,-5850,-5855,-5860,-5865,-5871,-5876,-5881,-5886 |
||
1851 | dd -5891,-5896,-5901,-5906,-5911,-5916,-5921,-5925,-5930,-5935 |
||
1852 | dd -5940,-5945,-5950,-5954,-5959,-5964,-5969,-5973,-5978,-5983 |
||
1853 | dd -5987,-5992,-5997,-6001,-6006,-6010,-6015,-6020,-6024,-6029 |
||
1854 | dd -6033,-6037,-6042,-6046,-6051,-6055,-6060,-6064,-6068,-6073 |
||
1855 | dd -6077,-6081,-6085,-6090,-6094,-6098,-6102,-6106,-6110,-6115 |
||
1856 | dd -6119,-6123,-6127,-6131,-6135,-6139,-6143,-6147,-6151,-6155 |
||
1857 | dd -6159,-6163,-6167,-6170,-6174,-6178,-6182,-6186,-6189,-6193 |
||
1858 | dd -6197,-6201,-6204,-6208,-6212,-6215,-6219,-6223,-6226,-6230 |
||
1859 | dd -6233,-6237,-6240,-6244,-6247,-6251,-6254,-6258,-6261,-6264 |
||
1860 | dd -6268,-6271,-6274,-6278,-6281,-6284,-6287,-6291,-6294,-6297 |
||
1861 | dd -6300,-6303,-6306,-6310,-6313,-6316,-6319,-6322,-6325,-6328 |
||
1862 | dd -6331,-6334,-6337,-6339,-6342,-6345,-6348,-6351,-6354,-6357 |
||
1863 | dd -6359,-6362,-6365,-6368,-6370,-6373,-6376,-6378,-6381,-6383 |
||
1864 | dd -6386,-6389,-6391,-6394,-6396,-6399,-6401,-6404,-6406,-6408 |
||
1865 | dd -6411,-6413,-6416,-6418,-6420,-6422,-6425,-6427,-6429,-6431 |
||
1866 | dd -6434,-6436,-6438,-6440,-6442,-6444,-6446,-6448,-6450,-6452 |
||
1867 | dd -6454,-6456,-6458,-6460,-6462,-6464,-6466,-6468,-6470,-6472 |
||
1868 | dd -6473,-6475,-6477,-6479,-6480,-6482,-6484,-6485,-6487,-6489 |
||
1869 | dd -6490,-6492,-6493,-6495,-6496,-6498,-6499,-6501,-6502,-6504 |
||
1870 | dd -6505,-6507,-6508,-6509,-6511,-6512,-6513,-6514,-6516,-6517 |
||
1871 | dd -6518,-6519,-6520,-6522,-6523,-6524,-6525,-6526,-6527,-6528 |
||
1872 | dd -6529,-6530,-6531,-6532,-6533,-6534,-6535,-6536,-6536,-6537 |
||
1873 | dd -6538,-6539,-6540,-6540,-6541,-6542,-6542,-6543,-6544,-6544 |
||
1874 | dd -6545,-6546,-6546,-6547,-6547,-6548,-6548,-6549,-6549,-6550 |
||
1875 | dd -6550,-6550,-6551,-6551,-6551,-6552,-6552,-6552,-6553,-6553 |
||
1876 | dd -6553,-6553,-6553,-6554,-6554,-6554,-6554,-6554,-6554,-6554 |
||
1877 | dd -6554,-6554,-6554,-6554,-6554,-6554,-6554,-6554,-6553,-6553 |
||
1878 | dd -6553,-6553,-6553,-6552,-6552,-6552,-6551,-6551,-6551,-6550 |
||
1879 | dd -6550,-6550,-6549,-6549,-6548,-6548,-6547,-6547,-6546,-6546 |
||
1880 | dd -6545,-6544,-6544,-6543,-6542,-6542,-6541,-6540,-6540,-6539 |
||
1881 | dd -6538,-6537,-6536,-6536,-6535,-6534,-6533,-6532,-6531,-6530 |
||
1882 | dd -6529,-6528,-6527,-6526,-6525,-6524,-6523,-6522,-6520,-6519 |
||
1883 | dd -6518,-6517,-6516,-6514,-6513,-6512,-6511,-6509,-6508,-6507 |
||
1884 | dd -6505,-6504,-6502,-6501,-6499,-6498,-6496,-6495,-6493,-6492 |
||
1885 | dd -6490,-6489,-6487,-6485,-6484,-6482,-6480,-6479,-6477,-6475 |
||
1886 | dd -6473,-6472,-6470,-6468,-6466,-6464,-6462,-6460,-6458,-6456 |
||
1887 | dd -6454,-6452,-6450,-6448,-6446,-6444,-6442,-6440,-6438,-6436 |
||
1888 | dd -6434,-6431,-6429,-6427,-6425,-6422,-6420,-6418,-6416,-6413 |
||
1889 | dd -6411,-6408,-6406,-6404,-6401,-6399,-6396,-6394,-6391,-6389 |
||
1890 | dd -6386,-6383,-6381,-6378,-6376,-6373,-6370,-6368,-6365,-6362 |
||
1891 | dd -6359,-6357,-6354,-6351,-6348,-6345,-6342,-6339,-6337,-6334 |
||
1892 | dd -6331,-6328,-6325,-6322,-6319,-6316,-6313,-6309,-6306,-6303 |
||
1893 | dd -6300,-6297,-6294,-6291,-6287,-6284,-6281,-6278,-6274,-6271 |
||
1894 | dd -6268,-6264,-6261,-6258,-6254,-6251,-6247,-6244,-6240,-6237 |
||
1895 | dd -6233,-6230,-6226,-6223,-6219,-6215,-6212,-6208,-6204,-6201 |
||
1896 | dd -6197,-6193,-6189,-6186,-6182,-6178,-6174,-6170,-6167,-6163 |
||
1897 | dd -6159,-6155,-6151,-6147,-6143,-6139,-6135,-6131,-6127,-6123 |
||
1898 | dd -6119,-6115,-6110,-6106,-6102,-6098,-6094,-6090,-6085,-6081 |
||
1899 | dd -6077,-6073,-6068,-6064,-6060,-6055,-6051,-6046,-6042,-6037 |
||
1900 | dd -6033,-6029,-6024,-6020,-6015,-6010,-6006,-6001,-5997,-5992 |
||
1901 | dd -5987,-5983,-5978,-5973,-5969,-5964,-5959,-5954,-5950,-5945 |
||
1902 | dd -5940,-5935,-5930,-5925,-5921,-5916,-5911,-5906,-5901,-5896 |
||
1903 | dd -5891,-5886,-5881,-5876,-5871,-5865,-5860,-5855,-5850,-5845 |
||
1904 | dd -5840,-5835,-5829,-5824,-5819,-5814,-5808,-5803,-5798,-5792 |
||
1905 | dd -5787,-5782,-5776,-5771,-5765,-5760,-5754,-5749,-5743,-5738 |
||
1906 | dd -5732,-5727,-5721,-5716,-5710,-5704,-5699,-5693,-5687,-5682 |
||
1907 | dd -5676,-5670,-5665,-5659,-5653,-5647,-5641,-5636,-5630,-5624 |
||
1908 | dd -5618,-5612,-5606,-5600,-5594,-5588,-5582,-5576,-5570,-5564 |
||
1909 | dd -5558,-5552,-5546,-5540,-5534,-5528,-5522,-5515,-5509,-5503 |
||
1910 | dd -5497,-5490,-5484,-5478,-5472,-5465,-5459,-5453,-5446,-5440 |
||
1911 | dd -5434,-5427,-5421,-5414,-5408,-5401,-5395,-5388,-5382,-5375 |
||
1912 | dd -5369,-5362,-5356,-5349,-5342,-5336,-5329,-5322,-5316,-5309 |
||
1913 | dd -5302,-5296,-5289,-5282,-5275,-5269,-5262,-5255,-5248,-5241 |
||
1914 | dd -5234,-5227,-5221,-5214,-5207,-5200,-5193,-5186,-5179,-5172 |
||
1915 | dd -5165,-5158,-5151,-5144,-5136,-5129,-5122,-5115,-5108,-5101 |
||
1916 | dd -5094,-5086,-5079,-5072,-5065,-5057,-5050,-5043,-5035,-5028 |
||
1917 | dd -5021,-5013,-5006,-4999,-4991,-4984,-4976,-4969,-4961,-4954 |
||
1918 | dd -4946,-4939,-4931,-4924,-4916,-4909,-4901,-4894,-4886,-4878 |
||
1919 | dd -4871,-4863,-4855,-4848,-4840,-4832,-4825,-4817,-4809,-4801 |
||
1920 | dd -4793,-4786,-4778,-4770,-4762,-4754,-4746,-4738,-4731,-4723 |
||
1921 | dd -4715,-4707,-4699,-4691,-4683,-4675,-4667,-4659,-4651,-4643 |
||
1922 | dd -4635,-4626,-4618,-4610,-4602,-4594,-4586,-4578,-4569,-4561 |
||
1923 | dd -4553,-4545,-4536,-4528,-4520,-4512,-4503,-4495,-4487,-4478 |
||
1924 | dd -4470,-4462,-4453,-4445,-4436,-4428,-4420,-4411,-4403,-4394 |
||
1925 | dd -4386,-4377,-4369,-4360,-4352,-4343,-4334,-4326,-4317,-4309 |
||
1926 | dd -4300,-4291,-4283,-4274,-4265,-4257,-4248,-4239,-4231,-4222 |
||
1927 | dd -4213,-4204,-4195,-4187,-4178,-4169,-4160,-4151,-4143,-4134 |
||
1928 | dd -4125,-4116,-4107,-4098,-4089,-4080,-4071,-4062,-4053,-4044 |
||
1929 | dd -4035,-4026,-4017,-4008,-3999,-3990,-3981,-3972,-3963,-3954 |
||
1930 | dd -3944,-3935,-3926,-3917,-3908,-3899,-3889,-3880,-3871,-3862 |
||
1931 | dd -3853,-3843,-3834,-3825,-3815,-3806,-3797,-3787,-3778,-3769 |
||
1932 | dd -3759,-3750,-3741,-3731,-3722,-3712,-3703,-3694,-3684,-3675 |
||
1933 | dd -3665,-3656,-3646,-3637,-3627,-3618,-3608,-3599,-3589,-3579 |
||
1934 | dd -3570,-3560,-3551,-3541,-3531,-3522,-3512,-3502,-3493,-3483 |
||
1935 | dd -3473,-3464,-3454,-3444,-3434,-3425,-3415,-3405,-3395,-3386 |
||
1936 | dd -3376,-3366,-3356,-3346,-3337,-3327,-3317,-3307,-3297,-3287 |
||
1937 | dd -3277,-3267,-3257,-3247,-3238,-3228,-3218,-3208,-3198,-3188 |
||
1938 | dd -3178,-3168,-3158,-3148,-3138,-3128,-3118,-3107,-3097,-3087 |
||
1939 | dd -3077,-3067,-3057,-3047,-3037,-3027,-3016,-3006,-2996,-2986 |
||
1940 | dd -2976,-2966,-2955,-2945,-2935,-2925,-2914,-2904,-2894,-2884 |
||
1941 | dd -2873,-2863,-2853,-2842,-2832,-2822,-2812,-2801,-2791,-2780 |
||
1942 | dd -2770,-2760,-2749,-2739,-2729,-2718,-2708,-2697,-2687,-2676 |
||
1943 | dd -2666,-2656,-2645,-2635,-2624,-2614,-2603,-2593,-2582,-2572 |
||
1944 | dd -2561,-2551,-2540,-2530,-2519,-2508,-2498,-2487,-2477,-2466 |
||
1945 | dd -2455,-2445,-2434,-2424,-2413,-2402,-2392,-2381,-2370,-2360 |
||
1946 | dd -2349,-2338,-2328,-2317,-2306,-2296,-2285,-2274,-2263,-2253 |
||
1947 | dd -2242,-2231,-2220,-2210,-2199,-2188,-2177,-2167,-2156,-2145 |
||
1948 | dd -2134,-2123,-2112,-2102,-2091,-2080,-2069,-2058,-2047,-2037 |
||
1949 | dd -2026,-2015,-2004,-1993,-1982,-1971,-1960,-1949,-1938,-1927 |
||
1950 | dd -1917,-1906,-1895,-1884,-1873,-1862,-1851,-1840,-1829,-1818 |
||
1951 | dd -1807,-1796,-1785,-1774,-1763,-1752,-1741,-1730,-1719,-1708 |
||
1952 | dd -1697,-1686,-1675,-1664,-1652,-1641,-1630,-1619,-1608,-1597 |
||
1953 | dd -1586,-1575,-1564,-1553,-1542,-1530,-1519,-1508,-1497,-1486 |
||
1954 | dd -1475,-1464,-1452,-1441,-1430,-1419,-1408,-1397,-1385,-1374 |
||
1955 | dd -1363,-1352,-1341,-1329,-1318,-1307,-1296,-1285,-1273,-1262 |
||
1956 | dd -1251,-1240,-1229,-1217,-1206,-1195,-1184,-1172,-1161,-1150 |
||
1957 | dd -1139,-1127,-1116,-1105,-1093,-1082,-1071,-1060,-1048,-1037 |
||
1958 | dd -1026,-1014,-1003,-992,-980,-969,-958,-947,-935,-924 |
||
1959 | dd -913,-901,-890,-879,-867,-856,-845,-833,-822,-811 |
||
1960 | dd -799,-788,-776,-765,-754,-742,-731,-720,-708,-697 |
||
1961 | dd -686,-674,-663,-651,-640,-629,-617,-606,-594,-583 |
||
1962 | dd -572,-560,-549,-537,-526,-515,-503,-492,-480,-469 |
||
1963 | dd -458,-446,-435,-423,-412,-401,-389,-378,-366,-355 |
||
1964 | dd -343,-332,-321,-309,-298,-286,-275,-264,-252,-241 |
||
1965 | dd -229,-218,-206,-195,-183,-172,-161,-149,-138,-126 |
||
1966 | dd -115,-103,-92,-81,-69,-58,-46,-35,-23,-12 |
||
1967 | |||
1968 | eosinus: |
||
1969 | |||
1970 | ; misc vars for mouse / keys: |
||
1971 | wonder: |
||
1972 | dd 7777 |
||
1973 | dududu: |
||
1974 | dd 0 |
||
1975 | rendered_quads: |
||
1976 | dd 0 |
||
1977 | sorted_quads: |
||
1978 | dd 0 |
||
1979 | vxx: |
||
1980 | dd 0 |
||
1981 | mouseya: |
||
1982 | dd 0 |
||
1983 | vpx: |
||
1984 | dd 0 |
||
1985 | vpy: |
||
1986 | dd 0 |
||
1987 | vheading: |
||
1988 | dd 0 |
||
1989 | |||
1990 | wtolong: |
||
1991 | dw 0,0 |
||
1992 | |||
1993 | ; misc Engine Vars -------------------------- |
||
1994 | imgtxt: |
||
1995 | dd 0 |
||
1996 | mousex: |
||
1997 | dd 0 |
||
1998 | mousey: |
||
1999 | dd 0 |
||
2000 | factor: |
||
2001 | dd 0 |
||
2002 | i: |
||
2003 | dd 0 |
||
2004 | miny: |
||
2005 | dd 0 |
||
2006 | maxy: |
||
2007 | dd 0 |
||
2008 | pwidth: |
||
2009 | dd 0 |
||
2010 | pheight: |
||
2011 | dd 0 |
||
2012 | ;anz: |
||
2013 | ; dd 0 |
||
2014 | a: |
||
2015 | dd 0 |
||
2016 | alpha: |
||
2017 | dd 0 |
||
2018 | beta: |
||
2019 | dd 0 |
||
2020 | gamma: |
||
2021 | dd 0 |
||
2022 | zoom: |
||
2023 | dd 0 |
||
2024 | zwmax: |
||
2025 | dd 0 |
||
2026 | i2: |
||
2027 | dd 0 |
||
2028 | x1: |
||
2029 | dd 0 |
||
2030 | y1: |
||
2031 | dd 0 |
||
2032 | x2: |
||
2033 | dd 0 |
||
2034 | y2: |
||
2035 | dd 0 |
||
2036 | |||
2037 | count: |
||
2038 | dd 0 |
||
2039 | ilocal: |
||
2040 | dd 0 |
||
2041 | ycoord: |
||
2042 | dd 0 |
||
2043 | pside: |
||
2044 | dd 0 |
||
2045 | temp: |
||
2046 | dd 0 |
||
2047 | lineheight: |
||
2048 | dd 0 |
||
2049 | linewidth: |
||
2050 | dd 0 |
||
2051 | v_xadd: |
||
2052 | dd 0 |
||
2053 | pxadd: |
||
2054 | dd 0 |
||
2055 | pyadd: |
||
2056 | dd 0 |
||
2057 | ytop: |
||
2058 | dd 0 |
||
2059 | ytopy: |
||
2060 | dd 0 |
||
2061 | px: |
||
2062 | dd 0 |
||
2063 | py: |
||
2064 | dd 0 |
||
2065 | x: |
||
2066 | dd 0 |
||
2067 | y: |
||
2068 | dd 0 |
||
2069 | polyx1: |
||
2070 | dd 0 |
||
2071 | polyx2: |
||
2072 | dd 0 |
||
2073 | px1: |
||
2074 | dd 0 |
||
2075 | py1: |
||
2076 | dd 0 |
||
2077 | px2: |
||
2078 | dd 0 |
||
2079 | py2: |
||
2080 | dd 0 |
||
2081 | remeax: |
||
2082 | dd 0 |
||
2083 | remebx: |
||
2084 | dd 0 |
||
2085 | remecx: |
||
2086 | dd 0 |
||
2087 | remedx: |
||
2088 | dd 0 |
||
2089 | remedi: |
||
2090 | dd 0 |
||
2091 | remesi: |
||
2092 | dd 0 |
||
2093 | singamma: |
||
2094 | dd 0 |
||
2095 | sinbeta: |
||
2096 | dd 0 |
||
2097 | sinalpha: |
||
2098 | dd 0 |
||
2099 | alphacopy: |
||
2100 | dd 0 |
||
2101 | betacopy: |
||
2102 | dd 0 |
||
2103 | gammacopy: |
||
2104 | dd 0 |
||
2105 | |||
2106 | |||
2107 | ;;fixed size arrays -------------------- |
||
2108 | lefttable: |
||
2109 | times 1920*2 dd 0 ; 1440 |
||
2110 | righttable: |
||
2111 | times 1920*2 dd 0 |
||
2112 | polypoints: |
||
2113 | times 12 dd 0 ; 8 |
||
2114 | zbuffer: |
||
2115 | times 10010 dd 0 ; 10000 |
||
2116 | |||
2117 | ; floating vars ------------------------ |
||
2118 | |||
2119 | twohundred: |
||
2120 | dd 200 |
||
2121 | mausy: |
||
2122 | dd 0 |
||
2123 | |||
2124 | xl1: |
||
2125 | dd 0 |
||
2126 | yl1: |
||
2127 | dd 0 |
||
2128 | zl1: |
||
2129 | dd 0 |
||
2130 | |||
2131 | xl2: |
||
2132 | dd 0 |
||
2133 | yl2: |
||
2134 | dd 0 |
||
2135 | zl2: |
||
2136 | dd 0 |
||
2137 | |||
2138 | xl3: |
||
2139 | dd 0 |
||
2140 | yl3: |
||
2141 | dd 0 |
||
2142 | zl3: |
||
2143 | dd 0 |
||
2144 | |||
2145 | xloc: |
||
2146 | dd 0 |
||
2147 | yloc: |
||
2148 | dd 0 |
||
2149 | |||
2150 | tempdiv: |
||
2151 | dd 0 |
||
2152 | |||
2153 | |||
2154 | tex1: |
||
2155 | ; the texture ( dd 0xRRGGBB,0xRRGGBB... 64*64*32 Bit) |
||
2156 | include "wall3.inc" |
||
2157 | |||
2158 | |||
2159 | labelt: |
||
2160 | db 'MOS3DE',0 |
||
2161 | |||
2162 | labellen: |
||
2163 | |||
2164 | I_END:=319 |
||
2165 | |||
2166 | |||
2167 | |||
2168 |