mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-15 16:29:41 +00:00
trogdor: make flames more generic
This commit is contained in:
parent
626121ef29
commit
8e82b8f44e
|
@ -185,7 +185,7 @@ TROGDOR: trogdor.o
|
|||
ld65 -o TROGDOR trogdor.o -C $(LINKER_SCRIPTS)/apple2_8000.inc
|
||||
|
||||
trogdor.o: trogdor.s \
|
||||
flames.inc \
|
||||
flames.inc do_flames.s \
|
||||
zp.inc hardware.inc qload.inc \
|
||||
graphics/trog00_trogdor.hgr.zx02 \
|
||||
hgr_sprite_big_mask.s horiz_scroll_simple.s hgr_copy_magnify.s \
|
||||
|
|
294
demos/trogdor/do_flames.s
Normal file
294
demos/trogdor/do_flames.s
Normal file
|
@ -0,0 +1,294 @@
|
|||
|
||||
;======================================
|
||||
; do_flames
|
||||
;======================================
|
||||
; copy background from $6000, left
|
||||
; then do the following pattern
|
||||
; s=short, 1=tall_1 2=tall_2, b=both short
|
||||
|
||||
; flames: left: ss1122
|
||||
; flames: bb
|
||||
; flames: right 22112211ss
|
||||
; flames: left ss11221122ss
|
||||
|
||||
; FLAME_L = X of left flame
|
||||
; FLAME_R = X of right flame
|
||||
; FLAME_BG = type of background
|
||||
; 0 = blank white
|
||||
; 1 = blank_white + left_copy
|
||||
|
||||
do_flames:
|
||||
|
||||
|
||||
;======================================
|
||||
; left flame short 2 frames
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_L
|
||||
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_animate1:
|
||||
|
||||
; 1
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_L
|
||||
jsr draw_flame_tall_1
|
||||
jsr hgr_page_flip
|
||||
lda #2
|
||||
jsr wait_ticks
|
||||
|
||||
; 2
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_L
|
||||
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
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_L
|
||||
jsr draw_flame_small_1
|
||||
|
||||
ldx FLAME_R
|
||||
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:
|
||||
|
||||
; 2
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_R
|
||||
jsr draw_flame_tall_2
|
||||
jsr hgr_page_flip
|
||||
lda #2
|
||||
jsr wait_ticks
|
||||
|
||||
; 1
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_R
|
||||
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
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_R
|
||||
jsr draw_flame_small_2
|
||||
jsr hgr_page_flip
|
||||
|
||||
lda #2
|
||||
jsr wait_ticks
|
||||
|
||||
;=============================
|
||||
; left short 2 frames
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_L
|
||||
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:
|
||||
|
||||
; 1
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_L
|
||||
jsr draw_flame_tall_1
|
||||
jsr hgr_page_flip
|
||||
lda #2
|
||||
jsr wait_ticks
|
||||
|
||||
; 2
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_L
|
||||
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
|
||||
|
||||
jsr draw_flame_bg
|
||||
|
||||
ldx FLAME_L
|
||||
jsr draw_flame_small_1
|
||||
jsr hgr_page_flip
|
||||
|
||||
lda #2
|
||||
|
||||
jmp wait_ticks ; tail call
|
||||
|
||||
; jsr wait_ticks
|
||||
|
||||
; rts
|
||||
|
||||
|
||||
;===============================
|
||||
; draw_flame_bg
|
||||
;===============================
|
||||
|
||||
draw_flame_bg:
|
||||
|
||||
lda FLAME_BG
|
||||
beq flame_bg_clear
|
||||
flame_bg_left:
|
||||
ldy #$7f
|
||||
jsr hgr_clear_screen
|
||||
|
||||
jsr hgr_copy_left
|
||||
|
||||
rts
|
||||
|
||||
flame_bg_clear:
|
||||
|
||||
ldy #$7f
|
||||
jsr hgr_clear_screen
|
||||
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
;===============================
|
||||
; 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
|
||||
|
|
@ -94,3 +94,51 @@ hgr_page2_cls_loop:
|
|||
|
||||
rts
|
||||
|
||||
.if 0
|
||||
|
||||
;====================================
|
||||
; clear $6000 off-screen buffer
|
||||
;====================================
|
||||
|
||||
hgr_page3_clearscreen:
|
||||
|
||||
tya
|
||||
ldy #0
|
||||
hgr_page3_cls_loop:
|
||||
sta $6000,Y
|
||||
sta $6100,Y
|
||||
sta $6200,Y
|
||||
sta $6300,Y
|
||||
sta $6400,Y
|
||||
sta $6500,Y
|
||||
sta $6600,Y
|
||||
sta $6700,Y
|
||||
sta $6800,Y
|
||||
sta $6900,Y
|
||||
sta $6A00,Y
|
||||
sta $6B00,Y
|
||||
sta $6C00,Y
|
||||
sta $6D00,Y
|
||||
sta $6E00,Y
|
||||
sta $6F00,Y
|
||||
sta $7000,Y
|
||||
sta $7100,Y
|
||||
sta $7200,Y
|
||||
sta $7300,Y
|
||||
sta $7400,Y
|
||||
sta $7500,Y
|
||||
sta $7600,Y
|
||||
sta $7700,Y
|
||||
sta $7800,Y
|
||||
sta $7900,Y
|
||||
sta $7A00,Y
|
||||
sta $7B00,Y
|
||||
sta $7C00,Y
|
||||
sta $7D00,Y
|
||||
sta $7E00,Y
|
||||
sta $7F00,Y
|
||||
iny
|
||||
bne hgr_page3_cls_loop
|
||||
|
||||
rts
|
||||
.endif
|
||||
|
|
|
@ -75,8 +75,9 @@ trog_no_music:
|
|||
;======================================
|
||||
; draw SCENE 2
|
||||
;======================================
|
||||
|
||||
; draw flames
|
||||
; 156
|
||||
;
|
||||
; draw flames on white background
|
||||
; left flame short 2 frames
|
||||
; left tall 1212 roughly 10 frames (1/2 s)
|
||||
; both short 2 frames
|
||||
|
@ -92,158 +93,22 @@ trog_no_music:
|
|||
; 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_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
|
||||
|
||||
lda #0
|
||||
sta FLAME_BG
|
||||
|
||||
;===========================================
|
||||
; right tall 1212 roughly 10 frames
|
||||
lda #8
|
||||
sta FLAME_L
|
||||
lda #24
|
||||
sta FLAME_R
|
||||
|
||||
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
|
||||
jsr do_flames
|
||||
|
||||
;=============================
|
||||
; blank screen
|
||||
|
@ -327,6 +192,7 @@ scroll_in_loop:
|
|||
;======================================
|
||||
; draw SCENE 5
|
||||
;======================================
|
||||
; 359
|
||||
; trogdor man: 42 frames
|
||||
; flames: left: llll1122
|
||||
; flames: bb
|
||||
|
@ -337,7 +203,7 @@ scroll_in_loop:
|
|||
|
||||
|
||||
;======================================
|
||||
; man
|
||||
; man for 42 frames
|
||||
|
||||
lda #<trog03_graphics
|
||||
sta zx_src_l+1
|
||||
|
@ -356,6 +222,10 @@ scroll_in_loop:
|
|||
lda #42
|
||||
jsr wait_ticks
|
||||
|
||||
lda #1
|
||||
sta FLAME_BG
|
||||
jsr do_flames
|
||||
|
||||
|
||||
;======================================
|
||||
; dragon man
|
||||
|
@ -537,6 +407,12 @@ up_down_animate:
|
|||
; white screen
|
||||
; scroll up cottage, takes roughly 90 frames (3s)
|
||||
|
||||
; must be at PAGE1 here
|
||||
|
||||
ldy #$7f
|
||||
jsr hgr_clear_screen
|
||||
jsr hgr_page_flip
|
||||
|
||||
ldy #$7f
|
||||
jsr hgr_clear_screen
|
||||
jsr hgr_page_flip
|
||||
|
@ -637,88 +513,7 @@ trog04_graphics:
|
|||
;.include "vertical_scroll.s"
|
||||
;.include "hgr_copy_part.s"
|
||||
|
||||
;===============================
|
||||
; 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
|
||||
|
||||
.include "do_flames.s"
|
||||
|
||||
;=========================================
|
||||
; hgr_copy_right
|
||||
|
|
|
@ -131,6 +131,9 @@ SPRITE_Y = $F2
|
|||
SPRITE_X = $F3
|
||||
CURRENT_ROW = $F4
|
||||
ANIMATE_COUNT = $F5
|
||||
FLAME_L = $F6
|
||||
FLAME_R = $F7
|
||||
FLAME_BG = $F8
|
||||
|
||||
;==============================================
|
||||
; $FC-$FF we use for in/out pointers
|
||||
|
|
Loading…
Reference in New Issue
Block a user