/[projet1]/public/oric/routines/rasterization/linebench/line8.s
Defence Force logotype

Diff of /public/oric/routines/rasterization/linebench/line8.s

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

revision 264 by thrust26, Mon Feb 8 16:59:22 2010 UTC revision 265 by thrust26, Mon Feb 8 17:33:45 2010 UTC
# Line 10  Line 10 
10  ;517 final optimization at mainly_horizontal  ;517 final optimization at mainly_horizontal
11  ;501 chunking, initial version  ;501 chunking, initial version
12  ;482 optimized chunking (avg: 38.91 cylces)  ;482 optimized chunking (avg: 38.91 cylces)
13  ;473 final optimization for mainly_vertical (37.89)  ;473 final optimization for mainly_vertical (37.89 -> 38.34 corrected)
14    
15  ; TODOs:  ; TODOs:
16  ; + chunking (-35)  ; + chunking (-35)
17  ; - two separate branches instead of patching?  ; - two separate branches instead of patching?
18  ; - countdown minor  ; + countdown minor
19  ;   - mainly_horizontal  ;   x mainly_horizontal (won't work)
20  ;   + mainly_vertical (-9)  ;   + mainly_vertical (-9)
21    
22      .zero      .zero
# Line 64  draw_totaly_vertical_8 Line 64  draw_totaly_vertical_8
64      ldy _TableDiv6,x      ldy _TableDiv6,x
65      lda _TableBit6Reverse,x     ; 4      lda _TableBit6Reverse,x     ; 4
66      sta _mask_patch+1      sta _mask_patch+1
   
67      ldx dy      ldx dy
68      inx      inx
   
69      clc                         ; 2      clc                         ; 2
70  loop  loop
71  _mask_patch  _mask_patch
72      lda #0                      ; 2      lda #0                      ; 2
73      eor (tmp0),y                ; 5      eor (tmp0),y                ; 5*
74      sta (tmp0),y                ; 6 => total = 13 cycles      sta (tmp0),y                ; 6*= 13**
75    
76  ; update the screen address:  ; update the screen address:
77      .(      .(
78      lda tmp0+0                  ; 3      tya                         ; 2
79      adc #ROW_SIZE               ; 2      adc #ROW_SIZE               ; 2
80      sta tmp0+0                  ; 3      tay                         ; 2
81      bcc skip                    ; 2 (+1 if taken)      bcc skip                    ; 2/3= 8/9
82      inc tmp0+1                  ; 5      inc tmp0+1                  ; 5
83      clc                         ; 2      clc                         ; 2 =  7
84  skip  skip                            ;
85      .)      .)
86      ; ------------------Min=13 Max=17      dex                         ; 2
87        bne loop                    ; 2/3=4/5
     dex  
     bne loop  
88      rts      rts
89  .)  .)
90    
# Line 279  __auto_bit6 Line 275  __auto_bit6
275      lda save_a              ; 3      lda save_a              ; 3
276  __auto_dy  __auto_dy
277      adc #00                 ; 2         +DY      adc #00                 ; 2         +DY
278      bcc loopX               ; 2/3=11/12 ~50% taken      bcc loopX               ; 2/3=11/12 ~33.3% taken (not 50% due do to special code for very horizontal lines)
279      ; Time to step in y      ; Time to step in y
280  __auto_dx  __auto_dx
281      sbc #00                 ; 2         -DX      sbc #00                 ; 2         -DX
# Line 298  __auto_dx Line 294  __auto_dx
294  exitLoop  exitLoop
295      rts      rts
296  ; Timings:  ; Timings:
297  ; x++/y  : 34  ; x++/y  : 34    (33.3%)
298  ; x++/y++: 47.40  ; x++/y++: 47.40 (66.7%)
299  ; average: 40.70  ; average: 42.94
300  .)  .)
301    
302      .dsb 256-(*&255)      .dsb 256-(*&255)
# Line 407  loopX Line 403  loopX
403  contColumn                  ;   =  9.85  contColumn                  ;   =  9.85
404  __auto_dy  __auto_dy
405      adc #00                 ; 2         +DY      adc #00                 ; 2         +DY
406      bcc loopX               ; 2/3= 4/5  ~50% taken      bcc loopX               ; 2/3= 4/5  ~75% taken
407      ; Time to step in y      ; Time to step in y
408  __auto_dx  __auto_dx
409      sbc #00                 ; 2         -DX      sbc #00                 ; 2         -DX
# Line 448  loopXEnd Line 444  loopXEnd
444  contColumnEnd               ;   =  9.85  contColumnEnd               ;   =  9.85
445  __auto_dy2  __auto_dy2
446      adc #00                 ; 2         +DY      adc #00                 ; 2         +DY
447      bcc loopXEnd            ; 2/3= 4/5  ~25% taken      bcc loopXEnd            ; 2/3= 4/5  ~50% taken
448    
449  ; plot last chunk:  ; plot last chunk:
450  __auto_pot3  __auto_pot3
# Line 644  incHiPtrEnd                 ; 9 Line 640  incHiPtrEnd                 ; 9
640    
641  ; *** total timings: ***  ; *** total timings: ***
642  ; draw_very_horizontal_8   (29.6%): 27.20  ; draw_very_horizontal_8   (29.6%): 27.20
643  ; draw_mainly_horizontal_8 (20.4%): 40.70  ; draw_mainly_horizontal_8 (20.4%): 42.94 <- corrected!
644  ; draw_mainly_vertical_8   (50.0%): 43.06  ; draw_mainly_vertical_8   (50.0%): 43.06
645  ;----------------------------------------  ;----------------------------------------
646  ; total average           (100.0%): 37.89  ; total average           (100.0%): 38.34
647    
648    
649    

Legend:
Removed from v.264  
changed lines
  Added in v.265

  ViewVC Help
Powered by ViewVC 1.1.26