diff --git a/demos/trogdor/Makefile b/demos/trogdor/Makefile index a2f1ddf1..d6b44ef5 100644 --- a/demos/trogdor/Makefile +++ b/demos/trogdor/Makefile @@ -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 \ diff --git a/demos/trogdor/do_flames.s b/demos/trogdor/do_flames.s new file mode 100644 index 00000000..68fc516b --- /dev/null +++ b/demos/trogdor/do_flames.s @@ -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 INH + lda #left_flame_small_mask + bne draw_flame_small_common ; bra + +draw_flame_small_2: + lda #left_flame_small + sta INH + 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 INH + 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 INH + 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 + diff --git a/demos/trogdor/hgr_clear_screen.s b/demos/trogdor/hgr_clear_screen.s index 6ffb052b..532169bb 100644 --- a/demos/trogdor/hgr_clear_screen.s +++ b/demos/trogdor/hgr_clear_screen.s @@ -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 diff --git a/demos/trogdor/trogdor.s b/demos/trogdor/trogdor.s index b6a936ad..81e988b0 100644 --- a/demos/trogdor/trogdor.s +++ b/demos/trogdor/trogdor.s @@ -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 #left_flame_small - sta INH - lda #left_flame_small_mask - bne draw_flame_small_common ; bra - -draw_flame_small_2: - lda #left_flame_small - sta INH - 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 INH - 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 INH - 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 diff --git a/demos/trogdor/zp.inc b/demos/trogdor/zp.inc index a6254e24..0ef31a07 100644 --- a/demos/trogdor/zp.inc +++ b/demos/trogdor/zp.inc @@ -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