dos33fsprogs/demos/xmas_2023/regular_tree.s

352 lines
4.8 KiB
ArmAsm
Raw Normal View History

2023-12-23 19:44:06 +00:00
; Regular Tree
; =============================================================================
; ROUTINE MAIN
; =============================================================================
regular_tree:
lda #$00
sta DRAW_PAGE
sta clear_all_color+1
lda #$04
sta DRAW_PAGE
jsr clear_all
bit PAGE2 ; set page 2
; bit SET_TEXT ; set text
bit LORES ; set lo-res
lda #0
sta FRAME
2023-12-23 21:15:33 +00:00
;===================================
; load images offscreen $4000-$6000
; load image offscreen $4000
lda #<mask01_data
sta zx_src_l+1
lda #>mask01_data
sta zx_src_h+1
lda #$40
jsr zx02_full_decomp
; load image offscreen $4400
lda #<mask02_data
sta zx_src_l+1
lda #>mask02_data
sta zx_src_h+1
lda #$44
jsr zx02_full_decomp
; load image offscreen $4800
lda #<mask03_data
sta zx_src_l+1
lda #>mask03_data
sta zx_src_h+1
lda #$48
jsr zx02_full_decomp
; load image offscreen $5000
lda #<mask04_data
sta zx_src_l+1
lda #>mask04_data
sta zx_src_h+1
lda #$4C
jsr zx02_full_decomp
; load image offscreen $5000
lda #<mask05_data
sta zx_src_l+1
lda #>mask05_data
sta zx_src_h+1
lda #$50
jsr zx02_full_decomp
; load image offscreen $5400
lda #<mask06_data
sta zx_src_l+1
lda #>mask06_data
sta zx_src_h+1
lda #$54
jsr zx02_full_decomp
; load image offscreen $5800
lda #<mask07_data
sta zx_src_l+1
lda #>mask07_data
sta zx_src_h+1
lda #$58
jsr zx02_full_decomp
; load image offscreen $5C00
lda #<mask08_data
sta zx_src_l+1
lda #>mask08_data
sta zx_src_h+1
lda #$5C
jsr zx02_full_decomp
2023-12-23 19:44:06 +00:00
; load image offscreen $6000
2023-12-23 21:15:33 +00:00
lda #<mask09_data
2023-12-23 19:44:06 +00:00
sta zx_src_l+1
2023-12-23 21:15:33 +00:00
lda #>mask09_data
2023-12-23 19:44:06 +00:00
sta zx_src_h+1
lda #$60
jsr zx02_full_decomp
; load image offscreen $6400
2023-12-23 21:15:33 +00:00
lda #<mask10_data
2023-12-23 19:44:06 +00:00
sta zx_src_l+1
2023-12-23 21:15:33 +00:00
lda #>mask10_data
2023-12-23 19:44:06 +00:00
sta zx_src_h+1
lda #$64
jsr zx02_full_decomp
; load image offscreen $6800
2023-12-23 21:15:33 +00:00
lda #<mask11_data
2023-12-23 19:44:06 +00:00
sta zx_src_l+1
2023-12-23 21:15:33 +00:00
lda #>mask11_data
2023-12-23 19:44:06 +00:00
sta zx_src_h+1
lda #$68
jsr zx02_full_decomp
; load image offscreen $6C00
2023-12-23 21:15:33 +00:00
lda #<mask12_data
2023-12-23 19:44:06 +00:00
sta zx_src_l+1
2023-12-23 21:15:33 +00:00
lda #>mask12_data
2023-12-23 19:44:06 +00:00
sta zx_src_h+1
lda #$6C
jsr zx02_full_decomp
; load image offscreen $7000
2023-12-23 21:15:33 +00:00
lda #<mask13_data
2023-12-23 19:44:06 +00:00
sta zx_src_l+1
2023-12-23 21:15:33 +00:00
lda #>mask13_data
2023-12-23 19:44:06 +00:00
sta zx_src_h+1
lda #$70
jsr zx02_full_decomp
; load image offscreen $7400
2023-12-23 21:15:33 +00:00
lda #<mask14_data
2023-12-23 19:44:06 +00:00
sta zx_src_l+1
2023-12-23 21:15:33 +00:00
lda #>mask14_data
2023-12-23 19:44:06 +00:00
sta zx_src_h+1
lda #$74
jsr zx02_full_decomp
; load image offscreen $7800
2023-12-23 21:15:33 +00:00
lda #<mask15_data
2023-12-23 19:44:06 +00:00
sta zx_src_l+1
2023-12-23 21:15:33 +00:00
lda #>mask15_data
2023-12-23 19:44:06 +00:00
sta zx_src_h+1
lda #$78
jsr zx02_full_decomp
; load image offscreen $7C00
2023-12-23 21:15:33 +00:00
lda #<mask16_data
2023-12-23 19:44:06 +00:00
sta zx_src_l+1
2023-12-23 21:15:33 +00:00
lda #>mask16_data
2023-12-23 19:44:06 +00:00
sta zx_src_h+1
lda #$7C
jsr zx02_full_decomp
lda #0
sta OFFSET
2023-12-23 21:30:58 +00:00
sta FRAMEL
sta FRAMEH
2023-12-23 19:44:06 +00:00
reset_tree_loop:
2023-12-23 21:15:33 +00:00
lda #$40
2023-12-23 19:44:06 +00:00
sta TREE_COUNT
regular_tree_loop:
ldx TREE_COUNT
jsr gr_fast_copy
jsr scroll_loop
jsr page_flip
2023-12-23 21:30:58 +00:00
; update frame count
inc FRAMEL ; 5
lda FRAMEL ; 3
and #$3f ; 2
sta FRAMEL ; 3
bne frame_noflo4 ; 2/3
inc FRAMEH ; 5
frame_noflo4:
lda KEYPRESS
bmi done_regular_tree
; wait for_pattern / end
lda SOUND_STATUS
and #SOUND_MOCKINGBOARD
beq no_music4
; lda #1
; cmp current_pattern_smc+1
; bcc totally_done_fireplace
; beq totally_done_fireplace
; jmp done_music4
no_music4:
lda FRAMEH
2023-12-23 21:55:41 +00:00
cmp #7
2023-12-23 21:30:58 +00:00
beq done_regular_tree
done_music4:
2023-12-23 19:44:06 +00:00
lda #128
jsr wait
inc TREE_COUNT
inc TREE_COUNT
inc TREE_COUNT
inc TREE_COUNT
lda TREE_COUNT
cmp #$80
2023-12-23 21:30:58 +00:00
bne done_tree_count
2023-12-23 19:44:06 +00:00
jmp reset_tree_loop
2023-12-23 21:30:58 +00:00
done_tree_count:
jmp regular_tree_loop
2023-12-23 19:44:06 +00:00
done_regular_tree:
2023-12-23 21:30:58 +00:00
bit KEYRESET
2023-12-23 19:44:06 +00:00
2023-12-23 21:30:58 +00:00
rts
2023-12-23 19:44:06 +00:00
;==========================
; gr_fast_copy
;==========================
; page to start at in X
gr_fast_copy:
stx fcl_smc1+2
stx fcl_smc2+2
inx
stx fcl_smc3+2
stx fcl_smc4+2
inx
stx fcl_smc5+2
stx fcl_smc6+2
inx
stx fcl_smc7+2
stx fcl_smc8+2
lda DRAW_PAGE
clc
adc #4
tax
stx fcl_smc11+2
stx fcl_smc12+2
inx
stx fcl_smc13+2
stx fcl_smc14+2
inx
stx fcl_smc15+2
stx fcl_smc16+2
inx
stx fcl_smc17+2
stx fcl_smc18+2
ldy #120
gr_fast_copy_loop:
fcl_smc1:
lda $7000,Y
fcl_smc11:
sta $400,Y
fcl_smc2:
lda $7080,Y
fcl_smc12:
sta $480,Y
fcl_smc3:
lda $7100,Y
fcl_smc13:
sta $500,Y
fcl_smc4:
lda $7180,Y
fcl_smc14:
sta $580,Y
fcl_smc5:
lda $7200,Y
fcl_smc15:
sta $600,Y
fcl_smc6:
lda $7280,Y
fcl_smc16:
sta $680,Y
fcl_smc7:
lda $7300,Y
fcl_smc17:
sta $700,Y
fcl_smc8:
lda $7380,Y
fcl_smc18:
sta $780,Y
dey
bpl gr_fast_copy_loop
rts
page_flip:
lda DRAW_PAGE
beq flip_draw_page2
flip_draw_page_1:
bit PAGE2
lda #0
beq done_page_flip ; bra
flip_draw_page2:
bit PAGE1
lda #4
done_page_flip:
sta DRAW_PAGE
rts