Subversion Repositories Kolibri OS

Rev

Rev 37 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 halyavin 1
;
2
;   Fisheye Raycasting Engine Etc. FREE3D for MENUETOS by Dieter Marfurt
3
;   Version 0.4 (requires some texture-files to compile (see Data Section))
4
;   dietermarfurt@angelfire.com - www.melog.ch/mos_pub/
5
;   Don't hit me - I'm an ASM-Newbie... since years :)
6
;
7
;   Compile with FASM for Menuet (requires .INC files - see DATA Section)
8
;
9
 
10
use32
11
 
12
               org    0x0
13
 
14
               db     'MENUET01'              ; 8 byte id
15
               dd     0x01                    ; header version
16
               dd     START                   ; start of code
17
               dd     I_END                   ; size of image
18
               dd     0x300000                ; memory for app
19
               dd     0x7fff0                 ; esp
20
               dd     0x0 , 0x0               ; I_Param , I_Icon
21
 
22
include 'lang.inc'
23
START:                          ; start of execution
24
 
25
    call draw_window            ; at first, draw the window
26
    call draw_stuff
27
 
28
gamestart:
29
;   ******* MOUSE CHECK *******
30
;    mov eax,37    ; check mouse (use mouse over window to navigate)
31
;    mov ebx,2     ; check mousebuttons
32
;    int 0x40
33
;    cmp eax,0    ; only use mouse when button down
34
;    je noneed    ; deactivated cause of disappear-bug etc.
35
    mov eax,37
36
    mov ebx,1     ; check mouseposition
37
    int 0x40
38
 
39
    mov ebx,eax
40
    shr eax,16
41
    and eax,0x0000FFFF  ; mousex
42
    and ebx,0x0000FFFF  ; mousey
43
 
44
    cmp eax,5  ; mouse out of window ?
45
    jb check_refresh  ; it will prevent an app-crash
46
    cmp ebx,22
47
    jb check_refresh
48
    cmp eax, 640
49
    jg check_refresh
50
    cmp ebx,501
51
    jg check_refresh
52
 
53
    cmp eax,315 ; navigating?
54
    jb m_left
55
    cmp eax,325 ;
56
    jg m_right
57
continue:
58
    cmp ebx,220 ;
59
    jb s_up
60
    cmp ebx,260 ;
61
    jg s_down
62
;   ******* END OF MOUSE CHECK *******
63
check_refresh:
64
 
65
;    mov eax,23  ; wait for system event with 10 ms timeout
66
;    mov ebx,1   ; thats max 100 FPS
67
    mov eax,11 ; ask no wait for full speed
68
    int  0x40
69
 
70
    cmp  eax,1                  ; window redraw request ?
71
    je   red2
72
    cmp  eax,2                  ; key in buffer ?
73
    je   key2
74
    cmp  eax,3                  ; button in buffer ?
75
    je   button2
76
 
77
    mov edi,[mouseya] ; check flag if a refresh has to be done
78
    cmp edi,1
79
    jne gamestart
80
    mov [mouseya],dword 0
81
    call draw_stuff
82
 
83
 
84
    jmp gamestart
85
 
86
; END OF MAINLOOP
87
 
88
red2:                          ; redraw
89
    call draw_window
90
    call draw_stuff
91
    jmp  gamestart
92
 
93
key2:                          ; key
94
    mov  eax,2
95
    int  0x40
96
    cmp  al,1
97
    je   gamestart     ; keybuffer empty
98
 
99
    cmp ah,27    ; esc=End App
100
    je finish
101
 
102
    cmp  ah,178  ; up
103
    je   s_up
104
    cmp  ah,177  ; down
105
    je   s_down
106
    cmp  ah,176  ; left
107
    je   s_left
108
    cmp  ah,179  ; right
109
    je   s_right
110
 
111
    jmp gamestart ; was any other key
112
 
113
 
114
s_up:             ; walk forward (key or mouse)
115
    mov eax,[vpx]
116
    mov ebx,[vpy]
117
 
118
 
119
    mov ecx,[vheading]
120
    imul ecx,4
121
    add ecx,sinus
122
    mov edi,[ecx]
123
 
124
    mov edx,[vheading]
125
    imul edx,4
126
    add edx,sinus
127
    add edx,3600
128
    cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600
129
    jb ok200
130
    sub edx,14400
131
    ok200:
132
    mov esi,[edx]
133
;    sal esi,1  ; edit walking speed here
134
;    sal edi,1
135
 
136
    add eax,edi ; newPx
137
    add ebx,esi ; newPy
138
    mov edi,eax ; newPx / ffff
139
    mov esi,ebx ; newPy / ffff
140
    sar edi,16
141
    sar esi,16
142
    mov ecx,esi
143
    sal ecx,5 ; equal *32
144
    add ecx,edi
145
    add ecx,grid
146
    cmp [ecx],byte 0  ; collision check
147
    jne cannotwalk0
148
    mov [vpx],eax
149
    mov [vpy],ebx
150
    mov [mouseya],dword 1 ; set refresh flag
151
cannotwalk0:
152
    jmp check_refresh
153
 
154
s_down:                    ; walk backward
155
    mov eax,[vpx]
156
    mov ebx,[vpy]
157
 
158
    mov ecx,[vheading]
159
    imul ecx,4
160
    add ecx,sinus
161
    mov edi,[ecx]
162
 
163
    mov edx,[vheading]
164
    imul edx,4
165
    add edx,sinus
166
    add edx,3600
167
    cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600
168
    jb ok201
169
    sub edx,14400
170
    ok201:
171
 
172
    mov esi,[edx]
173
;    sal esi,1  ; edit walking speed here
174
;    sal edi,1
175
 
176
    sub eax,edi ; newPx
177
    sub ebx,esi ; newPy
178
    mov edi,eax ; newPx / ffff
179
    mov esi,ebx ; newPy / ffff
180
    sar edi,16
181
    sar esi,16
182
    mov ecx,esi
183
    sal ecx,5
184
    add ecx,edi
185
    add ecx,grid
186
    cmp [ecx],byte 0
187
    jne cannotwalk1
188
    mov [vpx],eax
189
    mov [vpy],ebx
190
    mov [mouseya],dword 1
191
cannotwalk1:
192
    jmp check_refresh
193
 
194
s_left:                                   ; turn left (key)
195
    mov edi,[vheading]  ; heading
196
    add edi,50
197
    cmp edi,3600
198
    jb ok_heading0
199
    sub edi,3600
200
    ok_heading0:
201
    mov [vheading],edi
202
    mov [mouseya],dword 1
203
    jmp check_refresh
204
 
205
s_right:                                  ; turn right
206
    mov edi,[vheading]
207
    sub edi,50
208
    cmp edi,-1
209
    jg ok_heading1
210
    add edi,3600
211
    ok_heading1:
212
    mov [vheading],edi
213
    mov [mouseya],dword 1
214
    jmp check_refresh
215
 
216
m_left:                                   ; turn left (mouse)
217
    mov edi,[vheading]  ; heading
218
    mov ecx,315
219
    sub ecx,eax
220
    sar ecx,2
221
    add edi,ecx
222
    cmp edi,3600
223
    jb ok_heading2
224
    sub edi,3600
225
    ok_heading2:
226
    mov [vheading],edi
227
    mov [mouseya],dword 1
228
    jmp continue    ; allow both: walk and rotate
229
 
230
m_right:                                  ; turn right
231
    mov edi,[vheading]
232
    sub eax,325
233
    sar eax,2
234
    sub edi,eax
235
    cmp edi,-1
236
    jg ok_heading3
237
    add edi,3600
238
    ok_heading3:
239
    mov [vheading],edi
240
    mov [mouseya],dword 1
241
    jmp continue
242
 
243
 
244
 
245
  button2:                       ; button
246
    mov  eax,17                  ; get id
247
    int  0x40
248
    cmp  ah,1                   ; button id=1 ?
249
    jne  gamestart
250
 
251
; eo GAME mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
252
 finish:
253
    mov  eax,-1                 ; close this program
254
    int  0x40
255
 
256
 
257
;   *********************************************
258
;   *******  WINDOW DEFINITIONS AND DRAW ********
259
;   *********************************************
260
 
261
 
262
draw_window:
263
 
264
    mov  eax,12                    ; function 12:tell os about windowdraw
265
    mov  ebx,1                     ; 1, start of draw
266
    int  0x40
267
 
268
                                   ; DRAW WINDOW
269
    mov  eax,0                     ; function 0 : define and draw window
270
    mov  ebx,50*65536+649         ; [x start] *65536 + [x size]
271
    mov  ecx,50*65536+504         ; [y start] *65536 + [y size]
272
    mov  edx,0x02ffffff            ; color of work area RRGGBB,8->color gl
273
    mov  esi,0x80777777            ; color of grab bar  RRGGBB,8->color gl
274
    mov  edi,0x00777777            ; color of frames    RRGGBB
275
    int  0x40
276
 
277
                                   ; WINDOW LABEL
278
    mov  eax,4                     ; function 4 : write text to window
279
    mov  ebx,8*65536+8             ; [x start] *65536 + [y start]
280
    mov  ecx,0x00ddeeff            ; color of text RRGGBB
281
    mov  edx,labelt                ; pointer to text beginning
282
    mov  esi,labellen-labelt       ; text length
283
    int  0x40
284
 
285
                                   ; CLOSE BUTTON
286
    mov  eax,8                     ; function 8 : define and draw button
287
    mov  ebx,(649-19)*65536+12     ; [x start] *65536 + [x size]
288
    mov  ecx,5*65536+12            ; [y start] *65536 + [y size]
289
    mov  edx,1                     ; button id
290
    mov  esi,0x777777              ; button color RRGGBB
291
    int  0x40
292
 
293
 
294
    mov  eax,12                    ; function 12:tell os about windowdraw
295
    mov  ebx,2                     ; 2, end of draw
296
    int  0x40
297
 
298
    ret
299
 
300
;   *********************************************
301
;   *******       COMPUTE 3D-VIEW        ********
302
;   *********************************************
303
draw_stuff:
304
 
305
 
306
mov [step1],dword 1
307
;mov [step64],dword 64
308
    mov esi,[vheading]
309
    add esi,320
310
    mov [va],esi
311
    mov eax,[vheading]
312
    sub eax,320
313
    mov [vacompare],eax
314
;------------------------------------ CAST 640 PIXEL COLUMNS ---------------
315
; FOR A=320+heading to -319+heading step -1 (a is stored in [va])
316
;---------------------------------------------------------------------------
317
;    mov edx,5
318
    mov [vx1],dword 0  ;5  ;edx        ; init x1 ... pixelcolumn
319
for_a:
320
mov edx,[vx1]
321
mov [vx1b],edx
322
sub [vx1b],dword 320
323
    mov edx,[va]  ; a2
324
    cmp edx,-1   ; a2 is a mod 3600
325
    jg ok1
326
    add edx,3600
327
ok1:
328
    cmp edx,3600
329
    jb ok2
330
    sub edx,3600
331
ok2:
332
 
333
; get stepx and stepy
334
    mov ecx,edx
335
    imul ecx,4
336
    add ecx,sinus     ; pointer to stepx
337
    mov esi,[ecx]
338
    sar esi,4         ; accuracy
339
    mov [vstepx],esi  ; store stepx
340
 
341
    mov esi,edx
342
    imul esi,4
343
    add esi,sinus  ; pointer to stepy
344
    add esi,3600
345
    cmp esi,eosinus ;cosinus taken from ((sinus plus 900) mod 3600)
346
    jb ok202
347
    sub esi,14400
348
    ok202:
349
 
350
    mov ecx,[esi]
351
    sar ecx,4
352
    mov [vstepy],ecx ; store stepy
353
 
354
 
355
    mov eax,[vpx]    ; get Camera Position
356
    mov ebx,[vpy]
357
    mov [vxx],eax    ; init caster position
358
    mov [vyy],ebx
359
 
360
    mov edi,0        ; init L (number of raycsting-steps)
361
    mov [step1],dword 1  ; init Caster stepwidth for L
362
 
363
 ;  raycast a pixel column.................................
364
raycast:
365
    add edi,[step1]  ; count caster steps
366
;jmp nodouble ; use this to prevent blinking/wobbling textures: much slower!
367
 
368
    cmp edi,32
369
    je double
370
    cmp edi,512
371
    je double
372
    cmp edi,1024
373
    je double
374
    jmp nodouble
375
 
376
    double:
377
    mov edx,[step1]
378
    sal edx,1
379
    mov [step1],edx
380
 
381
    mov edx,[vstepx]
382
    sal edx,1
383
    mov [vstepx],edx
384
 
385
    mov edx,[vstepy]
386
    sal edx,1
387
    mov [vstepy],edx
388
 
389
nodouble:
390
 
391
    mov eax,32000 ; 3600 ; determine Floors Height based on distance
392
    mov edx,0
393
    mov ebx,edi
394
 
395
    div ebx
396
    mov esi,eax
397
    mov [vdd],esi
398
    mov edx,260
399
    sub edx,esi
400
    mov [vh],edx
401
 
402
    cmp edx,22
403
    jb no_nu_pixel
404
    cmp edx,259
405
    jg no_nu_pixel ; draw only new pixels
406
    cmp edx,[h_old]
407
    je no_nu_pixel
408
 
409
    mov eax,[vxx] ; calc floor pixel
410
    mov ebx,[vyy]
411
 
412
    and eax,0x0000FFFF
413
    and ebx,0x0000FFFF
414
 
415
    shr eax,10
416
    shr ebx,10    ; pixel coords inside Texture x,y 64*64
417
    mov [xfrac],eax
418
    mov [yfrac],ebx
419
 
420
 
421
 
422
    ; plot floor pixel !!!!
423
    mov [vl],edi      ; save L
424
    mov [ytemp],esi ; remember L bzw. H
425
 
426
    mov edi,[yfrac] ; get pixel color of this floor pixel
427
    sal edi,8
428
    mov esi,[xfrac]
429
    sal esi,2
430
    add edi,esi
431
    add edi,wall ; in fact its floor, just using the wall texture :)
432
    mov edx,[edi]
433
    mov [remesi],esi
434
 
435
    ;**** calculate pixel adress:****
436
    mov esi,[ytemp]
437
    add esi,240
438
    imul esi,1920
439
    add esi,[vx1]
440
    add esi,[vx1]
441
    add esi,[vx1]
442
    add esi,0x80000
443
 
444
    cmp esi,0x80000+1920*480
445
    jg foff0
446
    cmp esi,0x80000
447
    jb foff0
448
    ; now we have the adress of the floor-pixel color in edi
449
    ; and the adress of the pixel in the image in esi
450
 
451
    mov edx,[edi]
452
    ;******************** custom distance DARKEN Floor
453
 
454
    mov eax,[vdd]
455
 
456
; jmp nodark0 ; use this to deactivate darkening floor (a bit faster)
457
 
458
    cmp eax,80
459
    jg nodark0
460
    ;                split rgb
461
 
462
    mov [blue],edx
463
    and [blue],dword 255
464
 
465
    shr edx,8
466
    mov [green],edx
467
    and [green],dword 255
468
 
469
    shr edx,8
470
    mov [red],edx
471
    and [red],dword 255
472
 
473
    mov eax,81    ; darkness parameter
474
    sub eax,[vdd]
475
    sal eax,1
476
 
477
;                        reduce rgb
478
    sub [red],eax
479
    cmp [red], dword 0
480
    jg notblack10
481
    mov [red],dword 0
482
    notblack10:
483
 
484
    sub [green],eax
485
    cmp [green],dword 0
486
    jg notblack20
487
    mov [green],dword 0
488
    notblack20:
489
 
490
    mov edx,[blue]
491
    sub [blue],eax
492
    cmp [blue],dword 0
493
    jg notblack30
494
    mov [blue],dword 0
495
    notblack30:
496
 
497
    shl dword [red],16  ; reassemble rgb
498
    shl dword [green],8
499
    mov edx,[red]
500
    or edx,[green]
501
    or edx,[blue]
502
 
503
nodark0:
504
;   eo custom darken floor
505
 
506
 
507
    mov eax,edx
508
    mov [esi],eax ; actually draw the floor pixel
509
 
510
 ; paint "forgotten" pixels
511
 
512
    mov edx,[lasty]
513
    sub edx,1920
514
    cmp esi,edx
515
    je foff0
516
    mov [esi+1920],eax
517
 
518
    sub edx,1920
519
    cmp esi,edx
520
    je foff0
521
    mov [edx+1920],eax
522
 
523
    sub edx,1920
524
    cmp esi,edx
525
    je foff0
526
    mov [edx+1920],eax
527
 
528
foff0:
529
mov [lasty],esi
530
;**** end of draw floor pixel ****
531
 
532
    mov esi,[remesi]
533
    mov edi,[vl] ; restore L
534
 
535
no_nu_pixel:
536
 
537
 
538
    mov esi,[vh]
539
    mov [h_old],esi
540
 
541
    mov eax,[vxx]
542
    mov ebx,[vyy]
543
 
544
    add eax,[vstepx]  ; casting...
545
    add ebx,[vstepy]
546
 
547
    mov [vxx],eax
548
    mov [vyy],ebx
549
 
550
    sar eax,16
551
    sar ebx,16
552
 
553
    mov [vpxi],eax    ; casters position in Map Grid
554
    mov [vpyi],ebx
555
 
556
    mov edx,ebx
557
;    imul edx,32
558
    shl edx,5
559
    add edx,grid
560
    add edx,eax
561
    cmp [edx],byte 0   ; raycaster reached a wall? (0=no)
562
    jne getout
563
    cmp edi,10000        ; limit view range
564
    jb raycast
565
;................................................
566
getout:
567
    mov eax,[edx]      ; store Grid Wall Value for Texture Selection
568
    mov [vk],eax
569
 
570
 call blur  ; deactivate this (blurs the near floor) : a bit faster
571
 
572
; simply copy floor to ceil pixel column here
573
;jmp nocopy ; use this for test purposes
574
 
575
    pusha
576
    mov eax,0x80000+1920*240
577
    mov ebx,0x80000+1920*240
578
 
579
copyfloor:
580
    sub eax,1920
581
    add ebx,1920
582
 
583
    mov ecx,0
584
    add ecx,[vx1]
585
    add ecx,[vx1]
586
    add ecx,[vx1]
587
 
588
    mov edx,ecx
589
    add ecx,eax
590
    add edx,ebx
591
 
592
    mov esi,[edx]
593
    mov [ecx],esi
594
 
595
    cmp eax,0x80000
596
    jg copyfloor
597
 
598
    popa
599
; *** end of copy floor to ceil
600
;nocopy:
601
;__________________________________________________________________________
602
 
603
 
604
; draw this pixelrows wall
605
    mov [vl],edi
606
 
607
    mov edi,260
608
    sub edi,[vdd]
609
    cmp edi,0
610
    jg ok3
611
    xor edi,edi
612
    ok3:
613
    mov [vbottom],edi  ; end wall ceil (or window top)
614
 
615
    mov esi,262
616
    add esi,[vdd]  ; start wall floor
617
 
618
    xor edi,edi
619
 
620
; somethin is wrong with xfrac,so recalc...
621
 
622
    mov eax,[vxx]
623
    and eax,0x0000FFFF
624
    shr eax,10
625
    mov [xfrac],eax
626
 
627
    mov eax,[vyy]
628
    and eax,0x0000FFFF
629
    shr eax,10
630
    mov [yfrac],eax
631
 
632
    pixelrow:
633
 
634
; find each pixels color:
635
 
636
    add edi,64
637
    sub esi,1
638
    cmp esi, 502  ; dont calc offscreen-pixels
639
    jg speedup
640
 
641
    xor edx,edx
642
    mov eax, edi
643
    mov ebx,[vdd]
644
    add ebx,[vdd]
645
    div ebx
646
    and eax,63
647
    mov [ytemp],eax   ; get y of texture for wall
648
 
649
    mov eax,[xfrac]
650
    add eax,[yfrac]
651
 
652
    and eax,63
653
    mov [xtemp],eax   ; get x of texture for wall
654
 
655
    ; now prepare to plot that wall-pixel...
656
    mov [remedi],edi
657
 
658
    mov edi,[ytemp]
659
    sal edi,8
660
    mov edx,[xtemp]
661
    sal edx,2
662
    add edi,edx
663
 
664
    mov eax,[vk] ; determine which texture should be used
665
    and eax,255
666
 
667
    cmp eax,1
668
    jne checkmore1
669
    add edi,ceil
670
    jmp foundtex
671
    checkmore1:
672
 
673
    cmp eax,2
674
    jne checkmore2
675
    add edi,wall
676
    jmp foundtex
677
    checkmore2:
678
 
679
    cmp eax,3
680
    jne checkmore3
681
    add edi,wall2
682
    jmp foundtex
683
    checkmore3:
684
 
685
    cmp eax,4
686
    jne checkmore4
687
    add edi,wall3
688
    jmp foundtex
689
    checkmore4:
690
 
691
    cmp eax,5
692
    jne checkmore5
693
    add edi,wall4
694
    jmp foundtex
695
    checkmore5:
696
 
697
    cmp eax,6
698
    jne checkmore6
699
    add edi,wall5
700
    jmp foundtex
701
    checkmore6:
702
 
703
    cmp eax,7
704
    jne checkmore7
705
    add edi,wall6
706
    jmp foundtex
707
    checkmore7:
708
 
709
    cmp eax,8
710
    jne checkmore8
711
    add edi,wall7
712
    jmp foundtex
713
    checkmore8:
714
 
715
    foundtex:
716
 
717
    mov edx,[edi]    ; get pixel color inside texture
718
 
719
; ***pseudoshade south-west
720
jmp east ; activate this for southwest pseudoshade : a bit slower + blink-bug
721
    mov edi,[yfrac]
722
    mov [pseudo],dword 0 ; store flag for custom distance darkening
723
    cmp edi,[xfrac]
724
    jge east
725
    and edx,0x00FEFEFE
726
    shr edx,1
727
    mov [pseudo],dword 1
728
east:
729
 
730
 call dark_distance ; deactivate wall distance darkening: a bit faster
731
 
732
; ******* DRAW WALL PIXEL *******
733
    mov eax,esi
734
    sub eax,22
735
    imul eax,1920
736
    add eax,[vx1]
737
    add eax,[vx1]
738
    add eax,[vx1]
739
    add eax,0x80000
740
 
741
    cmp eax,0x80000+1920*480
742
    jg dont_draw
743
    cmp eax,0x80000
744
    jb dont_draw
745
    mov [eax],edx ; actually set the pixel in the image
746
; *** eo draw wall pixel
747
dont_draw:
748
    mov edi,[remedi]
749
speedup:
750
    cmp esi,[vbottom]  ; end of this column?
751
    jg pixelrow
752
 
753
    mov edi,[vl]  ; restoring
754
    mov eax,[vx1] ; inc X1
755
    add eax,1
756
    mov [vx1],eax
757
 
758
    ;*** NEXT A ***
759
    mov esi,[va]
760
    sub esi,1
761
    mov [va],esi
762
    cmp esi,[vacompare]
763
    jg for_a
764
    ;*** EO NEXT A ***
765
;---------------------------------------------------------------------------
766
 
767
 
768
; **** put image !!!!!****
769
; ***********************
770
    mov eax,7
771
    mov ebx,0x80000
772
    mov ecx,640*65536+480
773
    mov edx,5*65536+20
774
    int 0x40
775
 
776
    ret
777
 
778
blur:
779
 
780
pusha
781
mov eax,0x080000+360*1920
782
 
783
copyfloor2:
784
    add eax,1920
785
    mov ebx,eax
786
    add ebx,[vx1]
787
    add ebx,[vx1]
788
    add ebx,[vx1]
789
 
790
    mov ecx,[ebx-15]
791
    and ecx,0x00FEFEFE
792
    shr ecx,1
793
    mov edx,[ebx-12]
794
    and edx,0x00FEFEFE
795
    shr edx,1
796
    add edx,ecx
797
    and edx,0x00FEFEFE
798
    shr edx,1
799
 
800
     mov ecx,[ebx-9]
801
     and ecx,0x00FEFEFE
802
     shr ecx,1
803
     add edx,ecx
804
 
805
      and edx,0x00FEFEFE
806
      shr edx,1
807
 
808
      mov ecx,[ebx-6]
809
      and ecx,0x00FEFEFE
810
      shr ecx,1
811
      add edx,ecx
812
 
813
       and edx,0x00FEFEFE
814
       shr edx,1
815
 
816
       mov ecx,[ebx-3]
817
       and ecx,0x00FEFEFE
818
       shr ecx,1
819
       add edx,ecx
820
 
821
        and edx,0x00FEFEFE
822
        shr edx,1
823
 
824
        mov ecx,[ebx]
825
        and ecx,0x00FEFEFE
826
        shr ecx,1
827
        add edx,ecx
828
 
829
    mov [ebx],edx
830
 
831
    cmp eax,0x80000+478*1920
832
    jb copyfloor2
833
 
834
popa
835
 
836
ret
837
 
838
 
839
 
840
; ******* Darken by Distance *******
841
dark_distance:
842
 
843
; color must be in edx, wall height in [vdd]
844
 
845
    mov eax,[vdd]
846
    cmp eax,50
847
    jg nodark
848
    ;                split rgb
849
 
850
    mov [blue],edx
851
    and [blue],dword 255
852
 
853
    shr edx,8
854
    mov [green],edx
855
    and [green],dword 255
856
 
857
    shr edx,8
858
    mov [red],edx
859
    and [red],dword 255
860
 
861
    mov eax,51    ; darkness parameter
862
    sub eax,[vdd]
863
    cmp [pseudo],dword 1
864
    je isdarkside
865
    sal eax,2
866
isdarkside:
867
 
868
;                        reduce rgb
869
    sub [red],eax
870
    cmp [red], dword 0
871
    jg notblack10b
872
    mov [red],dword 0
873
    notblack10b:
874
 
875
    sub [green],eax
876
    cmp [green],dword 0
877
    jg notblack20b
878
    mov [green],dword 0
879
    notblack20b:
880
 
881
    mov edx,[blue]
882
    sub [blue],eax
883
    cmp [blue],dword 0
884
    jg notblack30b
885
    mov [blue],dword 0
886
    notblack30b:
887
 
888
    shl dword [red],16 ; reassemble rgb
889
    shl dword [green],8
890
    mov edx,[red]
891
    or edx,[green]
892
    or edx,[blue]
893
    mov eax,edx
894
 
895
nodark:
896
 
897
    ret
898
 
899
 
900
; DATA AREA
901
 
902
;ceil=ceil
903
;wall=wall floor
904
;2 corner stone
905
;3 leaf mosaic
906
;4 closed window
907
;5 greek mosaic
908
;6 old street stones
909
;7 maya wall
910
 
911
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
944
 
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
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
1305
dd -229,-217,-206,-194,-183,-172,-160,-149,-137,-126
1306
dd -114,-103,-92,-80,-69,-57,-46,-34,-23,-11
1307
 
1308
eosinus:
1309
 
1310
col1:
1311
 dd 0
1312
; misc raycaster vars:
1313
vxx:
1314
 dd 0
1315
vyy:
1316
 dd 0
1317
vl:
1318
 dd 0
1319
vpx:
1320
dd 0x0001FFFF ; initial player position * 0xFFFF
1321
 vpy:
1322
dd 0x0001FFFF
1323
vstepx:
1324
 dd 0
1325
vstepy:
1326
 dd 0
1327
vxxint:
1328
 dd 0
1329
vyyint:
1330
 dd 0
1331
vk:
1332
 dd 0
1333
va:
1334
 dd 0
1335
va2:
1336
 dd 0
1337
vdd:
1338
 dd 0
1339
vx1:
1340
 dd 0
1341
vx1b:
1342
 dd 0
1343
vh:
1344
 dd 0
1345
vdt:
1346
 dd 0
1347
vheading: ; initial heading: 0 to 3599
1348
 dd 0
1349
vacompare:
1350
 dd 0
1351
vpxi:
1352
 dd 0
1353
vpyi:
1354
 dd 0
1355
wtolong:
1356
 dw 0,0
1357
 
1358
xtemp:
1359
 dd 0
1360
ytemp:
1361
 dd 0
1362
xfrac:
1363
 dd 0
1364
yfrac:
1365
 dd 0
1366
h_old:
1367
 dd 0
1368
vbottom:
1369
 dd 0
1370
mouseya:
1371
 dd 0
1372
remeax:
1373
 dd 0
1374
remebx:
1375
 dd 0
1376
remecx:
1377
 dd 0
1378
remedx:
1379
 dd 0
1380
remedi:
1381
 dd 0
1382
remesi:
1383
 dd 0
1384
red:
1385
 dd 0
1386
green:
1387
 dd 0
1388
blue:
1389
 dd 0
1390
pseudo:
1391
 dd 0
1392
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:
1423