Rev 2016 | Rev 2491 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ; |
2 | ; 3D POLYGONAL CUBE - ASCL |
||
3 | ; |
||
4 | ; Pavlushin Evgeni |
||
5 | ; mail: waptap@mail.ru site: www.deck4.narod.ru |
||
6 | ; |
||
7 | ; Create on base 3D test sample |
||
8 | ; Mikolaj Felix mfelix@polbox.com |
||
9 | ; |
||
10 | |||
11 | use32 |
||
12 | org 0x0 |
||
13 | db 'MENUET01' ; 8 byte id |
||
14 | dd 0x01 ; header version |
||
15 | dd START ; start of code |
||
16 | dd I_END ; size of image |
||
17 | dd 0x30000 ; memory for app |
||
18 | dd 0x30000 ; esp |
||
19 | dd 0x0 , 0x0 ; I_Param , I_Icon |
||
20 | |||
21 | MAX_POINTS equ 8 |
||
22 | MAX_TRIANGLES equ 12 |
||
23 | SCREEN_X equ 320 |
||
24 | SCREEN_Y equ 200 |
||
25 | |||
26 | include 'lang.inc' |
||
485 | heavyiron | 27 | include '..\..\..\macros.inc' |
625 | diamond | 28 | ;purge mov |
31 | halyavin | 29 | include 'ascl.inc' |
30 | include 'ascgl.inc' |
||
485 | heavyiron | 31 | |
31 | halyavin | 32 | START: |
625 | diamond | 33 | init_sin_cos: |
34 | finit |
||
35 | fldz |
||
36 | xor edi,edi |
||
37 | mov ecx,512 |
||
38 | isc_make: |
||
39 | fld st0 |
||
40 | fsincos |
||
41 | fmul [fixed_point_const] |
||
42 | fistp word [cos_table+edi] |
||
43 | fmul [fixed_point_const] |
||
44 | fistp word [sin_table+edi] |
||
45 | |||
46 | fadd [inc_angle] |
||
47 | |||
48 | add edi,2 |
||
49 | loop isc_make |
||
50 | fstp st0 |
||
51 | red: |
||
31 | halyavin | 52 | call draw_window |
53 | |||
54 | still: |
||
55 | mov eax,11 |
||
485 | heavyiron | 56 | mcall |
31 | halyavin | 57 | |
58 | dec eax |
||
59 | ; cmp eax,1 ; window redraw request ? |
||
60 | jz red |
||
61 | dec eax |
||
62 | ; cmp eax,2 ; key in buffer ? |
||
63 | jz key |
||
64 | dec eax |
||
65 | ; cmp eax,3 ; button in buffer ? |
||
66 | jz button |
||
67 | |||
2205 | leency | 68 | fps 220,9,cl_White,cl_Black |
31 | halyavin | 69 | |
70 | main_loop: |
||
71 | |||
72 | mov esi,object |
||
73 | mov edi,object_rotated |
||
74 | mov ecx,MAX_POINTS*3 |
||
75 | cld |
||
76 | rep movsw |
||
77 | |||
78 | mov esi,angle_x |
||
79 | mov edi,object_rotated |
||
80 | mov ecx,MAX_POINTS |
||
81 | call rotate_points |
||
82 | |||
83 | mov esi,object_rotated |
||
84 | mov edi,object_translated |
||
85 | mov ecx,MAX_POINTS |
||
86 | call translate_points |
||
87 | |||
88 | call draw_faces |
||
89 | |||
90 | call clear_screen_buffer |
||
91 | |||
92 | add [angle_x],2 |
||
93 | add [angle_y],3 |
||
94 | add [angle_z],1 |
||
95 | |||
96 | jmp still |
||
97 | |||
98 | key: |
||
99 | mov eax,2 |
||
485 | heavyiron | 100 | mcall |
31 | halyavin | 101 | jmp still |
102 | button: |
||
103 | mov eax,17 |
||
485 | heavyiron | 104 | mcall |
31 | halyavin | 105 | cmp ah,1 |
106 | jne still |
||
107 | exit: |
||
108 | mov eax,-1 |
||
485 | heavyiron | 109 | mcall |
31 | halyavin | 110 | |
111 | ;Draw window |
||
112 | draw_window: |
||
2205 | leency | 113 | mcall 12, 1 ;Start window redraw |
31 | halyavin | 114 | |
115 | mov eax,0 ;Draw window |
||
2205 | leency | 116 | mov ebx,100*65536+(SCREEN_X+9) ;x start*65536+x size |
31 | halyavin | 117 | mov ecx,100*65536+(SCREEN_Y+26) ;y start*65536+y size |
2016 | leency | 118 | mov edx,0x54000000 ;0x03 use skinned window |
485 | heavyiron | 119 | mov edi,title |
120 | mcall |
||
31 | halyavin | 121 | |
2205 | leency | 122 | mcall 12, 2 ;End window redraw |
123 | |||
31 | halyavin | 124 | ret |
125 | |||
2205 | leency | 126 | title db '3D Cube Sample',0 |
31 | halyavin | 127 | |
128 | |||
129 | ; Draw faces procedure |
||
130 | |||
131 | draw_faces: |
||
132 | |||
133 | mov esi,link |
||
134 | mov ecx,MAX_TRIANGLES |
||
135 | df_draw: |
||
136 | push ecx |
||
137 | mov ecx,3 |
||
138 | mov edi,@@tx1 ;bp |
||
139 | df_get_point: |
||
625 | diamond | 140 | movzx ebx, byte [esi] |
141 | movzx eax, word [object_translated + ebx*4] |
||
142 | stosd |
||
143 | movzx eax, word [object_translated + ebx*4 + 2] |
||
144 | stosd |
||
31 | halyavin | 145 | inc esi |
146 | dec ecx |
||
147 | jnz df_get_point |
||
148 | |||
625 | diamond | 149 | mov eax,[@@ty1] |
150 | sub eax,[@@ty3] |
||
151 | mov ebx,[@@tx2] |
||
152 | sub ebx,[@@tx1] |
||
153 | imul ebx |
||
154 | push eax |
||
155 | mov eax,[@@tx1] |
||
156 | sub eax,[@@tx3] |
||
157 | mov ebx,[@@ty2] |
||
158 | sub ebx,[@@ty1] |
||
159 | imul ebx |
||
31 | halyavin | 160 | pop ebx |
625 | diamond | 161 | sub ebx,eax |
31 | halyavin | 162 | jge df_next |
163 | |||
625 | diamond | 164 | movzx eax, byte [esi] |
31 | halyavin | 165 | |
625 | diamond | 166 | mov [@@xcol], eax |
31 | halyavin | 167 | |
168 | call filled_triangle |
||
169 | df_next: |
||
625 | diamond | 170 | inc esi |
31 | halyavin | 171 | pop ecx |
172 | dec ecx |
||
173 | jnz df_draw |
||
174 | ret |
||
175 | |||
176 | ;modify |
||
177 | ;include graphlib.asm |
||
178 | |||
179 | clear_screen_buffer: |
||
180 | |||
181 | ;outscrbuf |
||
182 | mov ebx,scrbuf |
||
183 | mov ecx,SCREEN_X*65536+SCREEN_Y |
||
184 | mov edx,5*65536+22 |
||
625 | diamond | 185 | mov eax,7 |
485 | heavyiron | 186 | mcall |
31 | halyavin | 187 | |
188 | ;White background |
||
189 | mov edi,scrbuf |
||
190 | mov ecx,(SCREEN_X*SCREEN_Y*3)/4 |
||
191 | mov eax,0xffffffff |
||
192 | cld |
||
193 | rep stosd |
||
194 | |||
195 | ret |
||
196 | |||
197 | ;include triangle.asm |
||
198 | ; Mikolaj Felix 14/5/2001 |
||
199 | ; mfelix@polbox.com |
||
200 | |||
201 | ;filled trangle procedure |
||
202 | |||
625 | diamond | 203 | align 4 |
204 | @@tx1 dd 0 |
||
205 | @@ty1 dd 0 |
||
206 | @@tx2 dd 0 |
||
207 | @@ty2 dd 0 |
||
208 | @@tx3 dd 0 |
||
209 | @@ty3 dd 0 |
||
210 | @@xcol dd 0 |
||
31 | halyavin | 211 | |
625 | diamond | 212 | @@dx12 dd 0 |
213 | @@dx13 dd 0 |
||
214 | @@dx23 dd 0 |
||
31 | halyavin | 215 | |
216 | filled_triangle: |
||
217 | |||
625 | diamond | 218 | mov eax,[@@xcol] ;trnsforming color |
31 | halyavin | 219 | mov bl,al ;byte bbbggrrx |
220 | mov dl,al ;to 3 byte |
||
221 | mov dh,al ;bbbxxxxx ggxxxxxx rrxxxxxx |
||
222 | and dh,00000001b |
||
223 | |||
224 | and al,11100000b |
||
225 | and bl,00011000b |
||
226 | and dl,00000110b |
||
227 | shl bl,3 |
||
228 | shl dl,5 |
||
229 | |||
230 | cmp dh,1 |
||
231 | jne no_bitup |
||
232 | or al,00011111b |
||
233 | or bl,00111111b |
||
234 | or dl,00111111b |
||
235 | no_bitup: |
||
236 | |||
237 | shl eax,8 ;puck colors |
||
238 | mov al,bl |
||
239 | shl eax,8 |
||
240 | mov al,dl |
||
241 | mov dword [@@rgb],eax |
||
242 | |||
625 | diamond | 243 | mov eax,[@@ty1] |
244 | cmp eax,[@@ty3] |
||
31 | halyavin | 245 | jb ft_check1 |
246 | |||
625 | diamond | 247 | xchg eax,[@@ty3] |
248 | mov [@@ty1],eax |
||
31 | halyavin | 249 | |
625 | diamond | 250 | mov eax,[@@tx1] |
251 | xchg eax,[@@tx3] |
||
252 | mov [@@tx1],eax |
||
31 | halyavin | 253 | ft_check1: |
625 | diamond | 254 | mov eax,[@@ty2] |
255 | cmp eax,[@@ty3] |
||
31 | halyavin | 256 | jb ft_check2 |
257 | |||
625 | diamond | 258 | xchg eax,[@@ty3] |
259 | mov [@@ty2],eax |
||
31 | halyavin | 260 | |
625 | diamond | 261 | mov eax,[@@tx2] |
262 | xchg eax,[@@tx3] |
||
263 | mov [@@tx2],eax |
||
31 | halyavin | 264 | ft_check2: |
625 | diamond | 265 | mov eax,[@@ty1] |
266 | cmp eax,[@@ty2] |
||
31 | halyavin | 267 | jb ft_check3 |
268 | |||
625 | diamond | 269 | xchg eax,[@@ty2] |
270 | mov [@@ty1],eax |
||
31 | halyavin | 271 | |
625 | diamond | 272 | mov eax,[@@tx1] |
273 | xchg eax,[@@tx2] |
||
274 | mov [@@tx1],eax |
||
31 | halyavin | 275 | ft_check3: |
276 | |||
625 | diamond | 277 | mov ebx,[@@ty2] |
278 | sub ebx,[@@ty1] |
||
31 | halyavin | 279 | jnz ft_dx12_make |
280 | |||
625 | diamond | 281 | mov [@@dx12],dword 0 |
31 | halyavin | 282 | jmp ft_dx12_done |
283 | ft_dx12_make: |
||
625 | diamond | 284 | mov eax,[@@tx2] |
285 | sub eax,[@@tx1] |
||
286 | shl eax,7 |
||
287 | cdq |
||
288 | idiv ebx |
||
289 | mov [@@dx12],eax ; dx12 = (x2-x1)/(y2-y1) |
||
31 | halyavin | 290 | ft_dx12_done: |
291 | |||
625 | diamond | 292 | mov ebx,[@@ty3] |
293 | sub ebx,[@@ty1] |
||
31 | halyavin | 294 | jnz ft_dx13_make |
295 | |||
625 | diamond | 296 | mov [@@dx13],dword 0 |
31 | halyavin | 297 | jmp ft_dx13_done |
298 | ft_dx13_make: |
||
625 | diamond | 299 | mov eax,[@@tx3] |
300 | sub eax,[@@tx1] |
||
301 | shl eax,7 |
||
302 | cdq |
||
303 | idiv ebx |
||
304 | mov [@@dx13],eax ; dx13 = (x3-x1)/(y3-y1) |
||
31 | halyavin | 305 | ft_dx13_done: |
306 | |||
625 | diamond | 307 | mov ebx,[@@ty3] |
308 | sub ebx,[@@ty2] |
||
31 | halyavin | 309 | jnz ft_dx23_make |
310 | |||
625 | diamond | 311 | mov [@@dx23],dword 0 |
31 | halyavin | 312 | jmp ft_dx23_done |
313 | ft_dx23_make: |
||
625 | diamond | 314 | mov eax,[@@tx3] |
315 | sub eax,[@@tx2] |
||
316 | shl eax,7 |
||
317 | cdq |
||
318 | idiv ebx |
||
319 | mov [@@dx23],eax ; dx23 = (x3-x2)/(y3-y2) |
||
31 | halyavin | 320 | ft_dx23_done: |
321 | |||
625 | diamond | 322 | mov eax,[@@tx1] |
323 | shl eax,7 |
||
324 | mov ebx,eax |
||
31 | halyavin | 325 | |
625 | diamond | 326 | mov ecx,[@@ty1] |
31 | halyavin | 327 | ft_loop1: |
328 | |||
329 | pushad |
||
330 | |||
625 | diamond | 331 | mov [@@ly],ecx |
332 | mov edx,ebx |
||
333 | shr edx,7 |
||
334 | mov [@@lx2],edx |
||
335 | mov edx,eax |
||
336 | shr edx,7 |
||
337 | mov [@@lx1],edx |
||
338 | mov eax,[@@xcol] |
||
339 | mov [@@lcol],eax |
||
31 | halyavin | 340 | call horizontal_line |
341 | |||
342 | popad |
||
343 | |||
625 | diamond | 344 | add eax,[@@dx13] |
345 | add ebx,[@@dx12] |
||
346 | inc ecx |
||
347 | cmp ecx,[@@ty2] |
||
31 | halyavin | 348 | jb ft_loop1 |
349 | |||
350 | |||
625 | diamond | 351 | mov ebx,[@@tx2] |
352 | shl ebx,7 |
||
353 | mov ecx,[@@ty2] |
||
31 | halyavin | 354 | ft_loop2: |
355 | |||
356 | pushad |
||
357 | |||
625 | diamond | 358 | mov [@@ly],ecx |
359 | mov edx,ebx |
||
360 | shr edx,7 |
||
361 | mov [@@lx2],edx |
||
362 | mov edx,eax |
||
363 | shr edx,7 |
||
364 | mov [@@lx1],edx |
||
365 | mov eax,[@@xcol] |
||
366 | mov [@@lcol],eax |
||
31 | halyavin | 367 | call horizontal_line |
368 | |||
369 | popad |
||
370 | |||
625 | diamond | 371 | add eax,[@@dx13] |
372 | add ebx,[@@dx23] |
||
31 | halyavin | 373 | inc ecx |
625 | diamond | 374 | cmp ecx,[@@ty3] |
31 | halyavin | 375 | jb ft_loop2 |
376 | |||
377 | ret |
||
378 | |||
379 | ;horizontal line subproc |
||
380 | |||
625 | diamond | 381 | align 4 |
382 | @@lx1 dd 0 |
||
383 | @@lx2 dd 0 |
||
384 | @@ly dd 0 |
||
385 | @@lcol dd 0 |
||
31 | halyavin | 386 | |
387 | @@rgb dd 0 |
||
388 | |||
389 | horizontal_line: |
||
390 | |||
625 | diamond | 391 | mov ecx,[@@lx1] |
392 | sub ecx,[@@lx2] |
||
31 | halyavin | 393 | ja x12 |
394 | je ext |
||
395 | ; ret |
||
625 | diamond | 396 | neg ecx |
31 | halyavin | 397 | mov edi,3 |
398 | jmp xx |
||
399 | x12: |
||
400 | mov edi,-3 |
||
401 | jmp xx |
||
402 | ext: |
||
403 | mov ecx,-1 ;1 |
||
404 | ; sub ebp,3 |
||
405 | xx: |
||
625 | diamond | 406 | mov eax,[@@ly] |
31 | halyavin | 407 | mov ebx,SCREEN_X ;320 |
408 | mul ebx |
||
625 | diamond | 409 | add eax,[@@lx1] |
410 | lea ebp,[eax*3-3] ; for delete white dots |
||
31 | halyavin | 411 | add ecx,2 |
412 | loo: |
||
413 | |||
414 | mov eax,dword [@@rgb] |
||
415 | mov bl,al |
||
416 | shr eax,8 ;puck colors |
||
417 | |||
418 | mov byte [scrbuf+ebp],ah |
||
419 | mov byte [scrbuf+ebp+1],al |
||
420 | mov byte [scrbuf+ebp+2],bl |
||
421 | add ebp,edi |
||
422 | dec ecx |
||
423 | jnz loo |
||
424 | |||
425 | ret |
||
426 | |||
427 | ;include fixed3d.asm |
||
428 | ; Mikolaj Felix 25/5/2001 |
||
429 | ; mfelix@polbox.com |
||
430 | |||
431 | ;------------------------------------------------------------ |
||
432 | ; ds:si - offset to angles |
||
433 | ; ds:di - offset to 3d points |
||
434 | ; cx - number of points |
||
435 | ;------------------------------------------------------------ |
||
436 | |||
437 | @@sin_x dw 0 |
||
438 | @@cos_x dw 0 |
||
439 | @@sin_y dw 0 |
||
440 | @@cos_y dw 0 |
||
441 | @@sin_z dw 0 |
||
442 | @@cos_z dw 0 |
||
443 | |||
444 | @@px equ word [edi] |
||
445 | @@py equ word [edi+2] |
||
446 | @@pz equ word [edi+4] |
||
447 | |||
448 | rotate_points: |
||
449 | |||
450 | push edi |
||
451 | mov edi,@@sin_x |
||
452 | mov edx,3 |
||
453 | rp_sin_cos: |
||
625 | diamond | 454 | mov ebx, [esi] |
455 | and ebx,511 |
||
456 | mov ax,word [sin_table+ebx*2] |
||
31 | halyavin | 457 | mov word [edi],ax |
625 | diamond | 458 | mov ax,word [cos_table+ebx*2] |
31 | halyavin | 459 | mov word [edi+2],ax |
460 | |||
461 | add esi,2 |
||
462 | add edi,4 |
||
463 | dec edx |
||
464 | jnz rp_sin_cos |
||
465 | pop edi |
||
466 | |||
467 | rp_rotate: |
||
468 | |||
469 | ; rotate around x-axis |
||
470 | |||
471 | mov ax,@@py |
||
472 | imul [@@cos_x] |
||
473 | mov bx,ax |
||
474 | mov si,dx |
||
475 | |||
476 | mov ax,@@pz |
||
477 | imul [@@sin_x] |
||
478 | sub bx,ax |
||
479 | sbb si,dx |
||
480 | shrd bx,si,14 |
||
481 | push bx |
||
482 | |||
483 | mov ax,@@py |
||
484 | imul [@@sin_x] |
||
485 | mov bx,ax |
||
486 | mov si,dx |
||
487 | |||
488 | mov ax,@@pz |
||
489 | imul [@@cos_x] |
||
490 | add bx,ax |
||
491 | adc si,dx |
||
492 | shrd bx,si,14 |
||
493 | |||
494 | pop @@py |
||
495 | mov @@pz,bx |
||
496 | |||
497 | ; rotate around y-axis |
||
498 | |||
499 | mov ax,@@px |
||
500 | imul [@@cos_y] |
||
501 | mov bx,ax |
||
502 | mov si,dx |
||
503 | |||
504 | mov ax,@@pz |
||
505 | imul [@@sin_y] |
||
506 | sub bx,ax |
||
507 | sbb si,dx |
||
508 | shrd bx,si,14 |
||
509 | push bx |
||
510 | |||
511 | mov ax,@@px |
||
512 | imul [@@sin_y] |
||
513 | mov bx,ax |
||
514 | mov si,dx |
||
515 | |||
516 | mov ax,@@pz |
||
517 | imul [@@cos_y] |
||
518 | add bx,ax |
||
519 | adc si,dx |
||
520 | shrd bx,si,14 |
||
521 | |||
522 | pop @@px |
||
523 | mov @@pz,bx |
||
524 | |||
525 | ; rotate around z-axis |
||
526 | |||
527 | mov ax,@@px |
||
528 | imul [@@cos_z] |
||
529 | mov bx,ax |
||
530 | mov si,dx |
||
531 | |||
532 | mov ax,@@py |
||
533 | imul [@@sin_z] |
||
534 | sub bx,ax |
||
535 | sbb si,dx |
||
536 | shrd bx,si,14 |
||
537 | push bx |
||
538 | |||
539 | mov ax,@@px |
||
540 | imul [@@sin_z] |
||
541 | mov bx,ax |
||
542 | mov si,dx |
||
543 | |||
544 | mov ax,@@py |
||
545 | imul [@@cos_z] |
||
546 | add bx,ax |
||
547 | adc si,dx |
||
548 | shrd bx,si,14 |
||
549 | |||
550 | pop @@px |
||
551 | mov @@py,bx |
||
552 | |||
553 | add edi,6 |
||
554 | dec ecx |
||
555 | jnz rp_rotate |
||
556 | |||
557 | ret |
||
558 | |||
559 | ;------------------------------------------------------------ |
||
560 | ; ds:si - offset to 3d points |
||
561 | ; es:di - offset to 2d points |
||
562 | ; cx - number of points |
||
563 | ;------------------------------------------------------------ |
||
564 | |||
565 | mx dw 0 |
||
566 | my dw 0 |
||
567 | |||
568 | translate_points: |
||
569 | pushad |
||
570 | mov eax,37 |
||
571 | mov ebx,1 |
||
485 | heavyiron | 572 | mcall |
31 | halyavin | 573 | mov ebx,eax |
574 | shr eax,16 |
||
575 | and ebx,0xffff |
||
576 | cmp ax,SCREEN_X |
||
577 | jna x_n |
||
578 | mov ax,0 ;SCREEN_X |
||
579 | x_n: |
||
580 | cmp bx,SCREEN_Y |
||
581 | jna y_n |
||
582 | mov bx,0 ;SCREEN_Y |
||
583 | y_n: |
||
584 | mov [mx],ax |
||
585 | mov [my],bx |
||
586 | popad |
||
587 | |||
625 | diamond | 588 | movzx ebx,word [esi+4] |
31 | halyavin | 589 | mov ax,[my] |
590 | cmp ax,0 |
||
591 | jng no_m |
||
592 | shl ax,3 |
||
593 | add bx,ax |
||
594 | no_m: |
||
595 | add bx,256 ; Z factor (zoom) |
||
596 | |||
625 | diamond | 597 | movsx eax,word [esi] |
598 | shl eax,8 |
||
599 | cdq |
||
600 | idiv ebx |
||
601 | add eax,(SCREEN_X/2) ;160 ;X factor (center X) |
||
31 | halyavin | 602 | stosw |
603 | |||
625 | diamond | 604 | movsx eax,word [esi+2] |
605 | shl eax,8 |
||
606 | cdq |
||
607 | idiv ebx |
||
608 | add eax,(SCREEN_Y/2) ;100 ;Y factor (center Y) |
||
31 | halyavin | 609 | stosw |
610 | |||
611 | add esi,6 |
||
612 | dec ecx |
||
613 | jnz translate_points |
||
614 | ret |
||
615 | |||
616 | fixed_point_const dd 16384.0 |
||
617 | inc_angle dd 0.01227184630309 ; pi/256 |
||
618 | |||
619 | angle_x dw 0 |
||
620 | angle_y dw 0 |
||
621 | angle_z dw 0 |
||
622 | |||
623 | object dw -50,-50,-50, 50,-50,-50, 50,50,-50, -50,50,-50 |
||
624 | dw -50,-50, 50, 50,-50, 50, 50,50, 50, -50,50, 50 |
||
625 | |||
626 | link: |
||
627 | db 0,1,2,10000011b, 0,2,3,10000011b ;purpure side |
||
628 | db 5,4,7,00000111b, 5,7,6,00000111b ;soft-red side |
||
629 | db 1,5,6,00011000b, 1,6,2,00011000b ;soft-lime side |
||
630 | db 4,0,3,11100001b, 4,3,7,11100001b ;soft-blue side |
||
631 | db 4,5,1,00011111b, 1,0,4,00011111b ;yellow side |
||
632 | db 3,2,6,00000000b, 3,6,7,00000000b ;black side |
||
633 | |||
634 | sin_table: |
||
635 | rw 512 |
||
636 | cos_table: |
||
637 | rw 512 |
||
638 | |||
639 | object_rotated: |
||
640 | rw MAX_POINTS*3 |
||
641 | object_translated: |
||
642 | rw MAX_POINTS*2 |
||
643 | |||
644 | scrbuf: |
||
645 | I_END: |