dos33fsprogs/demos/trogdor/horiz_scroll_simple.s

92 lines
1.2 KiB
ArmAsm
Raw Permalink Normal View History

2024-01-21 04:10:30 +00:00
;======================================
2024-01-20 20:41:58 +00:00
; do very simple horizontal scroll
2024-01-21 04:10:30 +00:00
;======================================
2024-01-20 20:41:58 +00:00
; screens to pan in $2000/$4000 to left
2024-01-22 03:40:00 +00:00
; A is times to scroll
2024-01-20 20:41:58 +00:00
horiz_pan:
2024-01-22 03:40:00 +00:00
sta pan_count_smc+1
2024-01-20 20:41:58 +00:00
pan_loop:
2024-01-21 04:10:30 +00:00
; how many times to scroll
2024-01-20 20:41:58 +00:00
lda #0
sta COUNT
pan_outer_outer_loop:
2024-01-21 04:10:30 +00:00
; do all 191 lines
2024-01-20 20:41:58 +00:00
ldx #191
pan_outer_loop:
2024-01-21 04:10:30 +00:00
; self-modify the PAGE1 high addresses
2024-01-20 20:41:58 +00:00
lda hposn_high,X
sta pil_smc1+2
sta pil_smc2+2
sta pil_smc4+2
2024-01-21 04:10:30 +00:00
;self modify the PAGE2 high addresses
2024-01-20 20:41:58 +00:00
eor #$60
sta pil_smc3+2
2024-01-21 04:10:30 +00:00
; self modify the PAGE1 LOW addresses
2024-01-20 20:41:58 +00:00
lda hposn_low,X
sta pil_smc2+1
sta pil_smc4+1
2024-01-21 04:10:30 +00:00
; self mofidy the PAGE1 LOW input addresses
2024-01-20 20:41:58 +00:00
sta pil_smc1+1
inc pil_smc1+1
2024-01-21 04:10:30 +00:00
2024-01-20 20:41:58 +00:00
clc
adc COUNT
sta pil_smc3+1
2024-01-21 04:10:30 +00:00
;=========================
; inner loop, from 0-39
2024-01-20 20:41:58 +00:00
ldy #0
pan_inner_loop:
2024-01-21 04:10:30 +00:00
; load in+1, store to in
; if completely unrolled, would save 1 cycle for store and
; 5 for the branch/loop
; 192*6=not a lot
2024-01-20 20:41:58 +00:00
pil_smc1:
2024-01-21 04:10:30 +00:00
lda $2000+1,Y ; 4
2024-01-20 20:41:58 +00:00
pil_smc2:
2024-01-21 04:10:30 +00:00
sta $2000,Y ; 5
iny ; 2
cpy #39 ; 2
bne pan_inner_loop ; 2/3
2024-01-20 20:41:58 +00:00
2024-01-21 04:10:30 +00:00
; for right edge, scroll in from PAGE2
2024-01-20 20:41:58 +00:00
pil_smc3:
lda $4000
pil_smc4:
sta $2000,Y
dex
cpx #$ff
bne pan_outer_loop
inc COUNT
lda COUNT
2024-01-22 03:40:00 +00:00
pan_count_smc:
2024-01-20 20:41:58 +00:00
cmp #39
bne pan_outer_outer_loop
rts