mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-01 01:06:33 +00:00
360 lines
5.0 KiB
ArmAsm
360 lines
5.0 KiB
ArmAsm
; Regular Tree
|
|
|
|
; =============================================================================
|
|
; ROUTINE MAIN
|
|
; =============================================================================
|
|
|
|
regular_tree:
|
|
|
|
lda #$00
|
|
sta DRAW_PAGE
|
|
sta clear_all_color+1
|
|
|
|
lda #$04
|
|
sta DRAW_PAGE
|
|
jsr clear_all
|
|
|
|
; decompress credits
|
|
lda #<credits_raw_zx02
|
|
sta zx_src_l+1
|
|
lda #>credits_raw_zx02
|
|
sta zx_src_h+1
|
|
lda #$20
|
|
jsr zx02_full_decomp
|
|
|
|
|
|
bit PAGE2 ; set page 2
|
|
; bit SET_TEXT ; set text
|
|
bit LORES ; set lo-res
|
|
|
|
lda #0
|
|
sta FRAME
|
|
|
|
|
|
;===================================
|
|
; 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
|
|
|
|
|
|
; load image offscreen $6000
|
|
|
|
lda #<mask09_data
|
|
sta zx_src_l+1
|
|
lda #>mask09_data
|
|
sta zx_src_h+1
|
|
lda #$60
|
|
jsr zx02_full_decomp
|
|
|
|
; load image offscreen $6400
|
|
|
|
lda #<mask10_data
|
|
sta zx_src_l+1
|
|
lda #>mask10_data
|
|
sta zx_src_h+1
|
|
lda #$64
|
|
jsr zx02_full_decomp
|
|
|
|
; load image offscreen $6800
|
|
|
|
lda #<mask11_data
|
|
sta zx_src_l+1
|
|
lda #>mask11_data
|
|
sta zx_src_h+1
|
|
lda #$68
|
|
jsr zx02_full_decomp
|
|
|
|
; load image offscreen $6C00
|
|
|
|
lda #<mask12_data
|
|
sta zx_src_l+1
|
|
lda #>mask12_data
|
|
sta zx_src_h+1
|
|
lda #$6C
|
|
jsr zx02_full_decomp
|
|
|
|
; load image offscreen $7000
|
|
|
|
lda #<mask13_data
|
|
sta zx_src_l+1
|
|
lda #>mask13_data
|
|
sta zx_src_h+1
|
|
lda #$70
|
|
jsr zx02_full_decomp
|
|
|
|
; load image offscreen $7400
|
|
|
|
lda #<mask14_data
|
|
sta zx_src_l+1
|
|
lda #>mask14_data
|
|
sta zx_src_h+1
|
|
lda #$74
|
|
jsr zx02_full_decomp
|
|
|
|
; load image offscreen $7800
|
|
|
|
lda #<mask15_data
|
|
sta zx_src_l+1
|
|
lda #>mask15_data
|
|
sta zx_src_h+1
|
|
lda #$78
|
|
jsr zx02_full_decomp
|
|
|
|
; load image offscreen $7C00
|
|
|
|
lda #<mask16_data
|
|
sta zx_src_l+1
|
|
lda #>mask16_data
|
|
sta zx_src_h+1
|
|
lda #$7C
|
|
jsr zx02_full_decomp
|
|
|
|
|
|
lda #0
|
|
sta OFFSET
|
|
sta FRAMEL
|
|
sta FRAMEH
|
|
|
|
|
|
reset_tree_loop:
|
|
lda #$40
|
|
sta TREE_COUNT
|
|
|
|
regular_tree_loop:
|
|
ldx TREE_COUNT
|
|
jsr gr_fast_copy
|
|
|
|
jsr scroll_loop
|
|
|
|
jsr page_flip
|
|
|
|
; 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
|
|
cmp #4
|
|
beq done_regular_tree
|
|
|
|
done_music4:
|
|
|
|
|
|
|
|
|
|
lda #128
|
|
jsr wait
|
|
|
|
inc TREE_COUNT
|
|
inc TREE_COUNT
|
|
inc TREE_COUNT
|
|
inc TREE_COUNT
|
|
|
|
lda TREE_COUNT
|
|
cmp #$80
|
|
bne done_tree_count
|
|
jmp reset_tree_loop
|
|
done_tree_count:
|
|
jmp regular_tree_loop
|
|
|
|
|
|
done_regular_tree:
|
|
bit KEYRESET
|
|
|
|
rts
|
|
|
|
|
|
;==========================
|
|
; 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
|
|
|