From 98caefb08540d50a6d333f6929f03c6d68869255 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Thu, 25 Jul 2024 22:09:24 +0200 Subject: [PATCH] nous grafics --- data/config/param.txt | 4 ++- data/font/smb2.png | Bin 1344 -> 833 bytes data/gfx/player1.gif | Bin 5834 -> 5874 bytes data/gfx/player2.gif | Bin 5658 -> 5657 bytes data/gfx/title_arcade_edition.png | Bin 0 -> 1673 bytes source/common/utils.cpp | 39 ++++++++++++++++++++++++++++++ source/common/utils.h | 9 +++++-- source/director.cpp | 1 + source/game_logo.cpp | 12 +++++---- source/game_logo.h | 13 ++++++---- source/load_param.cpp | 12 +++++++++ source/player.cpp | 3 +++ source/title.cpp | 2 +- 13 files changed, 81 insertions(+), 14 deletions(-) create mode 100644 data/gfx/title_arcade_edition.png diff --git a/data/config/param.txt b/data/config/param.txt index 109a5d4..120d7ac 100644 --- a/data/config/param.txt +++ b/data/config/param.txt @@ -18,8 +18,10 @@ scoreboard.w 320 scoreboard.h 40 # TITLE -pressStart 160 +pressStart 170 titleCounter 800 +arcadeEdition 123 +titleCC 80 # BACKGROUND backgroundAttenuateColor.r 255 diff --git a/data/font/smb2.png b/data/font/smb2.png index b11fade07e8e2852e1f68483c91a170ee3ebdaae..5f3d1cab6291a0a458819e24f6d6fa1543d0642d 100644 GIT binary patch delta 821 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 V+HS~Xu}Rz|qS7hCX}yI206Q3_*R}uv diff --git a/data/gfx/player2.gif b/data/gfx/player2.gif index 3c0e049c2487e276c7000ad44ff5275ffa8b5106..670d3d145b40b1e272a1ff77f72fad9a5551467a 100644 GIT binary patch delta 5553 zcmV;i6;A4!ESW5jnty01By8&@X)Mp?`o461<2fL#z#XjT6Sj!HpzVhIC4#%2@<|O6 zolvH<%C%m*VCioR7JR4E>loW@uF+5RdmRYK$!Pa{Tt_DNKYcw84Gj*5gbo6Ac6WP% zgN2BRi;$6qh=!GoGzOlZp9i8151cfFn1`B-M4+ys2c)Jmu79AgvNMIA1O^Vfy@wAC zvoW=yqop*u2E4w^zz)L1D9g>ih|)5W&%NB4$+->J*TKW#zP#P(-_s`B>)xv1DXEk8 zg_iV&-tmO<^!5Ux$_G&3Bz)~k7?LC~P>y;A5k5p^&|!~-5D{6-0Z2fBjkzc`T%>2t zN0KGq|C~&C;(tehmoQhdYzb(ko0u>I&7_I*rA{{w9v~R{^JdSYYJv_$fE1`uqLuvo zp%b9O1V2BNLM6y?P93XKr}7DK70HAO6)31(s}^iZofG1kMQefWTDLvorbWwlZ`mAY z)7qsV7%z>$gWDRG5xB11!hdI+y*n8#;mDFJ1byJRZGYXxF(xNw3mOID!4({1MzNW~ z1PfLvUzV|1!~|i6IA4A}`!HJGY%RonU0OtK0Fzs{jazrM3Ea`nP9QzK_z2t&;tC6< zx3hE8X+^8uY`HjYQhK3h7w>w;_UO~q!q)qp#P$bi-#-|9Hm_jd4`8z#Ynb3SUV(|# zcOCzNYk$obn1aS_7MO&?1!mm|w*?iSe!ZQb--HGB^;-^`;n&xLauHGC1QE2@VudLv zu)qQgFkqY{>#3Jw3MC?^9fdHWP-6)YK(JzkE{ec_0yIDnfdo%JDZ!Kx%phZpL+UrB z1e-zNhm$T!Nu`%4(1@i7V7gdji(5hoK#fe!uz#im5VYy03|C?qL5UC4NoSEoGO$3L za;j-3nJDC0W10~F3V@hfwg_jFE&3TL4T??)D43f7btXpDP>x~>dM7=e`$NA$oj3uZX{aKvK3p@bY|RKZckK>V<=#ZP!F2FD?*L9)m* zuwgO92!q`587IT+^2agL;IhUQcNA659e;6kLLEAfkps{{vpfSM45>m0D?K1x&q7Qe zUB^NP4db&3NGFns)jN$KKq&_pZ8QpPzimw156n&X zHqSWIj5$N|ZB5^RAH7fC*Wg1#0EZ9$ci}R$eF#76lpTZQ=y;NOFP76CAmy4z(|@)9 zfB-`m5fUbYB)lMLM(7(A-i3vk*~?>8(*yDd<}Nf$Az@~ymJiydFm}mM zc4`=u8?Hr&K0MEUX4o7e8YqYo@=sgrqC^rEf)qxiKox1ApDZHLiiLRMT7S04#s8q} zkS+SLVld8lpkSym8f?_!6(8`%{TMNgT%2PZ@#vlqv5}ANAM-B&)edNxH)P#g;*=bAHqSPlPut*|!a+IO0WKc#)DpT62QEf`4 z3`PZ|QOVL(ue4<+a~aEBwtoqhp!B7+dg;nv>av)_45ld|)u=Gt(pb!7)H6|V%4TwM znZ|TxCmXdXZaQk2o$@BIz}d}CZ8MzaBto8MBrb#5D@Fqw6u$PQ&Um(yp3<`CJlR=K zbrH;+`Sj;H4~8u>xznBj&DB5g8J32s;9(ApsMjF6Fou~d3q06@MSm|!g(z_UG+{2- z!p%M^1es;52`3wZ&E8N3lfuCf7JExeyP`AskzfuprD@OFS2Th!@&pcG!9f(Uyq48; z8b38bP!llJP55D{Oh{fqp0M$$o)u*I5fmN5vR0nAFc4Nh=S#hzT zu#TV_wGc%#R#%KqTz^%lYb_ggNC4MY9AK{PplV-j@z-qFCyXL^hvvxPkHGR(9NZu* zV4s6n04TN_eUk@L-D=r=z$3GbrEFMZ=M9N?$gP+48#LHjg1wS<9i|m6BVVhz*tQk1 z7^z6`WNTT0l-6peonvonHwo??7PTS?h;h#o#;f!+2Chx6J%5Y~0Oq1cEdP(7O=Yp` zmEc}+IAbWl0K|Ke^byFd&-HF0!0VFnj(053z2bGl>)!JEEGX+8P6gUa-lnLRj`Z!X zf9->t3hmb;^&N0)1&Lh{4(6?|aS58UvpNffhdRcjbb>4@#Il z{JF4v*-K#pntxb2R>@)zp<7`3jHZV)i1BMS=$acU2)_+j(TzhK107p{$Kq*Vgm-*I zFXkY|W^A%*lx$${I622>iE zd|2HOS>}jI#F3kixaLeogD-69a(sgUXgm|y&tmN1bbktYXGI@cyMzw^;-d2y=|IPa z&Jog(km=k-N#mFZB|4I8IBm%ZOldg6gi@F!ATTq9TF9gJgNtAlr7@*oNF-R(sv~8q zH@!30wPvQkpd|ufX=<9(f^0cESlj|Aw(@0Aa$y_*S3*|_ptWy2 z<;h(L_0`EyUN1b6T%i0~*1y;}bCeHkS~!=eLw`Z41)(>T=o!_h!v9F>QKgrZ=|x{D z7n*LfltMk}DYLprNe0uLR(+&Ai)q-sp0c3X)P2p%L)ZrhQ?@@R1zlB|Q`g>N55XO; zaxbb3;!cU8PF1XSC2Lk$dkVbw9jsIpL0a*8R@Rtc@nvoNag#dOV@%fWC4l_k^}5~8 z{(r)+mtXKtD?hfv(si$$-JELKaoW*CHXV{R?Bo;c*~NmE@NK1IY8i|B8;#btumx^# zbzghTHbb++?`=SSdo}FPwimX&?eB@Jk=@Gn`2*RkaC1A7nK)m%#kIcl8(dTEl7jon z6~FK2=v=eMm;LD#?T9B3;0<$l!NQF{{(t9RfBUk;x&Y*0_Sby>HKrFDCKKj2NBsw1 ztWkg;CV&X|ej|2(3f5X4HepopXvZ~y5Lkisae*KPAwZ^IA$S-thGH|uBMw-Cl5v7E z7HIBKAxG9^DJTO*hGae#gL}4RHCSZQF@u4YgNN~DQr1I#=7XBCL|ZmxfN>f<7Jp_M zcmhzSgiokwa28>5c7*R2XK&U=ZPp!p7KOpZg?L73f7WQDCWfa)XlN*C7siH06c=hp zS#W4+iDYS?c87+hhmJOf3sz}+*hrdIA!P_^rRIkOHi*Mfh)%R*a_EM$^dv_T7aV5- z{+4i&Bqftri9{kMN5YA~rYWBUiht=QioLQ;rih6Lmx}bZivJMTilX$2t%OaoNGD$+ zCH_W=Xu>APVr$#fZ`;-=w+M`4B8J z)beh+*m2v~Dc$IE3xJKA;s@>mCqUP7?1GN(LQpQ(F6row3I~tv*mK@UEPn;VPYFdZ zB`1&KhL8PdkL#3<423WgV{}J%kO=t@4Ilz|z%iDUcrBrjF;EB&sWL6aSuucg&eKO1 zc`|08k&kteH={R)^^q}_Q(f4wU?h1|Y>8iq)t0zpHwj<>cR4m>`IWOpmuPuaU168%}ld!XTiDL&-HF|}4n0c8tUVj-4NLiT;d70xt zIGRZclsA-(>6wWsn0!eBeStZpBRT+39(*O2rinPH$(Dss*?;d1IhnyAov1*aJ4BesiJil#In=oq)~Ob_ z^FV;m2!&ytX#t(z`G1vR#GF)hXYE;jx7ilCDGU`rpZ}t1pSVz+vN@h?1Az$!pKGz6 z1;hyaX`mxupyyLx3n~IPB%cquK-txwgt49#R0rf`p#{(fH-thHil7xbqW#67A1a&G zDWW7gUM6}M4yr&3+M*cRpa+_v<=1GKQ63x0qV**R8QP-_`hTNBn4%SgJ48xeHR_+v zIT#=o8+pj2N!l|zDy0W%7gZV`k0zvV*cjivA`m6UP9& zMz4Vqv5_dS6g!Wn(rd*wN+b(Sz?duv`;P)waY~XaJ(n%dSSqHnEg@Hs>3VaYvLq*$ zaw<0hEPuDLC2)>H+m1-vaRH-nPy4gVqA&VLFaJ-wbMmy01nIN$Ly-&l1q_puUptb2 z5Hl}1kzpGSBx$xQ`A})AT{pQhL3sieS++A1UvXOoOleeXOSei{m4oS)NdT1e@V6yt zl|Px1bDNuD*;AS+npZiPOS!m7*|=u+xN=FhlYbkySb3I?37LWEo0PeoMCrJc+qsPi zJD|IklSx%dX}VE)oLOm@pKzC-88@&AmS&l{g|ND;z`46ym$i$SdYQYFiMZ|AyJ;D^ zt(%mVDLBTroORZmvg^67S-f#MnyOiv(7Sr(u$hc&y~BIEig~=VX`YKkoWQxMq)9uC z6Mwx+Bf3d-zLRsFoKu{Ky1U5z5UQmfdch3rodYVs)0>}yv7Z_opU&F=0qVg49G(Ll!8_WdD@vj$ zaij&zo*Dd}FI+%Kila~ZUM{M`1stLr+J9Xe45C9iqa`}PT$;l?jKnj%#1?$SPa37{ zyS_Rc!z}v5>`A8uq@;HWqvI)~Q~bkI>Z4lfrdZmTJ)FcITE%U=7Iu22In16BYNJ!? zr2}*sUkt`g>cw)rrHWCgS9ZsBn#YBvfqt5)gN&tx++uqC$0>S3g$k^09La%vMt?vg zsCatGqaj1yYRQ*;$cx;lof;mrD#@0*$Ny#;M-+6acaf=-{K?Ads-`>xplYeITmrG$ z%BG5|oeZn1n#&kM%e5>S!Te;kTFl1GtI^7uJ(-2 zyabE06wm|PBm{l3p>ogwZA_{tCkmZvwbal9&CmkPZ`pKBnRwCdN{eHnO&ncI9-WEk zRF33yvDtWVBmGSxT}~vukMbmPE`3i`n*#$S(@mSS`UKMrdr&$Za6HYmGJpHiGwsvx z5_22#wqxsZQJb_im(*oNGYnF9jH*r-5%?sF)UB<_% z8Nb4ASQx_ht@6lD!aRBd$q+lbg8Z?Ysojn2rD_&BCsWsxF!Cg)?>j4 zoN#B#OeOoKnzU(GR#gh%dyi5=$Xnbt(%_ysxrjhy74aGbND~ySV1K24VNB~{z>~1T z_i3CycS?)M7VW7DKoc@1dCN;`0{>O82!BNgI>E}O21=>)oI^}u5Ddih+9um<8H=z8 zh!8hyaLvq&0ub{AkYxZ3KnMJhjB7f=;GJD29EztF92h77&cNYNFw2fg8W`R&E3OE9 z@EES)i>i%3;YAf~Y=4QGm_-)w1}om-UcktyEXx_L;&$~0s8QgzB&I4s2W>3Nep1ej zJUmO@Q6N;Suwlm}@ZT#QfIpBRwbZ9^)TXLjiYWL753uA#4$UY?0kGkxC6MI45DYHy z5oB(RtIWxdp~+w^iHYGoSur_^pyjsl$`p{`08mcAxVS2 z25qi66%NQ51m5N4F{}OMRWRfKO#Y|^P0FY$%vH{&Yk=yA4gfaFp`+dh$NK0Yv*9#8 z20UgJIBw>pEQZx$$%SC zR6#&|q3eMV;C~JfJ<+46M-)rQw#_S4$>ZwaHcm8{K;g=MLT$qkD~t_QffhG~1ygef ztRQLBUQ7O{U*?Qz1WVtB)E~tC-2s3z)iqV5W8Hy=-J|)IQ-j_j@E9c^-QQx|0D#;_ zqTC}e)mO6JBVgtJp1L=D9huN*0j-6pb)ufR>SvDz1Z z*V(}^+GvBjllj-i!G`WE%Y%xot(fg@=Em9jf~b!{NFKu20e=sV?etH7hMs%^Q;*sV zP>k;ujD?-`x=gD1(b_))?sK3Fo-HDFUDzYgEN`7_aZR#&t*oAG*&A7v${_Y8VAkns zvBm;#>MFQSjU;u7JGL_NPDCpMRc$YoKei!@%f2VJI`siI1q@xxox?cj!f!(d^`>f4GxBb4gz#_c5;D& zgolWVkC26jg_Mjm2A!Us2cZoQn>2%$hM9{)pRJ(>qop&gpMS5hGlZQ41`fKsh7S$0 zF|?qfq%^q(yS>Z54#C4H%FMop(K3w@AuXu%I?ATe4*-nB9B!E)KbM z*RCB)18`uyerL#~TlcJ9!ZPv>?%Nk~(M!}G^%gVp@@ln<2nOtJTGr*&17QE)EPH5y%kq%i`@yxrDBM?{ch(&ypMbtq zCD;FfnSaUEAaHUC7XxiTJ%^x#>sjZZb$s!LLuU2ywIE!00T;oECqkHl0t+m_00SA? z_Ev4skSLvOz<~&%jV8QU0t6832qB6hFrWYp5JVt>l1fV8WCSy?_@a*jIw?VB5cH8G zicLP5B?>N1DZ-X00(qj9O9JrXku#Vn0R(8KDSv~MQ$_&d18}|xB#;a&z-F6e#`z@* zbiPPt1bYI|rIjbHiR6iSGD<_CPVTv-r4YR6Ck|vrTIrlEPI>8|i=x@*pD`r)W~rKj zI^~lmj*1F=9Mi%O#0?e8qubM(Le{zBY(@VGtWaTvQR36tiprP^eANX3_>GokG@q#RI8CkOZ=1J(g(y>-`C0}#LiVi$A3*(b+vcG|S8{XpApYvW8a%#?#e z0Crb%x86+abGJ43=q$M3c?0gVf9G`4I4@qi&G@wo`s^p|?ZfSdEY0-pr=a4y&T6kORfF&ukXBl&Lm~ERQCg8<<$AFi?Fj&K#75T^6<~y zGfHy=KtWVyh1LEDKXZe8yr%~YO@GKNn^DVI;)1}#n1zAZ35)?p(?AIha0H8yAb|c- zK?Sa*0{iKpT{gIz2zoF)m+4Ds&~m}~00le>G))Lq7(*6@P%!Cf5D&hSA05(QJP(kd z1?bX39@d3I&AFjo>H@?M5n>dMNlO!d$e|7ba2A*1y zD_MyqRcex!(OM-cYdOnZ=6~{*zVwnVd4Ne-a_N<+S`?y=c}Zm+3Yo!jCNn{aDMVSS znbpJ;HZ5h%L{XEQ+8hF%_@yaE`?OF@Gl8&zKaNIch!49GF)fj9Y24MB^j=RM}8ceM# zV+HG2!lH(Y0KiD*BBEEVW_GgNsBBrqgIUdXgR__QtZCJOTC+Y;s~4e2?o!*u)jF=V zu6<%{Ljn-$El0Jyt%q;N!$qs`Y$a!ntw;*{TJlKc4>FD(r?P@oFF(7Ud%e!6l>a{iysz6K38xuk5)(_h~ug!)7U*O2MBlO)b zXvpBV ziUDzV43ysfI)4W=Hk?6-SCc^15VFOD*b$6TEQ1*j@rXB$4TOHoLJ?mu#9z!#1bGyo z_-l3ZldT#!OfUNRAPc%Je+`O2gzi)pqDM@ou0I|HN`;*h_jYC?GwfIm&n*(4P1AW&{%~3Byb>2;y(_W z(k(_Lgj7>RNx#KO91iBSBoL)gF+fK;=5!xWv??ZfDFr?vftk2e%UG$2pQ>`Tq+BH? zMVWF}&7^g-QeaOQ0pL*9Jd>mx)h1QNGFj6qwz36fsZ(((P{TY{v7foCUSSK@x2oki zUzN&k@_)(Nwz4HKn`O^YjUbc~KsPLvRLpqyiPsE(6|`sdt80gQ-7C`7CPUe8K+(HP z#VU23PGB#7ihx?ra^^X!WrAx(fS%hbmbbb!ZgQ1?Tk_6Tx&ZdiN#)DrC(rnr{CO`N z$g2eVN@qX^TI`l9G@%UD=*eFR;{w&b*w<_#wy*r+g4d=F z?*4Jb`$Q8PSicA!FlN_Z-S(3=!tn2&hJWq%e(quqC^_a|_*Y;5>8D%lm465UfEy-& z{U>0*Wq$+cfWuK?43=RfHUSYBf2cu$C#D_>$bc7yX(bRJA+}=~=3*Gwfgd(wB6dVr zG-O%kf->eDM5bif@q+#pgXuv7K2~Ghab-Y}Wn(6SC4gi>q-0k17h$GlL`VWgn13Ei zmS$bXW~y;#_GM-!Bxluyg->RM>Bog=R%kGEXiZ33b~J{nCWdi_XhYCvXsCsqWoeI= zXnl4>uhD2m_8fG$Xn*EKnl@>Nh6Jd#X>{mm&yj|HxMq_EhtcFoLNWo+)QG>PB~9{( zk%$7ABqW!30?-mmZ$gQcl1ZCr0)L$-ilF!=rr1oCQYxePBmYfOZ>=b6ugHq02#b_> za9x5Zx7cdK7HquuYQ88ez_>_eQcSvdNyR8}$e1L?7>lx!jJ(tb)WVG66i+Qejn^cN z*Jy6QW{nYtDbDzCbfPW=hc6>%YUU(zD~FB_*H7a}a_PuxG$&B)2ms?ma(^W^bNFa; z<8~^hmX9%`Fm$tXKW793Nsuu>2tBY;aKL#7bub5+5Dl=9GE)W)nF2j$JZ!X(B4d$v zcX<=(2QWio9GNm6c{40?k(Uod8vAPc}7MVl79(RY8jV|NtG^#mv{*ZYkw)1Fu9o%X_>Hh zn&rS$hP9NiAQ%a;cxUaGg$Qo@Ud3 z0mcYX1fB1>2mnf(3~HYYsy+1epaJ@x-?=~(DxVgr7ZM7h0gzuP$_G(Yp8>i+4T_>1 zI-)FkoaRXfFuGkTY8MhpXc~H>ClR3w8leC>hLE9~`(vXUihrXJnifS^M(5WMMB1b- ziljH1qXOEbb-`e*5o1Bhq!qfNCeVUfdWe=`q;I(gG|Ht5Y8NJSLN^$ufuW^Q3a4yZ zV>tAtU8)viil=lcLXELRGrFc9)EPK*7G#Of^U8d_ zsFKR6ty-(7>KKVu9J3m$vvG)b#E2*09ww-(qpCuaib9I zX@3aY2|BttpyPX*gd>^myBFyxSjIWOyBn7O%Q-mBX}07&@gle1Bd!48#m7;9iNJ+g2BnjYOAsO ztUHFw+o8+y0ja%AtfXon%$m!bYO2w?tT@nuu-Zb!JYr-qtk9gPIFxA03S;G37}g9% z!CI}Ey3NZhN5C2v-CWM*N<*Oh&3~_<&Z9)xyX&vc5!LV zmvSU$P0O3m3lOz?z7MCbaDPe}m@%6oAZ?k%YN=!|c0CBr9H@%`J^= z&t~DB?$T=jU`lZ^0y%qGaF)vNhS>l5zX42Hx5YPKX|*yN$x*Zja=Wx5U?q=eB_x2{ zey|8j14GIj+e;F1o2i{|^;D#wn*HP=P14C<41fVdlan^73Zfi9Ab&JKu?kyS8N4Jg z4Sc}kxu5&9DxAb3yu`Ao+zH|a&EVls@XOBJ7$_j%D?WaJ zz{%T^@~jpluIf|}$RI@G)b&BVUIoAI25pMq#E#+GoJ=TQ7bM={ zAFk*k!0XU{VSoCw7rl-#VbePk{;1iJ;H&zpfIQX^{--~42^KEuh;cRxQNhb{Z^l-!!Bj#vKiGz)}FX-76kipR?Un$&^{S-s7%7CGaHj z=G@9HB+MPI9w#N=z2%7tK+v7UW`zmB{ZvnN511ewi+^Cvfr>4=ZM7pH+h{`Djw0O9 zCaVgx7l4Nv|E|7qbJ{uo*@Pj&+6-6Mnq6+*=Gp$#s0!prX5B?iV-Jxn*fXDJMyjig zjVz2}*tuBOTR(!NY9E+QKtKZ$pxq&PUDw@RC*AZTbd9loy&cZ#+6Oh2$w2mbU$d!g zDA06nH7h$#den83>(ngLF5}{H#O5L*Tlr31k@r*8#}d_qBKn{|w>nU_XBz?lJ97kO AasU7T diff --git a/data/gfx/title_arcade_edition.png b/data/gfx/title_arcade_edition.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf3d118f276aa7bfad950ace2fcf383f84a03c0 GIT binary patch literal 1673 zcmV;426p+0P)Px*LrFwIRCt{2Ts>~;KoDL~B+{nK1&}*R&XU_8Zj-a5q(iwtI$F}iuZYHshxy+% zB0PW6lNEb+c4l_|_J_A91mExLp1xbXeJ<#`88c>#u~a|4KHrLu88aRm-|y?5%TzOF z%(%vr=wRM6uyj+Km44U4WzdPYpTryGhiluS zB=w9#$CH*XS|4s~+(zR;Eb~0bOe}b|Wr!Jrxz*Ya#?j=+@bBdfx3gq!0gt@6EyqJm z0EmpE*`y^$RF{;8DrbTLCFWru`dxCUY}EZNKTqs8@7fRZTywsbmBE{_ahtB&_Bg}f z%o7=R%Jall>${d?SphxTZfNi1a|BpBt=>KttGCYu=fNE67G;UU24PCeGTa=`hKD_#( zh}fS+A9xTm6Bn_Tug~SMKZT33W@KznKI z)+Ja?Mrk3hCt_(#Q+Av1yJQUk#6F}RFE+k(RAduz8v`VJ99t6?P?+KVhqj%9>`@Tc#oZgOUYbY{5Ktg z($KzpBQ{3^E76jJlK}%~QLUY%HwoDTMNYSx&Mg`gIGbthv~SmQcUfO@eYCmu@?ZrO zFAeL7vDBCVL-R0M!$d?88dO0YJaFwWBuC=veQCT%CW*@H(K+4y(sY8){Io!qnY-3~ zJadwv5eZPkMOV#RJrOR-gk^jh_{eo_=$4{5NbPXVoTU@Z7#1{o($k^=;Ig^Ib4H%l zeJpx#-WZ_~oxi72Y(ta2<8@PwBUwCTN<11x5Brl#4vuHbkvMsx6C&MvjLMrmw8c-$ zk*w0#;~cH~)CNoGTO<%JIi*oZ24=O1Om-$x(H*K588)g=3N5(6d+wP*iwq~p6v?9Z zo|)(dQ_IYRA!epXnwMxuPI$esuTuWlnWq$e-$_~u7M-qw9I`{C@y zLjx}ntiGdjrf8HZWqdO1?fZK@L#46tk&kh(SQf#*W(U;Oo|$FLp=e?{Jm{j^@g zinqq;&EYKYjc*S4qM`PSSr4Dq_ZD(cv@)#B*7%g;OfBye@Y+wti9EEce;jDxc>Gv& z-L}WqdH|eImh)+SYarbU*2cMK!^+~X%d6SXRJYOr;_vh$1A~$!8sJc+T!hqi!ZJVh z0vavk@Qm*eXS4H7Tvj11 zi&SWp3X~a6C~uaKCcAY?pPk5ujNYf{quGx~ zwhT{KL_LOX!9!!}1$PTMX2g-v`>py!(3F1mKdNX=qZaqT!~ckk-fz`sD*FEbUNw*8 Tg+TA(00000NkvXXu0mjf1SLrV literal 0 HcmV?d00001 diff --git a/source/common/utils.cpp b/source/common/utils.cpp index 151ce75..d6f040b 100644 --- a/source/common/utils.cpp +++ b/source/common/utils.cpp @@ -222,4 +222,43 @@ hiScoreEntry_t sortHiScoreTable(hiScoreEntry_t entry1, hiScoreEntry_t entry2) } return entry2; +} + +// Dibuja un circulo +void DrawCircle(SDL_Renderer * renderer, int32_t centerX, int32_t centerY, int32_t radius) +{ + const int32_t diameter = (radius * 2); + + int32_t x = (radius - 1); + int32_t y = 0; + int32_t tx = 1; + int32_t ty = 1; + int32_t error = (tx - diameter); + + while (x >= y) + { + // Each of the following renders an octant of the circle + SDL_RenderDrawPoint(renderer, centerX + x, centerY - y); + SDL_RenderDrawPoint(renderer, centerX + x, centerY + y); + SDL_RenderDrawPoint(renderer, centerX - x, centerY - y); + SDL_RenderDrawPoint(renderer, centerX - x, centerY + y); + SDL_RenderDrawPoint(renderer, centerX + y, centerY - x); + SDL_RenderDrawPoint(renderer, centerX + y, centerY + x); + SDL_RenderDrawPoint(renderer, centerX - y, centerY - x); + SDL_RenderDrawPoint(renderer, centerX - y, centerY + x); + + if (error <= 0) + { + ++y; + error += ty; + ty += 2; + } + + if (error > 0) + { + --x; + tx += 2; + error += (tx - diameter); + } + } } \ No newline at end of file diff --git a/source/common/utils.h b/source/common/utils.h index 07c260f..4371c2e 100644 --- a/source/common/utils.h +++ b/source/common/utils.h @@ -194,8 +194,10 @@ struct param_t SDL_Rect scoreboard; // Posición y tamaño del marcador // TITLE - int pressStart; // Posición del texto para empezar a jugar - int titleCounter; // Tiempo de inactividad del titulo + int pressStart; // Posición del texto para empezar a jugar + int titleCounter; // Tiempo de inactividad del titulo + int arcadeEdition; // Posición del bitmap + int titleCC; // Posición del bitmap // BACKGROUND color_t backgroundAttenuateColor; @@ -249,4 +251,7 @@ JA_Music_t *getMusic(std::vector music, std::string name); // Ordena las entradas de la tabla de records hiScoreEntry_t sortHiScoreTable(hiScoreEntry_t entry1, hiScoreEntry_t entry2); +// Dibuja un circulo +void DrawCircle(SDL_Renderer *renderer, int32_t centerX, int32_t centerY, int32_t radius); + #endif \ No newline at end of file diff --git a/source/director.cpp b/source/director.cpp index 5bda9e9..740a847 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -360,6 +360,7 @@ bool Director::setFileList() asset->add(prefix + "/data/gfx/title_bg_tile.png", t_bitmap); asset->add(prefix + "/data/gfx/title_coffee.png", t_bitmap); asset->add(prefix + "/data/gfx/title_crisis.png", t_bitmap); + asset->add(prefix + "/data/gfx/title_arcade_edition.png", t_bitmap); asset->add(prefix + "/data/gfx/title_dust.png", t_bitmap); asset->add(prefix + "/data/gfx/title_dust.ani", t_data); diff --git a/source/game_logo.cpp b/source/game_logo.cpp index 7ff79cc..4966351 100644 --- a/source/game_logo.cpp +++ b/source/game_logo.cpp @@ -15,9 +15,11 @@ GameLogo::GameLogo(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t dustTexture = new Texture(renderer, asset->get("title_dust.png")); coffeeTexture = new Texture(renderer, asset->get("title_coffee.png")); crisisTexture = new Texture(renderer, asset->get("title_crisis.png")); + arcadeEditionTexture = new Texture(renderer, asset->get("title_arcade_edition.png")); coffeeBitmap = new SmartSprite(coffeeTexture, renderer); crisisBitmap = new SmartSprite(crisisTexture, renderer); + arcadeEditionBitmap = new Sprite((param->gameWidth - arcadeEditionTexture->getWidth()) / 2, param->arcadeEdition, arcadeEditionTexture->getWidth(), arcadeEditionTexture->getHeight(), arcadeEditionTexture, renderer); dustBitmapL = new AnimatedSprite(dustTexture, renderer, asset->get("title_dust.ani")); dustBitmapR = new AnimatedSprite(dustTexture, renderer, asset->get("title_dust.ani")); @@ -31,17 +33,14 @@ GameLogo::GameLogo(SDL_Renderer *renderer, Screen *screen, Asset *asset, param_t // Destructor GameLogo::~GameLogo() { - dustTexture->unload(); delete dustTexture; - - coffeeTexture->unload(); delete coffeeTexture; - - crisisTexture->unload(); delete crisisTexture; + delete arcadeEditionTexture; delete coffeeBitmap; delete crisisBitmap; + delete arcadeEditionBitmap; delete dustBitmapL; delete dustBitmapR; @@ -117,6 +116,9 @@ void GameLogo::render() coffeeBitmap->render(); crisisBitmap->render(); + if (status == finished) + arcadeEditionBitmap->render(); + // Dibuja el polvillo del logo dustBitmapR->render(); dustBitmapL->render(); diff --git a/source/game_logo.h b/source/game_logo.h index d549585..96db753 100644 --- a/source/game_logo.h +++ b/source/game_logo.h @@ -19,15 +19,18 @@ private: Screen *screen; // Objeto encargado de dibujar en pantalla Asset *asset; // Objeto que gestiona todos los ficheros de recursos - Texture *dustTexture; // Textura con los graficos del polvo - Texture *coffeeTexture; // Textura con los graficos de la palabra coffee - Texture *crisisTexture; // Textura con los graficos de la plabra crisis + Texture *dustTexture; // Textura con los graficos del polvo + Texture *coffeeTexture; // Textura con los graficos de la palabra "COFFEE" + Texture *crisisTexture; // Textura con los graficos de la plabra "CRISIS" + Texture *arcadeEditionTexture; // Textura con los graficos de "Arcade Edition" AnimatedSprite *dustBitmapL; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo AnimatedSprite *dustBitmapR; // Sprite con la el polvo que aparece al colisionar el texto de la pantalla de titulo - SmartSprite *coffeeBitmap; // Sprite con la palabra COFFEE para la pantalla de titulo - SmartSprite *crisisBitmap; // Sprite con la palabra CRISIS para la pantalla de titulo + SmartSprite *coffeeBitmap; // Sprite con la palabra "COFFEE" para la pantalla de titulo + SmartSprite *crisisBitmap; // Sprite con la palabra "CRISIS" para la pantalla de titulo + + Sprite *arcadeEditionBitmap; // Sprite con los graficos de "Arcade Edition" JA_Sound_t *crashSound; // Sonido con el impacto del título param_t *param; // Puntero con todos los parametros del programa diff --git a/source/load_param.cpp b/source/load_param.cpp index e6e3819..6087e1f 100644 --- a/source/load_param.cpp +++ b/source/load_param.cpp @@ -27,6 +27,8 @@ void initParam(param_t *param) // TITLE param->pressStart = 160; param->titleCounter = 800; + param->arcadeEdition = 123; + param->titleCC = 11; // BACKGROUND param->backgroundAttenuateColor = {255, 255, 255}; @@ -205,6 +207,16 @@ bool setOptions(param_t *param, std::string var, std::string value) param->titleCounter = std::stoi(value); } + else if (var == "arcadeEdition") + { + param->arcadeEdition = std::stoi(value); + } + + else if (var == "titleCC") + { + param->titleCC = std::stoi(value); + } + // BACKGROUND else if (var == "backgroundAttenuateColor.r") { diff --git a/source/player.cpp b/source/player.cpp index 77f3e50..0fac4dc 100644 --- a/source/player.cpp +++ b/source/player.cpp @@ -161,6 +161,9 @@ void Player::render() } playerSprite->render(); + + //SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); + //DrawCircle(renderer, collider.x, collider.y, collider.r); } // Establece el estado del jugador cuando camina diff --git a/source/title.cpp b/source/title.cpp index e2eba0e..567913a 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -33,7 +33,7 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Input *input, Asset *asset, tiledbg = new Tiledbg(renderer, screen, asset, {0, 0, param->gameWidth, param->gameHeight}, TILED_MODE_RANDOM); - gameLogo = new GameLogo(renderer, screen, asset, param, GAMECANVAS_CENTER_X, GAMECANVAS_FIRST_QUARTER_Y + 20); + gameLogo = new GameLogo(renderer, screen, asset, param, GAMECANVAS_CENTER_X, param->titleCC); gameLogo->enable(); defineButtons = new DefineButtons(renderer, input, text2, param, options, section);