dos33fsprogs/games/sb/hgr_vscroll.s

77 lines
920 B
ArmAsm

;================================
; HGR vscroll
;================================
; image to scroll in is in $A000
hgr_vscroll:
ldx #191
stx SCROLL ; SCROLL = 0
vscroll_loop:
; for x=0 to 192-SCROLL
; write 40 bytes of 00
ldx #0
vscroll_inner:
lda hposn_high,X
sta OUTH
lda hposn_low,X
sta OUTL
ldy #39
lda #0
vscroll_line:
sta (OUTL),Y
dey
bpl vscroll_line
inx
cpx SCROLL
bne vscroll_inner
;====================
; draw bottom part
lda #0
sta SCROLL_OFFSET
vscroll_bottom:
stx XSAVE
ldx SCROLL_OFFSET
lda hposn_high,X
clc
adc #$80 ; ora instead?
sta INH
lda hposn_low,X
sta INL
inc SCROLL_OFFSET
ldx XSAVE
lda hposn_high,X
sta OUTH
lda hposn_low,X
sta OUTL
ldy #39
vscroll_bottom_line:
lda (INL),Y
sta (OUTL),Y
dey
bpl vscroll_bottom_line
inx
cpx #192
bne vscroll_bottom
;=====================
; scroll whole screen
dec SCROLL
bne vscroll_loop
rts