mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-27 02:31:00 +00:00
b1238af49d
this will probably upset people
130 lines
1.9 KiB
ArmAsm
130 lines
1.9 KiB
ArmAsm
|
|
|
|
|
|
;=================================
|
|
; Display a sequence of images
|
|
;=================================
|
|
; quit if escape pressed?
|
|
|
|
; pattern is TIME, PTR
|
|
; if time==0, then done
|
|
; if time==255, reload $C00 with PTR
|
|
; if time==0..127 wait TIME, then overlay PTR over $C00
|
|
; if time==128..254, wait TIME-128, then overlay GBASL over $C00
|
|
|
|
run_sequence:
|
|
ldy #0
|
|
|
|
run_sequence_loop:
|
|
lda (INTRO_LOOPL),Y ; get time
|
|
beq run_sequence_done ; if zero, then done
|
|
|
|
cmp #$ff ; if $ff, then load image to $c00
|
|
bne not_reload
|
|
|
|
reload_image:
|
|
iny
|
|
lda (INTRO_LOOPL),Y
|
|
sta GBASL
|
|
iny
|
|
lda (INTRO_LOOPL),Y
|
|
sta GBASH
|
|
iny
|
|
sty INTRO_LOOPER ; save for later
|
|
lda #$0c ; load to $c00
|
|
jsr load_rle_gr
|
|
jmp seq_stuff
|
|
|
|
not_reload:
|
|
tax
|
|
cmp #$80 ;if negative, no need to load pointer
|
|
bcs no_set_image_ptr ; bge (branch if greater equal)
|
|
|
|
|
|
get_image_ptr:
|
|
iny
|
|
lda (INTRO_LOOPL),Y
|
|
sta GBASL
|
|
iny
|
|
lda (INTRO_LOOPL),Y
|
|
sta GBASH
|
|
|
|
no_set_image_ptr:
|
|
txa
|
|
and #$7f
|
|
tax
|
|
cpx #1
|
|
beq seq_no_wait
|
|
|
|
jsr long_wait
|
|
seq_no_wait:
|
|
|
|
iny
|
|
sty INTRO_LOOPER ; save for later
|
|
lda #$10 ; load to $1000
|
|
jsr load_rle_gr
|
|
|
|
jsr gr_overlay
|
|
jsr page_flip
|
|
seq_stuff:
|
|
ldy INTRO_LOOPER
|
|
|
|
; exit early if escape pressed
|
|
|
|
lda KEYPRESS
|
|
cmp #27+$80
|
|
beq run_sequence_done
|
|
bit KEYRESET
|
|
|
|
jmp run_sequence_loop
|
|
run_sequence_done:
|
|
rts
|
|
|
|
|
|
;====================================
|
|
; Display a sequence of images 40x40
|
|
|
|
run_sequence_40x40:
|
|
ldy #0
|
|
|
|
run_sequence_40x40_loop:
|
|
lda (INTRO_LOOPL),Y ; get time
|
|
beq run_sequence_40x40_done
|
|
tax
|
|
|
|
jsr long_wait
|
|
|
|
iny
|
|
|
|
lda (INTRO_LOOPL),Y
|
|
sta GBASL
|
|
iny
|
|
lda (INTRO_LOOPL),Y
|
|
sta GBASH
|
|
iny
|
|
sty INTRO_LOOPER ; save for later
|
|
lda #$10 ; load to $1000
|
|
jsr load_rle_gr
|
|
|
|
jsr gr_overlay_40x40
|
|
jsr page_flip
|
|
ldy INTRO_LOOPER
|
|
|
|
jmp run_sequence_40x40_loop
|
|
run_sequence_40x40_done:
|
|
rts
|
|
|
|
|
|
|
|
|
|
;=====================
|
|
; long(er) wait
|
|
; waits approximately ?? ms
|
|
|
|
long_wait:
|
|
lda #64
|
|
jsr WAIT ; delay
|
|
dex
|
|
bne long_wait
|
|
rts
|