Fix performance by using pointer tricks for ADD. 10% faster line drawing
This commit is contained in:
parent
de2d597612
commit
bc59ac63b1
1 changed files with 6 additions and 9 deletions
|
@ -53,15 +53,12 @@
|
||||||
|
|
||||||
LDY #$00
|
LDY #$00
|
||||||
jsr pixel_draw ;;only used first pixel. after this relative position is abused
|
jsr pixel_draw ;;only used first pixel. after this relative position is abused
|
||||||
|
|
||||||
;;From line_test_time this is at program_start + list_file_offset = $080D + $0116 = $0923
|
|
||||||
for_x:
|
for_x:
|
||||||
;; Lets increment btp_mem_pos with +8
|
;; Paints A to address i btp_mem_pos* + Y
|
||||||
;; Read more in pixel_draw to understand this!
|
;; Y is our Y-pos-chunk-offset.
|
||||||
LDX #$00
|
|
||||||
LDA byte_to_paint
|
LDA byte_to_paint
|
||||||
ORA (>btp_mem_pos, X)
|
ORA (>btp_mem_pos), Y
|
||||||
STA (>btp_mem_pos, X)
|
STA (>btp_mem_pos), Y
|
||||||
increment_pixel_x:
|
increment_pixel_x:
|
||||||
CLC
|
CLC
|
||||||
ROR byte_to_paint
|
ROR byte_to_paint
|
||||||
|
@ -84,7 +81,7 @@ increment_pixel_x_end:
|
||||||
case_1:; C =1 so we can use !
|
case_1:; C =1 so we can use !
|
||||||
Sub_16 >D, <D, >V, <V, ! ; D = D - V
|
Sub_16 >D, <D, >V, <V, ! ; D = D - V
|
||||||
increment_y_pos:
|
increment_y_pos:
|
||||||
Add_16 >btp_mem_pos, <btp_mem_pos, #$01, #$00
|
;Add_16 >btp_mem_pos, <btp_mem_pos, #$01, #$00
|
||||||
INY
|
INY
|
||||||
CPY #$08 ;
|
CPY #$08 ;
|
||||||
BEQ move_8px_down
|
BEQ move_8px_down
|
||||||
|
@ -92,7 +89,7 @@ increment_y_pos:
|
||||||
move_8px_down: ; Z=1 --> C=1
|
move_8px_down: ; Z=1 --> C=1
|
||||||
;; +320-8 bytes
|
;; +320-8 bytes
|
||||||
LDY #$00
|
LDY #$00
|
||||||
Add_16 >btp_mem_pos, <btp_mem_pos,#$38 , #$01
|
Add_16 >btp_mem_pos, <btp_mem_pos,#$40, #$01
|
||||||
jmp for_x
|
jmp for_x
|
||||||
increment_y_pos_end:
|
increment_y_pos_end:
|
||||||
case_2: ;; C =0 because LAG_16 so we can use !
|
case_2: ;; C =0 because LAG_16 so we can use !
|
||||||
|
|
Loading…
Add table
Reference in a new issue