Subversion Repositories Kolibri OS

Rev

Rev 31 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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