mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-01 12:41:35 +00:00
trogdor: animated flames
This commit is contained in:
parent
5770d7ca01
commit
81828eae07
|
@ -39,8 +39,9 @@ qload.o: zp.inc hardware.inc music.inc qload.s \
|
||||||
gr_offsets.s \
|
gr_offsets.s \
|
||||||
wait.s wait_a_bit.s \
|
wait.s wait_a_bit.s \
|
||||||
lc_detect.s \
|
lc_detect.s \
|
||||||
|
hgr_clear_screen.s hgr_copy_fast.s \
|
||||||
text_print.s start.s \
|
text_print.s start.s \
|
||||||
hgr_table.s gs_interrupt.s \
|
hgr_table.s gs_interrupt.s hgr_page_flip.s \
|
||||||
zx02_optim.s wait_keypress.s hardware_detect.s \
|
zx02_optim.s wait_keypress.s hardware_detect.s \
|
||||||
pt3_lib_detect_model.s pt3_lib_mockingboard_detect.s \
|
pt3_lib_detect_model.s pt3_lib_mockingboard_detect.s \
|
||||||
pt3_lib_mockingboard_setup.s interrupt_handler.s \
|
pt3_lib_mockingboard_setup.s interrupt_handler.s \
|
||||||
|
@ -87,6 +88,9 @@ qload.inc: generate_common QLOAD
|
||||||
./generate_common -a 0x1200 -s zx02_full_decomp qload.lst >> qload.inc
|
./generate_common -a 0x1200 -s zx02_full_decomp qload.lst >> qload.inc
|
||||||
./generate_common -a 0x1200 -s zx_src_h qload.lst >> qload.inc
|
./generate_common -a 0x1200 -s zx_src_h qload.lst >> qload.inc
|
||||||
./generate_common -a 0x1200 -s zx_src_l qload.lst >> qload.inc
|
./generate_common -a 0x1200 -s zx_src_l qload.lst >> qload.inc
|
||||||
|
./generate_common -a 0x1200 -s hgr_clear_screen qload.lst >> qload.inc
|
||||||
|
./generate_common -a 0x1200 -s hgr_copy_fast qload.lst >> qload.inc
|
||||||
|
./generate_common -a 0x1200 -s hgr_page_flip qload.lst >> qload.inc
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
|
|
||||||
|
hgr_clear_screen_black:
|
||||||
|
ldy #0
|
||||||
|
|
||||||
hgr_clear_screen:
|
hgr_clear_screen:
|
||||||
|
|
||||||
lda DRAW_PAGE
|
lda DRAW_PAGE
|
||||||
beq hgr_page1_clearscreen
|
beq hgr_page1_clearscreen
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
beq hgr_page2_clearscreen
|
beq hgr_page2_clearscreen
|
||||||
|
|
||||||
hgr_page1_clearscreen:
|
hgr_page1_clearscreen:
|
||||||
|
|
||||||
|
tya
|
||||||
ldy #0
|
ldy #0
|
||||||
hgr_page1_cls_loop:
|
hgr_page1_cls_loop:
|
||||||
sta $2000,Y
|
sta $2000,Y
|
||||||
|
@ -47,7 +54,7 @@ hgr_page1_cls_loop:
|
||||||
|
|
||||||
|
|
||||||
hgr_page2_clearscreen:
|
hgr_page2_clearscreen:
|
||||||
|
tya
|
||||||
ldy #0
|
ldy #0
|
||||||
hgr_page2_cls_loop:
|
hgr_page2_cls_loop:
|
||||||
sta $4000,Y
|
sta $4000,Y
|
||||||
|
|
|
@ -192,6 +192,9 @@ PT3_ENABLE_APPLE_IIC = 1
|
||||||
.include "gr_fast_clear.s"
|
.include "gr_fast_clear.s"
|
||||||
.include "text_print.s"
|
.include "text_print.s"
|
||||||
.include "gr_offsets.s"
|
.include "gr_offsets.s"
|
||||||
|
.include "hgr_clear_screen.s"
|
||||||
|
.include "hgr_copy_fast.s"
|
||||||
|
.include "hgr_page_flip.s"
|
||||||
|
|
||||||
.include "pt3_lib_detect_model.s"
|
.include "pt3_lib_detect_model.s"
|
||||||
.include "pt3_lib_mockingboard_detect.s"
|
.include "pt3_lib_mockingboard_detect.s"
|
||||||
|
|
|
@ -12,74 +12,236 @@ trogdor_main:
|
||||||
; init
|
; init
|
||||||
;======================================
|
;======================================
|
||||||
|
|
||||||
lda #$00
|
; clear screen to white0
|
||||||
sta DRAW_PAGE
|
|
||||||
sta clear_all_color+1
|
|
||||||
|
|
||||||
lda #$04
|
|
||||||
sta DRAW_PAGE
|
|
||||||
jsr clear_all
|
|
||||||
|
|
||||||
;======================================
|
|
||||||
; draw opening scene
|
|
||||||
;======================================
|
|
||||||
|
|
||||||
lda #$0
|
lda #$0
|
||||||
sta DRAW_PAGE
|
sta DRAW_PAGE
|
||||||
|
; sta FRAME
|
||||||
|
; sta SECONDS
|
||||||
|
|
||||||
lda #<trog00_graphics
|
ldy #$7f
|
||||||
sta zx_src_l+1
|
jsr hgr_clear_screen
|
||||||
lda #>trog00_graphics
|
|
||||||
sta zx_src_h+1
|
; set to HIRES PAGE1
|
||||||
lda #$20
|
|
||||||
jsr zx02_full_decomp
|
|
||||||
|
|
||||||
bit SET_GR
|
bit SET_GR
|
||||||
bit HIRES
|
bit HIRES
|
||||||
bit FULLGR
|
bit FULLGR
|
||||||
bit PAGE1
|
bit PAGE1
|
||||||
|
|
||||||
|
;======================================
|
||||||
|
; draw SCENE 1
|
||||||
|
;======================================
|
||||||
|
|
||||||
|
; scroll in zoomed in trogdor from right to left
|
||||||
|
; for 60 frames (roughly 2s)
|
||||||
|
|
||||||
|
; decompress trogdor screen to offscreen $6000
|
||||||
|
|
||||||
|
lda #<trog00_graphics
|
||||||
|
sta zx_src_l+1
|
||||||
|
lda #>trog00_graphics
|
||||||
|
sta zx_src_h+1
|
||||||
|
lda #$60
|
||||||
|
jsr zx02_full_decomp
|
||||||
|
|
||||||
|
lda #$60
|
||||||
|
jsr hgr_copy_fast
|
||||||
|
|
||||||
jsr wait_until_keypress
|
jsr wait_until_keypress
|
||||||
|
|
||||||
; draw left flame
|
; TODO: can remove these?
|
||||||
|
|
||||||
lda #<left_flame_small
|
; current, DRAW_PAGE=0, active page=1
|
||||||
sta INL
|
lda #$20
|
||||||
lda #>left_flame_small
|
sta DRAW_PAGE
|
||||||
sta INH
|
|
||||||
lda #<left_flame_small_mask
|
|
||||||
sta MASKL
|
|
||||||
lda #>left_flame_small_mask
|
|
||||||
sta MASKH
|
|
||||||
|
|
||||||
lda #8
|
; clear to white
|
||||||
sta SPRITE_X
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
lda #152
|
jsr hgr_page_flip
|
||||||
sta SPRITE_Y
|
|
||||||
|
|
||||||
jsr hgr_draw_sprite_big_mask
|
;======================================
|
||||||
|
; draw SCENE 2
|
||||||
|
;======================================
|
||||||
|
|
||||||
; draw right flame
|
; draw flames
|
||||||
|
; left flame short 2 frames
|
||||||
|
; left tall 1212 roughly 10 frames (1/2 s)
|
||||||
|
; both short 2 frames
|
||||||
|
; right tall 1212 roughly 10 frames
|
||||||
|
; right short 2 frames
|
||||||
|
; left frame short 2 frames
|
||||||
|
; left tall 1212 roughly 10 frames (1/2 s)
|
||||||
|
; left short 2 frames
|
||||||
|
|
||||||
lda #<right_flame_big
|
;======================================
|
||||||
sta INL
|
; left flame short 2 frames
|
||||||
lda #>right_flame_big
|
|
||||||
sta INH
|
|
||||||
lda #<right_flame_big_mask
|
|
||||||
sta MASKL
|
|
||||||
lda #>right_flame_big_mask
|
|
||||||
sta MASKH
|
|
||||||
|
|
||||||
lda #24
|
; clear to white
|
||||||
sta SPRITE_X
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
lda #54
|
ldx #8
|
||||||
sta SPRITE_Y
|
jsr draw_flame_small_1
|
||||||
|
jsr hgr_page_flip
|
||||||
|
|
||||||
jsr hgr_draw_sprite_big_mask
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
|
||||||
|
;=================================================
|
||||||
|
; left tall 1212 roughly 10 frames (1/2 s)
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
sta ANIMATE_COUNT
|
||||||
|
left_flame_animate1:
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #8
|
||||||
|
jsr draw_flame_tall_1
|
||||||
|
jsr hgr_page_flip
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #8
|
||||||
|
jsr draw_flame_tall_2
|
||||||
|
jsr hgr_page_flip
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
dec ANIMATE_COUNT
|
||||||
|
bne left_flame_animate1
|
||||||
|
|
||||||
|
;==============================
|
||||||
|
; both short 2 frames
|
||||||
|
|
||||||
|
; clear to white
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #8
|
||||||
|
jsr draw_flame_small_1
|
||||||
|
|
||||||
|
ldx #24
|
||||||
|
jsr draw_flame_small_1
|
||||||
|
|
||||||
|
jsr hgr_page_flip
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
|
||||||
|
;===========================================
|
||||||
|
; right tall 1212 roughly 10 frames
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
sta ANIMATE_COUNT
|
||||||
|
|
||||||
|
right_flame_animate1:
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #24
|
||||||
|
jsr draw_flame_tall_2
|
||||||
|
jsr hgr_page_flip
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #24
|
||||||
|
jsr draw_flame_tall_1
|
||||||
|
jsr hgr_page_flip
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
dec ANIMATE_COUNT
|
||||||
|
bne right_flame_animate1
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
; right short 2 frames
|
||||||
|
|
||||||
|
; clear to white
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #24
|
||||||
|
jsr draw_flame_small_2
|
||||||
|
jsr hgr_page_flip
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
; left short 2 frames
|
||||||
|
|
||||||
|
; clear to white
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #8
|
||||||
|
jsr draw_flame_small_1
|
||||||
|
jsr hgr_page_flip
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
;================================================
|
||||||
|
; left tall 1212 roughly 10 frames (1/2 s)
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
sta ANIMATE_COUNT
|
||||||
|
left_flame_animate2:
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #8
|
||||||
|
jsr draw_flame_tall_1
|
||||||
|
jsr hgr_page_flip
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #8
|
||||||
|
jsr draw_flame_tall_2
|
||||||
|
jsr hgr_page_flip
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
dec ANIMATE_COUNT
|
||||||
|
bne left_flame_animate2
|
||||||
|
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
; left short 2 frames
|
||||||
|
|
||||||
|
; clear to white
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
|
||||||
|
ldx #8
|
||||||
|
jsr draw_flame_small_1
|
||||||
|
jsr hgr_page_flip
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
jsr wait_ticks
|
||||||
|
|
||||||
|
;=============================
|
||||||
|
; blank screen
|
||||||
|
|
||||||
|
|
||||||
|
ldy #$7f
|
||||||
|
jsr hgr_clear_screen
|
||||||
|
jsr hgr_page_flip
|
||||||
|
|
||||||
jsr wait_until_keypress
|
jsr wait_until_keypress
|
||||||
|
|
||||||
|
@ -101,16 +263,16 @@ finished:
|
||||||
|
|
||||||
; start music
|
; start music
|
||||||
|
|
||||||
lda SOUND_STATUS
|
; lda SOUND_STATUS
|
||||||
and #SOUND_MOCKINGBOARD
|
; and #SOUND_MOCKINGBOARD
|
||||||
beq no_music
|
; beq no_music
|
||||||
cli ; enable sound
|
; cli ; enable sound
|
||||||
no_music:
|
;no_music:
|
||||||
|
|
||||||
|
|
||||||
;0123456789012345678901234567890123456789
|
;0123456789012345678901234567890123456789
|
||||||
merry_text:
|
;merry_text:
|
||||||
.byte " MERRY CHRISTMAS!!! MERRY CHRISTMAS!!! ME"
|
; .byte " MERRY CHRISTMAS!!! MERRY CHRISTMAS!!! ME"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -134,3 +296,87 @@ hposn_high = $1f00
|
||||||
.include "hgr_sprite_big_mask.s"
|
.include "hgr_sprite_big_mask.s"
|
||||||
|
|
||||||
;.include "graphics/flame_sprites.inc"
|
;.include "graphics/flame_sprites.inc"
|
||||||
|
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; draw_flame_small
|
||||||
|
;===============================
|
||||||
|
; x location in X
|
||||||
|
|
||||||
|
draw_flame_small_1:
|
||||||
|
lda #<left_flame_small
|
||||||
|
sta INL
|
||||||
|
lda #>left_flame_small
|
||||||
|
sta INH
|
||||||
|
lda #<left_flame_small_mask
|
||||||
|
sta MASKL
|
||||||
|
lda #>left_flame_small_mask
|
||||||
|
bne draw_flame_small_common ; bra
|
||||||
|
|
||||||
|
draw_flame_small_2:
|
||||||
|
lda #<left_flame_small
|
||||||
|
sta INL
|
||||||
|
lda #>left_flame_small
|
||||||
|
sta INH
|
||||||
|
lda #<left_flame_small_mask
|
||||||
|
sta MASKL
|
||||||
|
lda #>left_flame_small_mask
|
||||||
|
|
||||||
|
draw_flame_small_common:
|
||||||
|
sta MASKH
|
||||||
|
|
||||||
|
txa
|
||||||
|
; lda #8
|
||||||
|
sta SPRITE_X
|
||||||
|
|
||||||
|
lda #152
|
||||||
|
sta SPRITE_Y
|
||||||
|
|
||||||
|
jsr hgr_draw_sprite_big_mask
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; draw_flame_tall
|
||||||
|
;===============================
|
||||||
|
; X location in X
|
||||||
|
|
||||||
|
draw_flame_tall_1:
|
||||||
|
|
||||||
|
lda #<left_flame_big
|
||||||
|
sta INL
|
||||||
|
lda #>left_flame_big
|
||||||
|
sta INH
|
||||||
|
lda #<left_flame_big_mask
|
||||||
|
sta MASKL
|
||||||
|
lda #>left_flame_big_mask
|
||||||
|
sta MASKH
|
||||||
|
|
||||||
|
bne draw_left_flame_common ; bra
|
||||||
|
|
||||||
|
draw_flame_tall_2:
|
||||||
|
|
||||||
|
; draw right flame
|
||||||
|
|
||||||
|
lda #<right_flame_big
|
||||||
|
sta INL
|
||||||
|
lda #>right_flame_big
|
||||||
|
sta INH
|
||||||
|
lda #<right_flame_big_mask
|
||||||
|
sta MASKL
|
||||||
|
lda #>right_flame_big_mask
|
||||||
|
sta MASKH
|
||||||
|
|
||||||
|
draw_left_flame_common:
|
||||||
|
|
||||||
|
; lda #8
|
||||||
|
txa
|
||||||
|
sta SPRITE_X
|
||||||
|
|
||||||
|
lda #54
|
||||||
|
sta SPRITE_Y
|
||||||
|
|
||||||
|
jsr hgr_draw_sprite_big_mask
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
|
@ -119,20 +119,21 @@ TEMPY = $E4
|
||||||
XPOS = $E5 ; gr_plot
|
XPOS = $E5 ; gr_plot
|
||||||
YPOS = $E6 ; gr_plot
|
YPOS = $E6 ; gr_plot
|
||||||
COLOR_MASK = $E7 ; gr_plot
|
COLOR_MASK = $E7 ; gr_plot
|
||||||
FRAMEL = $E8
|
;FRAMEL = $E8
|
||||||
FRAMEH = $E9
|
;FRAMEH = $E9
|
||||||
|
FRAME = $E8
|
||||||
|
SECONDS = $E9
|
||||||
|
|
||||||
BTC_L = $EA ; audio
|
BTC_L = $EA ; audio
|
||||||
BTC_H = $EB ; audio
|
BTC_H = $EB ; audio
|
||||||
MASKL = $EC ; gr_putsprite_mask
|
MASKL = $EC ; gr_putsprite_mask
|
||||||
MASKH = $ED
|
MASKH = $ED
|
||||||
FRAME = $EE
|
|
||||||
|
|
||||||
; local
|
|
||||||
|
|
||||||
SPRITE_Y = $F2
|
SPRITE_Y = $F2
|
||||||
SPRITE_X = $F3
|
SPRITE_X = $F3
|
||||||
CURRENT_ROW = $F4
|
CURRENT_ROW = $F4
|
||||||
|
ANIMATE_COUNT = $F5
|
||||||
|
|
||||||
;==============================================
|
;==============================================
|
||||||
; $FC-$FF we use for in/out pointers
|
; $FC-$FF we use for in/out pointers
|
||||||
|
|
Loading…
Reference in New Issue
Block a user