From acba47c00fbf6b8c41565eedbf23840b43e88c2d Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 17 Mar 2025 14:26:21 +0100 Subject: [PATCH] Birds test --- lumber.asm | 127 +++++++++++++++++++++++++++++++++++++++++++---------- lumber.xex | Bin 24547 -> 24660 bytes 2 files changed, 105 insertions(+), 22 deletions(-) diff --git a/lumber.asm b/lumber.asm index dde04bc..5be0be3 100644 --- a/lumber.asm +++ b/lumber.asm @@ -40,28 +40,44 @@ display = $a000 .zpvar DLI_A DLI_X dliCount .byte .zpvar RMT_blocked noSfx SFX_EFFECT .byte .zpvar AutoPlay .byte ; Auto Play flag ($80 - auto) - .zpvar HPOSP0_d .byte ; PMG registers for sprites under horizon - .zpvar HPOSP1_d .byte ; PMG registers for sprites under horizon - .zpvar HPOSP2_d .byte ; PMG registers for sprites under horizon - .zpvar HPOSP3_d .byte ; PMG registers for sprites under horizon - .zpvar HPOSM0_d .byte ; PMG registers for sprites under horizon - .zpvar HPOSM1_d .byte ; PMG registers for sprites under horizon - .zpvar HPOSM2_d .byte ; PMG registers for sprites under horizon - .zpvar HPOSM3_d .byte ; PMG registers for sprites under horizon - .zpvar SIZEP0_d .byte ; PMG registers for sprites under horizon - .zpvar SIZEP1_d .byte ; PMG registers for sprites under horizon - .zpvar SIZEP2_d .byte ; PMG registers for sprites under horizon - .zpvar SIZEP3_d .byte ; PMG registers for sprites under horizon - .zpvar SIZEM_d .byte ; PMG registers for sprites under horizon - .zpvar GRAFP0_d .byte ; PMG registers for sprites under horizon - .zpvar GRAFP1_d .byte ; PMG registers for sprites under horizon - .zpvar GRAFP2_d .byte ; PMG registers for sprites under horizon - .zpvar GRAFP3_d .byte ; PMG registers for sprites under horizon - .zpvar GRAFM_d .byte ; PMG registers for sprites under horizon - .zpvar COLPM0_d .byte ; PMG registers for sprites under horizon - .zpvar COLPM1_d .byte ; PMG registers for sprites under horizon - .zpvar COLPM2_d .byte ; PMG registers for sprites under horizon - .zpvar COLPM3_d .byte ; PMG registers for sprites under horizon + .zpvar birdsHpos .byte + ; PMG registers for sprites over horizon + .zpvar HPOSP0_u .byte + .zpvar HPOSP1_u .byte + .zpvar HPOSP2_u .byte + .zpvar HPOSP3_u .byte + .zpvar HPOSM0_u .byte + .zpvar HPOSM1_u .byte + .zpvar HPOSM2_u .byte + .zpvar HPOSM3_u .byte + .zpvar SIZEP0_u .byte + .zpvar SIZEP1_u .byte + .zpvar SIZEP2_u .byte + .zpvar SIZEP3_u .byte + .zpvar SIZEM_u .byte + ; PMG registers for sprites under horizon + .zpvar HPOSP0_d .byte + .zpvar HPOSP1_d .byte + .zpvar HPOSP2_d .byte + .zpvar HPOSP3_d .byte + .zpvar HPOSM0_d .byte + .zpvar HPOSM1_d .byte + .zpvar HPOSM2_d .byte + .zpvar HPOSM3_d .byte + .zpvar SIZEP0_d .byte + .zpvar SIZEP1_d .byte + .zpvar SIZEP2_d .byte + .zpvar SIZEP3_d .byte + .zpvar SIZEM_d .byte + .zpvar GRAFP0_d .byte + .zpvar GRAFP1_d .byte + .zpvar GRAFP2_d .byte + .zpvar GRAFP3_d .byte + .zpvar GRAFM_d .byte + .zpvar COLPM0_d .byte + .zpvar COLPM1_d .byte + .zpvar COLPM2_d .byte + .zpvar COLPM3_d .byte RMT_zpvars = AutoPlay+1 ; POZOR!!! RMT vars go here ;--------------------------------------------------- @@ -130,6 +146,26 @@ screen_level = gamescreen_middle+9*32+13 mva #0 dliCount + ; over horizon + ; PMG horizontal coordinates and sizes + txa + pha + ldx #$0c +@ lda HPOSP0_u,x + sta HPOSP0,x + dex + bpl @- + pla + tax + ; fly birds + inc birdsHpos + lda birdsHpos + sta HPOSP0_u + clc + adc #6 + sta HPOSP1_u + + lda StateFlag bne wait_for_timer ; only during game @@ -319,6 +355,7 @@ EndOfStartScreen */ ;-------------------------------------------------- jsr MakeDarkScreen jsr PrepareLevelPM + jsr PrepareBirdsCloudsPM ldx #2 mwa #dl_level dlptrs lda #@dmactl(narrow|dma|missiles|players|lineX2) ; narrow screen width, DL on, P/M on (2lines) @@ -672,6 +709,7 @@ no_branch_l jsr RASTERMUSICTRACKER ;Init */ jsr PrepareLevelPM + jsr PrepareBirdsCloudsPM jsr SetPMr1 mwa #gamescreen_r_ph1p1 animation_addr lda #@dmactl(narrow|dma|missiles|players|lineX2) ; narrow screen width, DL on, P/M on (2lines) @@ -694,8 +732,10 @@ no_branch_l lda #$e0 ldx #$07 ; 8 registers. from HPOSP0_d to HPOSM3_d @ sta HPOSP0_d,x + sta HPOSP0_u,x sta HPOSP0,x dex + sta birdsHpos bpl @- rts .endp @@ -800,6 +840,49 @@ HoffsetP1=103 datalinesP1=5 .endp ;-------------------------------------------------- +.proc PrepareBirdsCloudsPM +;-------------------------------------------------- + ; bird 2, 1 and 3 + jsr bird_a + mva #0 SIZEP0_u + sta SIZEP1_d + mva #$04 PCOLR0 + sta PCOLR1 + lda #0 + sta birdsHpos + sta HPOSP0_u + sta HPOSP1_u + + rts +bird_a + ldx #datalines_bird-1 +@ lda bird_data_a,x + sta PMmemory+$200+Hoffset_bird2,x + sta PMmemory+$280+Hoffset_bird1,x + sta PMmemory+$280+Hoffset_bird3,x + dex + bpl @- + rts +bird_b + ldx #datalines_bird-1 +@ lda bird_data_b,x + sta PMmemory+$200+Hoffset_bird2,x + sta PMmemory+$280+Hoffset_bird1,x + sta PMmemory+$280+Hoffset_bird3,x + dex + bpl @- + rts +; bird data +bird_data_a + dta $00, $00, $00, $3f, $7c, $18, $18, $08 +bird_data_b + dta $00, $30, $18, $18, $3f, $7c, $00, $00 +Hoffset_bird1=25 +Hoffset_bird2=35 +Hoffset_bird3=45 +datalines_bird=8 +.endp +;-------------------------------------------------- .proc SetPMl1 ;-------------------------------------------------- mva #$4f HPOSP2_d diff --git a/lumber.xex b/lumber.xex index 2d1843d80aeebfe96deff80eaaf57a0a13c012a7..b80feebadce9082cca3280f85c8ce27e8a3333d0 100644 GIT binary patch delta 3071 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 L;t`kHzij*u$Kup#