mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-08-15 08:27:41 +00:00
driven: horiz_scroll: unroll 3 times
This commit is contained in:
@@ -26,10 +26,14 @@ pan_outer_loop:
|
|||||||
clc
|
clc
|
||||||
adc DRAW_PAGE
|
adc DRAW_PAGE
|
||||||
sta pil_smc2+2 ; lda
|
sta pil_smc2+2 ; lda
|
||||||
|
sta pil_smc12+2 ; lda
|
||||||
|
sta pil_smc22+2 ; lda
|
||||||
sta pil_smc6+2 ; lda
|
sta pil_smc6+2 ; lda
|
||||||
eor #$60
|
eor #$60
|
||||||
sta pil_smc1+2 ; sta
|
sta pil_smc1+2 ; sta
|
||||||
sta pil_smc3+2 ; sta
|
sta pil_smc3+2 ; sta
|
||||||
|
sta pil_smc13+2 ; sta
|
||||||
|
sta pil_smc23+2 ; sta
|
||||||
|
|
||||||
|
|
||||||
; $6000
|
; $6000
|
||||||
@@ -47,6 +51,8 @@ pan_outer_loop:
|
|||||||
lda hposn_low,X
|
lda hposn_low,X
|
||||||
sta pil_smc1+1
|
sta pil_smc1+1
|
||||||
sta pil_smc2+1
|
sta pil_smc2+1
|
||||||
|
sta pil_smc12+1
|
||||||
|
sta pil_smc22+1
|
||||||
sta pil_smc6+1
|
sta pil_smc6+1
|
||||||
sta pil_smc5+1
|
sta pil_smc5+1
|
||||||
sta pil_smc8+1
|
sta pil_smc8+1
|
||||||
@@ -55,6 +61,8 @@ pan_outer_loop:
|
|||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta pil_smc3+1
|
sta pil_smc3+1
|
||||||
|
sta pil_smc13+1
|
||||||
|
sta pil_smc23+1
|
||||||
sta pil_smc7+1
|
sta pil_smc7+1
|
||||||
sta pil_smc9+1
|
sta pil_smc9+1
|
||||||
|
|
||||||
@@ -64,11 +72,16 @@ pan_outer_loop:
|
|||||||
|
|
||||||
; original: 6+(30*39)-1 = 1175
|
; original: 6+(30*39)-1 = 1175
|
||||||
; new 6+(24*39)-1 = 941
|
; new 6+(24*39)-1 = 941
|
||||||
|
; unroll? 6+(41*20)-1 = 825
|
||||||
|
; unroll by 3 6+(58*13)-1 = 760
|
||||||
|
|
||||||
ldy #0 ; start col0 ; 2
|
ldy #0 ; start col0 ; 2
|
||||||
pil_smc1:
|
pil_smc1:
|
||||||
ldx $2000,Y ; even col ; 4+
|
ldx $2000,Y ; even col ; 4+
|
||||||
|
|
||||||
|
;===================================
|
||||||
|
; loop1
|
||||||
|
|
||||||
pan_inner_loop:
|
pan_inner_loop:
|
||||||
|
|
||||||
; X from previous loop
|
; X from previous loop
|
||||||
@@ -82,6 +95,42 @@ pil_smc3:
|
|||||||
pil_smc2:
|
pil_smc2:
|
||||||
sta $2000,Y ; update ; 5
|
sta $2000,Y ; update ; 5
|
||||||
|
|
||||||
|
iny ; 2
|
||||||
|
|
||||||
|
;===================================
|
||||||
|
; loop2
|
||||||
|
|
||||||
|
;pan_inner_loop:
|
||||||
|
|
||||||
|
; X from previous loop
|
||||||
|
|
||||||
|
lda left_lookup_main,X ; lookup next ; 4+
|
||||||
|
|
||||||
|
pil_smc13:
|
||||||
|
ldx $2000+1,Y ; odd col ; 4+
|
||||||
|
ora left_lookup_next,X ; 4+
|
||||||
|
|
||||||
|
pil_smc12:
|
||||||
|
sta $2000,Y ; update ; 5
|
||||||
|
|
||||||
|
iny ; 2
|
||||||
|
|
||||||
|
;===================================
|
||||||
|
; loop3
|
||||||
|
|
||||||
|
;pan_inner_loop:
|
||||||
|
|
||||||
|
; X from previous loop
|
||||||
|
|
||||||
|
lda left_lookup_main,X ; lookup next ; 4+
|
||||||
|
|
||||||
|
pil_smc23:
|
||||||
|
ldx $2000+1,Y ; odd col ; 4+
|
||||||
|
ora left_lookup_next,X ; 4+
|
||||||
|
|
||||||
|
pil_smc22:
|
||||||
|
sta $2000,Y ; update ; 5
|
||||||
|
|
||||||
iny ; 2
|
iny ; 2
|
||||||
cpy #39 ; 2
|
cpy #39 ; 2
|
||||||
bne pan_inner_loop ; 2/3
|
bne pan_inner_loop ; 2/3
|
||||||
|
Reference in New Issue
Block a user