Rev 1779 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1779 | Rev 2022 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; application : 3d shaking waved spiral |
2 | ; application : 3d shaking waved spiral |
3 | ; compilator : fasm |
3 | ; compilator : fasm |
4 | ; system : MenuetOS |
4 | ; system : KolibriOS |
5 | ; author : macgub |
5 | ; author : macgub |
6 | ; email : macgub3@wp |
6 | ; email : macgub3@wp |
7 | 7 | ||
8 | timeout equ 3 |
8 | timeout equ 3 |
9 | maxx equ 600 ; window size |
9 | maxx equ 616 ; window size |
10 | maxy equ 420 |
10 | maxy equ 420 |
11 | use32 |
11 | use32 |
12 | 12 | ||
13 | org 0x0 |
13 | org 0x0 |
14 | 14 | ||
15 | db 'MENUET01' ; 8 byte id |
15 | db 'MENUET01' ; 8 byte id |
16 | dd 0x01 ; header version |
16 | dd 0x01 ; header version |
17 | dd START ; start of code |
17 | dd START ; start of code |
18 | dd I_END ; size of image |
18 | dd I_END ; size of image |
19 | dd 0x100000 ; memory for app |
19 | dd 0x100000 ; memory for app |
20 | dd 0xbffff ; esp |
20 | dd 0xbffff ; esp |
21 | dd 0x0 , 0x0 ; I_Param , I_Icon |
21 | dd 0x0 , 0x0 ; I_Param , I_Icon |
22 | 22 | ||
23 | START: ; start of execution |
23 | START: ; start of execution |
24 | 24 | ||
25 | call draw_window |
25 | call draw_window |
26 | 26 | ||
27 | still: |
27 | still: |
28 | 28 | ||
29 | ; mov eax,23 ; wait here for event |
29 | ; mov eax,23 ; wait here for event |
30 | ; mov ebx,timeout |
30 | ; mov ebx,timeout |
31 | ; int 0x40 |
31 | ; int 0x40 |
32 | mov eax,11 ; check for event no wait |
32 | mov eax,11 ; check for event no wait |
33 | int 0x40 |
33 | int 0x40 |
34 | 34 | ||
35 | cmp eax,1 ; redraw request ? |
35 | cmp eax,1 ; redraw request ? |
36 | je red |
36 | je red |
37 | cmp eax,2 ; key in buffer ? |
37 | cmp eax,2 ; key in buffer ? |
38 | je key |
38 | je key |
39 | cmp eax,3 ; button in buffer ? |
39 | cmp eax,3 ; button in buffer ? |
40 | je button |
40 | je button |
41 | 41 | ||
42 | jmp noclose |
42 | jmp noclose |
43 | 43 | ||
44 | red: ; redraw |
44 | red: ; redraw |
45 | call draw_window |
45 | call draw_window |
46 | jmp still |
46 | jmp still |
47 | 47 | ||
48 | key: ; key |
48 | key: ; key |
49 | mov eax,2 ; just read it and ignore |
49 | mov eax,2 ; just read it and ignore |
50 | int 0x40 |
50 | int 0x40 |
- | 51 | shr eax,8 |
|
- | 52 | cmp eax, 27 |
|
51 | jmp still |
53 | jne still |
- | 54 | mov eax, -1 |
|
- | 55 | int 0x40 |
|
- | 56 | ||
52 | 57 | ||
53 | button: ; button |
58 | button: ; button |
54 | mov eax,17 ; get id |
59 | mov eax,17 ; get id |
55 | int 0x40 |
60 | int 0x40 |
56 | 61 | ||
57 | cmp ah,1 ; button id=1 ? |
62 | cmp ah,1 ; button id=1 ? |
58 | jne noclose |
63 | jne noclose |
59 | 64 | ||
60 | mov eax,-1 ; close this program |
65 | mov eax,-1 ; close this program |
61 | int 0x40 |
66 | int 0x40 |
62 | noclose: |
67 | noclose: |
63 | 68 | ||
64 | ; mov eax,13 |
69 | ; mov eax,13 |
65 | ; mov ebx,20*65536+maxx-25 |
70 | ; mov ebx,20*65536+maxx-25 |
66 | ; mov ecx,20*65536+maxy-25 |
71 | ; mov ecx,20*65536+maxy-25 |
67 | ; xor edx,edx |
72 | ; xor edx,edx |
68 | ; int 0x40 |
73 | ; int 0x40 |
69 | 74 | ||
70 | mov edi,screen_buf |
75 | mov edi,screen_buf |
71 | mov ecx,maxx*maxy*3/4 |
76 | mov ecx,maxx*maxy*3/4 |
72 | xor eax,eax |
77 | xor eax,eax |
73 | cld |
78 | cld |
74 | rep stosd |
79 | rep stosd |
75 | 80 | ||
76 | 81 | ||
77 | call calc_deg |
82 | call calc_deg |
78 | mov [z],0 |
83 | mov [z],0 |
79 | mov [sin_counter],0 |
84 | mov [sin_counter],0 |
80 | finit |
85 | finit |
81 | oopz: |
86 | oopz: |
82 | mov [x],0 |
87 | mov [x],0 |
83 | push [z] |
88 | push [z] |
84 | call calc_sin_variable |
89 | call calc_sin_variable |
85 | oop: |
90 | oop: |
86 | push [x] |
91 | push [x] |
87 | ; call getcol ;(x,z) |
92 | ; call getcol ;(x,z) |
88 | call fun ; calculates y and y1 |
93 | call fun ; calculates y and y1 |
89 | ; call rotateY |
94 | ; call rotateY |
90 | mov eax,[sin_variable] |
95 | mov eax,[sin_variable] |
91 | add eax,[vector_x] ; vector_x |
96 | add eax,[vector_x] ; vector_x |
92 | add [x],eax |
97 | add [x],eax |
93 | mov eax,[vector_y] |
98 | mov eax,[vector_y] |
94 | add [y],eax ; vector_y |
99 | add [y],eax ; vector_y |
95 | add [y1],eax |
100 | add [y1],eax |
96 | call point_perspective |
101 | call point_perspective |
97 | call draw_point_3d |
102 | call draw_point_3d |
98 | pop [x] |
103 | pop [x] |
99 | inc [x] |
104 | inc [x] |
100 | mov eax,[x] |
105 | mov eax,[x] |
101 | cmp eax,[loop_counter] |
106 | cmp eax,[loop_counter] |
102 | jne oop |
107 | jne oop |
103 | inc [sin_counter] |
108 | inc [sin_counter] |
104 | pop [z] |
109 | pop [z] |
105 | inc [z] |
110 | inc [z] |
106 | cmp [z],200 |
111 | cmp [z],200 |
107 | jne oopz |
112 | jne oopz |
108 | 113 | ||
109 | mov eax,7 |
114 | mov eax,7 |
110 | mov ebx,screen_buf |
115 | mov ebx,screen_buf |
111 | mov ecx,maxx*65536+maxy |
116 | mov ecx,maxx*65536+maxy |
112 | mov edx,20*65536+20 |
117 | mov edx,0*65536+0 |
113 | int 0x40 |
118 | int 0x40 |
114 | 119 | ||
115 | call set_elipse_dim |
120 | call set_elipse_dim |
116 | call set_vectors |
121 | call set_vectors |
117 | 122 | ||
118 | jmp still |
123 | jmp still |
119 | ;-----------------++++++PROCEDURES |
124 | ;-----------------++++++PROCEDURES |
120 | getcol: |
125 | getcol: |
121 | mov eax,[x_resolution] |
126 | mov eax,[x_resolution] |
122 | mul [z] |
127 | mul [z] |
123 | add eax,[x] |
128 | add eax,[x] |
124 | mov ebx,eax |
129 | mov ebx,eax |
125 | mov eax,35 |
130 | mov eax,35 |
126 | int 0x40 |
131 | int 0x40 |
127 | mov [col],eax |
132 | mov [col],eax |
128 | ret |
133 | ret |
129 | 134 | ||
130 | set_vectors: |
135 | set_vectors: |
131 | cmp [vector_x],55 |
136 | cmp [vector_x],55 |
132 | jne vec1 |
137 | jne vec1 |
133 | mov [vector_dir_x],1 |
138 | mov [vector_dir_x],1 |
134 | vec1: |
139 | vec1: |
135 | cmp [vector_x],250 |
140 | cmp [vector_x],250 |
136 | jne vec2 |
141 | jne vec2 |
137 | mov [vector_dir_x],0 |
142 | mov [vector_dir_x],0 |
138 | vec2: |
143 | vec2: |
139 | cmp [vector_dir_x],1 |
144 | cmp [vector_dir_x],1 |
140 | jne vec3 |
145 | jne vec3 |
141 | inc [vector_x] |
146 | inc [vector_x] |
142 | jmp end_x |
147 | jmp end_x |
143 | vec3: |
148 | vec3: |
144 | dec [vector_x] |
149 | dec [vector_x] |
145 | end_x: |
150 | end_x: |
146 | cmp [vector_y],195 |
151 | cmp [vector_y],195 |
147 | jne vec4 |
152 | jne vec4 |
148 | mov [vector_dir_y],1 |
153 | mov [vector_dir_y],1 |
149 | vec4: |
154 | vec4: |
150 | cmp [vector_y],205 |
155 | cmp [vector_y],205 |
151 | jne vec5 |
156 | jne vec5 |
152 | mov [vector_dir_y],0 |
157 | mov [vector_dir_y],0 |
153 | vec5: |
158 | vec5: |
154 | cmp [vector_dir_y],1 |
159 | cmp [vector_dir_y],1 |
155 | jne vec6 |
160 | jne vec6 |
156 | inc [vector_y] |
161 | inc [vector_y] |
157 | ret |
162 | ret |
158 | vec6: |
163 | vec6: |
159 | dec [vector_y] |
164 | dec [vector_y] |
160 | ret |
165 | ret |
161 | set_elipse_dim: |
166 | set_elipse_dim: |
162 | cmp [b],60 |
167 | cmp [b],60 |
163 | jne go11 |
168 | jne go11 |
164 | mov [elipse_dir],0 |
169 | mov [elipse_dir],0 |
165 | go11: |
170 | go11: |
166 | cmp [b],10 |
171 | cmp [b],10 |
167 | jne go12 |
172 | jne go12 |
168 | mov [elipse_dir],1 |
173 | mov [elipse_dir],1 |
169 | go12: |
174 | go12: |
170 | cmp [elipse_dir],1 |
175 | cmp [elipse_dir],1 |
171 | jne go13 |
176 | jne go13 |
172 | inc [b] |
177 | inc [b] |
173 | dec [a] |
178 | dec [a] |
174 | mov eax,[a] |
179 | mov eax,[a] |
175 | mov [xo],eax |
180 | mov [xo],eax |
176 | shl eax,1 |
181 | shl eax,1 |
177 | inc eax |
182 | inc eax |
178 | mov [loop_counter],eax |
183 | mov [loop_counter],eax |
179 | ret |
184 | ret |
180 | go13: |
185 | go13: |
181 | dec [b] |
186 | dec [b] |
182 | inc [a] |
187 | inc [a] |
183 | mov eax,[a] |
188 | mov eax,[a] |
184 | mov [xo],eax |
189 | mov [xo],eax |
185 | shl eax,1 |
190 | shl eax,1 |
186 | inc eax |
191 | inc eax |
187 | mov [loop_counter],eax |
192 | mov [loop_counter],eax |
188 | ret |
193 | ret |
189 | 194 | ||
190 | calc_deg: |
195 | calc_deg: |
191 | cmp [deg_counter], 360 |
196 | cmp [deg_counter], 360 |
192 | jne go_deg |
197 | jne go_deg |
193 | mov [deg_counter],0 |
198 | mov [deg_counter],0 |
194 | go_deg: |
199 | go_deg: |
195 | fldpi |
200 | fldpi |
196 | fidiv [deg_div] |
201 | fidiv [deg_div] |
197 | fimul [deg_counter] |
202 | fimul [deg_counter] |
198 | fstp [current_deg] |
203 | fstp [current_deg] |
199 | ; fsincos |
204 | ; fsincos |
200 | ; fstp [cosbeta] |
205 | ; fstp [cosbeta] |
201 | ; fstp [sinbeta] |
206 | ; fstp [sinbeta] |
202 | inc [deg_counter] |
207 | inc [deg_counter] |
203 | ret |
208 | ret |
204 | 209 | ||
205 | ;rotateY: |
210 | ;rotateY: |
206 | ; mov eax,[z] |
211 | ; mov eax,[z] |
207 | ; sub eax,[zoo] |
212 | ; sub eax,[zoo] |
208 | ; mov [subz],eax |
213 | ; mov [subz],eax |
209 | ; mov eax,[x] |
214 | ; mov eax,[x] |
210 | ; sub eax,[xoo] |
215 | ; sub eax,[xoo] |
211 | ; mov [subx],eax |
216 | ; mov [subx],eax |
212 | ; |
217 | ; |
213 | ; fld [sinbeta] |
218 | ; fld [sinbeta] |
214 | ; fimul [subz] |
219 | ; fimul [subz] |
215 | ; fchs |
220 | ; fchs |
216 | ; fld [cosbeta] |
221 | ; fld [cosbeta] |
217 | ; fimul[subx] |
222 | ; fimul[subx] |
218 | ; faddp |
223 | ; faddp |
219 | ; fiadd [xoo] |
224 | ; fiadd [xoo] |
220 | ; fistp [x] |
225 | ; fistp [x] |
221 | 226 | ||
222 | ; fld [sinbeta] |
227 | ; fld [sinbeta] |
223 | ; fimul [subx] |
228 | ; fimul [subx] |
224 | ; fld [cosbeta] |
229 | ; fld [cosbeta] |
225 | ; fimul [subz] |
230 | ; fimul [subz] |
226 | ; faddp |
231 | ; faddp |
227 | ; fiadd [zoo] |
232 | ; fiadd [zoo] |
228 | ; fistp [z] |
233 | ; fistp [z] |
229 | ; finit |
234 | ; finit |
230 | 235 | ||
231 | ; ret |
236 | ; ret |
232 | 237 | ||
233 | point_perspective: |
238 | point_perspective: |
234 | mov eax,[x] |
239 | mov eax,[x] |
235 | sub eax,[xobs] |
240 | sub eax,[xobs] |
236 | mov [xobssub],eax |
241 | mov [xobssub],eax |
237 | mov eax,[z] |
242 | mov eax,[z] |
238 | sub eax,[zobs] |
243 | sub eax,[zobs] |
239 | mov [zobssub],eax |
244 | mov [zobssub],eax |
240 | 245 | ||
241 | mov eax,[y] |
246 | mov eax,[y] |
242 | sub eax,[yobs] |
247 | sub eax,[yobs] |
243 | mov [yobssub],eax |
248 | mov [yobssub],eax |
244 | mov eax,[y1] |
249 | mov eax,[y1] |
245 | sub eax,[yobs] |
250 | sub eax,[yobs] |
246 | mov [y1obssub],eax |
251 | mov [y1obssub],eax |
247 | 252 | ||
248 | finit |
253 | finit |
249 | fild [xobssub] |
254 | fild [xobssub] |
250 | fidiv [zobssub] |
255 | fidiv [zobssub] |
251 | fimul [zobs] |
256 | fimul [zobs] |
252 | fchs |
257 | fchs |
253 | fiadd [xobs] |
258 | fiadd [xobs] |
254 | fistp [x] |
259 | fistp [x] |
255 | fild [yobssub] |
260 | fild [yobssub] |
256 | fidiv [zobssub] |
261 | fidiv [zobssub] |
257 | fimul [zobs] |
262 | fimul [zobs] |
258 | fchs |
263 | fchs |
259 | fiadd [yobs] |
264 | fiadd [yobs] |
260 | fistp [y] |
265 | fistp [y] |
261 | 266 | ||
262 | ; mov eax,[xobssub] |
267 | ; mov eax,[xobssub] |
263 | ; idiv [zobssub] |
268 | ; idiv [zobssub] |
264 | ;; mov eax,edx |
269 | ;; mov eax,edx |
265 | ; imul [zobs] |
270 | ; imul [zobs] |
266 | ; neg eax |
271 | ; neg eax |
267 | ; add eax,[xobs] |
272 | ; add eax,[xobs] |
268 | ; mov [x],eax |
273 | ; mov [x],eax |
269 | ; mov eax,[yobssub] |
274 | ; mov eax,[yobssub] |
270 | ; idiv [zobssub] |
275 | ; idiv [zobssub] |
271 | ;; mov eax,edx |
276 | ;; mov eax,edx |
272 | ; imul [zobs] |
277 | ; imul [zobs] |
273 | ; neg eax |
278 | ; neg eax |
274 | ; add eax,[yobs] |
279 | ; add eax,[yobs] |
275 | ; mov [y],eax |
280 | ; mov [y],eax |
276 | 281 | ||
277 | fild [y1obssub] |
282 | fild [y1obssub] |
278 | fidiv [zobssub] |
283 | fidiv [zobssub] |
279 | fimul [zobs] |
284 | fimul [zobs] |
280 | fchs |
285 | fchs |
281 | fiadd [yobs] |
286 | fiadd [yobs] |
282 | fistp [y1] |
287 | fistp [y1] |
283 | ret |
288 | ret |
284 | calc_sin_variable: |
289 | calc_sin_variable: |
285 | ;calculate sinus variable |
290 | ;calculate sinus variable |
286 | fldpi |
291 | fldpi |
287 | fidiv [sin_gran] |
292 | fidiv [sin_gran] |
288 | fimul [sin_counter] |
293 | fimul [sin_counter] |
289 | fadd [current_deg] |
294 | fadd [current_deg] |
290 | fsin |
295 | fsin |
291 | fimul [sin_mul] |
296 | fimul [sin_mul] |
292 | fistp [sin_variable] |
297 | fistp [sin_variable] |
293 | ret |
298 | ret |
294 | 299 | ||
295 | fun: |
300 | fun: |
296 | ; finit |
301 | ; finit |
297 | fild [x] |
302 | fild [x] |
298 | fisub [xo] |
303 | fisub [xo] |
299 | ; fchs |
304 | ; fchs |
300 | ; faddp |
305 | ; faddp |
301 | fild [a] |
306 | fild [a] |
302 | fdivp st1,st |
307 | fdivp st1,st |
303 | fmul st,st0 |
308 | fmul st,st0 |
304 | fchs |
309 | fchs |
305 | fld1 |
310 | fld1 |
306 | faddp |
311 | faddp |
307 | fsqrt |
312 | fsqrt |
308 | fimul [b] |
313 | fimul [b] |
309 | fld st |
314 | fld st |
310 | fchs |
315 | fchs |
311 | fiadd [yo] |
316 | fiadd [yo] |
312 | fistp [y] |
317 | fistp [y] |
313 | fiadd [yo] |
318 | fiadd [yo] |
314 | fistp [y1] |
319 | fistp [y1] |
315 | ret |
320 | ret |
316 | draw_point_3d: |
321 | draw_point_3d: |
317 | mov eax,[z] |
322 | mov eax,[z] |
318 | imul [sq] |
323 | imul [sq] |
319 | shr eax,10 |
324 | shr eax,10 |
320 | mov ebx,eax |
325 | mov ebx,eax |
321 | neg eax |
326 | neg eax |
322 | push eax |
327 | push eax |
323 | add eax,[y] |
328 | add eax,[y] |
324 | mov [y],eax |
329 | mov [y],eax |
325 | pop eax |
330 | pop eax |
326 | add eax,[y1] |
331 | add eax,[y1] |
327 | mov [y1],eax |
332 | mov [y1],eax |
328 | mov eax,ebx |
333 | mov eax,ebx |
329 | add eax,[x] |
334 | add eax,[x] |
330 | mov [x],eax |
335 | mov [x],eax |
331 | ;mov eax,1 |
336 | ;mov eax,1 |
332 | ;mov ebx,[x] |
337 | ;mov ebx,[x] |
333 | ;mov ecx,[y] |
338 | ;mov ecx,[y] |
334 | ;mov edx,[col] |
339 | ;mov edx,[col] |
335 | ;int 0x40 |
340 | ;int 0x40 |
336 | ;mov ecx,[y1] |
341 | ;mov ecx,[y1] |
337 | ;int 0x40 |
342 | ;int 0x40 |
338 | mov eax,maxx |
343 | mov eax,maxx |
339 | mul [y] |
344 | mul [y] |
340 | add eax,[x] |
345 | add eax,[x] |
341 | mov ebx,eax |
346 | mov ebx,eax |
342 | shl ebx,1 |
347 | shl ebx,1 |
343 | add eax,ebx |
348 | add eax,ebx |
344 | add eax,screen_buf |
349 | add eax,screen_buf |
345 | mov ebx,[col] |
350 | mov ebx,[col] |
346 | or [eax],ebx |
351 | or [eax],ebx |
347 | mov eax,maxx |
352 | mov eax,maxx |
348 | mul [y1] |
353 | mul [y1] |
349 | add eax,[x] |
354 | add eax,[x] |
350 | mov ebx,eax |
355 | mov ebx,eax |
351 | shl ebx,1 |
356 | shl ebx,1 |
352 | add eax,ebx |
357 | add eax,ebx |
353 | add eax,screen_buf |
358 | add eax,screen_buf |
354 | mov ebx,[col] |
359 | mov ebx,[col] |
355 | or [eax],ebx |
360 | or [eax],ebx |
356 | ret |
361 | ret |
357 | 362 | ||
358 | ; ********************************************* |
363 | ; ********************************************* |
359 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
364 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
360 | ; ********************************************* |
365 | ; ********************************************* |
361 | draw_window: |
366 | draw_window: |
362 | 367 | ||
363 | mov eax,12 ; function 12:tell os about windowdraw |
368 | mov eax,12 ; function 12:tell os about windowdraw |
364 | mov ebx,1 ; 1, start of draw |
369 | mov ebx,1 ; 1, start of draw |
365 | int 0x40 |
370 | int 0x40 |
366 | ; DRAW WINDOW |
371 | ; DRAW WINDOW |
367 | mov eax,0 ; function 0 : define and draw window |
372 | mov eax,0 ; function 0 : define and draw window |
368 | mov ebx,100*65536+maxx+25 ; [x start] *65536 + [x size] |
373 | mov ebx,100*65536+maxx+9 ; [x start] *65536 + [x size] |
369 | mov ecx,100*65536+maxy+25 ; [y start] *65536 + [y size] |
374 | mov ecx,100*65536+maxy+25 ; [y start] *65536 + [y size] |
370 | mov edx,0x02000000 ; color of work area RRGGBB,8->color gl |
375 | mov edx,0x74000000 ; color of work area RRGGBB,8->color gl |
371 | mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color gl |
- | |
372 | mov edi,0x005080d0 ; color of frames RRGGBB |
376 | mov edi,labelt |
373 | int 0x40 |
377 | int 0x40 |
374 | ; WINDOW LABEL |
378 | ; WINDOW LABEL |
375 | mov eax,4 ; function 4 : write text to window |
- | |
376 | mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
- | |
377 | mov ecx,0x10ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
- | |
378 | mov edx,labelt ; pointer to text beginning |
- | |
379 | mov esi,labellen-labelt ; text length |
- | |
380 | int 0x40 |
- | |
381 | ; CLOSE BUTTON |
- | |
382 | mov eax,8 ; function 8 : define and draw button |
- | |
383 | mov ebx,(maxx+25-19)*65536+12 ; [x start] *65536 + [x size] |
- | |
384 | mov ecx,5*65536+12 ; [y start] *65536 + [y size] |
- | |
385 | mov edx,1 ; button id |
- | |
386 | mov esi,0x6688dd ; button color RRGGBB |
- | |
387 | int 0x40 |
- | |
388 | - | ||
389 | mov eax,12 ; function 12:tell os about windowdraw |
379 | mov eax,12 ; function 12:tell os about windowdraw |
390 | mov ebx,2 ; 2, end of draw |
380 | mov ebx,2 ; 2, end of draw |
391 | int 0x40 |
381 | int 0x40 |
392 | 382 | ||
393 | ret |
383 | ret |
394 | 384 | ||
395 | x_resolution dd 800 |
385 | x_resolution dd 800 |
396 | vector_x dd 200 |
386 | vector_x dd 200 |
397 | vector_y dd 200 |
387 | vector_y dd 200 |
398 | vector_dir_x db 1 |
388 | vector_dir_x db 1 |
399 | vector_dir_y db 1 |
389 | vector_dir_y db 1 |
400 | elipse_dir db 1 |
390 | elipse_dir db 1 |
401 | 391 | ||
402 | deg_counter dd ? ; rotation variables |
392 | deg_counter dd ? ; rotation variables |
403 | deg_div dd 20 |
393 | deg_div dd 20 |
404 | current_deg dd ? |
394 | current_deg dd ? |
405 | ;cosbeta dd ? |
395 | ;cosbeta dd ? |
406 | ;sinbeta dd ? |
396 | ;sinbeta dd ? |
407 | ;zoo dd 100 ; rotation axle |
397 | ;zoo dd 100 ; rotation axle |
408 | ;xoo dd 40 |
398 | ;xoo dd 40 |
409 | ;yoo dd 20 |
399 | ;yoo dd 20 |
410 | ;subx dd ? |
400 | ;subx dd ? |
411 | ;suby dd ? |
401 | ;suby dd ? |
412 | ;subz dd ? |
402 | ;subz dd ? |
413 | 403 | ||
414 | xobs dd maxx/2 ; 320 observer variables |
404 | xobs dd maxx/2 ; 320 observer variables |
415 | yobs dd maxy/2 ; 175 |
405 | yobs dd maxy/2 ; 175 |
416 | zobs dd -200 |
406 | zobs dd -200 |
417 | xobssub dd ? |
407 | xobssub dd ? |
418 | yobssub dd ? |
408 | yobssub dd ? |
419 | y1obssub dd ? |
409 | y1obssub dd ? |
420 | zobssub dd ? |
410 | zobssub dd ? |
421 | 411 | ||
422 | sin_variable dd ? |
412 | sin_variable dd ? |
423 | sin_mul dd 60 |
413 | sin_mul dd 60 |
424 | sin_gran dd 30 |
414 | sin_gran dd 30 |
425 | sin_counter dd 0 |
415 | sin_counter dd 0 |
426 | sq dd 724 ; round( (sqrt2)/2*1024 ) |
416 | sq dd 724 ; round( (sqrt2)/2*1024 ) |
427 | z dd ? |
417 | z dd ? |
428 | x dd ? |
418 | x dd ? |
429 | y dd ? |
419 | y dd ? |
430 | y1 dd ? |
420 | y1 dd ? |
431 | xo dd 70 ; center point , (loop counter-1)/2 |
421 | xo dd 70 ; center point , (loop counter-1)/2 |
432 | yo dd 20 |
422 | yo dd 20 |
433 | a dd 70 ; vertical half-axle |
423 | a dd 70 ; vertical half-axle |
434 | b dd 20 ; horizontal half-axle |
424 | b dd 20 ; horizontal half-axle |
435 | loop_counter dd 141 ; axle granularity |
425 | loop_counter dd 141 ; axle granularity |
436 | col dd 0x00ffffff |
426 | col dd 0x00ffffff |
437 | 427 | ||
438 | labelt: |
428 | labelt: |
439 | db ' 3D SHAKING WAVED SPIRAL' |
429 | db ' 3D shaking waved spiral',0 |
440 | labellen: |
430 | labellen: |
441 | screen_buf: |
431 | screen_buf: |
442 | 432 | ||
443 | I_END: |
433 | I_END: |