From e81ba3e3a94d8487be6ae0ecf4434d185e3c35e6 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 10 Mar 2025 12:20:50 +0100 Subject: [PATCH] PMG - all phases --- art/animations.asm | 60 ++++++++++++++++++++++++++++++++++++--- lumber.asm | 68 +++++++++++++++++++++++++++++++++++++++------ lumber.xex | Bin 22716 -> 23004 bytes 3 files changed, 116 insertions(+), 12 deletions(-) diff --git a/art/animations.asm b/art/animations.asm index 5a02205..a488ac7 100644 --- a/art/animations.asm +++ b/art/animations.asm @@ -97,6 +97,7 @@ mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p1 animation_addr + jsr SetPMr2 WaitForSync mwa #gamescreen_r_ph2p2 animation_addr WaitForSync @@ -107,6 +108,7 @@ WaitForSync mwa #gamescreen_r_ph3p1 animation_addr WaitForSync + jsr SetPMr3 jsr branches_go_down mwa #gamescreen_r_ph3p2 animation_addr WaitForSync @@ -122,7 +124,10 @@ jsr branches_go_down mwa #gamescreen_r_ph2p1 animation_addr WaitForSync + jsr SetPMr2 mwa #gamescreen_r_ph1p1 animation_addr + WaitForSync + jsr SetPMr1 mva #1 LumberjackDir ; right side rts .endp @@ -133,6 +138,7 @@ AnimationR2 = AnimationR1 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p1 animation_addr + jsr SetPMl2 WaitForSync mwa #gamescreen_l_ph2p2 animation_addr WaitForSync @@ -143,6 +149,7 @@ AnimationR2 = AnimationR1 WaitForSync mwa #gamescreen_l_ph3p1 animation_addr WaitForSync + jsr SetPMl3 jsr branches_go_down mwa #gamescreen_l_ph3p2 animation_addr WaitForSync @@ -158,7 +165,10 @@ AnimationR2 = AnimationR1 jsr branches_go_down mwa #gamescreen_l_ph2p1 animation_addr WaitForSync + jsr SetPMl2 mwa #gamescreen_l_ph1p1 animation_addr + WaitForSync + jsr SetPMl1 mva #2 LumberjackDir ; left side rts .endp @@ -169,6 +179,7 @@ AnimationL2 = AnimationL1 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p5 animation_addr + jsr SetPMr2 WaitForSync mwa #gamescreen_r_ph2p6 animation_addr WaitForSync @@ -179,6 +190,7 @@ AnimationL2 = AnimationL1 WaitForSync mwa #gamescreen_r_ph3p6 animation_addr WaitForSync + jsr SetPMr3 jsr branches_go_down mwa #gamescreen_r_ph3p2 animation_addr WaitForSync @@ -194,7 +206,10 @@ AnimationL2 = AnimationL1 jsr branches_go_down mwa #gamescreen_r_ph2p1 animation_addr WaitForSync + jsr SetPMr2 mwa #gamescreen_r_ph1p1 animation_addr + WaitForSync + jsr SetPMr1 mva #1 LumberjackDir ; right side rts .endp @@ -204,6 +219,7 @@ AnimationL2 = AnimationL1 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p5 animation_addr + jsr SetPMl2 WaitForSync mwa #gamescreen_l_ph2p6 animation_addr WaitForSync @@ -214,6 +230,7 @@ AnimationL2 = AnimationL1 WaitForSync mwa #gamescreen_l_ph3p6 animation_addr WaitForSync + jsr SetPMl3 jsr branches_go_down mwa #gamescreen_l_ph3p2 animation_addr WaitForSync @@ -229,7 +246,10 @@ AnimationL2 = AnimationL1 jsr branches_go_down mwa #gamescreen_l_ph2p1 animation_addr WaitForSync + jsr SetPMl2 mwa #gamescreen_l_ph1p1 animation_addr + WaitForSync + jsr SetPMl1 mva #2 LumberjackDir ; left side rts .endp @@ -239,6 +259,7 @@ AnimationL2 = AnimationL1 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p1 animation_addr + jsr SetPMr2 WaitForSync mwa #gamescreen_r_ph2p2 animation_addr WaitForSync @@ -249,6 +270,7 @@ AnimationL2 = AnimationL1 WaitForSync mwa #gamescreen_r_ph3p1 animation_addr WaitForSync + jsr SetPMr3 jsr branches_go_down mwa #gamescreen_r_ph3p11 animation_addr WaitForSync @@ -263,6 +285,8 @@ AnimationL2 = AnimationL1 WaitForSync jsr branches_go_down mwa #gamescreen_r_ph1p1 animation_addr + WaitForSync + jsr SetPMr1 mva #1 LumberjackDir ; right side (kill) rts .endp @@ -273,6 +297,7 @@ AnimationR5 = AnimationR4 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p1 animation_addr + jsr SetPMl2 WaitForSync mwa #gamescreen_l_ph2p2 animation_addr WaitForSync @@ -283,6 +308,7 @@ AnimationR5 = AnimationR4 WaitForSync mwa #gamescreen_l_ph3p1 animation_addr WaitForSync + jsr SetPMl3 jsr branches_go_down mwa #gamescreen_l_ph3p11 animation_addr WaitForSync @@ -297,6 +323,8 @@ AnimationR5 = AnimationR4 WaitForSync jsr branches_go_down mwa #gamescreen_l_ph1p1 animation_addr + WaitForSync + jsr SetPMl1 mva #2 LumberjackDir ; left side (kill) rts .endp @@ -307,6 +335,7 @@ AnimationL5 = AnimationL4 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p5 animation_addr + jsr SetPMr2 WaitForSync mwa #gamescreen_r_ph2p6 animation_addr WaitForSync @@ -317,6 +346,7 @@ AnimationL5 = AnimationL4 WaitForSync mwa #gamescreen_r_ph3p6 animation_addr WaitForSync + jsr SetPMr3 jsr branches_go_down mwa #gamescreen_r_ph3p11 animation_addr WaitForSync @@ -331,6 +361,8 @@ AnimationL5 = AnimationL4 WaitForSync jsr branches_go_down mwa #gamescreen_r_ph1p1 animation_addr + WaitForSync + jsr SetPMr1 mva #1 LumberjackDir ; right side (kill) rts .endp @@ -340,6 +372,7 @@ AnimationL5 = AnimationL4 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p5 animation_addr + jsr SetPMl2 WaitForSync mwa #gamescreen_l_ph2p6 animation_addr WaitForSync @@ -350,6 +383,7 @@ AnimationL5 = AnimationL4 WaitForSync mwa #gamescreen_l_ph3p6 animation_addr WaitForSync + jsr SetPMl3 jsr branches_go_down mwa #gamescreen_l_ph3p11 animation_addr WaitForSync @@ -364,6 +398,8 @@ AnimationL5 = AnimationL4 WaitForSync jsr branches_go_down mwa #gamescreen_l_ph1p1 animation_addr + WaitForSync + jsr SetPMl1 mva #2 LumberjackDir ; left side (kill) rts .endp @@ -372,9 +408,8 @@ AnimationL5 = AnimationL4 ;-------------------------------------------------- mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr - mwa #gamescreen_r_ph2p1 animation_addr - WaitForSync mwa #gamescreen_r_ph2p2 animation_addr + jsr SetPMr2 WaitForSync mwa #gamescreen_r_ph2p3 animation_addr WaitForSync @@ -383,6 +418,7 @@ AnimationL5 = AnimationL4 WaitForSync mwa #gamescreen_r_ph3p1 animation_addr WaitForSync + jsr SetPMr3 jsr branches_go_down mwa #gamescreen_r_ph3p7 animation_addr WaitForSync @@ -398,7 +434,10 @@ AnimationL5 = AnimationL4 jsr branches_go_down mwa #gamescreen_r_ph2p5 animation_addr WaitForSync + jsr SetPMr2 mwa #gamescreen_r_ph1p2 animation_addr + WaitForSync + jsr SetPMr1 mva #1 LumberjackDir ; right side rts .endp @@ -408,9 +447,8 @@ AnimationR8 = AnimationR7 ;-------------------------------------------------- mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr - mwa #gamescreen_l_ph2p1 animation_addr - WaitForSync mwa #gamescreen_l_ph2p2 animation_addr + jsr SetPMl2 WaitForSync mwa #gamescreen_l_ph2p3 animation_addr WaitForSync @@ -419,6 +457,7 @@ AnimationR8 = AnimationR7 WaitForSync mwa #gamescreen_l_ph3p1 animation_addr WaitForSync + jsr SetPMl3 jsr branches_go_down mwa #gamescreen_l_ph3p7 animation_addr WaitForSync @@ -434,7 +473,10 @@ AnimationR8 = AnimationR7 jsr branches_go_down mwa #gamescreen_l_ph2p5 animation_addr WaitForSync + jsr SetPMl2 mwa #gamescreen_l_ph1p2 animation_addr + WaitForSync + jsr SetPMl1 mva #2 LumberjackDir ; left side rts .endp @@ -445,6 +487,7 @@ AnimationL8 = AnimationL7 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr mwa #gamescreen_r_ph2p5 animation_addr + jsr SetPMr2 WaitForSync mwa #gamescreen_r_ph2p6 animation_addr WaitForSync @@ -455,6 +498,7 @@ AnimationL8 = AnimationL7 WaitForSync mwa #gamescreen_r_ph3p6 animation_addr WaitForSync + jsr SetPMr3 jsr branches_go_down mwa #gamescreen_r_ph3p7 animation_addr WaitForSync @@ -470,7 +514,10 @@ AnimationL8 = AnimationL7 jsr branches_go_down mwa #gamescreen_r_ph2p5 animation_addr WaitForSync + jsr SetPMr2 mwa #gamescreen_r_ph1p2 animation_addr + WaitForSync + jsr SetPMr1 mva #1 LumberjackDir ; right side rts .endp @@ -480,6 +527,7 @@ AnimationL8 = AnimationL7 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr mwa #gamescreen_l_ph2p5 animation_addr + jsr SetPMl2 WaitForSync mwa #gamescreen_l_ph2p6 animation_addr WaitForSync @@ -490,6 +538,7 @@ AnimationL8 = AnimationL7 WaitForSync mwa #gamescreen_l_ph3p6 animation_addr WaitForSync + jsr SetPMl3 jsr branches_go_down mwa #gamescreen_l_ph3p7 animation_addr WaitForSync @@ -505,7 +554,10 @@ AnimationL8 = AnimationL7 jsr branches_go_down mwa #gamescreen_l_ph2p5 animation_addr WaitForSync + jsr SetPMl2 mwa #gamescreen_l_ph1p2 animation_addr + WaitForSync + jsr SetPMl1 mva #2 LumberjackDir ; left side rts .endp diff --git a/lumber.asm b/lumber.asm index 51ab4b2..9aa88d3 100644 --- a/lumber.asm +++ b/lumber.asm @@ -279,7 +279,7 @@ EndOfStartScreen */ sta dmactls mva #%00000011 GRACTL mva #>font_game_upper CHBAS - jsr SetPMr + jsr SetPMr1 pause 5 mva #0 StateFlag rts @@ -352,7 +352,7 @@ no_r_branch */ jsr ScoreUp jsr PowerUp - jsr SetPMr + jsr SetPMr1 lda branches_list+4 ; check branch over beq no_brancho_r ; branch over lumberjack @@ -407,7 +407,7 @@ no_l_branch */ jsr ScoreUp jsr PowerUp - jsr SetPMl + jsr SetPMl1 lda branches_list+4 ; check branch over beq no_brancho_l ; branch over lumberjack @@ -529,7 +529,7 @@ leftbranch cmp #1 beq right_side left_side - jsr SetPMl + jsr SetPMl1 mva #>font_game_lower_left LowCharsetBase mwa #last_line_l lastline_addr lda branches_list+5 @@ -541,7 +541,7 @@ no_branch_r mwa #gamescreen_l_ph1p1 animation_addr rts right_side - jsr SetPMr + jsr SetPMr1 mva #>font_game_lower_right LowCharsetBase mwa #last_line_r lastline_addr lda branches_list+5 @@ -626,7 +626,7 @@ no_branch_l jsr RASTERMUSICTRACKER ;Init */ jsr PrepareLevelPM - jsr SetPMr + jsr SetPMr1 mwa #gamescreen_r_ph1p1 animation_addr lda #@dmactl(narrow|dma|missiles|players|lineX2) ; narrow screen width, DL on, P/M on (2lines) sta dmactls @@ -753,7 +753,7 @@ HoffsetP1=103 datalinesP1=5 .endp ;-------------------------------------------------- -.proc SetPMl +.proc SetPMl1 ;-------------------------------------------------- mva #$4f HPOSP2 sta HPOSP3 @@ -766,7 +766,7 @@ datalinesP1=5 rts .endp ;-------------------------------------------------- -.proc SetPMr +.proc SetPMr1 ;-------------------------------------------------- mva #$9f HPOSP2 sta HPOSP3 @@ -779,6 +779,58 @@ datalinesP1=5 rts .endp ;-------------------------------------------------- +.proc SetPMl2 +;-------------------------------------------------- + mva #$4f HPOSP2 + sta HPOSP3 + mva #$5f HPOSM2 + sta HPOSM3 + mva #$e0 HPOSP0 ; hide + mva #$55 HPOSM0 + mva #$e0 HPOSM1 ; hide + mva #$50 HPOSP1 + rts +.endp +;-------------------------------------------------- +.proc SetPMr2 +;-------------------------------------------------- + mva #$9f HPOSP2 + sta HPOSP3 + mva #$af HPOSM2 + sta HPOSM3 + mva #$e0 HPOSP0 ; hide + mva #$a3 HPOSM0 + mva #$e0 HPOSM1 ; hide + mva #$a2 HPOSP1 + rts +.endp +;-------------------------------------------------- +.proc SetPMl3 +;-------------------------------------------------- + mva #$4f HPOSP2 + sta HPOSP3 + mva #$5f HPOSM2 + sta HPOSM3 + mva #$e0 HPOSP0 ; hide + mva #$54 HPOSM0 + mva #$56 HPOSM1 + mva #$5b HPOSP1 + rts +.endp +;-------------------------------------------------- +.proc SetPMr3 +;-------------------------------------------------- + mva #$9f HPOSP2 + sta HPOSP3 + mva #$af HPOSM2 + sta HPOSM3 + mva #$e0 HPOSP0 ; hide + mva #$a4 HPOSM0 + mva #$a4 HPOSM1 + mva #$97 HPOSP1 + rts +.endp +;-------------------------------------------------- .proc RmtSongSelect ; starting song line 0-255 to A reg ;-------------------------------------------------- diff --git a/lumber.xex b/lumber.xex index 9e257617a23c1a2036ce89d0fb4387267a167822..34d345ad58302552b3c8974aadfe4f405e2f9cbe 100644 GIT binary patch delta 3287 zcmcInTTC2P7~UOrfr6n6cmbB;S-`T(Ww~?_inn?}3xcKPs#F;|PhAnBVD1e^ zrQ|ztTq!HhCFm1FP_JnvsDohM=<_d;n1fHv;C8Au@2o_`$$5D}?H^ z*hvN~vRIboLJ#s*R}?&?1rHPOTYq%$ab*z1L10mDenO=pxK@Xs)ZwQToEHu7fGU_| z6gRt7>}G_&n{wE(HJ>fYh$3s%f;Iv)K0DPI^GtM_gDMsA`MeIlpu=4XUh~cW4SX?nK6FTjU((^jvDk{jbp!j0)W8F(U@L0i#*?WlEB}+sO|5|& z&nz3eP5wKx`1gI3CbeDjMP(e1BtGATs`>j|U~nKX`U`GOYH*igC4EA&^0V_Aem%5u zd6ZmghK>uJ&4t;EY+zI}hMb_DLB%*EiiE^U;nQYox|>0E%%9crSDQ~(3=W`t-c8}2 zLg2>GD)%0kBE1H<&VuB(NXLPU+!-(j@o5zB1GtM4PPNpgP>k&l(6EMc38GAiV!D1Tyb-nOHP@y*+2EdTgT!5g+6dl=shg0Ntk!c;9I+}rvw zi}vx9%*V;7i;tK21Q}i94KixwP2|cfqbA-c)94db^o3URSybc?i`I?QLPTvOQs;V+ zSY^KRSVc7N6Af)NPzIyHXu+Q>YqmA(eCk3u6w9HMB|DIXFNX_dP%I-b3&S#q+s=hj zD3%f?5i_N5!3k+(@yGd`aK^Gi`{RO6=v#8(B+&tHMz@7OSm`$hE1=KbR!K;|ao8I) zd$_Y;2-4TR0k4!Ko6t7SI}u@p{cY(fbCA9=Vlm-&hWkM%oMv5a^kgjQZ z_xV20`@GLR_w;?=pU+T<)6}Uiis@_InX|>-`&_4R{J4_RT&RT;e{6l_jwud#htRfw zWI_2D%?wI*a_zuG{caG|4w0KWvA=CSoeGFY+sdu;!I(|_q3ss&%eLx}8-Ei~^V)60 z>8P~22I4CD+J42Zl_(z7#veyKj!&dr+G~dZOELNwqxqoh!di_&scU67)|?8h=A)L^ z+v|tXwS(~cpQyb_#P{AG((mH+uC0tmt@Z<1cXo?fH zt-jD42R=T(^q^4YM;Um?2oDoz4P=dv=|-fzrH_2v#9K_J61Plvs-Q1D*m@@(4UbUbzFxj*=;6%%EV6_ z*$y3->n3~AI03|e$;A6i{PHrpGu6srU*)biIclZV7KbqwCx_kBW_lT0P5h*Z+l@@t zt4+F~|L2e?m&}AELSd zZ0Tr*Ls!xpyF~FvQ3Asyf>HrEtcY~i7SEwzbnk}bSTK5NL-IsW?CL^ICxg+x^|Q

1ff55`O{h0%wBYx+I-=yVwPbKSFaAQx@gCSdp9Gg_EDjgdgAA=e0 zgh>WqXhV7u=k-Is9!sYqMtZ73t{a=#g+dZnv8j28BCnn_8AvWHxUuZSf(y$9Sa4$5 zfrSDr+p*vPeXg3)9O=vSA7R0cSvdQVQ*TPUI%yf}VCAB@YO89O3+9xR+9;3EVok5Z j{Wqs>l*eeT61~fbn|o_$I4~aQt+D;YePqXCytnaRTqvp(