From 72c36ea61bf3a9a6f0c890806fcee03ed30c2809 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sat, 23 Dec 2023 14:44:06 -0500 Subject: [PATCH] xmas2023: more tree work --- demos/xmas_2023/Makefile | 1 + demos/xmas_2023/regular_tree.s | 235 +++++++++++++++++++++++++++++++++ demos/xmas_2023/xmas.s | 8 ++ demos/xmas_2023/zp.inc | 39 +----- 4 files changed, 245 insertions(+), 38 deletions(-) create mode 100644 demos/xmas_2023/regular_tree.s diff --git a/demos/xmas_2023/Makefile b/demos/xmas_2023/Makefile index b017c978..c8cd8d84 100644 --- a/demos/xmas_2023/Makefile +++ b/demos/xmas_2023/Makefile @@ -126,6 +126,7 @@ XMAS: xmas.o xmas.o: xmas.s plasma_tree.s fireplace.s \ zp.inc hardware.inc qload.inc \ vapor_lock.s gr_scroll.s draw_blocks.s \ + regular_tree.s \ graphics/merry.hgr.zx02 \ graphics/tree01.gr.zx02 \ graphics/greets.raw.zx02 diff --git a/demos/xmas_2023/regular_tree.s b/demos/xmas_2023/regular_tree.s new file mode 100644 index 00000000..a166668f --- /dev/null +++ b/demos/xmas_2023/regular_tree.s @@ -0,0 +1,235 @@ +; Regular Tree + +; ============================================================================= +; ROUTINE MAIN +; ============================================================================= + +regular_tree: + + lda #$00 + sta DRAW_PAGE + sta clear_all_color+1 + + lda #$04 + sta DRAW_PAGE + jsr clear_all + + + bit PAGE2 ; set page 2 +; bit SET_TEXT ; set text + bit LORES ; set lo-res + + lda #0 + sta FRAME + + ; load image offscreen $6000 + + lda #mask1_data + sta zx_src_h+1 + lda #$60 + jsr zx02_full_decomp + + ; load image offscreen $6400 + + lda #mask2_data + sta zx_src_h+1 + lda #$64 + jsr zx02_full_decomp + + ; load image offscreen $6800 + + lda #mask3_data + sta zx_src_h+1 + lda #$68 + jsr zx02_full_decomp + + ; load image offscreen $6C00 + + lda #mask4_data + sta zx_src_h+1 + lda #$6C + jsr zx02_full_decomp + + ; load image offscreen $7000 + + lda #mask5_data + sta zx_src_h+1 + lda #$70 + jsr zx02_full_decomp + + ; load image offscreen $7400 + + lda #mask6_data + sta zx_src_h+1 + lda #$74 + jsr zx02_full_decomp + + ; load image offscreen $7800 + + lda #mask7_data + sta zx_src_h+1 + lda #$78 + jsr zx02_full_decomp + + ; load image offscreen $7C00 + + lda #mask8_data + sta zx_src_h+1 + lda #$7C + jsr zx02_full_decomp + + + lda #0 + sta OFFSET + + +reset_tree_loop: + lda #$60 + sta TREE_COUNT + +regular_tree_loop: + ldx TREE_COUNT + jsr gr_fast_copy + +; jsr wait_until_keypress + + jsr scroll_loop + + jsr page_flip + + lda #128 + jsr wait + + inc TREE_COUNT + inc TREE_COUNT + inc TREE_COUNT + inc TREE_COUNT + + lda TREE_COUNT + cmp #$80 + bne done_regular_tree + jmp reset_tree_loop + +done_regular_tree: + jmp regular_tree_loop + + + + ;========================== + ; gr_fast_copy + ;========================== + ; page to start at in X + +gr_fast_copy: + + stx fcl_smc1+2 + stx fcl_smc2+2 + inx + stx fcl_smc3+2 + stx fcl_smc4+2 + inx + stx fcl_smc5+2 + stx fcl_smc6+2 + inx + stx fcl_smc7+2 + stx fcl_smc8+2 + + lda DRAW_PAGE + clc + adc #4 + tax + + stx fcl_smc11+2 + stx fcl_smc12+2 + inx + stx fcl_smc13+2 + stx fcl_smc14+2 + inx + stx fcl_smc15+2 + stx fcl_smc16+2 + inx + stx fcl_smc17+2 + stx fcl_smc18+2 + + ldy #120 +gr_fast_copy_loop: + +fcl_smc1: + lda $7000,Y +fcl_smc11: + sta $400,Y + +fcl_smc2: + lda $7080,Y +fcl_smc12: + sta $480,Y + +fcl_smc3: + lda $7100,Y +fcl_smc13: + sta $500,Y + +fcl_smc4: + lda $7180,Y +fcl_smc14: + sta $580,Y + +fcl_smc5: + lda $7200,Y +fcl_smc15: + sta $600,Y + +fcl_smc6: + lda $7280,Y +fcl_smc16: + sta $680,Y + +fcl_smc7: + lda $7300,Y +fcl_smc17: + sta $700,Y + +fcl_smc8: + lda $7380,Y +fcl_smc18: + sta $780,Y + + dey + bpl gr_fast_copy_loop + + rts + + + +page_flip: + lda DRAW_PAGE + beq flip_draw_page2 + +flip_draw_page_1: + bit PAGE2 + lda #0 + beq done_page_flip ; bra + +flip_draw_page2: + bit PAGE1 + lda #4 +done_page_flip: + sta DRAW_PAGE + rts + diff --git a/demos/xmas_2023/xmas.s b/demos/xmas_2023/xmas.s index ba88b336..c3956314 100644 --- a/demos/xmas_2023/xmas.s +++ b/demos/xmas_2023/xmas.s @@ -26,6 +26,12 @@ xmas_main: jsr fireplace + ;====================================== + ; 3D tree + ;====================================== + + jsr regular_tree + ;====================================== ; plasma tree ;====================================== @@ -42,3 +48,5 @@ finished: .include "plasma_tree.s" .include "fireplace.s" +.include "regular_tree.s" + diff --git a/demos/xmas_2023/zp.inc b/demos/xmas_2023/zp.inc index 04cf43f5..5da2bfae 100644 --- a/demos/xmas_2023/zp.inc +++ b/demos/xmas_2023/zp.inc @@ -205,43 +205,6 @@ SCROLL_X = $F0 SCROLL_START = $F0 YDEST = $F1 -; sierzoom -;XX = $F0 -XX_TH = $F1 -XX_TL = $F2 -;YY = $F3 -YY_TH = $F4 -YY_TL = $F5 -T_L = $F6 -T_H = $F7 -SAVED = $F8 - -BAR_X1 = $F0 -BAR_X2 = $F1 - -; spheres -BASE_SPRITEL = $F0 -BASE_SPRITEH = $F1 -CURRENT_SPRITEL = $F2 -CURRENT_SPRITEH = $F3 -XMISSION_COUNT = $F4 -REF1L = $F5 -REF1H = $F6 -REF2L = $F7 -REF2H = $F8 -REFCOUNT = $F9 - -; BIOS -STRING_COUNT = $F0 -LEAD0 = $F1 -SCROLL_OUT = $F2 -SCROLL_IN = $F3 -MEMCOUNT = $F4 -FAKE_KEY_COUNT = $F5 - -; OPENER -TICKER = $F1 -P2_OFFSET = $F2 ; hgr_copy HGR_COPY_Y1 = $F1 @@ -250,7 +213,7 @@ FIRE_COLOR = $F3 SCROLL_LENGTH = $F4 OFFSET = $F5 - +TREE_COUNT = $F6 ;==============================================