/[projet1]/users/chema/TINE/oobj3d/circle.s
Defence Force logotype

Diff of /users/chema/TINE/oobj3d/circle.s

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 222 by Chema, Tue Jan 19 22:13:21 2010 UTC revision 223 by Chema, Mon Feb 1 22:31:07 2010 UTC
# Line 27  cxpx .byt 0 Line 27  cxpx .byt 0
27  cxmx .byt 0  cxmx .byt 0
28  */  */
29    
 .text  
30    
31    .zero
32    
33  ; Circle centre and radius  ; Circle centre and radius
34  cy   .word 0  cy   .word 0
35  cx   .word 0  cx   .word 0
36  rad  .word 0  rad  .word 0
37    
38    .text
39    
40    
41  #ifdef FILLEDPOLYS  #ifdef FILLEDPOLYS
42    
43  _circlePoints  _circlePoints
# Line 476  p .word 0 Line 479  p .word 0
479  #else  #else
480  _circlePoints  _circlePoints
481  .(  .(
   
     ; Now fill the MaxMin array  
   
         /*  
 ;MaxX[cy+y]=(cx+x>CLIP_RIGHT?CLIP_RIGHT:cx+x);  
 ;MinX[cy+y]=(cx-x<CLIP_LEFT?CLIP_LEFT:cx-x);  
 ;MaxX[cy-y]=(cx+x>CLIP_RIGHT?CLIP_RIGHT:cx+x);  
 ;MinX[cy-y]=(cx-x<CLIP_LEFT?CLIP_LEFT:cx-x);  
 ;MaxX[cy+x]=(cx+y>CLIP_RIGHT?CLIP_RIGHT:cx+y);  
 ;MinX[cy+x]=(cx-y<CLIP_LEFT?CLIP_LEFT:cx-y);  
 ;MaxX[cy-x]=(cx+y>CLIP_RIGHT?CLIP_RIGHT:cx+y);  
 ;MinX[cy-x]=(cx-y<CLIP_LEFT?CLIP_LEFT:cx-y);  
 */  
482      ; Calculate cy+y      ; Calculate cy+y
483            
484      lda cy      lda cy
# Line 497  _circlePoints Line 487  _circlePoints
487      sta Y1      sta Y1
488      lda cy+1      lda cy+1
489      adc sy+1      adc sy+1
490            ;bne skip2
491      sta Y1+1      sta Y1+1
492            
493      ; Calculate cx+x      ; Calculate cx+x
494            
495      lda cx      lda cx
496  ;    clc      clc
497      adc sx      adc sx
498      sta X1      sta X1
499      lda cx+1      lda cx+1
500      adc sx+1      adc sx+1
501            ;bne skip1
502      sta X1+1      sta X1+1
503    
504      jsr plotpoint   ; cx+x,cy+y      jsr plotpoint   ; cx+x,cy+y
505    skip1
506    
507     ; Calculate cx-x     ; Calculate cx-x
508            
# Line 519  _circlePoints Line 512  _circlePoints
512      sta X1      sta X1
513      lda cx+1      lda cx+1
514      sbc sx+1      sbc sx+1
515            ;bne skip3
516      sta X1+1      sta X1+1
517            
518      jsr plotpoint ; cx-x,cy+y      jsr plotpoint ; cx-x,cy+y
519    skip2
520     ; Calculate cy-y     ; Calculate cy-y
521            
522      lda cy      lda cy
523  ;    sec      sec
524      sbc sy      sbc sy
525      sta Y1      sta Y1
526      lda cy+1      lda cy+1
527      sbc sy+1      sbc sy+1
528            ;bne skip4
529      sta Y1+1      sta Y1+1
530            
531      jsr plotpoint ; cx-x,cy-y      jsr plotpoint ; cx-x,cy-y
532    skip3
533    ; Calculate cx+x    ; Calculate cx+x
534            
535      lda cx      lda cx
# Line 543  _circlePoints Line 538  _circlePoints
538      sta X1      sta X1
539      lda cx+1      lda cx+1
540      adc sx+1      adc sx+1
541            ;bne skip4
542      sta X1+1      sta X1+1
543            
544      jsr plotpoint ; cx+x,cy-y      jsr plotpoint ; cx+x,cy-y
545    skip4
546    
547      ; Calculate cy+x      ; Calculate cy+x
548            
549      lda cy      lda cy
550   ;   clc      clc
551      adc sx      adc sx
552      sta Y1      sta Y1
553      lda cy+1      lda cy+1
554      adc sx+1      adc sx+1
555            ;bne skip6
556      sta Y1+1      sta Y1+1
557            
558     ; Calculate cx+y     ; Calculate cx+y
559            
560      lda cx      lda cx
561   ;   clc      clc
562      adc sy      adc sy
563      sta X1      sta X1
564      lda cx+1      lda cx+1
565      adc sy+1      adc sy+1
566            ;bne skip5
567      sta X1+1      sta X1+1
568            
569      jsr plotpoint  ; cx+y,cy+x      jsr plotpoint  ; cx+y,cy+x
570    skip5
571      ; Calculate cx-y      ; Calculate cx-y
572            
573      lda cx      lda cx
# Line 578  _circlePoints Line 576  _circlePoints
576      sta X1      sta X1
577      lda cx+1      lda cx+1
578      sbc sy+1      sbc sy+1
579            ;bne skip7
580      sta X1+1      sta X1+1
581            
582      jsr plotpoint  ; cx-y,cy+x      jsr plotpoint  ; cx-y,cy+x
583    skip6
584    
585      ; Calculate cy-x      ; Calculate cy-x
586            
587      lda cy      lda cy
588   ;   sec      sec
589      sbc sx      sbc sx
590      sta Y1      sta Y1
591      lda cy+1      lda cy+1
592      sbc sx+1      sbc sx+1
593            ;bne skip8
594      sta Y1+1      sta Y1+1
595            
596      jsr plotpoint   ; cx-y,cy-x      jsr plotpoint   ; cx-y,cy-x
597    skip7
598     ; Calculate cx+y     ; Calculate cx+y
599            
600      lda cx      lda cx
# Line 603  _circlePoints Line 603  _circlePoints
603      sta X1      sta X1
604      lda cx+1      lda cx+1
605      adc sy+1      adc sy+1
606            ;bne skip8
607      sta X1+1      sta X1+1
608            
609      jmp plotpoint    ; cx+y,cy-x      jmp plotpoint    ; cx+y,cy-x
610          ;rts  skip8
611            rts
612  .)  .)
613    
614    #ifdef 0
615  plotpoint  plotpoint
616  .(  .(
617          lda #0  ;SMC          lda #0  ;SMC
# Line 676  end Line 679  end
679      rts      rts
680    
681  .)  .)
682    #endif
683    
684    plotpoint
685    .(
686            lda #0  ;SMC
687            bne plot
688    
689            lda X1+1
690            ora Y1+1
691            bne end
692    
693        lda X1
694        cmp #(CLIP_RIGHT)
695            bcs end
696        cmp #(CLIP_LEFT)
697            bcc end
698    
699        lda Y1
700    +patch_circleclip
701        cmp #(CLIP_BOTTOM)
702            bcs end
703        cmp #(CLIP_TOP)
704            bcc end
705    plot
706        ldx X1
707        ldy Y1
708    
709        ;jsr pixel_address
710    
711        lda _HiresAddrLow,y                 ; 4
712            sta tmp0+0                                      ; 3
713            lda _HiresAddrHigh,y            ; 4
714            sta tmp0+1                                      ; 3 => Total 14 cycles
715    
716            ldy _TableDiv6,x
717            lda _TableBit6Reverse,x         ; 4
718      
719    
720        ora (tmp0),y
721        sta (tmp0),y
722    
723    end
724        rts
725    
726    .)
727    
728    
729    
730    
731    .zero
732  ; Variables for circlepoints  ; Variables for circlepoints
733  sy    .word 0  sy    .word 0
734  sx    .word 0  sx    .word 0
# Line 687  xpr    .word 0 Line 738  xpr    .word 0
738  xmr .word 0  xmr .word 0
739  ypr .word 0  ypr .word 0
740  ymr .word 0  ymr .word 0
741    p .word 0
742    
743    .text
744    
745  _circleMidpoint  _circleMidpoint
746  .(  .(
# Line 878  draw Line 931  draw
931      ;  }      ;  }
932    
933  loop  loop
 /*    lda sx  
     sta op1  
     lda sx+1  
     sta op1+1  
     lda sy  
     sta op2  
     lda sy+1  
     sta op2+1  
     jsr cmp16  
     bpl end  
   */    
   
934    .(    .(
935      lda sx      lda sx
936      cmp sy      cmp sy
# Line 967  noinc3 Line 1008  noinc3
1008      jmp loop      jmp loop
1009    
1010  end  end
   
1011      rts      rts
   
   
 p .word 0  
   
1012  .)  .)
1013    
1014    

Legend:
Removed from v.222  
changed lines
  Added in v.223

  ViewVC Help
Powered by ViewVC 1.1.26