dos33fsprogs/mode7/scroll_demo.s

116 lines
1.5 KiB
ArmAsm
Raw Normal View History

2017-12-14 05:59:34 +00:00
.include "zp.inc"
;================================
; Clear screen and setup graphics
;================================
jsr clear_screens ; clear top/bottom of page 0/1
jsr set_gr_page0
;===============
; Init Variables
;===============
lda #0
sta DISP_PAGE
sta ANGLE
2017-12-14 05:59:34 +00:00
scroll_loop:
ldx #0
ldy ANGLE
lda DISP_PAGE
beq draw_page2
lda #4
sta sm1+2
sta sm2+2
lda #5
sta sm3+2
sta sm4+2
jmp draw_done
draw_page2:
lda #8
sta sm1+2
sta sm2+2
lda #9
sta sm3+2
sta sm4+2
draw_done:
2017-12-14 05:59:34 +00:00
draw_loop:
2017-12-14 05:59:34 +00:00
lda scroll_row1,Y
sm1:
sta $400,X
2017-12-14 05:59:34 +00:00
lda scroll_row2,Y
sm2:
sta $480,X
2017-12-14 05:59:34 +00:00
lda scroll_row3,Y
sm3:
sta $500,X
2017-12-14 05:59:34 +00:00
lda scroll_row4,Y
sm4:
sta $580,X
2017-12-14 05:59:34 +00:00
iny
inx
cpx #40
2017-12-14 05:59:34 +00:00
bne draw_loop
;==================
; flip pages
;==================
jsr page_flip ; 6
;==================
; delay
;==================
lda #125
jsr WAIT
2017-12-14 05:59:34 +00:00
;==================
; loop forever
;==================
clc
lda ANGLE
adc #40
cmp scroll_length
bne blah
lda #0
sta ANGLE
jmp scroll_loop
2017-12-14 05:59:34 +00:00
blah:
inc ANGLE
2017-12-14 05:59:34 +00:00
jmp scroll_loop ; 3
;===============================================
; External modules
;===============================================
.include "utils.s"
;===============================================
; Variables
;===============================================
.include "deater_scroll.inc"
; waste memory with a lookup table
; move this to the zeropage?
gr_offsets:
.word $400,$480,$500,$580,$600,$680,$700,$780
.word $428,$4a8,$528,$5a8,$628,$6a8,$728,$7a8
.word $450,$4d0,$550,$5d0,$650,$6d0,$750,$7d0