Subversion Repositories Kolibri OS

Rev

Rev 1245 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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