/[projet1]/public/oric/routines/rasterization/CircleBench/circle.s
Defence Force logotype

Diff of /public/oric/routines/rasterization/CircleBench/circle.s

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

revision 242 by Chema, Wed Feb 3 20:43:37 2010 UTC revision 243 by dbug, Thu Feb 4 21:41:09 2010 UTC
# Line 14  Line 14 
14  ;845  ;845
15  ; Using clipping to 10/190 vertically  ; Using clipping to 10/190 vertically
16  ;827  ;827
17    ;754
18    
19  #include "params.h"  #include "params.h"
20    
# Line 35  sy             .word 0 Line 35  sy             .word 0
35  sx              .word 0  sx              .word 0
36  p                       .word 0  p                       .word 0
37    
38    cxmx            .dsb 2
39    cxpx            .dsb 2
40    cxmy            .dsb 2
41    cxpy            .dsb 2
42    cymx            .dsb 2
43    cypx            .dsb 2
44    cymy            .dsb 2
45    cypy            .dsb 2
46    
47    
48          .text          .text
49    
50    circleExit
51     rts
52            
53  _circleMidpoint  _circleMidpoint
54  .(  .(
55      ; Check if circle is visible      ; Check if circle is visible
# Line 126  drawit Line 139  drawit
139      sbc _Radius+1      sbc _Radius+1
140      sta p+1      sta p+1
141            
142        
143        ; Init cx and co
144        lda _CentreX
145        sta cxmx
146        sta cxpx
147        lda _CentreX+1
148        sta cxmx+1
149        sta cxpx+1
150    
151        lda _CentreY
152        sta cymx
153        sta cypx
154        lda _CentreY+1
155        sta cymx+1
156        sta cypx+1
157    
158        clc
159        lda _CentreX
160        adc _Radius
161        sta cxpy
162        lda _CentreX+1
163        adc _Radius+1
164        sta cxpy+1
165            
166        sec
167        lda _CentreX
168        sbc _Radius
169        sta cxmy
170        lda _CentreX+1
171        sbc _Radius+1
172        sta cxmy+1
173    
174        clc
175        lda _CentreY
176        adc _Radius
177        sta cypy
178        lda _CentreY+1
179        adc _Radius+1
180        sta cypy+1
181            
182        sec
183        lda _CentreY
184        sbc _Radius
185        sta cymy
186        lda _CentreY+1
187        sbc _Radius+1
188        sta cymy+1
189            
190        
191  draw  draw
192     ; circlePoints (xCenter, yCenter, x, y);     ; circlePoints (xCenter, yCenter, x, y);
193      jmp _circlePoints      jmp _circlePoints
194  .)  .)
195    
196  circleExit  circleExit2
197   rts   rts
198    
199    
# Line 147  circleExit Line 209  circleExit
209      ;  }      ;  }
210    
211          ;.dsb 256-(*&255) 825 with, 822 without Oo          ;.dsb 256-(*&255) 825 with, 822 without Oo
212          
213  loop  loop
214  .(  .(
215      sec      sec
# Line 155  loop Line 217  loop
217      sbc sy      sbc sy
218      lda sx+1      lda sx+1
219      sbc sy+1      sbc sy+1
220          bpl circleExit          bpl circleExit2
221    
222            /*  
223            cxmx            .dsb 2
224            cymx            .dsb 2
225            cxpx            .dsb 2
226            cypx            .dsb 2
227            */
228    
229            .(
230            inc cxpx
231            bne skip
232            inc cxpx+1
233    skip    
234            .)      
235            
236            .(
237            inc cypx
238            bne skip
239            inc cypx+1
240    skip
241            .)      
242    
243            .(
244            lda cxmx
245            bne skip
246            dec cxmx+1
247    skip
248            dec cxmx
249            .)      
250            
251            .(
252            lda cymx
253            bne skip
254            dec cymx+1
255    skip
256            dec cymx
257            .)      
258                            
259      inc sx      inc sx
260      bne noinc      bne noinc
261      inc sx+1      inc sx+1
# Line 164  noinc Line 263  noinc
263    
264      lda p+1      lda p+1
265      bpl positivep      bpl positivep
266        
267      lda sx      lda sx
268      asl      asl
269      sta tmp      sta tmp
# Line 187  noinc2 Line 286  noinc2
286      jmp _circlePoints      jmp _circlePoints
287    
288  positivep      positivep    
289            /*
290            cymy            .dsb 2
291            cypy            .dsb 2
292            cxmy            .dsb 2
293            cxpy            .dsb 2
294            */      
295    
296            .(
297            inc cymy
298            bne skip
299            inc cymy+1
300    skip    
301            .)      
302            
303            .(
304            inc cxmy
305            bne skip
306            inc cxmy+1
307    skip
308            .)      
309    
310            .(
311            lda cypy
312            bne skip
313            dec cypy+1
314    skip
315            dec cypy
316            .)      
317            
318            .(
319            lda cxpy
320            bne skip
321            dec cxpy+1
322    skip
323            dec cxpy
324            .)      
325            
326      lda sy      lda sy
327      bne nodec      bne nodec
328      dec sy+1      dec sy+1
# Line 225  noinc3 Line 360  noinc3
360  _circlePoints  _circlePoints
361  .(  .(
362      ; Calculate _CentreY+y      ; Calculate _CentreY+y
363      lda _CentreY      ldy cypy
364      clc      lda cypy+1
     adc sy  
         tay  
     lda _CentreY+1  
     adc sy+1  
365      sta Y1      sta Y1
366            
367      ; Calculate _CentreX+x          ; Calculate _CentreX+x    
368      lda _CentreX      ldx cxpx
369      clc      lda cxpx+1
     adc sx  
         tax  
     lda _CentreX+1  
     adc sx+1  
370          ora Y1          ora Y1
371          bne skip1          bne skip1
372    
# Line 271  end Line 398  end
398    
399  skip1  skip1
400      ; Calculate _CentreY+y (already done)          ; Calculate _CentreY+y (already done)    
401      ; Calculate _CentreX-x          ; Calculate _CentreX-x  
402      lda _CentreX      
403      sec      ldx cxmx
404      sbc sx      lda cxmx+1
405          tax          ora Y1
     lda _CentreX+1  
     sbc sx+1  
406      sta X1      sta X1
407          ora Y1          ora Y1
408          bne skip2          bne skip2
       
409  .(  .(
410          cpx #(CLIP_RIGHT)          cpx #(CLIP_RIGHT)
411          bcs end          bcs end
# Line 307  end Line 431  end
431    
432  skip2  skip2
433      ; Calculate _CentreY-y      ; Calculate _CentreY-y
434      lda _CentreY      ldy cymy
435      sec      lda cymy+1
     sbc sy  
         tay  
     lda _CentreY+1  
     sbc sy+1  
436      sta Y1      sta Y1
437          ora X1          ora X1
438          bne skip3          bne skip3
# Line 347  end Line 467  end
467  skip3  skip3
468      ; Calculate _CentreY-y (already done)      ; Calculate _CentreY-y (already done)
469      ; Calculate _CentreX+x      ; Calculate _CentreX+x
470      lda _CentreX      ldx cxpx
471      clc      lda cxpx+1
     adc sx  
         tax  
     lda _CentreX+1  
     adc sx+1  
472      sta X1      sta X1
473          ora Y1          ora Y1
474          bne skip4          bne skip4
   
475  .(  .(
476          cpx #(CLIP_RIGHT)          cpx #(CLIP_RIGHT)
477          bcs end          bcs end
# Line 382  end Line 497  end
497    
498  skip4  skip4
499      ; Calculate _CentreY+x      ; Calculate _CentreY+x
500      lda _CentreY      ldy cypx
501      clc      lda cypx+1
     adc sx  
         tay  
     lda _CentreY+1  
     adc sx+1  
502      sta Y1      sta Y1
503            
504      ; Calculate _CentreX+y          ; Calculate _CentreX+y    
505      lda _CentreX      ldx cxpy
506      clc      lda cxpy+1
507      adc sy      ORA Y1
         tax  
     lda _CentreX+1  
     adc sy+1  
         ora Y1  
508          bne skip5          bne skip5
     
509  .(  .(
510          cpx #(CLIP_RIGHT)          cpx #(CLIP_RIGHT)
511          bcs end          bcs end
# Line 428  end Line 534  end
534  skip5  skip5
535      ; Calculate _CentreX+y (already done)      ; Calculate _CentreX+y (already done)
536      ; Calculate _CentreX-y      ; Calculate _CentreX-y
537      lda _CentreX      ldx cxmy
538      sec      lda cxmy+1
     sbc sy  
         tax  
     lda _CentreX+1  
     sbc sy+1  
539      sta X1      sta X1
540          ora Y1          ora Y1
541          bne skip6          bne skip6
     
542  .(  .(
543          cpx #(CLIP_RIGHT)          cpx #(CLIP_RIGHT)
544          bcs end          bcs end
# Line 465  end Line 566  end
566    
567  skip6  skip6
568      ; Calculate _CentreX-y (already done)      ; Calculate _CentreX-y (already done)
569      ; Calculate _CentreY-x          ; Calculate _CentreY-x  
570      lda _CentreY      ldy cymx
571      sec      lda cymx+1
     sbc sx  
         tay  
     lda _CentreY+1  
     sbc sx+1  
572      sta Y1      sta Y1
573          ora X1          ora X1
574          bne skip7          bne skip7
     
575  .(  .(
576          cpx #(CLIP_RIGHT)          cpx #(CLIP_RIGHT)
577          bcs end          bcs end
# Line 504  end Line 600  end
600  skip7  skip7
601      ; Calculate _CentreY-x (already done)      ; Calculate _CentreY-x (already done)
602      ; Calculate _CentreX+y      ; Calculate _CentreX+y
603      lda _CentreX      ldx cxpy
604      clc      lda cxpy+1
     adc sy  
         tax  
     lda _CentreX+1  
     adc sy+1  
605          ora Y1          ora Y1
606          bne skip8          bne skip8
       
607  .(  .(
608          cpx #(CLIP_RIGHT)          cpx #(CLIP_RIGHT)
609          bcs end          bcs end
# Line 540  skip8 Line 631  skip8
631      jmp loop      jmp loop
632  .)  .)
633    
   
   
   
   
   
   
   
   

Legend:
Removed from v.242  
changed lines
  Added in v.243

  ViewVC Help
Powered by ViewVC 1.1.26