From 65f460242724941a50b391763c218f4ce9bfc756 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sat, 24 May 2025 19:54:15 +0200 Subject: [PATCH] Eyes animations done --- lumber.asm | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++- lumber.xex | Bin 28935 -> 29081 bytes 2 files changed, 92 insertions(+), 1 deletion(-) diff --git a/lumber.asm b/lumber.asm index 4591202..4d3febd 100644 --- a/lumber.asm +++ b/lumber.asm @@ -5,7 +5,7 @@ .ENDIF ;--------------------------------------------------- - OPT r+ ; saves 10 bytes, and probably works :) https://github.com/tebe6502/Mad-Assembler/issues/10 + ;OPT r+ ; saves 10 bytes, and probably works :) https://github.com/tebe6502/Mad-Assembler/issues/10 ;--------------------------------------------------- .macro build @@ -27,6 +27,7 @@ display = $a000 .zpvar VBItemp .word .zpvar tempbyte .byte .zpvar SyncByte .byte + .zpvar AnimTimer .byte .zpvar NTSCCounter .byte .zpvar StateFlag .byte ; 0 - menu, 1 - game screen, 2 RIP screen, 5 - game over screen, etc. .zpvar PowerValue .byte ; power: 0 - 48 @@ -330,6 +331,8 @@ titles_VBI ; jsr CreditsAnimate ; + jsr TimberLogoAnimate + ; jmp common_VBI gameover_VBI ; game over screen (StateFlag=3) - set DLI @@ -590,6 +593,64 @@ no_next_credit rts .endp ;-------------------------------------------------- +.proc TimberLogoAnimate +;-------------------------------------------------- + lda SyncByte + and #%00000111 ; for slower animation + bne no_timber_animation + inc AnimTimer + ; animations + ; check if animation in progress + ; eyes.... + ldx EyesPhase + beq no_eyes + cpx #5 + beq no_eyes + ; eyes animation in progress + ; next phase + inx + cpx #5 + bne not_end_v1 + ldx #0 + beq not_end_v2 +not_end_v1 + cpx #10 + bne not_end_v2 + ldx #5 +not_end_v2 + stx EyesPhase + jsr MenuEyesSet + jmp no_timber_animation +no_eyes + ; no animation in progress let's make new + lda AnimTimer + cmp #20 + bne no_timber_animation + mva #0 AnimTimer ; reset timer + lda RANDOM + and #%00000011 + beq no_timber_animation ; 00 - no animation + cmp #1 + bne no_eyes_change ; up/down + ; eyes change (or not :) ) + ldx #5 ; eyes up + lda RANDOM + and #%00000001 + bne @+ + tax ; eyes down (0) +@ stx EyesPhase + jsr MenuEyesSet + jmp no_timber_animation +no_eyes_change + cmp #2 + bne no_timber_animation ; %11 - no animation + inc EyesPhase + ldx EyesPhase + jsr MenuEyesSet +no_timber_animation + rts +.endp +;-------------------------------------------------- .proc NoDLI ;-------------------------------------------------- rti @@ -2164,6 +2225,10 @@ score level dta $1a, $1b, $1c, $1b, $1a, $A4 dta d"1" +EyesPhase + .ds 1 +FootPhase + .ds 1 ;-------------------------------------------------- .proc MenuAnimationsReset ;-------------------------------------------------- @@ -2171,6 +2236,32 @@ level mwa #eyes_0 timber_eyes_addr mwa #foot_0 timber_foot_addr ; reset timers and counters + lda #0 + sta AnimTimer + sta EyesPhase + sta FootPhase + rts +.endp +;-------------------------------------------------- +.proc MenuEyesSet +;-------------------------------------------------- +; set eyes to phase in EyesPhase register +; ldx EyesPhase + lda title_anime_tableL,x + sta timber_eyes_addr + lda title_anime_tableH,x + sta timber_eyes_addr+1 + rts +.endp +;-------------------------------------------------- +.proc MenuFootSet +;-------------------------------------------------- +; set eyes to phase in FootPhase register +; ldx FootPhase + lda title_animf_tableL,x + sta timber_eyes_addr + lda title_animf_tableH,x + sta timber_eyes_addr+1 rts .endp ;-------------------------------------------------- diff --git a/lumber.xex b/lumber.xex index 4f3a13e4b1acea460c2a8cbc98e9ca517f21a6b5..48f2c72b9a6781f41ee374065729fb067d9b1ea8 100644 GIT binary patch delta 4730 zcmb7H3v|>}8qQ><@6ryh<5=LBK4d9^7C{%>Qb1WPFq9S$d6O2Z?F#5FxJsc+X}L|9 z+|ZVQ+bV$}C3~7mC>2>3C2oCy3@^g~Dk4}{Peu2L**zQu1iJstK-=-L=j@!!P5%G; z{>T0ABRAYX9SvVN_No%U{95qLU6qx!A8 zf(|P-NL#L;(;BHH?o(vSJmS8>OjyYXE4`Oi^iT;aN9)IO#CK@%U7E30GS5BtQ(W(7 zW+qw59UIgQ!Dutar%`Bwclb)xA9R=rhp-u=iU>2`@)-?T{nVGTdc`*>ltwYhHCiWn ziE-Ab^}$Xnf!W|cSZ}#NSMM$QQr&9y(c?pz*UcQbp>0fVmDj&g?U(5^hj(mMw`Oe1 zibIO0G#WLUF{qI|DC$-~lU3i=OqUtW_=y4Y$0`<#V$7-Pb~A}Myke#>UsY)r(Dp;y z)$JbCRO&)IOJk7=e@zYCCdDzm)&nVUD4_1>){P{(9fx+XO1?(P?iEMe*TljVV$lj# zFIo{CvS*Pp*l?5U4yCdd6j_5J9MbevjsnW2#QI365Vcy-2a}t*~GAWr@JRi1DcS!3B z`by{W9&i*(y{8R#NYc1zxsFdIep*5Fy@dFJ^x3qB9LuGY{4B?IX-fVW$606xNlN}b z(P@ORN;;MQNc7n-w=Hi#vL@Q<9s&9}TBLaecS}k^|DIXU$Em{xvH$#j&t-TyU05lm$;Y&A2SxUw;U-}tt z4Kqw&)~HuZZ6B)91XSytwOTW~l)XOguJUk`G)i2MtvxI* z%+?acr?RyPVo5f$q!LyMv$sl{C}z=Gwm5>;hKu*nno}HPG7CAd^Gj_rQW7E1)78xQ zO3ew1jv4uMnO_<`GsCx}QoqR^l&t6N1xcIzU`axrIl&mq9ZWK#P(AY&uL{-^-ljFE z9;{zt9_5*jc<`;?;D7^zz!a?YK3L97@{x8-IkXYX3AdOuFpt~JGdA-eFg@i=VTBe& zMgZ!QYF=d_j$Mk*S^a(W9MfN5hWo=k|2_1)r<_ORPy}TfQ9Zw|C+kt7igff?*im;q zp)+7YYRqcG&=zf2xV*lS>@a5*F<2cD>4~t9uH;xE?~9-m5>;d}vw!YrPS{a6&`css zu#=&Y6vh5ZC8mUJx`Iz9a%3fD5LIMwFHuESVrtmY&wBpTjxXsk3=6_GUBQ6bU9s|s9NEzVqKb?)iKrqwIyvkpT;)fI@c$3_+^~C35o1o1eI-MDhK8-N!G6CNt_yFJ|6?yho4WQc z2qHDkN%b|5LquS)vI4f``Cn?cHcv>WS*947N|mWJnM%KC{+rd>m6$EJ-V>}c7v9Si zHd;Xlaz*+@_a&B@TB#%(A63eQ>Bd);^5^Ns574F_asLaZ`+oF>wg|ncznX*I)%WJ0 z_Y{{gA*M=Rn0Cbd1Ele~{#p)tTZuK!rw&T2lFx(LWuSDV4(eYecMypX-T_q#$hMIK z{aso=cd`${x{cpf$;G#{uj_AtD>ld18To^^eeljbS4-VUW}c~rLkom$Mz84ma>O=T ze4Bl__T(Kw1&-T{1La+4ZP9=c#I$vMU7kI@x)SD9?!Tn z6a}XrINLCAl%dcrq-&3(-CgH9EdvF#BJ|T^k+gZMkoMKzTN_+lG?5As0Y%ZRiafN(n=`Bv=$+Pukca z8ynnh77fs!Y$#+y_jf_YT3da=R_9djHRoqKX2A=vyqc-4hRTvcAGuxV*+|jqNuhmk zN}BD3^$wsP?32nOZ04Ggb*yw9TuflxVhyJE{ zQHwSc?S=bmT07dqYTFS3TWqiez?}f@x(!aV!LVgJfR6*%4q*OIEeY6o3seXgVd=XS zbQYM-`z2EnQ~~fWVbd0pRtxK(Xv#r3-0({oFmOQ1&fdNF?*v%Vnc3PhacH*ICf-k; zM#6g#@nQlmCi1LNBLHqR2tZ(sMqBXx)s`+fdELneQ_PW?TXgc5XkMrJV1LueoFLjk zprv_uh9ku#2d_JbG8U8${u0Hrnp<(o6wI(|tl~5%UVdmS83VP>Q|cDCk5!@!7cV#1 zx`1PS9lw5KYYh^amwC2hVx3wSj5l3c9ICSw8+Y0utG}Kj9-=!0RS1p%I134Im|_nJ zZWr{(eg-6~)g2#HtSl#!1s9A{7_iH(C=Ku5vsXV(uVkU1ycf>IQ`h z>|v-H7@Y<-{EeBYj5C%A@~#|vL5?$~2-2~lUCw2=dGG4QDfC0f*PqA@lxtMOcLHx- z3%FX3qmK_mb1o3udc47)4!60@?@Myy<2}Vk(b1CF%(nQULx&U}L&u~KiZgs?{Y|Y$ zgE#jKZ)$yCwuIK8d|7}k;0hcE!3jKo zb9h!mSqY@upAhj>4U9(|fo;LNyv9q{9m%?Oz>Tx6FwfR{=hi|F>Zh{Hhg%QI{V+Ot z815d7LXggU+|+tf&W9XN%8cD+*zI^M&$J&(>~qy551YL^&Z=h*er!3Rt|U`xlO`e)wg3;d z{)0{!klpbE12HKe>EJ2SoIYHCp24;8RxHFCf{hFe&Y?QVgIu_2KeZ8^QBP$iHSJ%9 z(Ff|8JC|d52{uMyD;3^dDMljplxJhlfzf!CZym{S|BEDh@7lTxqwoPQZtGP$!kCHO zgX_=dVl&pr$B?z@yqSwhGAAK16grTLp|2CMF&>Zp+5v?zhG4hHaAB)&laU1hhG8f| zZFK$DZWv1Slsp?}K5Ip(r@c4o3<`USPkYKI;-GJAZ46AeC0HBR)cS#^JQ2$*K9c41 z#@6X2xK}Ce^#|PRY1~}>p*|bCQ}iV`Gui5^v)Hq2J{F5GtlTHDKhD*x&mnMe7%l{O z0Tve%_$h#Cuvgr$g-~EAQz398J3@LPmec4E7|G6%UW8>=NPiN`Q6YUXmZL-ZQ&^4( PsUPl5F8w}+-dpxxli+E8 delta 4528 zcmb7I3s4kC8r~OAd923dR@8Dpw1mV2W3Eaq#5}wNkN*4b-dTO$7}F7?9ItPcIZJgGOc8F|0(1RR}XHT&doSk)kgnKDIevAOZQx>s1Tr>g}t)6?Z8kq}Wi}EhP&cNMJ6M+u1^KWSUu-Jg`gLl`3S! zphjCkBnl`|C_pET;x0fFVYIANA{k~I7%)-W9AFfs%oF!03Dn_FN)l7Dja)!`j_ncm z*wA|g7PPk@8a2URv)FKt6vOPLq=sV+qJKyiq&ojGKmVh>p8wCh^vL%(gNeMwkI6}i z{9K>T&Y6_(vo__7ru?U~#Rk48C)>D?Kb$kcxP|{NXR1-+H{>MqS@WMVn)yxhCmW~m zjq|gOMf~OY3nF`|>1O_!+!@9=zBo6-IFpxhryDoJIF`38cr>z$68^&falvzwHfz&+ zVQgHaQefdsN67{qR(qA1(M%po-1aqm)f00@L@iA+rFZR>Kj=m?o=6b5iwsC zLc>+^BNjfHUZXrrnz?D2j`F9tkI&YRqb?nhvb+dLlOv*?&ACPWVFiN!s6O;&4&phrD-RjHs z=ZjH2So@fdSmp&6_?LJVIItJYl@fb@G4st6( zeGC$~|4aayv2@G`xNgF_6V!Q2pElB)ZNeP5=@>4mpI$$y+?yu2=)Br@^7T^vTKzxQ z9;z9<=3o=}_+`l%Ua)uh*911f1^(){KZTxlE=PZE(}nK5 zEb|e_!78697uMb7d?fuH9P>HL$2_~6iKu{=2#7{di*zuH>oRelm>{=Zs1XGmfhcje ztsuHtp1#c&o8l`?@ztfcdaUXY@C@I&oO!Zj8@x|2@cLjt@1s_-7)gUKR3sHOkk#my zuOj^I4Yfn396$$&9ql8F(1-BcPcEVl9HaqJ@BF9MkROG^swy$c2?7-s3b8*~YnE`N|I4H^KjUN_xG)7s}S8cYVG!Dxkl zNu$S%PHGws$1yFFY~a!}Nf-AdolVVjT=lV%j}0a%Q;C)Hu~)sUg2pE2=GR5wVsvgDK{Fp_3YJmSO>8N%)&ctkM*V_V3yxug&8wxZAFi*z{)ku3`EH9 zvVu?3`HkB>uI*g=4phYqb2$b)q9+)uSV#==XfoHNVGilzEbf?Tz%9CiQvl8w1Gim) z%W=$YwLph!bAU2D03kO&cGbk#ovb>wg+xrdvXh^;%I2(Q<#8C5%PAObYcH=U?e6j` z*QK3oEd5uo9+i^J0s|^*^{^e3*FkxH!>^ffz?`WuYaYyG?y!(Kcn^hgCwhmT!7!O1@ubzI%af?GHqW@cX{ycp7(8B{#W)v;17%kivK!*aE( z5353X)I|C-1b%yIkCsbru9|hw*I;w(S^Pg&r$_RL2NVAK>L;d+!oF(OMfa0E%Br^$w5k6)W)n$f%cM7F<#7y(f6PZE|z_ zF~Nb`yM?tF&T&2_MqxcBr9vsbbkU-m6?<&(bF0TQdf>QSuGXsYFTbh1r=`2S2OY2I z2^iFa;yH9SaOcv6^;mgUc3{*iuf^y@XFk52k0GPJv{}KKYC_vn!bS`kzL>UED0S*_ z?r~mxtq(q8Uz#cu;)`bGfOr<2B+d+S&B1$Vm5m0%RG>S_@z+j#O+6f?HDQD@N{9+2g~lo z&FzZN1vx5$M;q(3u?-7Hw8N2aiqJ%b=8h{^XvY3nP_)vj`7snOR`6n>So7A2 z3k*UPCUL?cO+J7f%+lJ=zH(w^_`n(Q%+b@T8R|+iHPjLgeGcc{h1LI}6EbAi+gYU* zkS;Jphm+mj^B(MpRih!67t3`RoI`aI#}?w|4#N)AFNV?*nmf*8^qJT{>H-$}vD}2! zWcUI~l8dpeq!rsboADOs4>ZG$$STO*zP08;6YlK9UGbhN@)2yE=skZ3E75WnhO8Cy z?L(L*qd;P)uk#RwwI0B78=m%^5eg%FvDGFQV)dbB*$)ABV<>_r()*niwo(iU-8gNd z8X=yv|6C()#I|)OZ6ybA&^gls|LXwRky*{{pV>-^v7q3d46{ADMmmGz&*J!VIQ~oA zQt^e3U`PB zECoXd+z7^y)Q5!>QwWR%b4Utd!4i^AVId+Uoy0<9NIH#$sF3)@{>FkIqf85m{s%=@ BLskF)