Subversion Repositories Kolibri OS

Rev

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

Rev 3066 Rev 5486
1
; DATA AREA  ************************************
1
; DATA AREA  ************************************
2
 
2
 
3
	i3		dw	3
3
	i3		dw	3
4
	i256		dw	256
4
	i256		dw	256
5
	i255d		dd	255
5
	i255d		dd	255
6
	dot_max 	dd	1.0	 ; dot product max and min
6
	dot_max 	dd	1.0	 ; dot product max and min
7
	dot_min 	dd	0.0
7
	dot_min 	dd	0.0
8
	env_const	dd	1.05
8
	env_const	dd	1.05
9
	correct_tex	dw	255
9
	correct_tex	dw	255
10
	tex_x_div2	dw	TEX_X  / 2
10
	tex_x_div2	dw	TEX_X  / 2
11
	tex_y_div2	dw	TEX_Y  / 2
11
	tex_y_div2	dw	TEX_Y  / 2
12
	xobs		dw	0 ;SIZE_X / 2 ;200 ;observer  = camera
12
	xobs		dw	0 ;SIZE_X / 2 ;200 ;observer  = camera
13
	yobs		dw	0 ;SIZE_Y / 2 ;200 ;coordinates
13
	yobs		dw	0 ;SIZE_Y / 2 ;200 ;coordinates
14
	zobs		dw	-500
14
	zobs		dw	-500
15
	size_x		dw	SIZE_X
15
	size_x		dw	SIZE_X
16
	size_y		dw	SIZE_Y
16
	size_y		dw	SIZE_Y
17
 
17
 
18
	re_alloc_flag db 0
18
	re_alloc_flag db 0
19
	angle_counter dw 0
19
	angle_counter dw 0
20
	piD180	      dd 0.017453292519943295769236907684886
20
	piD180	      dd 0.017453292519943295769236907684886
21
	piD128	      dd 0.024544
21
	piD128	      dd 0.024544
22
	const6	      dw 6,6,6,6
22
	const6	      dw 6,6,6,6
23
	x_offset      dw SIZE_X / 2
23
	x_offset      dw SIZE_X / 2
24
	y_offset      dw SIZE_Y / 2
24
	y_offset      dw SIZE_Y / 2
25
	z_offset      dw 0
25
	z_offset      dw 0
26
	rsscale       dd 175.0		 ; next real scale
26
	rsscale       dd 175.0		 ; next real scale
27
	vect_x	      dw SIZE_X / 2
27
	vect_x	      dw SIZE_X / 2
28
	vect_y	      dw SIZE_Y / 2
28
	vect_y	      dw SIZE_Y / 2
29
	vect_z	      dw 0
29
	vect_z	      dw 0
30
	angle_x       dw 0
30
	angle_x       dw 0
31
	angle_y       dw 0
31
	angle_y       dw 0
32
	angle_z       dw 0
32
	angle_z       dw 0
33
	sin_amplitude dd 50
33
	sin_amplitude dd 50
34
	sin_frq       dd 0.7
34
	sin_frq       dd 0.7
35
	sin_delta     dd 0.07	 ; wave frequency granularity
35
	sin_delta     dd 0.07	 ; wave frequency granularity
-
 
36
	convert_muler:
-
 
37
		      dd 1, 10, 100, 1000, 10000
-
 
38
	XYZpartices:
-
 
39
		      db 'X','Y','Z'
-
 
40
	i10	      dw 10
36
 
41
 
37
 
42
 
38
	menu:
43
	menu:
39
	       db 2		   ; button number  = index
44
	       db 2		   ; button number  = index
40
	       db 'rotary    '	   ; label
45
	       db 'rotary    '	   ; label
41
	       db 3		   ; max flag  + 1 , if = 255, no flag
46
	       db 3		   ; max flag  + 1 , if = 255, no flag
42
 r_flag        db 1		   ; flag
47
 r_flag        db 1		   ; flag
43
	       dd axl_f 	   ; offset to flags description
48
	       dd axl_f 	   ; offset to flags description
44
 
49
 
45
	       db 3
50
	       db 3
46
	       db 'shd. model'
51
	       db 'shd. model'
47
	       db 12
52
	       db 12
48
 dr_flag       db 0
53
 dr_flag       db 0
49
	       dd shd_f
54
	       dd shd_f
50
 
55
 
51
	       db 4
56
	       db 4
52
	       db 'speed     '
57
	       db 'speed     '
53
	       db 2
58
	       db 2
54
 speed_flag    db 0
59
 speed_flag    db 0
55
	       dd spd_f
60
	       dd spd_f
56
 
61
 
57
	       db 5
62
	       db 5
58
	       db 'zoom out  '
63
	       db 'zoom out  '
59
	       db 255
64
	       db 255
60
	       db ?
65
	       db ?
61
	       dd ?
66
	       dd ?
62
 
67
 
63
	       db 6
68
	       db 6
64
	       db 'zoom in   '
69
	       db 'zoom in   '
65
	       db 255
70
	       db 255
66
	       db ?
71
	       db ?
67
	       dd ?
72
	       dd ?
68
 
73
 
69
	       db 7
74
	       db 7
70
	       db 'catmull   '
75
	       db 'catmull   '
71
	       db 2
76
	       db 2
72
catmull_flag   db 1
77
catmull_flag   db 1
73
	       dd onoff_f
78
	       dd onoff_f
74
 
79
 
75
	       db 8
80
	       db 8
76
	       db 'culling   '
81
	       db 'culling   '
77
	       db 2
82
	       db 2
78
culling_flag   db 1
83
culling_flag   db 1
79
	       dd onoff_f
84
	       dd onoff_f
80
 
85
 
81
	       db 9
86
	       db 9
82
	       db 'rand.light'
87
	       db 'rand.light'
83
	       db 255
88
	       db 255
84
	       db ?
89
	       db ?
85
	       dd ?
90
	       dd ?
86
 
91
 
87
	       db 10
92
	       db 10
88
	       db 'blur      '
93
	       db 'blur      '
89
	       db 6
94
	       db 6
90
blur_flag      db 0
95
blur_flag      db 0
91
	       dd blur_f
96
	       dd blur_f
92
 
97
 
93
	       db 11
98
	       db 11
94
	       db 'mirror x  '
99
	       db 'mirror x  '
95
	       db 2
100
	       db 2
96
mirr_x_flag    db 0
101
mirr_x_flag    db 0
97
	       dd onoff_f
102
	       dd onoff_f
98
 
103
 
99
	       db 12
104
	       db 12
100
	       db 'mirror y  '
105
	       db 'mirror y  '
101
	       db 2
106
	       db 2
102
mirr_y_flag    db 0
107
mirr_y_flag    db 0
103
	       dd onoff_f
108
	       dd onoff_f
104
 
109
 
105
	       db 13
110
	       db 13
106
	       db 'mirror z  '
111
	       db 'mirror z  '
107
	       db 2
112
	       db 2
108
mirr_z_flag    db 0
113
mirr_z_flag    db 0
109
	       dd onoff_f
114
	       dd onoff_f
110
 
115
 
111
	       db 14
116
	       db 14
112
	       db 'xchg      '
117
	       db 'xchg      '
113
	       db 4
118
	       db 4
114
xchg_flag      db 0
119
xchg_flag      db 0
115
	       dd xchg_f
120
	       dd xchg_f
116
 
121
 
117
	       db 15
122
	       db 15
118
	       db 'emboss    '
123
	       db 'emboss    '
119
	       db 2
124
	       db 2
120
emboss_flag    db 0
125
emboss_flag    db 0
121
	       dd onoff_f
126
	       dd onoff_f
122
 
127
 
123
	       db 16
128
	       db 16
124
	       db 'fire      '
129
	       db 'fire      '
125
	       db 3
130
	       db 3
126
fire_flag      db 0
131
fire_flag      db 0
127
	       dd blur_f
132
	       dd blur_f
128
 
133
 
129
	       db 17
134
	       db 17
130
	       db 'move      '
135
	       db 'move      '
131
	       db 3
136
	       db 3
132
move_flag      db 0
137
move_flag      db 0
133
	       dd move_f
138
	       dd move_f
134
 
139
 
135
		  db 18
140
		  db 18
136
		  db 'generate  '
141
		  db 'generate  '
137
		  db 6
142
		  db 6
138
generator_flag	  db 0
143
generator_flag	  db 0
139
		  dd blur_f
144
		  dd blur_f
140
 
145
 
141
		  db 19
146
		  db 19
142
		  db 'bumps     '
147
		  db 'bumps     '
143
		  db 2
148
		  db 2
144
bumps_flag	  db 0
149
bumps_flag	  db 0
145
		  dd bumps_f
150
		  dd bumps_f
146
 
151
 
147
		  db 20
152
		  db 20
148
		  db 'bumps deep'
153
		  db 'bumps deep'
149
		  db 4
154
		  db 4
150
bumps_deep_flag   db 3
155
bumps_deep_flag   db 3
151
		  dd bumps_d_f
156
		  dd bumps_d_f
152
 
157
 
153
		  db 21
158
		  db 21
154
		  db 're-map tex'
159
		  db 're-map tex'
155
		  db 255
160
		  db 255
156
map_tex_flag	  db ? ;1
161
map_tex_flag	  db ? ;1
157
		  dd ?	;bumps_d_f
162
		  dd ?	;bumps_d_f
158
 
163
 
159
		  db 22
164
		  db 22
160
		  db 'bright +  '
165
		  db 'bright +  '
161
		  db 6
166
		  db 6
162
inc_bright_flag   db 0 ;1
167
inc_bright_flag   db 0 ;1
163
		  dd blur_f
168
		  dd blur_f
164
 
169
 
165
		  db 23
170
		  db 23
166
		  db 'bright -  '
171
		  db 'bright -  '
167
		  db 6
172
		  db 6
168
dec_bright_flag   db 0 ;1
173
dec_bright_flag   db 0 ;1
169
		  dd blur_f
174
		  dd blur_f
170
 
175
 
171
		  db 24
176
		  db 24
172
		  db 'wav effect'
177
		  db 'wav effect'
173
		  db 2
178
		  db 2
174
sinus_flag	  db 0
179
sinus_flag	  db 0
175
		  dd onoff_f
180
		  dd onoff_f
176
 
181
 
177
;                  db 24
182
;                  db 24
178
;                  db 'max       '
183
;                  db 'max       '
179
;                  db 2
184
;                  db 2
180
;max_flag          db 0 ;1
185
;max_flag          db 0 ;1
181
;                  dd blur_f
186
;                  dd blur_f
182
;
187
;
183
;                  db 25
188
;                  db 25
184
;                  db 'min       '
189
;                  db 'min       '
185
;                  db 2
190
;                  db 2
186
;min_flag          db 0 ;1
191
;min_flag          db 0 ;1
187
;                  dd blur_f
192
;                  dd blur_f
188
 
193
 
189
 
194
 
190
 
195
 
191
;                  db 21
196
;                  db 21
192
;                  db 'light No. '
197
;                  db 'light No. '
193
;                  db 3
198
;                  db 3
194
;light_no_flag     db 0
199
;light_no_flag     db 0
195
;                  dd bumps_d_f
200
;                  dd bumps_d_f
196
 
201
 
197
;                db 22
202
;                db 22
198
;                db 'light comp'
203
;                db 'light comp'
199
;                db 3
204
;                db 3
200
;light_comp_flag db 0
205
;light_comp_flag db 0
201
;                dd light_component_f
206
;                dd light_component_f
202
 
207
 
203
;;                db 23
208
;;                db 23
204
;;                db 'col. comp'
209
;;                db 'col. comp'
205
;;                db 3
210
;;                db 3
206
;;color_comp_flag db 0
211
;;color_comp_flag db 0
207
;;                dd color_component_f
212
;;                dd color_component_f
208
 
213
 
209
 
214
 
210
	       db -1	   ; end mark
215
	       db -1	   ; end mark
211
 
216
 
212
 
217
 
213
flags:		   ; flags description
218
flags:		   ; flags description
214
 shd_f:
219
 shd_f:
215
    db 'flat'
220
    db 'flat'
216
    db 'grd '
221
    db 'grd '
217
    db 'env '
222
    db 'env '
218
    db 'bump'
223
    db 'bump'
219
    db 'tex '
224
    db 'tex '
220
    db 'pos '
225
    db 'pos '
221
    db 'dots'
226
    db 'dots'
222
    db 'txgr'
227
    db 'txgr'
223
    db '2tex'
228
    db '2tex'
224
    db 'btex'
229
    db 'btex'
225
    db 'cenv'
230
    db 'cenv'
226
    db 'grdl'
231
    db 'grdl'
227
 spd_f:
232
 spd_f:
228
    db 'idle'
233
    db 'idle'
229
    db 'full'
234
    db 'full'
230
 axl_f:
235
 axl_f:
231
    db ' y  '
236
    db ' y  '
232
    db 'x+y '
237
    db 'x+y '
233
    db ' x  '
238
    db ' x  '
234
 onoff_f:
239
 onoff_f:
235
    db 'off '
240
    db 'off '
236
    db 'on  '
241
    db 'on  '
237
; light_component_f:
242
; light_component_f:
238
;    db 'norm '                ; diffuse   |
243
;    db 'norm '                ; diffuse   |
239
;    db 'min'                  ; specular  |  or sth. like this
244
;    db 'min'                  ; specular  |  or sth. like this
240
;    db 'max '                 ; emmisive  |
245
;    db 'max '                 ; emmisive  |
241
 
246
 
242
;; color_component_f:
247
;; color_component_f:
243
;;    db ' r  '
248
;;    db ' r  '
244
;;    db ' g  '
249
;;    db ' g  '
245
;;    db ' b  '
250
;;    db ' b  '
246
 
251
 
247
	  blur_f:	       ; blur, fire
252
	  blur_f:	       ; blur, fire
248
	    db 'off '
253
	    db 'off '
249
bumps_d_f:  db ' 1  '
254
bumps_d_f:  db ' 1  '
250
	    db ' 2  '
255
	    db ' 2  '
251
	    db ' 3  '
256
	    db ' 3  '
252
	    db ' 4  '
257
	    db ' 4  '
253
	    db ' 5  '
258
	    db ' 5  '
254
 
259
 
255
 xchg_f:
260
 xchg_f:
256
    db 'no  '
261
    db 'no  '
257
    db 'x<>y'
262
    db 'x<>y'
258
    db 'z<>x'
263
    db 'z<>x'
259
    db 'y<>z'
264
    db 'y<>z'
260
 move_f:
265
 move_f:
261
    db 'obj '
266
    db 'obj '
262
    db 'camr'
267
    db 'camr'
263
    db 'wave'
268
    db 'wave'
264
;    db 'lght'
269
;    db 'lght'
265
 bumps_f:
270
 bumps_f:
266
    db 'rand'
271
    db 'rand'
267
    db 'tex '
272
    db 'tex '
268
;    db 'cscl'
273
;    db 'cscl'
269
base_vector:
274
base_vector:
270
    labelvector:
275
    labelvector:
271
	db   'add vector'
276
	db   'add vector'
272
    labelvectorend:
277
    labelvectorend:
273
    labelyminus:
278
    labelyminus:
274
	db   'y -'
279
	db   'y -'
275
    labelyminusend:
280
    labelyminusend:
276
    labelzplus:
281
    labelzplus:
277
	db   'z +'
282
	db   'z +'
278
    labelzplusend:
283
    labelzplusend:
279
    labelxminus:
284
    labelxminus:
280
	db   'x -'
285
	db   'x -'
281
    labelxminusend:
286
    labelxminusend:
282
    labelxplus:
287
    labelxplus:
283
	db   'x +'
288
	db   'x +'
284
    labelxplusend:
289
    labelxplusend:
285
    labelzminus:
290
    labelzminus:
286
	db   'z -'
291
	db   'z -'
287
    labelzminusend:
292
    labelzminusend:
288
    labelyplus:
293
    labelyplus:
289
	db   'y +'
294
	db   'y +'
290
    labelyplusend:
295
    labelyplusend:
291
 
296
 
292
;navigation_size = $ - labelvector
297
;navigation_size = $ - labelvector
293
;        db   'set color '
298
;        db   'set color '
294
;        db   'r -'
299
;        db   'r -'
295
;        db   'g +'
300
;        db   'g +'
296
;        db   'b -'
301
;        db   'b -'
297
;        db   'b +'
302
;        db   'b +'
298
;        db   'g -'
303
;        db   'g -'
299
;        db   'r +'
304
;        db   'r +'
300
 
305
 
301
    labelt:
306
    labelt:
302
	db   'DEUS CARITAS EST'
307
	db   'DEUS CARITAS EST'
303
      if Ext=MMX
308
      if Ext=MMX
304
	db   ' (MMX)'
309
	db   ' (MMX)'
305
      end if
310
      end if
306
      if Ext=SSE
311
      if Ext=SSE
307
	db   ' (SSE)'
312
	db   ' (SSE)'
308
      end if
313
      end if
309
      if Ext=SSE2
314
      if Ext=SSE2
310
	db   ' (SSE2)'
315
	db   ' (SSE2)'
311
      end if
316
      end if
312
	db   ' 0.064',0
317
	db   ' 0.065',0
313
    labellen:
318
    labellen:
314
	STRdata db '-1        '
319
	STRdata db '-1        '
315
 
320
 
316
    all_lights_size dw lightsend-lights
321
    all_lights_size dw lightsend-lights
317
 
322
 
318
if USE_LFN
323
if USE_LFN
319
 
324
 
320
	file_info:
325
	file_info:
321
		dd	0
326
		dd	0
322
		dd	0
327
		dd	0
323
		dd	0
328
		dd	0
324
	 fsize	dd	0 ;180000 ; sizeof(workarea)
329
	 fsize	dd	0 ;180000 ; sizeof(workarea)
325
	 fptr	dd	0 ;workarea
330
	 fptr	dd	0 ;workarea
326
	file_name:
331
	file_name:
327
		db	'/rd/1/3d/house.3ds',0
332
		db	'/rd/1/3d/house.3ds',0
328
 
333
 
329
else
334
else
330
 
335
 
331
	file_info:
336
	file_info:
332
		dd 0
337
		dd 0
333
		dd 0
338
		dd 0
334
	 fsize	dd 1
339
	 fsize	dd 1
335
		dd workarea
340
		dd workarea
336
		dd hash_table
341
		dd hash_table
337
	file_name:
342
	file_name:
338
		db   '/rd/1/teapot.3ds',0
343
		db   '/rd/1/teapot.3ds',0
339
end if
344
end if
340
 
345
 
341
I_END:
346
I_END:
342
 
347
 
343
      rb 256
348
      rb 256
344
 
349
 
345
;=============================================
350
;=============================================
346
lights:
351
lights:
347
     .light_vector	  dd	  0.0,0.0,-1.0	 ; x,y,z  Z cooficient of vector must be negative
352
     .light_vector	  dd	  0.0,0.0,-1.0	 ; x,y,z  Z cooficient of vector must be negative
348
     .orginal_color_r	  db	  1		 ;  +12
353
     .orginal_color_r	  db	  1		 ;  +12
349
     .orginal_color_g	  db	  255		   ;
354
     .orginal_color_g	  db	  255		   ;
350
     .orginal_color_b	  db	  1		 ;  +14
355
     .orginal_color_b	  db	  1		 ;  +14
351
     .min_color_r	  db	  1		 ;
356
     .min_color_r	  db	  1		 ;
352
     .min_color_g	  db	  1		 ;  +16
357
     .min_color_g	  db	  1		 ;  +16
353
     .min_color_b	  db	  1		 ;
358
     .min_color_b	  db	  1		 ;
354
     .max_color_r	  db	  255		 ;
359
     .max_color_r	  db	  255		 ;
355
     .max_color_g	  db	  255		 ;
360
     .max_color_g	  db	  255		 ;
356
     .max_color_b	  db	  255		 ;
361
     .max_color_b	  db	  255		 ;
357
     .shine		  db	  24		 ;  +21
362
     .shine		  db	  24		 ;  +21
358
 ;    LIGHT_SIZE equ ($-lights)
363
 ;    LIGHT_SIZE equ ($-lights)
359
 
364
 
360
	dd	-0.5,-0.5,-1.0	 ; x,y,z ;  .light_vector
365
	dd	-0.5,-0.5,-1.0	 ; x,y,z ;  .light_vector
361
	db	5		 ; .orginal_color_r
366
	db	5		 ; .orginal_color_r
362
	db	1		 ; .orginal_color_g
367
	db	1		 ; .orginal_color_g
363
	db	135		 ; .orginal_color_b
368
	db	135		 ; .orginal_color_b
364
	db	19		 ; .min_color_r
369
	db	19		 ; .min_color_r
365
	db	19		 ; .min_color_g
370
	db	19		 ; .min_color_g
366
	db	19		 ; .min_color_b
371
	db	19		 ; .min_color_b
367
	db	255		 ; .max_color_r
372
	db	255		 ; .max_color_r
368
	db	255		 ; .max_color_g
373
	db	255		 ; .max_color_g
369
	db	255		 ; .max_color_b
374
	db	255		 ; .max_color_b
370
	db	16		 ; .shine
375
	db	16		 ; .shine
371
 
376
 
372
	dd	0.5,0.5,-1.0	; x,y,z ;  .light_vector
377
	dd	0.5,0.5,-1.0	; x,y,z ;  .light_vector
373
	db	135		; .orginal_color_r
378
	db	135		; .orginal_color_r
374
	db	1		; .orginal_color_g
379
	db	1		; .orginal_color_g
375
	db	1		; .orginal_color_b
380
	db	1		; .orginal_color_b
376
	db	19		; .min_color_r
381
	db	19		; .min_color_r
377
	db	19		; .min_color_g
382
	db	19		; .min_color_g
378
	db	19		; .min_color_b
383
	db	19		; .min_color_b
379
	db	255		; .max_color_r
384
	db	255		; .max_color_r
380
	db	255		; .max_color_g
385
	db	255		; .max_color_g
381
	db	20		; .max_color_b
386
	db	20		; .max_color_b
382
	db	16		; .shine
387
	db	16		; .shine
383
;        ALL_LIGHTS_SIZE equ ($ - lights)
388
;        ALL_LIGHTS_SIZE equ ($ - lights)
384
;#all_lights_size dw ($ - lights) ;ALL_LIGHTS_SIZE
389
;#all_lights_size dw ($ - lights) ;ALL_LIGHTS_SIZE
385
;===============================================
390
;===============================================
386
 
391
 
387
lightsend:
392
lightsend:
388
 
393
 
389
if USE_LFN = 0
394
if USE_LFN = 0
390
hash_table rb 4096
395
hash_table rb 4096
391
SourceFile:
396
SourceFile:
392
workarea   rb 180000
397
workarea   rb 180000
393
else
398
else
394
SourceFile:
399
SourceFile:
395
workarea   rb 180
400
workarea   rb 180
396
end if
401
end if
397
EndFile   dd ?
402
EndFile   dd ?
398
align 8
403
align 8
399
	sinbeta dd	?;+32
404
	sinbeta dd	?;+32
400
	cosbeta dd	?
405
	cosbeta dd	?
401
 
406
 
402
	xsub	dw	?
407
	xsub	dw	?
403
	zsub	dw	?;+40
408
	zsub	dw	?;+40
404
	ysub	dw	?
409
	ysub	dw	?
405
 
410
 
406
	xx1	dw	?
411
	xx1	dw	?
407
	yy1	dw	?
412
	yy1	dw	?
408
	zz1	dw	?;+48    xx1 + 4
413
	zz1	dw	?;+48    xx1 + 4
409
	xx2	dw	?
414
	xx2	dw	?
410
	yy2	dw	?
415
	yy2	dw	?
411
	zz2	dw	?      ; xx1 + 10
416
	zz2	dw	?      ; xx1 + 10
412
	xx3	dw	?;+56
417
	xx3	dw	?;+56
413
	yy3	dw	?
418
	yy3	dw	?
414
	zz3	dw	?      ; xx1 + 16
419
	zz3	dw	?      ; xx1 + 16
415
	col1	dd	?
420
	col1	dd	?
416
	col2	dd	?
421
	col2	dd	?
417
	col3	dd	?
422
	col3	dd	?
418
	scale	dd	? ; help scale variable
423
	scale	dd	? ; help scale variable
419
	edges_counter dd ?
424
	edges_counter dd ?
420
   ;==
425
   ;==
421
	triangles_count_var	dw ?
426
	triangles_count_var	dw ?
422
	points_count_var	dw ?
427
	points_count_var	dw ?
423
	triangles_ptr		dd ?
428
	triangles_ptr		dd ?
424
	triangles_w_z_ptr	dd ?
429
	triangles_w_z_ptr	dd ?
425
	triangles_normals_ptr	dd ?
430
	triangles_normals_ptr	dd ?
426
	points_normals_ptr	dd ?
431
	points_normals_ptr	dd ?
427
	points_normals_rot_ptr	dd ?
432
	points_normals_rot_ptr	dd ?
428
	points_ptr		dd ?
433
	points_ptr		dd ?
429
	points_rotated_ptr	dd ?
434
	points_rotated_ptr	dd ?
430
	points_translated_ptr	dd ?
435
	points_translated_ptr	dd ?
431
	screen_ptr		dd ?
436
	screen_ptr		dd ?
432
	Zbuffer_ptr		dd ?
437
	Zbuffer_ptr		dd ?
433
     ;   edges_ptr               dd ?
438
     ;   edges_ptr               dd ?
434
 
439
 
435
   ;===
440
   ;===
436
 
441
 
437
	point_index1	    dw ?   ;-\
442
	point_index1	    dw ?   ;-\
438
	point_index2	    dw ?   ;  }  don't change order
443
	point_index2	    dw ?   ;  }  don't change order
439
	point_index3	    dw ?   ;-/
444
	point_index3	    dw ?   ;-/
440
	temp_col	    dw ?
445
	temp_col	    dw ?
441
	high		    dd ?
446
	high		    dd ?
442
	rand_seed	    dw ?
447
	rand_seed	    dw ?
443
align 8
448
align 8
444
	buffer	dq	?
449
	buffer	dq	?
445
	errr	dd	?
450
	errr	dd	?
446
	drr	dd	?
451
	drr	dd	?
447
	xx	dd	?
452
	xx	dd	?
448
	yy	dd	?
453
	yy	dd	?
449
	xst	dd	?
454
	xst	dd	?
450
	yst	dd	?
455
	yst	dd	?
451
;        screen_ptr      dd     ?
456
;        screen_ptr      dd     ?
452
;        Zbuffer_ptr     dd     ?
457
;        Zbuffer_ptr     dd     ?
453
 
458
 
454
	matrix	rb 36
459
	matrix	rb 36
455
	cos_tab rd 360
460
	cos_tab rd 360
456
	sin_tab rd 360
461
	sin_tab rd 360
457
 
462
 
458
align 16
463
align 16
459
 
464
 
460
if USE_LFN = 0
465
if USE_LFN = 0
461
     points:
466
     points:
462
	rw (EndFile-SourceFile)/12*3
467
	rw (EndFile-SourceFile)/12*3
463
	points_count = ($-points)/6
468
	points_count = ($-points)/6
464
     triangles:
469
     triangles:
465
	rw  (EndFile-SourceFile)/12*3
470
	rw  (EndFile-SourceFile)/12*3
466
	triangles_count = ($-triangles)/6
471
	triangles_count = ($-triangles)/6
467
align 16
472
align 16
468
	real_points rd points_count*3 + 1
473
	real_points rd points_count*3 + 1
469
align 16
474
align 16
470
	rotated_points_r rd points_count*3 + 1
475
	rotated_points_r rd points_count*3 + 1
471
align 16
476
align 16
472
	points_rotated rw points_count*3 + 2 ;means translated
477
	points_rotated rw points_count*3 + 2 ;means translated
473
align 16
478
align 16
474
	triangles_normals rb triangles_count * 12 ;
479
	triangles_normals rb triangles_count * 12 ;
475
align 16
480
align 16
476
	point_normals rb points_count * 12  ;one 3dvector - triple float dword x,y,z
481
	point_normals rb points_count * 12  ;one 3dvector - triple float dword x,y,z
477
align 16
482
align 16
478
	point_normals_rotated rb points_count * 12
483
	point_normals_rotated rb points_count * 12
479
align 16
484
align 16
480
	triangles_normals_rotated rb triangles_count * 12
485
	triangles_normals_rotated rb triangles_count * 12
481
 
486
 
482
else
487
else
483
    points_count = 180000/6*3
488
    points_count = 180000/6*3
484
    triangles_count = 180000 / 6  ;($-triangles)/6
489
    triangles_count = 180000 / 6  ;($-triangles)/6
485
end if
490
end if
486
align 16
491
align 16
487
	label trizdd dword
492
	label trizdd dword
488
	label trizdq qword
493
	label trizdq qword
489
	triangles_with_z rw triangles_count*4 + 2 ; triangles triple dw + z position
494
	triangles_with_z rw triangles_count*4 + 2 ; triangles triple dw + z position
490
align 16
495
align 16
491
	vectors rb 24
496
	vectors rb 24
492
;align 16
497
;align 16
493
;        points_color rb 6*points_count    ; each color as word
498
;        points_color rb 6*points_count    ; each color as word
494
;        sorted_triangles rw triangles_count*3 + 2
499
;        sorted_triangles rw triangles_count*3 + 2
495
align 16
500
align 16
496
	bumpmap 	rb	TEXTURE_SIZE + 1
501
	bumpmap 	rb	TEXTURE_SIZE + 1
497
align 16
502
align 16
498
	bumpmap2	rb	TEXTURE_SIZE + 1
503
	bumpmap2	rb	TEXTURE_SIZE + 1
499
align 16
504
align 16
500
	envmap		rb	(TEXTURE_SIZE +1) * 3
505
	envmap		rb	(TEXTURE_SIZE +1) * 3
501
align 16
506
align 16
502
	envmap_cub	rb	TEX_X * 3
507
	envmap_cub	rb	TEX_X * 3
503
align 16
508
align 16
504
	texmap		rb	(TEXTURE_SIZE +1) * 3
509
	texmap		rb	(TEXTURE_SIZE +1) * 3
505
align 16
510
align 16
506
	color_map	rb	(TEXTURE_SIZE +1) * 3
511
	color_map	rb	(TEXTURE_SIZE +1) * 3
507
align 16
512
align 16
508
	tex_points	rb	points_count * 4  ; bump_map  and texture coords
513
	tex_points	rb	points_count * 4  ; bump_map  and texture coords
509
				; each point word x, word y
514
				; each point word x, word y
510
align 16
515
align 16
511
if Ext >= SSE2
516
if Ext >= SSE2
512
	sse_repository	rb	1024
517
	sse_repository	rb	1024
513
end if
518
end if
514
  ;      SourceFile:             ; source file temporally in screen area
519
  ;      SourceFile:             ; source file temporally in screen area
515
  ;      workarea        dd      ?
520
  ;      workarea        dd      ?
516
 
521
 
517
    ;    screen          rb      SIZE_X * SIZE_Y * 3   ; screen buffer
522
    ;    screen          rb      SIZE_X * SIZE_Y * 3   ; screen buffer
518
;align 16
523
;align 16
519
     ;   Z_buffer        rb      SIZE_X * SIZE_Y * 4
524
     ;   Z_buffer        rb      SIZE_X * SIZE_Y * 4
520
	I_Param 	rb	256
525
	I_Param 	rb	256
521
	memStack	rb	4000 ;memory area for stack
526
	memStack	rb	4000 ;memory area for stack
522
align  16
527
align  16
523
screen:
528
screen: