From 06f33be179456d8dfe6e7003e2391430280ffee8 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sat, 19 Apr 2025 19:15:09 +0200 Subject: [PATCH] Prepare for clouds and birds on other screens --- lumber.asm | 205 ++++++++++++++++++++++++++++------------------------- lumber.xex | Bin 28227 -> 28225 bytes 2 files changed, 109 insertions(+), 96 deletions(-) diff --git a/lumber.asm b/lumber.asm index 7943870..8262395 100644 --- a/lumber.asm +++ b/lumber.asm @@ -225,109 +225,16 @@ game_VBI ; game screen and RIP screen (StateFlag=1 or 2) - set DLI ; over horizon ; PMG horizontal coordinates and sizes - txa - pha ldx #$0c @ lda HPOSP0_u,x sta HPOSP0,x dex bpl @- - pla - tax ; fly birds - lda birdsHpos - bne fly_birds - ; if no birds then randomize new birds start - lda RANDOM - and #%11111100 ; 1:64 - bne no_birds - ; new birds - mva RANDOM birds_order ; randomize birds order - jsr PrepareBirdsPM ; new birds position - jmp no_birds -fly_birds - lda RTCLOK+2 - and #%00000011 - bne no_wings_change - inc birdsHpos - lda birdsHpos - bit birds_order - bmi reverse_b_order - sta HPOSP0_u - clc - adc #6 - sta HPOSP1_u - bne new_b_h_pos ; always -reverse_b_order - sta HPOSP1_u - clc - adc #6 - sta HPOSP0_u -new_b_h_pos - ; wings - lda birdsHpos - and #%00000011 - bne no_wings_change - lda birdsHpos - and #%00000100 - bne wings_phase_a - jsr PrepareBirdsPM.bird_b - jmp no_wings_change -wings_phase_a - jsr PrepareBirdsPM.bird_a -no_wings_change -no_birds - lda RTCLOK+2 - and #%00000111 - bne no_clouds_change + jsr FlyBirds ; fly clouds - lda clouds1Hpos - bne cloud1_fly - ; if no cloud 1 then randomize new cloud 2 start - lda RANDOM - and #%11111000 ; 1:32 - bne no_new_cloud1 - ; then create new cloud 1 shape - jsr PrepareCloudsPM.make_cloud1 - mva #$de clouds1Hpos -cloud1_fly - dec clouds1Hpos - lda clouds1Hpos - clc - sta HPOSM2_u - adc #4 - sta HPOSP2_u - adc #8 - sta HPOSP3_u - adc #8 - sta HPOSM3_u - -no_new_cloud1 - lda clouds2Hpos - bne cloud2_fly - ; if no cloud 2 randomize new cloud 2 start - lda RANDOM - and #%11111000 ; 1:32 - bne no_new_cloud2 - ; then create new cloud 2 shape - jsr PrepareCloudsPM.make_cloud2 - mva #$de clouds2Hpos -cloud2_fly - dec clouds2Hpos -no_new_cloud2 - lda clouds3Hpos - bne cloud3_fly - ; if no cloud 3 then randomize new cloud 3 start - lda RANDOM - and #%11111000 ; 1:32 - bne no_new_cloud3 - ; then create new cloud 3 shape - jsr PrepareCloudsPM.make_cloud3 - mva #$de clouds3Hpos -cloud3_fly - dec clouds3Hpos -no_new_cloud3 -no_clouds_change + jsr FlyClouds + ; jmp common_VBI titles_VBI @@ -410,6 +317,112 @@ last_key_still_press key_released jmp XITVBV .endp + +;-------------------------------------------------- +.proc FlyBirds +;-------------------------------------------------- + ; Birds fly and animation VBI procedure + lda birdsHpos + bne fly_birds + ; if no birds then randomize new birds start + lda RANDOM + and #%11111100 ; 1:64 + bne no_birds + ; new birds + mva RANDOM birds_order ; randomize birds order + jsr PrepareBirdsPM ; new birds position + jmp no_birds +fly_birds + lda RTCLOK+2 + and #%00000011 + bne no_wings_change + inc birdsHpos + lda birdsHpos + bit birds_order + bmi reverse_b_order + sta HPOSP0_u + clc + adc #6 + sta HPOSP1_u + bne new_b_h_pos ; always +reverse_b_order + sta HPOSP1_u + clc + adc #6 + sta HPOSP0_u +new_b_h_pos + ; wings + lda birdsHpos + and #%00000011 + bne no_wings_change + lda birdsHpos + and #%00000100 + bne wings_phase_a + jsr PrepareBirdsPM.bird_b + jmp no_wings_change +wings_phase_a + jsr PrepareBirdsPM.bird_a +no_wings_change +no_birds + rts +.endp +;-------------------------------------------------- +.proc FlyClouds +;-------------------------------------------------- + ; Clouds fly and animation VBI procedure + lda RTCLOK+2 + and #%00000111 + bne no_clouds_change + ; fly clouds + lda clouds1Hpos + bne cloud1_fly + ; if no cloud 1 then randomize new cloud 2 start + lda RANDOM + and #%11111000 ; 1:32 + bne no_new_cloud1 + ; then create new cloud 1 shape + jsr PrepareCloudsPM.make_cloud1 + mva #$de clouds1Hpos +cloud1_fly + dec clouds1Hpos + lda clouds1Hpos + clc + sta HPOSM2_u + adc #4 + sta HPOSP2_u + adc #8 + sta HPOSP3_u + adc #8 + sta HPOSM3_u + +no_new_cloud1 + lda clouds2Hpos + bne cloud2_fly + ; if no cloud 2 randomize new cloud 2 start + lda RANDOM + and #%11111000 ; 1:32 + bne no_new_cloud2 + ; then create new cloud 2 shape + jsr PrepareCloudsPM.make_cloud2 + mva #$de clouds2Hpos +cloud2_fly + dec clouds2Hpos +no_new_cloud2 + lda clouds3Hpos + bne cloud3_fly + ; if no cloud 3 then randomize new cloud 3 start + lda RANDOM + and #%11111000 ; 1:32 + bne no_new_cloud3 + ; then create new cloud 3 shape + jsr PrepareCloudsPM.make_cloud3 + mva #$de clouds3Hpos +cloud3_fly + dec clouds3Hpos +no_new_cloud3 +no_clouds_change + rts +.endp ;-------------------------------------------------- .proc NoDLI ;-------------------------------------------------- diff --git a/lumber.xex b/lumber.xex index 224cd973b1bda929c621df740827784e1cf765ea..804a49f3510a6ba916ba6f93e51de3021fd04ba9 100644 GIT binary patch delta 3330 zcmbVOdu&rx9PVwq2c2wnz<7+YGX~ivumMZ7EIc(Jup)>cGGJVuW3Yh_)I=mL+wNZU zbex{@C{S6NT*F1KqG%AqRoJ8Kc06tfe~<_!sF?}I(Kr%7FnG?r(C&5+fu`xbzwi5< z@Ata5=d@mB&Rk`V-AiMp9KWB|J;RY1*dd&D8H{em2$L_{vz@XjoZ1Xx(Pq6LUl-1l znQ)?P44cV<0f863^ZN}-$a)9taDq;!eU?)ksN^MwQ@U#TS~*@x5DZ+cz0%3o$&8W| zY)}&TMy>&Df62pp|KX8j;2ZIM$JfdU- zGaFAS$znF*l_fKoW0)_=VXolwC4jk$yGycdTfJaUH8|=8vt5D#oIzk_m5@NMsUAxB ztH8I_V2sN?t%`g>QMEmzisC(Z&awq@7B36-;Lny7&Yj``J}>y*BMjl{1%_1G;2{?% z7~pi9Fcr?Q2^Zm9n=ly`+rVH*>H}NdLJk~n6l`#UQ5XjcjDiVfC?FT7FV8fq5vDF* zz*un8^3jgLP&|v;p<=Sb8nu5$WgzLG93S2&Cxi#c$x0mO0rNb3z3O5=QBBOt2$Xq1 zE)s(%oKL1Oh-ic@vQdc#zt!3I)qu`g@*4#QG*a+hy$(Fi5z_$<)R0R=GwGqG@sTD& zG`G-&U(t0oriA-&K_O-PGaLX9Mm&b(NN^O1VANCFVe5F5W`m2LMT;dKh>-=Nu=kkszpxLi!w@x&=>~{<@g3 z?^0V|`g?uDK5OYlu8vH>LI0~CeTDH{6X#_<3boZP>ch6JEzGzbaeW5B=A(r6V|R{fL);fd0~vA?s}-^^Lf~ivO?Bd0khPV zmC*tHUDTou5`oU+?duoE6Gf|Z17BI6Zyx0a6S1Xi{IIodpJk-aInw7HSs${7*+2rn zZ%BFKVW|QyDgz0J-Qa>7+``++njL>O`3%`o@h+b;Tl#|hW|0LqXqN^{w^eG1N}Y&O zMnai((N$|ysx?ZP2$iBzTU6>|lrj@4U8T0E)Xy39{E32u>e!+3f1nE zOuM;8kmq5$T)a!RD1~OBALmkmou6wgEAB6XL1R}vUoTHk%;aIOC+9^rSZ_6xVUv4Y zyJ@1M1BDBZ2ywQ*I*^5a4mYZo@~=3j@JhLX+wo-!lK%B_Rgz&hSN(Mra(0|N&8tE6DJW3d9avT#-JsJ?iwxr>%wt#*T{7 z#lgq3Yg!!5NyRaD+VXFAQq5A z`cRx)nVposTgeq`jNvS>5>KuyV7B6l$^!Fkudf9ks!Z#D-Ro~EqVox4N}af+(qVkD F>OYUGs@VVl delta 3374 zcmbtXdrTBZ9KPK<9`cYYqJoGFpjEI4t+qL>6{)dWJ*%~~mQ(SxfTEza51U5K@miiY z2Xk{oPq`M)TkkvPa#=s$9d*>@(nvo2jr9jSJEd4}#ErCH>{Il&!hY%24_rE8_k zzMY<(VIJ_@!Y~mstA;2^n;liXvp54-LI_`!v1{}aY=Z!Z>HvSiGPuCt#%Y9}T zxJI#-t`_3L8z-d?_s8^Ad#c4yDU8=})yC*@PmRb(kzI9Cn5Ukr0~Wi-F5dM=f<#BB z-LK>Ca(3g|Kk!)7IA#HU*_6VR;8mu%%wfFGG?DoU_m}{43tuv&8MZpWu1fHg11zxe z8gK%Ec@=yZy~f!o@p%RKrV?aYjky)%17=nllPf5G70+9-BqYjV2D@;}im9=fL;-GLK1jmmHd@hDUN(8G1R|74D*i=hf5)x9W1tcYULJVTO}#aAy8}w8OYm> z{8LCSBZ-DTLS&^-@Mn#2cNOTZCcg*3k@Xb3Q>y}xa->`bTvg-}(2TyP$==swh~^eL z5ady1MU#SiWzD)e6_`us1?f~7WHx{(hnOPWG!xVKP=1_cHq14E0tEIu!1tKfz}W^q zmqHKJZ_xTPRm)-u&9Oe%^=h!t97RY`okfcbszTNVn)&CrM*a%Klk;OO^Hkcalu-dY z8)#jwYS~C3_4N4^QVXqCgp}z`w1}3cXX*5l$n{GHMfk(^#DYOa-l4TRkmbQf7E(x^ ztWgnq!aY%>j0&vB2eek_@F9iN>#>eP>OHYu5gN*#SfmUMczBoA>Im{Er1mhh2p+X3 ziU;}lh}P;XJ`VQrbXh!fPrNqB$WmIX19>ah$UF+E_r!cfNLiE|T0G8kVy!YNupXOe zt^qm!{B)*LpGb^{B&|9yFn+m2S?srf{{}i$q_udt901FL-|FvLjYzBJp87{-o zg*&ESwesWPW|o{#FgbuUlVbz9b%Nltft|jF!2QDkIS8C6TpG(lcZ^_#t~F^w3v^vf z6At2uMdMyN23`57KK*qfb=bRe26xOIE?h`SIu2bIQhfS<-8!K!CCLX}eYBzt0)fup zZAHsMiK1S(gwGXC(LHMe({T8@?A#)oGa}Vlmg;n**822*vpdYQE511VOJUO>LZi{- zY>$r**JQ`X=WN$#zyTYOY~ULHbX}|Ea-&m|CM;@lmZb?^@;ilS{cR@UjuvjpRGv(= z4NxqhLYnBPLYe9uptOW~My9sN)DHucj!;Q5wL_*ZDAas9SqS0MWv))<{u&q-N~jlQ zs#&J41}Gs{hWE-agO2>R{vXD28hKA6af~#T*Td7OzZZFXkvLM)g4K3{CK0q3k$ZCL z>OY0Nr)X<90Z*a+9%SbAZmp{a`Skyp-CCgsxss-n)iQgm@x^*rG2I;^oI$SbGUjHg zt-k68A*7kB2b1mQKC8znMo2L_ei&z!frc*#i_IHHM>p8bUA1~0S@l|SmaN+NLWB?b zryk%#43~YlePg_(0||E>T!p|kbCq9LptA1vR_VIeha%`t@nWuwHxz5Q@`IhIjrO(C zzE(|e=aoQb*TXwOvYmJ%%I;QCC$a9b>MAk=US1NNa58vAM-_E}ca%(6*!^(U-0wp~ zjjW#*NSK_N=^r40x)BtS_auVd$lHbBN#yNBunT!R5bVU4OGbxxATuDx^+X(1niiSe zEKTxOvHldW2G1zXVz%N9rCAeiI-DJ-md4L@a{k+9<$s4Lce3!i!__#0E)2Qv#qFgQ Hc0|ShaRJ3P