From 262555f0b47f73eb41aadbeb6dafe5a2630b9689 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sat, 27 Jan 2024 22:27:31 -0500 Subject: [PATCH] trogdor: update flames --- demos/trogdor/NOTES | 3 + demos/trogdor/do_flames.s | 52 ++++++++++++-- demos/trogdor/trogdor.s | 148 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 193 insertions(+), 10 deletions(-) diff --git a/demos/trogdor/NOTES b/demos/trogdor/NOTES index 19b9bcb7..b7d62879 100644 --- a/demos/trogdor/NOTES +++ b/demos/trogdor/NOTES @@ -160,3 +160,6 @@ dragonman: original man=1973 dragonman=1982 = 3955 bytes combined = 3669 bytes optimize so bases same: = 3132 bytes + +TODO: + always call clear screen before left/right copy? diff --git a/demos/trogdor/do_flames.s b/demos/trogdor/do_flames.s index 68fc516b..669eee55 100644 --- a/demos/trogdor/do_flames.s +++ b/demos/trogdor/do_flames.s @@ -16,6 +16,7 @@ ; FLAME_BG = type of background ; 0 = blank white ; 1 = blank_white + left_copy + ; 2 = blank_white + right_copy do_flames: @@ -190,21 +191,31 @@ left_flame_animate2: draw_flame_bg: - lda FLAME_BG - beq flame_bg_clear -flame_bg_left: + ; clear no matter what + ldy #$7f jsr hgr_clear_screen + lda FLAME_BG + beq flame_bg_clear + + cmp #2 + bne flame_bg_left + +flame_bg_right: + + jsr hgr_copy_right + + rts + +flame_bg_left: + jsr hgr_copy_left rts flame_bg_clear: - ldy #$7f - jsr hgr_clear_screen - rts @@ -292,3 +303,32 @@ draw_left_flame_common: rts + + ;=================================== + ; twin flames tall +draw_twin_flames_tall_1: + + ldx #4 + jsr draw_flame_tall_1 + ldx #28 + jsr draw_flame_tall_2 + rts + +draw_twin_flames_tall_2: + + ldx #4 + jsr draw_flame_tall_2 + ldx #28 + jsr draw_flame_tall_1 + rts + + + ;=================================== + ; twin flames low +draw_twin_flames_low: + + ldx #4 + jsr draw_flame_small_1 + ldx #28 + jsr draw_flame_small_2 + rts diff --git a/demos/trogdor/trogdor.s b/demos/trogdor/trogdor.s index 2da6f2ea..90fb7624 100644 --- a/demos/trogdor/trogdor.s +++ b/demos/trogdor/trogdor.s @@ -72,6 +72,7 @@ trog_no_music: jsr hgr_page_flip +.if 0 ;====================================== ; draw SCENE 2 ;====================================== @@ -305,7 +306,7 @@ rapid_switch: bne rapid_switch - ;===h======================== + ;=========================== ; scroll off screen ; switch to page1 @@ -339,7 +340,7 @@ scroll_down_in_loop: lda #20 jsr wait_ticks - +.endif ;====================================== ; draw SCENE 7 @@ -348,6 +349,7 @@ scroll_down_in_loop: ; dragonman, flames both low than high ; ll1122 ; 10 times + ; then full man 1122 ; dragonman 1122 ; man 1122 @@ -355,8 +357,13 @@ scroll_down_in_loop: ; man 1122 ; dragonmna 1122 ; man 1122 + ; dragonman low, off 4 frames + + ;========================= + ; load dragonman graphics + lda #trog03_graphics @@ -364,13 +371,103 @@ scroll_down_in_loop: lda #$60 jsr zx02_full_decomp + ;=============================== + ; dragonman with twin low flames + + ldy #$7f + jsr hgr_clear_screen + + jsr hgr_copy_right + + jsr draw_twin_flames_low + + jsr hgr_page_flip + + lda #5 + jsr wait_ticks + + ;=============================== + ; dragonman 1122 10 times + + lda #10 + sta ANIMATE_COUNT +long_tall: + + jsr dman_flames + +; ldy #$7f +; jsr hgr_clear_screen + +; jsr hgr_copy_right + +; jsr draw_twin_flames_tall_1 + +; jsr hgr_page_flip + +; lda #2 +; jsr wait_ticks + +; ldy #$7f +; jsr hgr_clear_screen + +; jsr hgr_copy_right + +; jsr draw_twin_flames_tall_2 + +; jsr hgr_page_flip + +; lda #2 +; jsr wait_ticks + + dec ANIMATE_COUNT + bne long_tall + + ;======================== + ; then full man 1122 + ; dragonman 1122 + ; man 1122 + ; dragonman 1122 + ; man 1122 + ; dragonmna 1122 + ; man 1122 + + jsr man_flames + jsr dman_flames + jsr man_flames + jsr dman_flames + jsr man_flames + jsr dman_flames + jsr man_flames + + ;=============================== + ; dragonman low, 2 frames + + ldy #$7f + jsr hgr_clear_screen + + jsr hgr_copy_right + + jsr draw_twin_flames_low + + jsr hgr_page_flip + + lda #2 + jsr wait_ticks + + ;================================ + ; dragonman off, 4 frames + + ldy #$7f + jsr hgr_clear_screen + jsr hgr_copy_right jsr hgr_page_flip - lda #20 + lda #2 jsr wait_ticks -; TODO + + ;====================================== ; draw SCENE 8 ;====================================== @@ -605,3 +702,46 @@ hgr_copy_left: jmp hgr_copy_part ; tail call + + ;========================== + ; man flames + +man_flames: + ldy #$7f + jsr hgr_clear_screen + + jsr hgr_copy_left + + jmp dman_flames_common + + ;========================== + ; dragonman flames + +dman_flames: + ldy #$7f + jsr hgr_clear_screen + + jsr hgr_copy_right + + +dman_flames_common: + jsr draw_twin_flames_tall_1 + + jsr hgr_page_flip + + lda #2 + jsr wait_ticks + + ldy #$7f + jsr hgr_clear_screen + + jsr hgr_copy_right + + jsr draw_twin_flames_tall_2 + + jsr hgr_page_flip + + lda #2 + jsr wait_ticks + + rts