From afc8f3834bb62b718fa444a73e8eb03713408df9 Mon Sep 17 00:00:00 2001 From: Bobydeluxe <337467661+Bobydeluxe@users.noreply.github.com> Date: Fri, 23 Oct 2026 18:16:34 +0200 Subject: [PATCH 1/3] Update 2 Players with fifteen mini-games and fairer bots --- .github/workflows/twoplayer.yml | 52 +++ README.md | 4 +- docs/media/thumb_twoplayer.png | Bin 10202 -> 13255 bytes games/games.json | 4 +- games/twoplayer/.gitignore | 2 + games/twoplayer/Makefile | 26 +- games/twoplayer/README.md | 64 ++- games/twoplayer/VALIDATION.md | 53 +++ games/twoplayer/docs/archery.png | Bin 0 -> 9173 bytes games/twoplayer/docs/games.png | Bin 14830 -> 66258 bytes games/twoplayer/docs/pages.png | Bin 0 -> 29678 bytes games/twoplayer/docs/shot.png | Bin 844 -> 15906 bytes games/twoplayer/lang/fr.txt | 43 +- games/twoplayer/lang/zh.txt | 43 +- games/twoplayer/src/main.c | 342 ++++++++++----- games/twoplayer/src/party.h | 492 ++++++++++++++++++++++ games/twoplayer/tests/eadk.h | 14 + games/twoplayer/tests/test.c | 136 ++++++ games/twoplayer/tests/test_arm.py | 128 ++++++ games/twoplayer/tests/test_integration.py | 121 ++++++ games/twoplayer/tests/test_languages.py | 26 ++ games/twoplayer/tools/bot.py | 2 +- launcher/lang/fr.txt | 4 +- launcher/lang/zh.txt | 4 +- tests/test_games.py | 4 +- 25 files changed, 1427 insertions(+), 137 deletions(-) create mode 100644 .github/workflows/twoplayer.yml create mode 100644 games/twoplayer/VALIDATION.md create mode 100644 games/twoplayer/docs/archery.png create mode 100644 games/twoplayer/docs/pages.png create mode 100644 games/twoplayer/src/party.h create mode 100644 games/twoplayer/tests/eadk.h create mode 100644 games/twoplayer/tests/test.c create mode 100644 games/twoplayer/tests/test_arm.py create mode 100644 games/twoplayer/tests/test_integration.py create mode 100644 games/twoplayer/tests/test_languages.py diff --git a/.github/workflows/twoplayer.yml b/.github/workflows/twoplayer.yml new file mode 100644 index 00000000..ad6df47d --- /dev/null +++ b/.github/workflows/twoplayer.yml @@ -0,0 +1,52 @@ +name: 2 Players + +on: + pull_request: + paths: + - 'games/twoplayer/**' + - 'games/common/**' + - 'launcher/src/**' + - 'tools/emu.py' + - 'tools/gen_games.py' + - 'tools/npmodule.py' + - 'games/games.json' + - '.github/workflows/twoplayer.yml' + workflow_dispatch: + +permissions: + contents: read + +jobs: + game: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + - name: ARM toolchain + run: | + v=15.2.1-1.1 + curl -fsSL "https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v$v/xpack-arm-none-eabi-gcc-$v-linux-x64.tar.gz" | tar -xz -C "$RUNNER_TEMP" + echo "$RUNNER_TEMP/xpack-arm-none-eabi-gcc-$v/bin" >> "$GITHUB_PATH" + - uses: actions/setup-node@v4 + with: + node-version: 20 + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Tools + run: | + npm install -g nwlink@1.0.0 + pip install pillow==11.3.0 numpy pyelftools unicorn==2.1.4 + - name: Existing game build and engine checks + run: | + make build/data/apps/TwoPlayers.nwa build/data/modules/twoplayer.o NWLINK=nwlink + make -C games/twoplayer build module check test HOST_CC=gcc NWLINK=nwlink + - name: ARM controls, saves and firmware guards + run: python3 games/twoplayer/tests/test_arm.py --nwlink nwlink + - name: Existing NumPlay launcher integration + run: python3 games/twoplayer/tests/test_integration.py --nwlink nwlink + - name: French and Chinese layouts + run: python3 games/twoplayer/tests/test_languages.py + - uses: actions/upload-artifact@v4 + with: + name: TwoPlayers + path: build/data/apps/TwoPlayers.nwa diff --git a/README.md b/README.md index ece2d770..4b0fdee5 100644 --- a/README.md +++ b/README.md @@ -253,7 +253,7 @@ Read **[Make your own NumWorks game](docs/make-a-game.md)** to go from there, an - [x] Plants vs. Zombies: the whole Adventure, from the front lawn to the roof and Dr. Zomboss - [x] Doom: Knee-Deep in the Dead, the shareware episode - [x] Five Nights at Freddy's: all five nights, the 6th and the Custom Night -- [x] Pong and more two-player games: 2 Players, with Pong, Air Hockey, Tanks and Light Cycles +- [x] [2 Players](games/twoplayer/README.md): fifteen mini-games, with local two-player controls or three computer difficulties - [x] Cookie Clicker - [x] Level Devil - [x] Sonic the Hedgehog: the whole 1991 game, Green Hill to the Final Zone, with the Special Stages @@ -306,6 +306,8 @@ Read **[Make your own NumWorks game](docs/make-a-game.md)** to go from there, an ## Credits +- **[Bobydeluxe](https://github.com/Bobydeluxe)** added eleven mini-games to **[2 Players](games/twoplayer/README.md)** and updated its controls, readability and computer opponents while retaining the original four games and red/blue style. + NumPlay is a fan project, made out of love for these games and for the NumWorks calculator. If you enjoy a game here, go play the original and support the people who made it. NumWorks also has a great community of people making games by hand: try [Numcraft](https://github.com/yannis300307/NumcraftRust), [Celeste Classic](https://github.com/BenchatonDev/Celeste-Numworks), [Tatone26's All the Apps](https://github.com/Tatone26/Numworks-games), the apps on [Nwagyu](https://nwagyu.org/guide/) and [yannis300307's list](https://gist.github.com/yannis300307/9123136f90877107ec0d49ba96b303e5). - **[Tatone26](https://github.com/Tatone26/Numworks-games)**'s **All the Apps** inspired NumPlay's list of classics. Flappy Bird, Pac-Man, Snake, Connect Four, Solitaire and 2048 are written in C for NumPlay and keep its options, with no code copied from it. Tetris is Tatone26's own, which they released into the public domain, adapted for NumPlay. diff --git a/docs/media/thumb_twoplayer.png b/docs/media/thumb_twoplayer.png index 7e805e2a8f0a87b3bf12cf973241a716aa654e2c..7d952a9addb7a781cd880932364eabd112bffd9b 100644 GIT binary patch literal 13255 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 FV1oHlF@yjB literal 10202 zcmV<0Cnea4P)004Lh1^@s6b)xxi001YUNkl($ok#p=BuvEcR5 zr_$P9#ZRvnwX`ZIwg|!SFh&9m1_=a`kc5!Od7rbN>oMp3W37F1PO{H?@0>vP{CxH& znP;!P)?9OrImT~}ImT~FM@I*M#2*c;2R;C723Ev>pOGRGJ=z$<8CgW($s9`BVna$Z z+ky}f%OY-g^qERA27C|P1Wy&{NU7Kn`A%<^}}K!vw8 zz;gmyyuf^2l=YPIdX;xWq>*V+sN`W6luj^RR=hVA`7sC7&$(I6idrywf<$n3M zl70N^NPBy`O*C=84!l49O$exJX+IIcvaAt;RTi$XN-C8Cpin5(>={!ZD$pnr&Rn)F zvuGhezvp)`$Bsa;1Ukg@bffn?8wuh>#YQPiE{A>j71(dMio*B5NBiDq`1AfWw;t8Z zwjrpM1S$)i@1gm1AH{jiN4R3a0IiKSodbrJw9u3i`tk;?qgTonVf`Xuf0xD!gu}gt zXOBX{9;x`X!6a<-2i{;={dvu|e&PO;l)67~{5$Wq?9R^40Qht)d>-Hc)|sGbZoBO^ z06z7pPjRM}S##!)LoqM(Del^d7>!zY5z2Pa$6m(Yy$f;d$(dpS75X?PMC$;Q&>x!9 zgM~y0ivuJT^m{I;&|>~9nA0R=OE5nLOWK6atfuHIdJ39l^Pnp$Ja^onEEB1&;kPu1 zQCI=WgvR*T_WMmXf53#^ts)|8fG1+1tD4p;n@+7YOO`C*eeZi8sZ@$msl=Wr zv4f2pHDp%3|4#5R`NXdA3V;g^&8~Thqmym zr*VZ?3|SQmI6-SbRl4qtY`kx%{;(U%s48uU*Z&xy=~O%oYveLeP5{bF2$z z%{iFT%r7lP!QzGOC=p79JpcK`4r8AV;S&*D*X0Xe_yX(Jtz-N4?PFeF)^x*Hzhh~? zsXU`<3oQ`_`UhCNsGa$9o5|&M^-S>8@d#oo0u4qiLTxamFm?yctp9ZW+-4RpYUh!M z2T>wo*ZP3~$BrH2p@$w~^XAPw`Q(%A+_`ha_h^3bL%nFcl0~7r0kuQS~mUm%0E}zqLFz*fO+VRJUtY5I$SM z(O#dYUM!Jxg!X2K#+2X%;D@J25RHL!S~z;Nhuu#<&8kZ-WOgP)ZU#ehw26|GQZ@`0 z44wTxMc;6=*T+_o5T20&IF)$7nKpaI7z%Oc{`ydX#-zoX#VKYrSrkfD3k@7a^J&sa z#S>3F#UFp@L-cg@(YE9qzVeQ1*)XdO&lprWljt;>+jIiD2ST1cP++hal1W%JH`sB1 z>AD7-NGb0zkCs;=faN4v)RE?*^OF>P@B+hu;~oz`lVx$c%Z8;X3SJH4-i*Pv;2-b! zdj|T8EL*mkgPlkDt2^)H&QE_jiacp>z$Z$ntFcNpKq>)G?k#Yj(__`bB$sw%aBU&! zz|J6z{B!O)^BQ;|zr-OOev?jwnzwGCw?tr;1HeOIgO{g_i#-i_M53_N>0{-zk-{rx7 z{|WO~T)=C*BB}09q`4XA!VQ?U7veqmQ~XCB!MWlJ$m@vOph_!n+k!(~0f&1$uD`UI z!F=?dCo5aqaS%z=G2lc>p->ptuQr~U)*3Eenqk+A1?F#Ptg6b9v?AEG8#OqHf9-E_ zaR?W!UXAYpk8LN|^IVimob$o4NxbFFlTDE4hAc$dcK@Vdo;g@~ww(%89=d5y0|{Nu^S3*|LS3 zZ@ziNitubKsZl-<#=DHoM>W#y8l!dGk0C0ICbVW$ z3o_~yuq^8oewFe~T-W8+TW{s6tF9Vau)JC^V3cS+O-&ImLOKTm+M4W$*0u_(8smdn zbS~zl15AcJ&>)zX4n)88nX(&3iBR+m%g>$7KYeNwm%0zKsQ+HplzzYmugUP{H@+Un zb;dJn+B+HRa%&=~9h!PbH8mL0>jxAg&nA4z zCVX};_R6K0Y&iPO!w_k(2zKuU+s2wdd)j_LrG&wpVZ*wmeDk*VasSWvuwqe$dGqGe z(9l2_GA4eu$1*`D3srd_a=9Fhjg5GoR}*~pN{a^+8Qo6!#;eYr zuu?)kZ)j-9u<+cq6fJ0Pv+2tkY)dLy6^WU;)M#eMvaF%~&q`V$o6Qah;Mrb`Dd78F zMd8aN;81tKOWi)}&r4JAMvl4B8c{+bW0A;Mh!V_XtVsxx$>3ad4Z+qe1W)da@SswV zNPy!YN`W#2Pwphxx&`N|YmiK4l5Ce_7t0a~MZ@~VihVB+a5rmNMl;%Q7pxbNrBI5hxi{ODpbm??m_au%w2k8EO-0R+nYH5X%sd{LRiShE4Yn%A_GkH1(0vc1X5{~;OG%#oG0_H8e0Il^% z6I>RwLZL8%=%)-Tf@v{`9{wd+)O-%VO7(q0z>ye$nk!km%4l!Q;N54Y$jpL2;l=z zmQc(W+4iS@$ZHPlA+u^Vxxqn}9C(gLKlTT_^?N_TO{OrRnfMNe0h7~+o5WhY1aqVt z6NK1{m!NY7lZ&HYYPiL!1WG=%HQKy&V>6HM$?=mN11y~F(9!HLtJ%WyeSEJp_9Eof z?BlDd*#TTf@#1lhZkIL@7+yi)oR*rd>@B* z`~s`Lk9mh);K?lyvgsYyQpkoUPF|XzV;Ze7Mxayz-;b1tIej7dN}_kRl<_6u5^nn6KglxBm>!^B8NVUw49~hR*NpSJn$nD_R(EyZJyQ3d-Ww0!Z?BD>0cl?6= zFYMubQ7EN2)^$7zZJnyN5*hiK0eE6e)CbLJi`Sf=!VjW3@Z{48eioRavjpm;N`h#B zl5fbB#!kx=W#JVK3)ijX*y8iCj~~T)_@^v;`5+yH{5sP@>#_?lAu}R8)z*fgjs&sf zn^OqM>+yg!nE4aI_c}DBGAS&EwU!KyXr@YORxm4L3$ zFZGD%nG#f`C>0D#Hmqm!w|~s``|hDoC@^QmYA)Qck&f18{Bd>>UJa#=0cTVQ1uv&r za?V1|`QQgBdGSGg!%m=lwU@dEJOebL=NSZpBhkvx56oE;jb6uqX9RAH&I>mq>Ssr( zuY&8PE`XIVAk_H*>jGFW^-{-xuYL?z*MRj>FEgb9&%_m1+2?or?Y9GGt{?D3-$h9t zhH{u%J)yr+F~(q!a^Oxh)@Nc|pYQtsluD(chL`_#CY3OVB265}=IF5=SiKn6RdE*B zOpdff8~x?eGKqpkXVTso1Fjp8udx#^)dI^IdI$?C* zzP+Z_V9+qN1pF{gD6lLwrB^0)@K*Ot1Y_Zx3u_N=yO zcAM%wSx>S52!bdf$#tjEf7KE|@Pm-9?rt92`Vdb({>vz7y`y8U5s9ecLQ{1W0mhJ0 z;K<|&dCC}T(l9|3Xde?4t1Eitm@BamCxt->qyuB1uUMjK)+}bvYUf07)-?N$h)A;B zf8j)hT81@PBoe}jG->E}3Un}{|4fCq8is%;)Fi~v-PuV`Pala)OVqqn>jlO$!uq74 zO&K(T#2UvKrpTljH`VhHH^Hu=p(})xM6@N^{sJ0c%y7p^WZA)m+z_Eddqp#c% zDpm@XiXzy{ktdE7MKhmbJ|((leoJ(p?i}QQ`Bid{e~lc9Ps|GW^n44WQiw5-8ywbu z$#_&`3jMbXb@UpKi3*`on0y}l@++`6y^+EX{)IJrpW&U&X>L8LN!m4> z#mYjLvNT+L4MFn~E}Pd+YlBT^qoE}&G$n=pf+5t=*&f*vtXnAT@6!08aJbj->=8)V zBL`WV=x^^_XEBi1eCrnunYB04|Es&09b|d`Y>T4jqi_1HllrfFSpVr)Q2)J!p!wV> z^dCHX#Ejp6+g%#gy@&iWcVmaj!m|{OCZO=_(n=jsF8bIJ{O5Ngjy;rJKcNn^ zEfgBp5(EvlP1Y!E3zQY*P1nkNh;2iV!*wASrfC$#Iqfi~S&=Onni^qoo6wat6n$Z! zq`6=bbPWnGbQ|nMEHA^_r~su5*iqx{q(TOLY&4z`az>c1eTq*%g_sbvZUbUF=%ynC z&+dv;!$j4VMCwC@J}w#^M(U+M&Y`HO1&-}$SQ;d0!GM<_trZK}%KZnKv>DNVJw?s= z^P~QI?zlm0h&X{y0%QUqLVy9=!DRE8z(a7Cnm0DV=jREDFhG=G5o15g2HS>7TaXA? zNpmZzw~L1h79V>Visr;>+mubsG!bDr%RtJDeG?*ff|e^ki<FtL2u>eN9Nq7#prk{T~CWb*~Gk9`?`{{z^qbGW|A@VU7{QU}qSX&v3z zwxT|q>U?TxMfG&^aM9vpFB^*Hl(DV82{sz61T9y71~vaRB$UPrAq=BMP{M}RjBvEy z;0#UFXlhsrZ0lq$KtaS1gwULZKnvMif$U>nq_Fn^~D#Zru+ zr}?Tu0JcqM0G342zQbeQ#yS9I!dByy{AB?XV04I;Zi_`c7W6n%D+o<=URhcAhRrZD z%EC|y*iM2(G68-L3Gx&I;hT5fMNh6slVg#oAiUG+!yv%eHeKcZI~|KS1ayGbA$Ga{ zhEW=p&%tvlp|Y_SaRNaYMS)9@$9P%9P9gbR)yu=F$^g4PwOzi5Z8(8a-u%s`eAh|PKwuIY+a4U?&|K1o#!DUuuTRuiEUl@}~y|T04kV&WbuLyhDrHA*8G?8mqY0u-5bu2}5QQH8{mIu4t7{Ze{(Ts2t=hJ2#k&p> zDWzrGG&Z?(bhJnHDsSItt!Zp*q_wq$bUH;x$1HNWDGFdFMLM0LwY7yg9kWTN5>+S5 z48xFFv)X8CYKX{mEQM`Z*!HP?V`}v8%$1Y(u&P}jB_2>~jqm&TelRAxVnTDEue@70J8s3DTcdVTErm;zWY6V=2%I`Gh#uyR_ zmrSM+&+{uTLPUf@p-2z}(=vIkYtz)!h*DNX3@9Rao=2(Vjs6@1>2!*wrp8ePO=}(b zHfyklH5m+Om9fvz_ovn+uAB1r$k~Gdqv&3T{VyKk!7W=E7|2#Qsv!dAt5&X{wY7;L z2&XKBFTZ?@2e&*zp-?*I9wLJ8`z&6(kj3XL#P|J*&rz0Q=TlE381jX}5c&0R32kV| zuwwbL*jH$(FMt!ofB_Qm_QjeY9NI-Vsjk6N25rDnXAuT8#*lCwcJJQ9UEloyUIon~ zN+=dfeE1K4kM{O9e1CFUP(%oVfR6TA%x<5>UEleB#mxex6oc6u*I#=z=Px@K&pWj( z#u#kd=8;FY^W2`jkwzZ2;8#jfDi%3!QbPmH(tTOz~Inz#u!}3p}VJ- zkAD2K;~p7RD-0;{-9G`r?P*b|$@i3sE z5T!^sHm>9Fj=O)x@j?+%(cdGD;16AI44gaX*Q|K#X`XuVC5$MPRmOs6i62m6bD-jX zYgNY8o)c7AL+w>3+G`B4iL3F}{Wus+jj8tU+f^2 zN>wMr)<|nk-dgwGRaLhTt_mQMC)2`FOQA^CEnd= zRPgBUTodgyWikvDiUgrXEQ@x>LR$_-Kq-qr8~Q@Q2xs43uu?*ySmg4{H}WSR`w-c| zfiX>REwo=5Ul!wbY~FlDMH4(+Yv*$Lif}+{O){C_#v87ynLltm45*EebQ0K>#XJ9P zE5}O#fnOqTC1?`O58twp*49>h-zVWZc)ri;|KCsP*PNXgupDTR%?{Ar(>rQJbgdU5 z<#yz9`3VW^Xl*H*;9B9p@%@0&cAFOj9QQO`p&(*oArzIvJMZ6#F#*QFY}e-B-nof{ z;~=FFB?@yk#siiQtgb~!{$z!)8qcrgB4jKKh-IM>f-pM0JPZQ}G)8*_2!XOW;s+3x zzzF@eB3~>Lh5(iP%xC4JObmn$<#cYs*lQ z&{-J|STEJXfT9!%MW{8QfqQSf3U8F?ArppVT3YaefY5-l?D(+ivot4UJRe=O${YKd z(?S0`(`^|K16nAuT5-i)KgD(2p}bmf;C z5(yX2^J~6SG1G0CXgpv~DB$aedvCbk?-W0vHB>(v{D5k*+9r{3`Rdoc$uqn6kW3~< z3~F=$vm%$v@r5sbm0T`|WvQAB{F&31iRFZd2$m9TB}1WD73;#;lM^B`Spke(9?$H4 zj^5sWY}-C%K%*eifTw=-%%r2GUx{rQjsaC1-=`|nMOhK1i?1K6t|oB5S4Z8Nnh8#& zk`)Jh_`s*rsndc1XSyxb&I^{ac`tb4xW|lZ%4!*fd?vM}YI(s*VT?k=B8JHZ(Q0;y5l^>k;IT<^PXXpXzqp zL{`MpefDVAjdzdfVn7iP%jLWa*76Tu`X78_o5M@T2QfP2hqt{QynZBRSslWNMvugd zGg_A^W7a7MVC2yCO2vp3-EnXndqgIh4h=AF@n%5qQtUT_cw^!E?Y)6;uOF0SL)^!4@Q`#ybr{fJP}1u_weUSpzo zzLR}?CoeDt1_tTw=_5OsJ*6$Zef?t|a#(iN^!4Q{PKI(?LZMJ3nM~9G0|J(!bKkRc z9^4Op9+hc}@|qhuq5&V83=wt5i8Rict&1phabOx4bqXdp34xjL@rLUd7#KX2 z5YiZ0+gkYMx4y%_{@afU^~f9+6$_VTTO%lZhYN2yo#MIYUf}jGew9=zQIQYPaU2dE zI?PQsTsL%lShX-sAIMHW=ahKlwI6`4EmXsu(QWqOWg|2mks;Ojv~2&sS3n zs8qy6@JAoM8Q&ZG^h#w}guY+)7!PT{GDYtrk8S5iKf0gW{^Az$xx$bcbX|8S6~Gux zGMOZwFPtKLN(rS>iU0mbAHegxvBR-!i&QE_7>?wzQA))u4NLgTFa57kHDFs?3xD^u zJEKH>OV!j52!io*eE-(B;J67Q%3OcM0G=sz5kZ0iqTJKx2Q&sU=`^Zg>{)5F!EJ1c zY`^ajdS1L}i70xT8XIw4msxEsB-{k9Yt!A+%ZmqIWXL9S$8Gay z8GdC`J!@7=#qY}$y{S~PMi{U{-S@yR5aiVe%*9CIPK~+GI@<4)n;^UQc`~^{mi^}Sw9cJJ|GpR4dDlO)>#1L1+ov9Q zR$iFoa`{)(F3ZUnu>P6cXH=Gar4&1!_)iusTtHh}8$lS32>KkIqSt^D3f;#!;wE_U zf&XCk-~i2UdJ6+R-E6=Ar(F8l%PI=>$=arT&2$BFI(xxo3_4m+Yn>yy$~hqsNu^6N zndb2wPte-Z%=zapBcIQYFq@-N^oqiiN;IzDi237NSkau}$d2vId+ilmc-;+L)!jug zpGR5Nn9N(o7~J@z@9Cs}iU^Gj4dsC2DdF8rrjbO#rBw1xBL+MRb3)1#y)Pboi3hiA zW#h${(Am|;eLs0%$Z0weieAUI>Fnuc|Ir@a_1^c9ebd{}UWvh%4iSowNJLDfg+g(R zm8rvlgD(Ma&Y}gArUB8$AfoX7fXAQMP8j$@{CkttfK5#e?0@kPi_ckDA?C1tPDoWb zqK8xT7KRpU<;;)k-d0x0b%+$5Cab0NX}sO%MdMwl=eB<%){TrO|0h z8Sc6FKLGgDpM8X`u90l5W0~h5G^AW1VM8wTdGP-Kpm(4&#lTmCn{avl`F$*3c5Y<> zte+DyEkEE8KWw!qdWUv8d_QLQWQ6m#SS+z><#N`oT{S8Lepw4v3KWRK@uO|AQfVZ? zxd9f;PVt#Lck%dMkAxNAHouLJ{q6!TUOAt9(Vx`DLfH>^`~Uu1vK6R;>lkoa7|__9 ze7bs-D0;_pUxZo{mP+IL=PH@R=H_O;eb;vZ_?_RniT?inCLmG8t&u#8FdTgQM? zs+)N1_bK51aty(l;#<>W#Nd^g@s}<=kEKh`8?iz*#^6}O+uyL9O)FE(k%O4t=UJP6 zo=ifhMPz>6mp7%47EvOi?ze%j0soZ~r@_yt7x-iccqPpf9raMExCjvuj`kGz_tFHh@B)~^e1J0C$>tiW57w)ObUAT$**rHZ(Mm zPNypRE$bL?!kAAhr7TdcQr15q@_E3vfwF4(ePcMNl=|e>t=rO;QqjKb=}tT{hD0*W z5AXRYk36~^5#h^!`85jp!s%}d(aA-bOq#7*w{h8J7oXzDuKNKeR2M`n5tRpZyNLQ+ zY%;q>Tlny+Fhyl$12TZ1t UPJgTx@c;k-07*qoM6N<$f+ye3H~;_u diff --git a/games/games.json b/games/games.json index a8a86cfb..1797c5da 100644 --- a/games/games.json +++ b/games/games.json @@ -479,8 +479,8 @@ "id": "twoplayer", "rank": 14, "title": "2 Players", - "tagline": "Pong and more, side by side", - "credit": null, + "tagline": "Fifteen mini-games, side by side", + "credit": "Additional mini-games by Bobydeluxe", "top": "0xD33B3B", "bottom": "0x172A72", "accent": "0x2E7CF6", diff --git a/games/twoplayer/.gitignore b/games/twoplayer/.gitignore index ea1472ec..179b4868 100644 --- a/games/twoplayer/.gitignore +++ b/games/twoplayer/.gitignore @@ -1 +1,3 @@ output/ +__pycache__/ +*.pyc diff --git a/games/twoplayer/Makefile b/games/twoplayer/Makefile index 2c6a58d2..f95d1be3 100644 --- a/games/twoplayer/Makefile +++ b/games/twoplayer/Makefile @@ -1,4 +1,4 @@ -# 2 Players — Pong, Air Hockey, Tanks, Light Cycles and Quick Draw, for two on one calculator. +# 2 Players — fifteen mini-games inside the existing NumPlay app/module. # make build output/twoplayer.nwa # make check link the app like the calculator does (output/twoplayer.bin) # @@ -10,22 +10,27 @@ NWLINK ?= npx --yes -- nwlink@1.0.0 BUILD_DIR = output SRC = src/main.c HEADERS = ../common/epsilon_app.h ../common/epsilon_files.h ../common/np_text.h ../../launcher/src/gfx.h \ - ../../launcher/src/np.h ../../launcher/src/font.h + ../../launcher/src/np.h ../../launcher/src/font.h src/party.h +HOST_CC ?= cc +PYTHON ?= python3 CFLAGS = -std=c11 $(shell $(NWLINK) eadk-cflags-device) CFLAGS += -Os -Wall -Wextra -Wno-unused-parameter -fno-math-errno -fsingle-precision-constant # (smaller still: NumPlay has little room left) CFLAGS += -fno-schedule-insns2 -fno-reorder-blocks -fno-tree-loop-optimize CFLAGS += -fno-tree-loop-distribute-patterns -flto -fno-fat-lto-objects -fwhole-program -fvisibility=internal +CFLAGS += -ffunction-sections -fdata-sections -fstack-usage LDFLAGS = -Wl,--relocatable -nostartfiles --specs=nano.specs LDFLAGS += -Wl,-e,main -Wl,-u,eadk_app_name -Wl,-u,eadk_app_icon -Wl,-u,eadk_api_level LDFLAGS += -Wl,--gc-sections -flinker-output=nolto-rel -.PHONY: build check clean +.PHONY: build check clean host test test-arm test-integration build: $(BUILD_DIR)/twoplayer.nwa check: $(BUILD_DIR)/twoplayer.nwa - $(Q) $(NWLINK) nwa-bin $< $(BUILD_DIR)/twoplayer.bin + $(Q) $(NWLINK) nwa-bin --ram-length 107674 $< $(BUILD_DIR)/twoplayer.bin + $(Q) $(NWLINK) nwa-bin --ram-length 107674 $(BUILD_DIR)/twoplayer-debug.nwa $(BUILD_DIR)/twoplayer-debug.bin + $(Q) cmp $(BUILD_DIR)/twoplayer.bin $(BUILD_DIR)/twoplayer-debug.bin @echo "BIN $(BUILD_DIR)/twoplayer.bin: $$(wc -c < $(BUILD_DIR)/twoplayer.bin) bytes" # compiled, then linked (the link options would upset the compiler) @@ -39,12 +44,23 @@ $(BUILD_DIR)/font_data.o: ../../launcher/src/font_data.c ../../launcher/src/font $(BUILD_DIR)/xfont.o: ../../launcher/src/xfont.c ../../launcher/src/np_xfont.h $(HEADERS) | $(BUILD_DIR) $(Q) $(CC) $(CFLAGS) -c $< -o $@ -$(BUILD_DIR)/twoplayer.nwa: $(BUILD_DIR)/main.o $(BUILD_DIR)/gfx.o $(BUILD_DIR)/font_data.o $(BUILD_DIR)/xfont.o \ +$(BUILD_DIR)/twoplayer-debug.nwa: $(BUILD_DIR)/main.o $(BUILD_DIR)/gfx.o $(BUILD_DIR)/font_data.o $(BUILD_DIR)/xfont.o \ $(BUILD_DIR)/icon.o @echo "LD $@" $(Q) $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ +$(BUILD_DIR)/twoplayer.nwa: $(BUILD_DIR)/twoplayer-debug.nwa + $(Q) cp $< $@ $(Q) arm-none-eabi-strip --strip-unneeded $@ +host: test +test: | $(BUILD_DIR) + $(HOST_CC) -std=c11 -O2 -Wall -Wextra -Wno-unused-parameter -Wno-misleading-indentation -ffunction-sections -fdata-sections -Itests tests/test.c ../../launcher/src/gfx.c ../../launcher/src/font_data.c ../../launcher/src/xfont.c -Wl,--gc-sections -lm -o $(BUILD_DIR)/test + cd $(BUILD_DIR) && ./test +test-arm: build test + $(PYTHON) tests/test_arm.py --nwlink "$(NWLINK)" +test-integration: module + $(PYTHON) tests/test_integration.py --nwlink "$(NWLINK)" + $(BUILD_DIR)/icon.o: src/icon.png | $(BUILD_DIR) @echo "ICON $<" $(Q) $(NWLINK) png-icon-o $< $@ diff --git a/games/twoplayer/README.md b/games/twoplayer/README.md index 8e81d23e..9bb9685d 100644 --- a/games/twoplayer/README.md +++ b/games/twoplayer/README.md @@ -1,39 +1,87 @@ # 2 Players -Pong and three more games for two people on one calculator, side by side: player 1 on the arrows, player 2 on the keys around +, both at once. No one to play with? Player 2 can be the computer, easy, normal or hard. +Fifteen mini-games inside the existing **2 Players** app in NumPlay, side by side: player 1 on the arrows, player 2 on the keys around +, both at once. No one to play with? Player 2 can be the computer, easy, normal or hard. -Pong, Air Hockey, Tanks and Light Cycles +The fifteen 2 Players mini-games - **Pong**, the 1972 arcade game: black and white, the dashed net and the blocky scores. The paddle has eight segments: the two in the middle send the ball back straight, the others at steeper and steeper angles. The ball speeds up as a rally goes on, and the first to 11 wins. - **Air Hockey**: a mallet each, in your own half, and a puck that slides and bounces off the rails and the goal posts. Hit it while you move to send it flying. First to 7. - **Tanks**: a new maze every round, shells that bounce off the walls (five each at a time) and can hit the tank that fired them. First to 5 rounds. - **Light Cycles**: never stop, never turn back, and make the other cycle crash into a wall or a trail. Two turns can wait in line, and the cycles speed up as the round goes on. First to 5 rounds. - **Before each game**, a map of the calculator's keyboard lights up each player's keys in their colour, with the rules. -- **The computer** plays every game: in Pong it works out where the ball will come and aims at the corners, in Air Hockey it gets behind the puck to shoot or guards its goal, its tank finds its way through the maze and plans shots off the walls, and its light cycle keeps the most room for itself and, on hard, cuts you off. +- **The computer** has three approachable difficulty levels, with reaction delays, imperfect aiming and slower attack cadence. It does not borrow Player 2’s physical inputs in solo mode. - **The matches won** by each side are kept for every game, against a friend and against the computer. +## Eleven additional games + +The original four games keep their IDs, rules and artwork. The additions use the same red/blue teams, night-blue cards, rounded shapes, fonts, score bar and keyboard tutorial. There are no separate apps for these mini-games. + +| Game | How to play | First to | +| --- | --- | ---: | +| Quick Draw | Wait for DRAW, then press Action; a false start loses | 5 | +| Tug of War | Tap and release Action to pull the flag across your line | 5 | +| Football | Move, push the ball and kick with Action | 5 | +| Volley Ball | Move sideways, jump with Up or Action; keep the ball off your floor | 7 | +| Archery | Aim with Up/Down; follow the dotted trajectory, charge with OK / EXE and release to shoot | 5 | +| Dodge Ball | Move in your half, throw with Action; three hits knock out | 5 | +| Meteor Run | Move sideways; survive the same falling rocks as your rival | 5 | +| Rocket Race | Tap Up or Action to fly through identical obstacle courses | 5 | +| Sumo | Move and dash with Action; push your rival out of the shrinking ring | 5 | +| Fishing | Move the rod, hold Action to lower the hook, release to reel in a fish | 5 | +| Memory Duel | Watch a shared arrow sequence, then repeat it without a mistake | 5 | + +All fifteen games support two people and the existing easy/normal/hard computer choices. Simultaneous outcomes draw when possible. New survival/duel rounds have time limits; a tied round awards neither side a point. Each game's wins against a friend and against the computer are kept separately. + +Four pages of mini-games in the existing red and blue menu + ## Controls | | Player 1 | Player 2 | | --- | --- | --- | | Move (in Pong, up and down) | Arrows | × up, Ans down, 3 left, − right | -| Fire (Tanks) | shift | EXE | +| Action (shoot, jump, pull, dash, fish) | OK | EXE | | Key | Action | | --- | --- | | Up, Down, OK | Pick a game, then OK to play | +| 7, 9 | Previous / next page of four games | | Left, Right | Player 2, or the computer: easy, normal, hard | | Back | Pause: Resume, Restart, Other games, Quit game | -| Home | Quit | +| Home, Power | Save and quit | + +OK is Player 1’s Action key in both modes. Against the computer, EXE is also a solo alias; in two-player mode, EXE belongs only to Player 2. Shift is no longer used. Hold actions are supported for archery and fishing. Each tutorial highlights only the keys used by that game. Confirm keys held while opening a screen must be released before acting again. + +## Saves and footprint + +The same `twoplayer.sav` record is used. Original 36-byte version 1 saves and the previous sixteen-game version 2 saves migrate automatically. Version 3 uses 128 bytes with explicit little-endian encoding and CRC-32. Memory Duel's wins are kept when its ID moves; only the removed game's counters are discarded. If it was the last selection, the menu opens at Pong instead. A malformed save is rejected before changing progress. Full storage shows a retry / explicit unsaved-exit choice when quitting. -Against the computer, OK and EXE fire too. +The added games share **352 bytes** of working state, fixed projectile pools and procedural artwork; there are no imported images or sound files in the game. The installed standalone package is **53,912 bytes** (about 52.6 KiB). In NumPlay the module uses **33,597 bytes** of code/read-only data and **22,052 bytes** of shared arena RAM. It reuses the launcher's fonts and drawing functions. A fixed 8 ms physics step keeps gameplay independent of the LCD frame rate; rendering targets roughly 30 frames per second. + +## Readability and difficulty + +Archery now has clearly drawn bows and directional arrows, coloured trajectory dots, angle readouts, power gauges, hit feedback and three visible hearts. Hold OK / EXE to increase power and release to shoot. The preview follows the same gravity and launch power as the real arrow. The two-player keyboard tutorial highlights OK beside Player 1's arrows and keeps EXE on Player 2's side. + +The other games retain their established layouts. Targeted additions show Football's round clock, Dodge Ball's hearts, Rocket Race's boost flame and Fishing's hold/release prompts. Tanks' tutorial explicitly distinguishes driving from turning. + +Computer difficulty is reduced across all fifteen games: sampled movement decisions instead of instant tracking, lower movement speeds where needed, aiming errors, longer reloads, slower tugging and memory playback, and longer Quick Draw reactions. Light Cycles no longer predicts and blocks the player's next possible cells. Hard remains faster and more accurate than Easy, without the old perfect responses. + +Archery with trajectory previews, power bars, visible arrows and hearts ## Credits **Pong** is Atari's arcade game (1972, by Allan Alcorn), whose paddles and ball this one follows. Air hockey, tanks duelling in a maze in the spirit of Tank Trouble, and the light cycles of the film Tron (1982) are classics of two-player games. Everything here is written in C for NumPlay and drawn from shapes as it goes, with no code or art from any of them. -Inside NumPlay it draws with the launcher's own shapes and fonts and saves through its file functions, so the four games take about 13 KB. +**Additional mini-games by [Bobydeluxe](https://github.com/Bobydeluxe)**. Inspired by the short local duels of [GoBattle 2](https://poki.com/fr/g/gobattle2) by YouDevice! and [12 MiniBattles](https://poki.com/fr/g/12-minibattles) by Shared Dreams Studio, together with familiar sports, reaction, memory and survival games. These are native calculator implementations using NumPlay's existing visual style, with no code, images or sounds imported from those games. The original four games remain credited to their existing authors and inspirations above. It comes inside [NumPlay](https://github.com/Mason363/NumPlay), or on its own as `TwoPlayers.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest). -Build: `make` (needs `arm-none-eabi-gcc` and Node.js for nwlink). `tools/bot.py` plays it against the computer in the emulator for these pictures. +## Build and verification + +Build from this directory with `make build module check` (ARM GCC, Make and nwlink required). The normal NumPlay root build discovers the same `twoplayer` module and `TwoPlayers.nwa` release name through `games/games.json`; Upsilon includes it too. + +- `make test HOST_CC=gcc`: native mechanics, saves, complete CPU matches, random inputs and rendering. +- `make test-arm PYTHON=python3`: actual ARM package, real keypad menus and firmware guards on four memory profiles (Python Unicorn, pyelftools and Pillow required). +- `make test-integration PYTHON=python3`: compile the actual launcher with a deliberately single-module **test catalogue**, then verify module entry, return, re-entry and shared save backup. This test build is not a full NumPlay release. +- `python3 tests/test_languages.py`: French/Chinese string coverage, font generation and the same host/layout checks. Nunito is downloaded from its upstream font source on the first run. + +See [VALIDATION.md](VALIDATION.md) for measured results and limits. No physical calculator was connected for these checks. `output/` holds generated reports and screenshots. diff --git a/games/twoplayer/VALIDATION.md b/games/twoplayer/VALIDATION.md new file mode 100644 index 00000000..dcf33487 --- /dev/null +++ b/games/twoplayer/VALIDATION.md @@ -0,0 +1,53 @@ +# Validation — 23 October 2026 + +This updates the existing `twoplayer` module and `TwoPlayers.nwa`. There are now **15 games**: the original four plus eleven additions. Turtle Hop is removed. Player 1 uses **OK** for Action; Player 2 still uses **EXE**. No physical calculator was connected for these checks. + +## Build and footprint + +| Measurement | Result | +| --- | ---: | +| Release `.nwa` file | 93,728 bytes | +| Installed flash | 53,912 bytes | +| Standalone static RAM, including installer alignment | 22,065 bytes | +| Highest measured standalone ARM stack in these runs | 580 bytes | +| Module code and read-only data | 33,597 bytes | +| Module shared arena RAM | 22,052 bytes | +| Working state shared by the eleven additions | 352 bytes | +| Save payload | 128 bytes | +| Smallest tested installer RAM allocation | 107,674 bytes | + +Release SHA-256: `c4dba2cd62da31fe9ff72cdf13045b976019fedecc8dc741e32f2ebc659bd036`. + +ARM GCC passes with `-Wall -Wextra`. The release and debug packages convert with real nwlink at the smallest RAM allocation and produce identical installed bytes. The root Makefile's actual module and `build/data/apps/TwoPlayers.nwa` targets pass; the release copy matches the tested package. + +There are no imported textures, sounds or heap allocations for the mini-games. Artwork uses the existing shared shapes/fonts, fixed projectile pools and LCD strips. Physics stays on the fixed eight-millisecond step with bounded catch-up. The new bot intention cache is shared, rather than allocating one AI engine per game. + +## Gameplay and difficulty + +All fifteen bots were reviewed. Pong/Hockey use slower, sampled targeting with aiming error. Tanks reacts and reloads more slowly, moves more slowly, and has less accurate bank shots. Light Cycles has delayed decisions and limited lookahead, with no prediction of the player's future cells. The additions receive longer reaction times, reduced movement/attack rates, imperfect archery and throwing accuracy, and slower/error-prone memory responses. Two-human movement and physics do not get these bot handicaps. + +- **33 complete matches** cover the eleven additions at all three difficulties against an idle human. CPU decisions are real; no score injection or forced completion is used. This checks progress, not human difficulty balance. +- **150 seeded random-input runs** cover all fifteen games and opponent modes, checking score bounds and finite state. +- **120 additional scripted-player matches** exercise Quick Draw and Archery, twenty per difficulty per game. The 420 ms reaction policy wins Quick Draw in [20, 20, 16] matches at Easy/Normal/Hard. The 650 ms charge / 1.8 s shot-cycle policy wins Archery in [20, 20, 20] matches. These reproducible policies show the bots are beatable; they are not human play-test results. +- Tug of War is won against each bot with five presses per second. Pong and Football explicitly wait before reacting. A solo EXE action cannot also trigger the bot. +- Targeted regression checks cover false starts/ties, tap debouncing, goals/rebounds, volley net-top collisions, charged arrows/hits, dodge-ball knockouts, mirrored obstacles, rocket bounds, sumo, fishing hold/reel/contested catches and memory watch/input/error/tie rules. + +## Readability and controls + +Archery is rebuilt with visible bows, directional arrows, player-coloured trajectory dots, angle values, power bars, hit flashes and three hearts. The trajectory uses the same launch/gravity formula as the real arrow, with the small integration difference of an eight-millisecond tick. The tutorial explicitly explains charging/releasing and the new OK/EXE layout. + +The review keeps the established layouts where they already communicate the rules. Selected improvements add Football's clock, Dodge Ball's hearts, Rocket Race's boost flame and Fishing's hold/release prompts. Tanks' rules distinguish driving and turning. Menu pagination handles a last page containing three games, including page wrapping from its final row. + +All fifteen rules/game screens, four menu pages, pause/results/failure cards are rendered. English, French and Chinese run the same native engine and text-height checks with the real Nunito/Fusion Pixel fonts. Representative screenshots and actual ARM Archery charging/flight frames were visually inspected. + +## Saves and actual ARM checks + +The original 36-byte v1 save migrates with all sixteen original win counters preserved. The 136-byte v2 format migrates to 128-byte v3: the removed game's counters are dropped, Memory Duel's counters move intact to its new ID, and selecting the removed game falls back to Pong. Old Memory selection restores Memory correctly. Both v2 cases also run through the installed ARM package. V3 round trips, truncation and every individual flipped save bit are tested without mutating progress on rejection. + +The compiled app passes N0120, N0110, the smaller N0115 allocation and Upsilon profiles. Each opens all fifteen games through real keys and checks pause/resume/restart, selection and page wrapping. Real OK and EXE presses score independently in Quick Draw. In Archery, both keys charge and release independently; Shift does nothing, and real arrows remain in flight after release. Home/Power saves, relaunch, held launch keys and full-storage retry/explicit unsaved exit are checked. Unrelated records stay intact. + +Memory guards check unaligned storage accesses, flash writes, firmware RAM preservation, cleaned app RAM on exit and balanced Home locks. Upsilon makes no unsupported Epsilon-only system calls. + +`tests/test_integration.py` compiles the actual launcher and module pipeline with a deliberately one-module **test catalogue**. N0120 and Upsilon open 2 Players, start a game, return to the carousel, re-enter and exit safely. The real record and NumPlay's Python backup are verified. Maximum measured launcher/integration stack is 1,056 bytes. This is not a full release build of every unrelated NumPlay game. + +Reports/screenshots are generated under ignored `output/`: `build-report.json`, `host-report.json`, `balance-report.json`, `arm/report.json`, `integration/report.json` and `languages/`. Commands are in [README.md](README.md). Physical LCD/key-matrix behaviour and subjective difficulty still need play testing on a calculator. diff --git a/games/twoplayer/docs/archery.png b/games/twoplayer/docs/archery.png new file mode 100644 index 0000000000000000000000000000000000000000..943d3f8deaa9ac44e992dc1e1711e60e002bf972 GIT binary patch literal 9173 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ΊYVh2&Az3v zeya}D7QhGOl5H>qu?55sU1~4JB^c>KI^>-JQtTr{f*Jq|$)q9mthpRDvI+eBD5@`n z?1hBrD~dfEQsUUR{VqS25|R@mZjZFU4GXE>_T^^HsdcKReQZw zP*|WXmL4)!Z*$mFIOouEZ^<2n@tm!zI`kt!$#2Jx!`T2PpRT!&IhqF130i9>iV53- z?-8qo0D_T|vbq<)<*CrG^W}E`s92mjl??|+{y zLmD)3#Hl;1v6UaI|U`kVZ5D~F>Z z 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%0D#N)S#>(}$ni!{o;3Vx0Aio7 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 literal 14830 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 diff --git a/games/twoplayer/docs/pages.png b/games/twoplayer/docs/pages.png new file mode 100644 index 0000000000000000000000000000000000000000..d36f1e7cf226e8d9af72ef3e8482a91774e05182 GIT binary patch literal 29678 zcmZs@2Ut_x(l)G!AYDK}q-p4gpdduLXaMQGNEZ+ggeWc4AR-ca?@f9a=~4rV(tDE{ zKza++07>BA@j2%`?|Z)gxpJ*5JlT7%nOQTl*4%S%L$oxMsK{@TU%GUOO8FT?=hCIC zz}HKA*NA{|NYI@9(k0hgWr)0<=kyNV|22zUDw;ypV3N|D{l067P&x(UZDGAD*w6eO zc4>_nt#^EUo#SM7&2;xJtGRp7@>7fJNHS5+HLNqn1z1av(yQ)kJUL$ADu_@HCckb% zUPrGTHo?$>n6$ALDR{5^)S>3e$RqK_4~~mB-WuOzEC}gkDx_#X*XGjC;VR+Mp;Pzg zxQX)BEwccjG+XosvANW<=XFWMpukT~#cQ)1OFs72EmbFUt)zPtSCLx(8fuH#7&--2 z7iaoKdn>3>aP}2e+_yjr&piqn_+q-u zcIT3`2HJ&h;GXP4$Te(qP!0Ky*}apk*A{WQrcyd?Ro7uC1VcN@42Qm zf*?c$%McS3yOuVr-R~96eQ_BjKHukY-8aoU-t}L`{YUdZ_<)O@8S}i$(~rzuE$#$# z-L^N`Y=RADM+aK)ohZEfXDCu<7@B#JBz@?;tSi4?%)Sw=1_=sIJ%6c)eW?Al!nv;e zJNMl{d>{AZKCzATF}nCz-BrIX=R#|0*Gg6(hM z-dpTZ)Rx;{o=;eZTN`=RLBB_dRD7T~44at?MW_Tl***B`aaREnFqZx_7V!)Vs@`)T zW)`&hL`!(W-=SUjB*?j#?VS@ihdOxoFzujD7WR@Vn5$usM#{8mqd(}@nyP69On`4? zr~Deh>;4W4Ot>dbj-+5_aRg!^ZKax{BZSY@QRvL!kxQfSnZs8tzU0Ts!STL@HH&o< zi1c02iwH_;8z!a_%4*#Ju@_{CDjDg^K(blJn&r`c^l4 z--GW$Cu~ZVgYb!ilscBM|btegK}ndUY)b+V=O;& z_$p3>#h(-sF)#Zo8c^$;ZN)Zr^t;Ck4Ueu|&wxN0Rz{X&211@=E;)t17u%zN6WsnP z5-`GFalgu|-L@Yc=M7~xGrSp>!X>Ih{n=yCs5vc;iif<+wlsC!wVOMTl_+6CZP84} z>xC0tX?m>{k#^FOkFbLVi=|>X;#o+4QKcq@&E61ZWjKie)Kjt)B~-*6D1~?spc&EV!cA zrUDiFR+un^VJ7QS2fa4|^s%!F1s{@Zrrm zv8XGrfk?rk1CR;GF%aH7j&vJh`#gj0*MY+rx7^ zuB2ame(#0OBrBkjIeZV;9gP2yJa4Cm8xRqqK-L%s7YBY7KJlyZ!--*<>{jM}Gg-fb>8g9r z&8_5(6^>ReUZeF&u30=wQ^?lp!t=y^m3$Gojee_A%PiPS`;5fDZcLt7sd8+` zA;nQ1SiJO4249xWdPUb3zlAB|uC1WKE1lM7LLMMG`3xx2~1}pDC zx)5FRPZHtMyIw}d4w$d^Jmn5OS~dnDCQ*)F)b8_6d(4waf z2q8L!baUU|N=NrBI%}-p@7Fh}Kyk;-BcZ@4_GYM7OWyqEU42j8FLS6r5z7CSP1vmRs) zBKORTZCAdn#EmvEN2&vgG-CK|`$b8zXq9AjLLOPWtrUi)WO;;8u~C!-SnM^a&bvp0 z1{-z4uDU-b{p+Pq=CMwUUIw%oH7D1np*9L?Em6hdr8!jnXVvvTF0x51~kS}VMz zGXuz55?iW|pbckQ)wan?lW~x6w(aM*)KX*l7;aE#3mX|LruY`Gz}4nC8RwVFYoq&` zOl)F?Oab~X0?U%m4B?vtTe&Hxrn~Zy74{R6d}sJqQ!zb(P-#uy})JUzfDPyt6{M>~9 zAJ-+5!=+nsKRm+EEg3F+oVwDQt`qpaC71C* zmfti{Sln}fRUcG3Z*k}Db?Wqg*amhd;?(Bi$Yw#q;ZXlrE*_PtU`k0CzpHhh9d*FE z)JC=Qme({dUeR0*^{zovq|47}+aS+5=baJ{xzQvuGV!)w2qox+J6`+`*PGQFAqWX( zGVdsp0h|FCS($W#D(JOd8W#Z5=?^cGGrK;tD!vbK*e$S@aosj1q*c3!}Y% zj-+d%kzjPW3M+&_(p6-f$^JU=vlI6ZvAE^Wdo$W8su9DRvyOWa-uNt${3kC&-xcyM z6*D;D>x?D!cMjzBpcm7}9kY$542_1Uzd!qd_X)i zd){KsWh>g;H6>r~HLm5p;d6nh+?djPv6FQl^W)o(NzR~PW;*-bFc${_ue-W)ykzm` zI#GV9m-?1UboHvSL*R292{sSRe0MFped6U#M zaLyEVmZSZ~ogWf!p`)t6?$#Z8o5w)U>^27G8^oZFmjnx+#cMFRiX6|=@#-`)sgOtz zH@;D1e)N36l7IfPUr=@7x7fgxEJpHM{`Y@S?Mh5@%kVRtYjxdQEAEn@m0D*^h<^S^0ZOqb* zz#P*Hz6r+p=FWNZu8qu#hC$mcW#r#J4PMmyd>Zb%&+RA}XZe7-Mb)O1OdX`eDQobscYR=M=jZ%pZULfp13}i;Xe#*KkbpKt2V_gA; zM{hUCUg8Z_G^qxN4eZ$L1HCt#iMRiTH&7Q4!h&!>7chP|V=BxZ_8Cq3jre>~L35Cn z-`m|~d#>2QmckFpF5$m%ehsLq2$%n>p!ha(#I^!6VNS%Dw%5mivC;9siLoTpbpqQH zpLb;L3kya3k{>*CU*I4k6o9~7|5GK-VC*l$Sw)O&2dpC!5l6FJ42OLyG4Tr@w;r2V z!~~H1mFeFFUTdPsyX>8k#PrTv+@L8LE?F5tHge}W>Y8H)ZdTlTqW=`RSmO+03eNSJ z(I}_b_V;zlB$D9wz|8+H^nfaC+W9h%1|NcW<&s_6XS&53gffGO5V>KO2=ya;r*w*F zc6l}g*!X0nxY%O%=|R_dx+^tZyZuM*rW6)ztOq{W3wsRsGhrYm!cC7suU<6q22lsF zn66vSE<|7pFKoZA*{!i&{2{}=zV?B6gx>$p_X}m)@K$5N#8!TZu3GIG`~1dA_fztrdn#%M1_-`YpvE9%>X zi7pdN^>@HcAF++&=2( zVB{S+KhI1?*-zgpj1~=FFJ3v@lMccyFkObjivBIfLIVBeLmZuGw=KR{eU^b}SaQ+d z*yFmsi}n}-085C0OmYp|5UlFcH*Q zYwrGR!p4u>m866f_M-kXskEb!4uv4z93tux0D%+sYHosdZo{ybP~jlPYQ8t6I+YSTICQIHgqYVw8F> zJZ_S}9f@nLg{iymXoV0^F0mz80*cD|h_ahB#Wy-4^D^L)Sj2wV8So4a2Dp+%-rg(Q zwJ7o|a}4F*c|W5UNWh0ikTTjRi>m=&IJg5%T(qSyK7$p$(c?D(|B@8|43AKHkBUa^ zjzW)_J$s#>1I8#nqo%t_Ye&SnMCCJ|7i_<199EWJ zOVxaC_*mLY!FRvzWXWlNnPGyVO&HL%{JStwfG6aX&C7Ylf09~U{x-V_{Hk%kLghys z9CFn1^)nOV*$wXQ?k9zTp2y5qVyX|baXNN{~ZXB()fuU8y`B7*T0!J$P0;5-7 zBp}3ia0r>+#nin4r>P9m(>gruuCrL=>OsVxF!a=O|6K!zZI^I~6fPA= z-aW_PlLf1Aud56K?-As39Qjj_Q-9f%oRf$-YfqcH_>+?D-xfnhQzMC#QpC2aIRX!N zhtTXuz~qG%X?NJRgqK}?`CnH5*`aFb2pi9hvUtQ1*(|ANM}HiUdg`F<_vy3$C2`?v zjpjG~M0M5{ry4&*JgT@%=_F;e&6>8lIr-M=Ql}qZ%-glGH~n|4`>3sqxK3oDF^; zpZhLLr&7y5KdU!H2~ebLysvxn`}g|Z6#Rx+hxHGr7v&pzH{|yn14P$0 z>JjYj${|MCMH4gHGF~50S|Y%)AJNPpCU0sG!>VytPLQBk? zr5y9&8H)m`?{Vzw zU$)?gk;G=7MO=#S% zdPjvO{cuDGEQHV7X~cMZ;#19?^3#`2e(t8_t$ydNK}}Osu$yqd8tjI-YurYP#3_R2 zmEhit1}+ihXiyuFfCyOGjx(y{z&<^kw{)wQ(b3`arR(v@rdeV5bBI?0+RYl>7r*u}L* zXHV}oOf$klGdWsGC|ot?p|@S$|(&38}5$EHR4KW4tc(mM$L9MhIHi(=D9CsI(Yc3Dztin?T$-IT90}Z=nseZ z{ri7?`&C=~&VP$m-F8CFY@$SowTU(E<>a2`$3Affv&mq8ksE9*LhC_E=FAUBX&ie~ zy)^H?m3eWT6Bi)8H=~0ykTMy+uro`klQ;u=3JkfHNqGv~cb9n~8}nJ|m8h|(#k~o= z&WTNvM6*Gf*1ARN1dZn=6TqhB(4%%k;msAe_QiB~ruE!zt_rZ7{@&VxH-d3zMJcbR z%T{aW<(i@dx~KGT-d0Dx$p}TEPKU1Ac~8zZXz#&{deKCF+k=3;>PjMdv@6wxrdLgvxQyP-t1MVa!X;q#k%e2hU0p{O*2J8|YP<#km95}ofdpVdsXvlL7~;^BOB#d03G9#c%I$Gt-YjR&UfSEzy}21 zTTvO<-TZrwecdJVxNDc;CIJ@HVXG)&VV6PO-3Al>L0xCiEq}SzJ1S|zjjfX6lWrUv zI!R)yZuWrLEzGN*#?_u2e<&#_KEhEKEIfIKGFUb2cLj1dO9r0yfTOR>;ItQx$>tw zvi0a(H2aqn=S)lg+>wXrq;}-Y9UCUvw_dalc@FcV8-ha^Uo}sOP}Mo0xYfDG!N6+{MejOhbrG-CA;j zWA3XTAmJP2CiC=ZPD&G~>FLOaGNPD~yG(OR3|sulu{Wd{o(&XuR@%UA1~|W^3%W^O zJ7|N3?V0q8#qB76sY{C$=YW;d_x`Bh?PHuSc-SqF@tI=nyGr5f$ocwRt=K$34M6R# zAU;~EjEyS~7wR)k%(Rr>(n`tW&Zl3r5mnOP@X*Ld?v*=9uD-y;_p|5Or09O{Qv{Ml zMq_4|tiA1;5*9oUBnn|1d0%Xh0|YGHo6#>YWtj|~*xw?Xyff9@PIX>eG0(lAXSwb2 zdf5etoW2Rm4o;526U2j5<@n6_)7S42ze376G`N&YYh_&d=yh&W{Sl zHRpV_P;iGYZaRJ|I^Dmhfx3Iu1&Jzk>j9F7aF9|#p}6Or(Ivw$TW^ts%)vR`D{!=J z_2VR|S8_Z1tgdNz(O%_xyFehK1Z4adeZQjhZhJThNTh8lvD`Ru;)cVdmgwVVx82{8=Yk{6gbSF;8GmPry zVQg;P@LiT>lH#4<$5amP+L`n!$(M*JkoNU8JV_{*JBCeUg`@l*#_lj-<^5?Oc2d8NwT|;R4 zJD(|N_r(MZBCo&D=oBbta8d80@LmMO0usz=urb44SLxHmYJBmLZ~uppxnPD>n+6|; z?P39kIoU`cHEwXy(FTg$yIAa*p;#g+qg@$dW2|DB*w&+{>>vgqf+C4kpzq$co z{2OM-dAwr9a9Q*t3F)$i*LiQyG2eK$yPx}OjlpvqMa-H7BAI{VSgMTLiYsR^i;{?W zZ^jnKGqN(!7pcM1(v?@AawHySZnLWTE~Lmr&w9RcyLcY>B*XfA&-4#HEQn?gcXr>Q zl9H7bg~HP^9y$B6ipkG^S*;bZFAqx@eK8T9Huq0r^;!6yYhLokh%M#I6^?;>uS*9R zrhI7L;3XtBF)n)g`ZpA|$S01=WzWo|7ceRsoky>M^IxAvy#uj~z+r>bk2!c4%v}~1 zGvyryrghIsy-N$bo?uY@Txy?_<|if@^{v97$xQho0DAgOG%Z(2?dW|W(L`m_YLTUK ztT^Z7Y~A#^uANvFxOnhPy@bM1)@je^ZzPV0TNr)4XD&`$_t7n_#sH>o7qpB1Baq?3 zBSWRr2F32P9O&W-XIRW09bp{V-|dVcx6pArW6j5o%g0g>LZX{wz4Dr^`^!_Lu$-pf z&k0yq)n{lvY{@%EGP>JOFC<-Isl-g@`N6z9-T)Pnn4xHt54@H^h{LAf z)wE$DUyNb!D$*3lP(Z7rf8$emwDYrF@4l_Fy5C#fAJ>LXDz7iVEKcUe&tRfP9*-T_ zX1fm9YZncNaTM^GI20t+yV3Kc#;nm=)FaJ*3&lHA?Bz7kb!~5^2S={X+&&n>#O@F) z@kPl9v+A4%o=E&?Q9_A9r5Q_O$J0wnrbrzyFRmVeJY**G8G!Nyaci<=4Yn*9k-1nf z1*+>t2UiYvs8yXE0i`-hrqrKh4HlJ)cB^nPYF{B5{)vn9g+S^u1FS`TmvfauEQqa8 zr#lNIb}O(LZBFwhLpUY``(~8=Hc$Xcz4|gwpR9VNk}1Y)L{*VHN?{BE7=r%QCVSql z{Itkavl*OQ`CHK);uAm0EsN=mCN=F_v^)LiE~SS@nC5}rh%sr7GpxHNGKvU!t>gS) zrk(g_2*4lE=9KlntLvw2RDG_|Y(PAm7<2x_H95o_Xb?wu{!ayb7a8*KxLNI~|6t*o zVb+In>8#8(;13`3`A5uDg!;2p?#;@VV1tV+@Df&cbmUGD!uPy&wnY)eyDD2^=|TZi znHLdlz5F7cL7zT8bb(U--5b(($|7X|?{8<{Z_4#B0L*>ua8LASg*6cVP=4HTI&C@MG#KXmy#%VuNMI|_O({LZ^{e%Gywu@6gM}dg zd^#0#U8k*aB0!!0rn~^;mmNo??geVmsH;v&1c-rsZ)a8e+h2ywzwiIkvOvIxo3gz? z3G}=Ip9)XUgId!c+PMes2F7;XrSbyY2moUL&IK5I&k+S~xat`bXS|;(e-`NhqU$E=ax^EQ z7#3-Vfaw`PiXCY=i}`N}&iD5&0$>DunI5Aq>3gY^=(Xdqs-LSS4CbrX1!w}ifTUEo zS@j-Ec@xEk%-^P*OI%-g`2UxXe|rHtoAq$M9*B*v^>tdmrx7Qo7m7S?804!b?V}-? z+n4+!eyRlP;qyP0eb=Tx&I@=t%N7)wKQlpyi~k{v~R_=)@;;myu<6Z?kP#AWbDF zpiZPDfxyFafZitJ&+mEyOcmkjSJ)6IY4)Y;^yd1&4f%UhVY&P1Z-4iR2cgO<3<#@j z5@oSUJ#~7G5||B;9|xKS8lnlfowcme%D5YrgfIO`!x^uOoN_3|ocDKhfYzl{Qn_7c;*X9Q4>;9cYi^+ZXo+EiGvw~M!_ z*i7*jS#iD^p%p{FdM3=ioalrKVr|lVT&l7~vp2TL1YBGjT=dA0wCw&;1#`MvP!`D< zIk~inL^0Qf5q?sQ)4~egBM|D~tNWkoawpih+`u9|xwGQcz}VS#7#91cA*Ja0ny-ZJ zPPVo%?4=j-`BOOfbnd?5V6<;EZ43c0Tnss4tVP?dh#r|f+l_aeusCsfu^)D7W+m@d z#g2@k&9~JZUvVj9eYBF*oN1}x4DgGD;!RBT(8a5gySbq=zm?&!myiqfR3~N;zLAnL zY492bWVrppYdKdHNJrRJCy6X&yE+r-#Fsiz#gBr8+C!%}ro*6@2EPeR zi;k08%#mZTMO?<%>(unuClPP9caps|%Lg^w8?Z%ma86bqsl=wjx&c2zKggrGjmnDX zZJ=mC>SFiwA4k8l@}EQU#>?@7)0^*q*t-v=ZRFPrA7$?DxHJj3x(u7b<}TfDq5 zH*GaBs=iUOsGqHMlPv1jTGGwZ7fz&`$3EYo5b~h+pSRR* zpGNEO-N?LHJPc~Cd!fz-2MRtN++6Z_Ai#U*+IOsuviE~i1Q7{uuF|>l4-&ih&*ZXd zyKL>IgMTX++`!b!ROJ+5#tfRUK<=ssXj4RQb9fxY&VHzCwhkz<*nHV!*WQTr(Zo2= zjL(m@s3g4>(i|x8zL=wltu8*BF+ewzs&Z-P>|Bg*VMZm-JU^;6qq>TjG}fE?n0Qte z)RU(x6YT99?EOTuoaZgY#QZjDvjl7Wmv+h!Z* z0{9*p9^H`Q(B4Eyv0GSb^9_c60l!?9qw)1AX$!6MqLIN+arFDzmA8R|L5THP3R)03 z{wvCKSGJ@Nzw5D}_t>So-XA7)^!uEpo5dB`WLCX%hBv_`xdt|Ows7!31*J`sah)64 z)%fw1cHMx@gN5RE?s88nf}j_>;tzfzq&r){v0xDzCTA{aS1<#J{9Tvn#w>r(1qO#IC-G=8RyJmee-Kd zkb@B{48;>U@oPdNxi8hUH#lJi*|a0Ye1DQmhA9<0w*&ksb7br(BvJb5!}nuuGvdrfFtz@|(V~0uR*%Fu_FGU7fe}CUAnz4qIhJg0Vt2RKWB0$Qq*rKMbXGvVjF<{Qq z1l(AyXFt5}=1tZvX;Y&iMn-la$`(mI{M~pV32}xvNay-i?sV)eI47MXy+~4&c|>Zj zZZ*HN#Ng1>dA4D&2y)>1noc2WTByX|OMwR_MCC&A*2GSu>7?1Xa)w;xK>`dE{rGb* zj)kK>nt02GBpi`9hZO;wMTETcuv&EZ=S>pDmGhfao6h^dE-j8ToH4H%mz^?9Z|5{1jidL1);|oqmbpl&^Y}+yQcTNvaD)r`i-Ro30 z)w~`vi9Tk<0P)nsI?7&ht}D-@wcz&Hr)YJzSnc+zO%B)3iXTcA91Iyt_OIg&2kN|o zE(6I&;iO!YxVV7L2}>M1-sPD#^<6RSu;IaQ$ofZrbQ{GLis>h-i{FMypSp^=rlj##4fUi0bJcj@ zel;E{;s5$vfuD@~DOD!5hF!thx!2kEWvYBtgGjzuE`FuC_R)4A+38L$0UZRLN*j*| zF3=!MI%F#ZSj=7PxhujS%iP_PM!1!A*42s{pX{k2$nseA73Z0UOYQH5x)@D4?E(k- z+FZ7YKHciE@SuL=gF{X!voD(*cininly!uX4p}j)E)oD=PO3&WOdKrA2OU0kMKbVhUe=*O5BEmS!|wzxo`DdN?@bL{($O! zyzLaG8$4P${qYM~h$BCHg>w`0+$!7!qt~D-w9dT}ZS^O=L?TX4lEF)Y&Wl?FEIR4a z2tF|_qApL%klO_Iv6C^Rt$nYt15ZM_GPhmav`TiP>7+Y|&P;^X%nw^qSC-NnC)(Y? z8?s#3y;&%>mY%N8^Et^dTI!{1yezGHt6a+0%$q*euc2SBAQvVh$yZ`9E9S%f`?hKu z%dXD8e{>u3DGX#gXR{B=3{P1HxhJ@?x7Z!mx3AMG2$x$tAQBF0xiyo|-qsx_ZiV~cbG1BG)(J>gC za}6s%nv+qzly0g?%q*R?;p;}_?&8)%Me zKw1#O&0Phlpw!Z~uo@&e9FS^Q_2Gus-8o3!g*HH@s?R@}^S-7Nh?{uh5RZL$&$r<* ziG(0mYPb}n^J8znQ+e-8iaF}u@Ql;o({&T=dllttX1cXw{WqBNgjT&ZF=rZQZf2-( z1D>+OBL8;uZ-WauT5adI4?HC5jF}7*?VJm~;TJRQynT6nfkVy*?Dyke&wU^U-@m@} zD;C)}az#rvq)s3{V8=u@i_&=u#SgAIx>~aA*zNdQm8z=A`8#ILe;P`Ot}DBm zMMbB*XFa3EEcnw3((M`-@e62)H&uqrY%X`O{eW>7Fs2 zC|HzB>yP7jpRQq28dhx}?>oz|laOI!{Dy^IiFRQgLv5;*-t(9%yjQrQFFs@;#+o)i z)~wbxdkysHhK`q7lme&HIuYb>^$kf4oqVP%ek-L09YG*XU-=kEsYO`z3XlUZy1PNb zOfDFg0QvwC&YJEz$EdCdvH52D&+=*LgMSX}zNF7ZKJ{y>hL;aDyzIFV!qP$2bA$iz z_hRPxW#w1^{JF)7h@_h7vn)4^n$+dHL6^l!)yxLTcGQX01C z-5yv!YjVFIxOMnI=30fIYT_nfS?F&K-wc+MPuUAX)544NpG8n{cT;5Dl0_7MvZHBz)Pv#C#@h;Zld*k;TD(HGQR~CST zGcK&=O|95LZ)LR2cmevm4_IpN+v5`}&wX&%>inj~3t%^y6NcBbzON}~%%gG~e3A{U zw9oo@HW2Qt8cIhy_IYwTSskastH04d)EkfGHue92b4_|3W0E+zj7o-U?W)}Tfk}yR z0qdm0>*GaeY-@K&_et%^$C?rvy~F8)MPa!b?=irm61Gt5&u>X~8)U&JKQ7xm<$Zp% zU3Y3`;i`{LR|djM>$L!5%PsYM-H<4{iPV9{@)85*x>{-4lv69wFeh)PSDZC4Y%2jp zVL5Nh7t+-2QOPlCAT9TqM-I*>a&@1rwjsCAp+pXtGdOKI#_?S+k1lKY7V|@tKsq zd%dfwd(mMmPuOBF^Z zKW>%pYjw;aGx<%%)zGc=tykrD{A7*^A!3ZjV)>`HHzubq9}8nyTKqphRmo_Y?dK~! zJLkX*`ac+S-<8{mYNk!WdAi`BKRH6|Eca&SapdKhV#PjX$43T9dQ+tq_2W}d^-DDy z+!IaeOQxQxXY5Gr#&NychW?ChpAH=Q<09bm8M;PwY%A2W{ALY~?o|Uh$sQg2JS~5^ z?hQ}rI?LQDr9K&)@7KUvIaK>OcfH0ptsQ4Me?9l8xDUv=OMy(Ik`Jx;<#$%w4fQM6 z%<*f4DNcDCZvl`V+@$(^?qH+7iW<6i-XP1CHn%cS82(@aV`Z_dPBD$v%)WXPS4V^- z0vmKzftQ$ho!54~cqAS^vcy|dfk}#;9=eMHO<-M)A|E#hgyLh{i9p0yG|B`Hlm7VS z?TRECi}9;c-IW}vb@PA4%u|J->@GAnTg4FE9;D;ym_TghCDNlB;GLGEX-p-zUo~HR+|X4R+3C-<7LD&L%&@~4r)7|PW;1Rf z+f8NbBp2DmmcIA?zmVe*+w4N3-O|Tqoek03^o2Zqa*8Wt?coPDQ+rbTD=4CAk_5C+03s&n z4q)WH7$yG`^m>!N1ASL0*U8tgIumBJ&Q(gfnG_?%R_)416uFAhxTpx?-qrh zF$zN4-lJ#+O_$o8o#RW0#dn)7UeW@OBY5inys`$c3e|3FbPy{-)c2hOq{DC0l9k~u z(IBHTQx970?X3k6TmrxYO1^XwE5#9BbNe?U3@}jl9485K#isa!K)C=YIV2}v=`JInnR)9s5hqyJ5H-J&sFci}{h{*;}cih>I|m0jtjC-7VU zP2ml+C{o|~g4-lU!RJSoX#Rhi1SoB<8SxsK1eOlOS8c1ko%R1l>HXa41R*{@ZS3UE zBx)+D6L=Q^7VCdr23?=QzGvo$K#*8kfV{sz?_TmXex zrtNW&#=c9tc3QljcJ#X^B&BRhf2sr74N|spApaKu!Z-Ey$oepc)c4iGjqde9TLe*E^ioiiDevMFI)`d-`4uStBoQ z{^XJ5!$)6UrHw4KMMUMgZ&~gE7DBh~n@|nHnrBQe6S@*J0=V5H=9|*M*QS8fdu@eS8KdL@ItJp#6X;f4K-k^mVXs*qCIIFLW`7mSY#34~)u1W44z~tq^ z(;h|)^o!E=9cA(7=Y05;mb#^S+2PX_U!IJmA8fl$h5k$@PImCC6aiz=^_U|TX+Cbl zhY`@B8>|)+ePWZcSD>kB%#Wn<_-enWB)huE%0T5he;@mRpo(1Dp=ObUDEd)kw9eGK zA}Dw;|8iR9dJtf zX@(s)QG=iMBypBS`mFX#5pQt-MUmn+PN282vs)c-#)hjCMY7qh7Td5_&}yb5^vzdV zUU3c&F(Q@0x`n9&2TR^iagvHWk!#Bp2YOE1#LGQ~qHY&W0y=tUD+b+5A_?Gffc@dZLc~1lIy5kH9E>#nWl7e^Q z>~e+O4o~Mq(Xk4k)b!+s=tE9nC4~J$aRFGU)UP#-3!%N40i4I*fAb+3-R#h2Xgg6d zin}W+awvJl?mO`5(FW7rW9+Rs7dHX8J!_l6Ti!k<7-WEjZchkR6cuV<{`nB&s)(yO zG8oaFagec{v3HuylI36b>7MVOQ@g(BqD$|C27}Qy==;163OzSA^QESw>Z|K>IV=D^ z(i*GrxLoAo%X9=!Sa_UuRac3sM-WPbhISvTEb_=d8U*6;shd~%bZ{-_C%}|1b!$|k zmt?CEsyIcZCO927wM)X07eCj)j5XVCw%&W&miQIm*-cUI^uzBHTilLg8#GU&eSaUa zJio_+eSHRbj_S-;Eo{oyZN$uV62{BQGs)QT`v>>6x>1~zU#a%lw-?S z^;25*PpL3~36L2rx|cl`N5)}b(_n-betuB);iXE z>T%Hi3ujs5s#myFO6n{Q@g$2z@8S!!3*Z4WQ&QQYcMM*ch^M3usA00$9!7D)LhGwx zKos}`W(Fn?`L*{8Xk-jD)6k@o&vws0$a)QKu3uA7=`UD9cXBHqoL$j}PrCL4!e?&! zwYumzm%&MqJAKgL6n}x|z)K8=6DhUgEN6~&_%qz)Vg3+}?lqe0F?GXCQuzJ++C#tR zgjJ8*a*5>&*~k3Ot%wTEd2}nxWywsbkxQ98VCY8K!UwAknU5J+6DdL6w z$6aycIHE;##Gj`lJzV1XMat0G`JnsS)=ZhN&Ys&FNl}@Ml-B)IJF7xISWjhf^7oCK zUVae2Pm1&5$?48@zFg8dB?7cT7Sx)};1|21Z$Q!M${HGKBpSr#UcVFiKa+`xlI!ej zzb6=<2AIks%;|)(Ojhsrq}9v{7;p+c6@VbOtM}2ItwdIC@_yRjS}wgdh>=W5%@T;9 z&#f@`@9rHM!={hU&Wgx<_SB*g4Uu2DltY`DyVni@^RQ$_t-TrqRs{G2Az8#&KJ=Hz z=aSPV;B`v@etG=Y%%WMk55NJ&=`H*f@8ODggvDL4sir9aI0stSK$GC~c7I53Mo(j^ z(WRpdsncSQ5p$mnI3 z-pR7I$+by95`s=H`LY*v#b@@--711YS4vhY{U9D_5Qt#G3pPu<%FUVIsw>=)y|-3% zk4By-r^gc2@M}vQwqc1E*WS15q$E^OZt8XFzJ_t1k8x-yl#O{Q%?Zw0Em))KX0|DiwkaXC4zl1x;dfNnu;#B|5s@%%bd_8No2O`p zeg3qYf)hJNyzt(4OCyO{6A7)aj0H#cyRH-gn+07L^}_>vO(e7olKsouB$yKyR6$eB zPG!aMiI(i+=q`71`&QDbBG&p&#kHGw+z+$vA*L7zriRs=Jc>Oh$h)hB)N}0^vFO@_ z&(duB{lEpRm_24wHZkXWdll08L;>6Cz}7mip1!UZ50N|2?`^1Hp@Ay`4wpOaP}kZ2 zV~B#0P__)OJCk327p$Qc6Nf=^2p!xK@1Qq`CAUt*%2?kdP4)Zb5+W*lC>WDuWd413 z=`&h+cZ}wYJ2{EZ3)wpL^(+Rx5YS;tDrx&SEcjqUFsFuK}Z(h-|*xNr96i>ZNYmPV+7D_M}Zo6wj z0Kfvs*Xeq@Edwz|71zCx;;qTYj!q&veIt{L-}W*S#E{XtM;N18g| zEAFH4c2g?-F)hgNnju#$cqWv3#8GgOnI<6VaxNLqfRgzPMg}7 zh&I2#$83H_lpyVY_Ca?7$DqR#0zJy%|Y}6iTQFz=$W+J;y%AfMdSO5-_NVp-V}}v z&zO(SCK>@V3&Iqwo2@_LtPIbCtouFnMD3%6FX@E`YBEhI1;UQ}CRM_{8AN%Y4Psa&mO=dPR(Il{s{z`f`+SgfxIrjYXtYUh4QSS+S z+i1t@Iu#J_1b;rd)xVaV#OI1ouH2Yc=UrBwFiJ3CS=cZh`4!+|-=60;yl4*G3IMX* z>#K^Z$~$HFJ1~M7EaL;_o?nuNs%A{=NmIq%B~ZI=LJ?|q4_jBb2qilMSuD;kxJS(DF%EJ}KxcO)W z{Gq;NMCn-oeZYqot5-|4J776B`M^(p%3xPCk?bM~)R4nEARp zI+qAe`*#ntj3+sacTLyjyeL-Sw2)P!!=5OVOgx#-_Um2d#jT@LEYNLBs=a|H`b|2O)g#f~3f zMlQbm2AGIBcZ7@WK6s5c4X7OSr#=~TItVXQEKSXXb=)}Uj6SsC;`8on_yuE!E2Z6D z6)f1{ZBxES_mtcoomY`etSyY!&bXBwTU*#HBzRDWUe1q(00T^15u2<`Jr#AS=hMrF zoxBX(V5E%VC<$ki4p*sjB%)JEYh>V!jI$Myx4C^X`t))^3sg=YM+s>pJA86V3d$|I zGvg2gtK^tjzalDiTkPnkR%pf@j@jBD-VSSf@&({kYdw7W=5RJriJ`=u(}l z0iF&}01M3FiXoQZOSMv7;~Cn&pSeWKWlcCtPzTw8q}W-!{rz_fD>}o8*XU``#6Cz3E?zob3{*_IZ5kWSMx55q z(Q8O9qf5RJR6i}8*7O;WsdR;z>>YbZV9@**xV=~ITA*Sl=7Oxc)%C=C^zMi<33|dJ zN5#;5b-`wWG%vzMg4yw)d9gocacd#5^-$X~x3p6ai2>{R*M0uN!59ctdu`n}a;n76 z?aXB9E0t-Iq;pXLC$ERx=FE|)7|?M569f&pui%#OOF!to8?Pxs&^3s3s<)_Dk z-x`V=ybvfkfYq!MR?>n(ks3e`u%47JbPDxB)mze#dG?Q^K$h*=`C$2u>P^Jqx>#4alorT$njJ zG#I`Q7w_r*(c~cTaIP)+Q$zqWUZ;2e@&qo8wmrt24!^?OD^KU2jF^IX{9Dg}5~2N4 zwWM_C3nmg{2dLfuhd#pbsuBK^CV`$nvB8M`V4lQdUDKvd zd=0%)H_CcM&rOy}e(q|~cCAxAs8K|x;+o#lfFvN;(&*=4MD%DT!5oQ>*N@B9cGhDe zNbkT?wX2co*0MJQnzM)SXR8WDPCnj^({42RY3_Nn#D55+`~OXx2AhdRv8iMe{c(#v z9`?tT$!|%4Wty3N7Z(DPDqWI2o@%5jId`-jB@gHpV*+s_ej%k+Bh&jEs8fswyiZRUyDO z<@gQYK7dwFdkvm@f$zn#yF|bZW)&+Ckjqz?WoOH@kKKVu4-Yb`75+Lg^ycg#7qKY> z?@x`e&{kpDU;i1|k(a?6%Tme_B8#XZtfI2W|>^3Rg$IBTTur`|nmh>V8}L(WD;Qc>ns%blW#4 z^I3zS`fPmknYV(^-qxbc{5{N>m)j8ZT6S3Q&c|35M`tJczfjo571>Ih{o&$P_Tc{b z_Qdh?BC^-WZ(z84;iwEnvpMW`^iGGwT(?O$N&vUV87J}8O91K*1Aw=GSoF*1rd+kS zl{|Pr38sgTD`SjbQc$ydH!RgC;%zVP6jBF_t=Q&kRL1)lPULB98y|kpGURvAZt>Fb z4rt7g10&BK9UvqD)Of}5=7aR(tE5O*Digxd?j4UBNYE?+x)k%?F$AZPii){D36S_` zCojHd5iMe2r3Zsyj-o3JE`~0&R?)&%i`9Ff;JeG*Qa!C#Rl7N6U&wrl9$R4jFi=kD zzNf%`p4VKfcex^U4~uOe?JU1!y$dSh4k|)8aNI?WI@s5(mh!57w}fj;Nzx;{)&_#p zfUaV>M<~}<(WdhO6ewceR~l_j1b~baqIRRu*R%4`YR@cA)1xw_?(>5f7kXUXyQ#9D zSXTLw8G97u`_e9v>7eSBf{M7$*wf*=PTvS#RKyUW{2J_+n@YK7O5_rc!U^@u{k!(; z@ivvBKj!aQsr-z72B(Rj^w=iB_L*_`Pl3fJUmx4t6M4mI>HQ2x&|0EQ- zh`hsF0LSdCr5^Do`{0UfTTWxrcC4j$I0>c@_%Y2h;aI<4-z1wBOp!>!2E3UYUjpWg z+-C`YXG+NK$Lfnyhw9Xoh4gcAjf&(_!<-6zVnHo%D92^Th-3h-T!Cu-dX!gH18A5t zil_oUt9fP5FD|u#k@s_Dx6Uak0zAf+tyxaVRE9NtazJL zr7`}LrF5fS9D7iL<}CP9YfX%)nKkL8R~m$Heaqx;pOh>N%|iytIV8z9X$Z3rueu@7 z1|TqPEq82E@UIp2n$98|cIwR1Y6#=|F|(PI?4F0S`Z94f(5k9@3O*dSh!9n=NLX-j zx64kIuMo^re(g3TvtEp%nH7-2Q__CaUz8Hj?s%rzOtauuV_(wJ^=e7F2euLl>cr*M zhZMh2)lW)Et~D;8EjofTgAWEDBmx*$8Xag$YI;El`7EIcyd0k>IKtJl+XF|PI8$7| zrEWgiPkr(_|MK(RCl${09@;eMSRm7C*AO@oA$?6EaZB70xx-?CwJqgKdJl`2o9{oO z^zk#Vq2~(4nRfYgp=~BU@?)lt!#OFb?olaP>l9zVfZAS6S~NdM2zRlTm#cX}3mF{S zW({m=-&Gmx@2mByqYJ5T%%sOy?3ymlm5i6v7Q4jo=`7SVD6}Qo6&Av|no0{j#ldp0 zxbWlsLN-@T3e&_u%~W?y*GT5}gyOWS)4K&s1fc(V7h|ZI+tAYrELAbJ0YZL4{whid ziGJkyjDfx@{4{Lxj@Z`s8MLGjb1wjgflCLC9VjMQ2VewSE@^$8Y_tOz%qq%glwRF> zyE6dj8Eo06rTRMCLR*pTNFl%BfjKFv1Deq4^u4k(Wj7WXP;E5TBOjX{zWIdudqBs# z*!#B~$#Qe!n8&H*o)a$;n3?tFU$G?jcL`Llxm->N3H1@z(g-8yoMMg{wMcl7u2t2s zEizzuTr^vjr+*vX)h@T8hZ8h00c2JwA?eCll|f~QWFpK|Z&qb%yCkptazY}flA>cK z`g!G!0~%>><9Y8PpmLiv^!W+-wKRH2i=Rsi4(-1`FtV<{9uf8lPkQiM_85q209B?k+Df37mfFuIV| znUI*|(GxGLZWxpq49z2bSK- zBx8a8ed-Ue0*>1LwRYBHK9I(z7(zC6Ydj202_v_$yK61Q;zGQ!bt36LQIq z;q#{2wVBa|&HRC4s10FBO0zICqIT?rPvM41p5>Xm2oWQmM4uOysRgvktz9f25-asb zwV%^}`H}Di;IE*=)o_OqQ84PJNp03k{f|Td`**hG;p0!#6ghK)Z2FuXF%JLgwZboR zZ z!^;%ETkEVpG4+X3=Jft{-mRLQbDb1lm)Ci~fK|7EomKJP&Po>0E=13k)Ld|xK|Ql- z4JaV&Qf%)e6b_pzIkp`!$7hp7w>n2V5}B%WWfCq=+wlWw7Jvc+;{!OgCwo_g+I(kf z#N)ZA)8Xo6HSs7trnQi@H0~=LHv;08QH%I3KMawlqvtp;FQz^>XK41RNe{wCPFXo7 z38mGAtaK#bRev3N!#JnivrB_6$vyb(RXdqU?_|Pe_3*}!yftEFx$UL@JS8?w*i5DF zIuxK*uAQ<`U*^8KZTezY-7Zp0jV%VRWJ;mnk#F<6I8zQrt>4rk=z>u&0fz~s)wewX zhVJ*vN`TWBR`+Ib68F|=skSVm9 zmF%#lv~U#76awQstE6~)Zc^8t6Kv$bFK{7Z)TAtZ#ak+9p)^1cCRgBn^EOxgK}2-x zHhFcX4;XWDdrR;0Er#hH!IHR(ZoHS}r4wMc!h{1v^`L4F^fiI-*~&L~QkSZw6wU~e z^VT8boGELa*{tJ|rw%hg?^ z$$S_81N<{l5}LJ*ODF9_^%!w=fV5n?cnxla$*?BNu?$b)U#;p&0Xni@6&~bFCkw!O|U`1})TR8&58Jn4PN3DQ&a3`moCXY>P5$I9tx? zLe-Em+2tTw%K@QfQr#j0!Pf=bweK)_Wh|t%iPdxR=$H)rjm2HrE^z~Z^y2rPuT%k# z4VX$H(;5@NiwPuj6)NlZrCs__5YI7|g{|>_TEet2>;Z+n$k4%aqRZNLk8Ez8ZUS*B z0Lk~~$3o2VDObD3x=!^DkPDKCxlA%1J%;`wDwGw&N+VOAtm(TGoMD`s{$riDS~7nw z!J4Uo*hD@OvPf0sOr%~TNX(eF@_V_%8hOLbW@b6>?#=!tz!f&V{eon!GA2AX=Pp(8 z*#Db*kJW}#&@uz)PCGZj%dU$WAo^Rq@#Lqx%V-;o0Z4diOuoHYqXLoCf)z2U2cN9Oc=Q%Gnk(H;(}(XJZ_S5pI^V= z#(Oe3v`Hm&vyPOU^7a)hIi*S^t~QyA{amQ!t4llfMK^^PdChnnO~Ug7*@pL6G&P;G zIVvl+9$YjT+D7ErEq=Y_)aQNP#d_D=$-sAE03Vt)lgPdHRAHGCI&!fkQ)DqPT87x3 zlvHHSW?-2dTFb_ia>U2LN8T1;wP0CkI#QVO;wp4?D3=Yy*9(2+-usL~Cf7V=rNHiM zt6jpsW5Yg*Eb1nZ$*`PX zNF5yeL`uT(W4m^j14ONUX4Geo@3VD_7;FWC`J>!ZlZh6!l{{t%I#%uQa%4tFM&a!A zPM7Vdbw$3oGj4ZLQCmQ9}XCHxpM+uqbsoWZm|?0S^Yk-@eW)Scgv z|Eu4vk)7{p4pBO4bZ2H55R=pEBg;D&SrRLGh?RH9FpoSzDH^Xhhhve!R`|M_J;<1YR!C}9h#KSKkvKJ^%RIu{f8n~}LTIF|!;gdsxHKbU=$E@8C zs&dQ>OfUN6`@~uWLBE0R4kORq^*DkYjSu%evf!g7&8G*w$W;>!TTmA8!Le-gG9f>hO4aH0PwH0T3CSs1@&UN6ThNzYr=+j&l`C}H%>+hn zytYiQ$N6jv;>1@@%?NatbSMSJ&!^}+eJ<p5g8UNt)jRr(w#*-X`H@&~8 zY73%lhj^ccs*$z2AVLCyS1KFsg!EX(z3c$@`3uaG8)q9*@ZH6sANnRfEsx-y^{(ua zS24=KEBY&Lc3zWcepFgS_j2Xmq*p7hgRdMrZiI24VmBGvI!>^!Q=mKgCk>t=Y13L zQHegk8~p3nF~4@wyz#>V+`e3k`^Ngp_}()?%kH0J1N2O@p=Tm~STy+Io_*YXlfT1& zTy*VHP@70!X3nTmfqZ|SE!u}{wceb8;4UH;R8F{x1jBWhyz2ispoZ2_!*%H?GoPk` ziqHTKXjCE&sG+VtzN`zKA5HP(id4M{ty~43LBq>0?cPd1CTbHCCtIPqzaHm*&#ZS` z>oQw(nQ37BNAQ@2b-{3um^0ce2RZ5@gYs6FsQ~*)OYa!ZDsn8{PH^2z{pX|q~SPu z)NgwX#qu;;2dL6nBy8!^d+f#*6`(im%uQoOfyhzdSwUXG@F8kO6U^bpOiC#81XMdS z>s<8Aj7LClx_0Ijig_qeX6NM`YT`$~>XZhI!9A@Pe_cECn>@Q-*G#Nh@z;xtyH`$c zh;L{wse@PEE>0HCc}<9=OopjK8cfQs&J~w zpd_NQ0e!NII6Dua?AHf zoqEkoEOzU*!S=0E`^v3E6nJ^3LBK>2HSqI^Vyb~y3ZK3u-Byr3`h#igOlmHIQJPMl za-d}tG>y|x&)gr(AbT{??v$Z*U#z~Q+lcb2WxZu|M>bT(T^X{xlD(R*ZmulefO$nP z0jA=fRoEZ9RzQo_209|l%^ z&{bX@Y`pGBr~ei1?oJJ=kWxHk=}4WYk`G9C+cPfv)5wK#@O`kWj>e&(uV;70M>lZd zN$F=Fx|W^yz0&&}{erh}wM~<5K5q^p(h)9-$?}aPH;!?i^^r}gsthI7G|9f3kl#D) z16Y~8lbZSqyo?`R=+V5|0t?i`GYpS}vqV*;nDICbKzihiwQRnq{I`nl#Gu(9Am{^*gnG(b{A!Q#|JR3;S?__7^>(c% zX;u)r)l4hva3HumgAxuo{fHJ0*b8rgkFsp~ARD%$j8fY9?*tm& za|(!G(Y8ZSS<{}5U-#tow%@$<14HCsjylf_G9Wy=yD}ZXumRI)ulImG29v97PVt7@ zn`>JI0>Q=&QG8zyY5ut?C%xEQ_|ZonYUgNox>fisUL(d%@KXRSr)l4ggK~Q@iJ`SA z*70b=N5)cGek9rS4@Vi_m3MGlf*Prv>^PbqZ~|TT$KRowzoUrBhOU2l-Cox6`z0HE zm4pJh6nZ9VLcwN!k1wxWubiPRHv2gM;DScHU#I?w{Wg_l7rkyBReha~0gBj!4ryjbn+(~)uKso^T)Dm2wf;i?h3Ca#TN?5IpR~je;&%M9^7?}JwepK= zzhkL^g_CyAc@2ysBHndrNWBRLxe`%V?G}|+xC8zK@4nwVv{nYgsZbAj-lxZj7l$#vy~p!`h7uB4f?i5g0!-J#^b*R!(OL?FlAl3UF^9@VGaSQ7U^Gc z7%kF73aeHpe*j@&Edb*UIJs%U@B6NKRPu*c2h5I8Gk~_|r~$cM)87MgD?DujwXTH1 zUcYAXsSMQ+7MjdbO?v+Er>vc@-Lzx&3|DUlXLpzUp7V!B3YyA4U`0cuYcpMhy~O%cU}m z+*;uT8HEMZ<%F_tWfxuUOsJ!fS<2G{?1>k-0U~cRkWJS6dl@ja{&{hrC2rUy7A1fy zrRQFC&}ARM09$eRX4 zasgAMu|Us7E`snO;O^z+x4Wzsk#@Jc#1@MFd%W!rz6B@xJCAhy<~Z2LM1X!J7;WII zjYzlUp0-f=U){{$NZ9r_c*IOghah~$H%XI$BcB_S^J-lmE%1CpOZ>c!KfO-!AmqzPy>=*$jXsbb4#kB_xsjM zREbt*)S4z2O8F@TL%!RSPDl%7ORMG=*vm37UB2t&qE$*^t#U9V2CLE zW}Tav^_MB!ORn3qi6228Nko8QZ#^9Qp#R!SHpE)rnjlb@j6S`!b(?yE$aA1581@iG zON#nSrR*=0>!}Jz@!ARynLn`sF<%0Vvl*)~_Mc8x$JY&EzO@{e*>Apmr(&FKsdcFu zEml8$gYGCI&pyQSE2K`m8i~6GZR{Y; z4)gr4eWyAxxQS-z3+P8gUuCz7IBrTjEb7d_U*Kp(clO^eYtj5?VaZDn?FNoU1vrjE zS`}xh>-NTwx1r(nDL|#bpw$0Oe!!SATrQnU^6)ZBbl`mo&TsUqpz$++7xB*-7ITU@ ze8<3QKairi2F_;``kyl{05kl&$hBdU+yF@H6S&&{{C#&!nsQ>3`NQ?$6d7c1@(w79#w6n78qZoxh9=J$Wr`o6WY zlAGk-d*;rWnX_k~eZrL#B+-xwkpTbznzWR-3IG5j0zJO`2n&6GQ=}IF00fVv#lNe0 ztekiH+YlWB!7n)MbQ^R>*+9{*Eu;PR^mdI{x_)n&+)27+SA~&9ULxd^z|sRoih<+O zB=c%9nun$oXRg}J4f%qDrg&8jHd`BOIuRQ>k(#(SBolQpTkZ-!J!eQ^Bv8yi+f}o9-KAXsO-A@Q7(fUCfYA z@7ni*^R*92;XEn?AR?@x>dBVuB{(bqY9g$WUaVYiU^+JOE}tm|4{X38AixpAMt95_ zIMRZ?Y?3?|nm=x?rzmGjVy+i^w#|zVFl4SL01*UH0=`C_CK0{8qy`BX0meav!gUYW zB7jjJeJ_luPydw7*{j&8iD63qyIgY|+k>CB#!Le^(NeXf`c@det7)MpjEV^`?b;Y< zsq!!gWHQmS@Ubxn1TN%yo_!;Vxz2E0uTj?ta?Eo2=l|{$hhySuGxS=#l(x-xPh4(m zhnZ+3a`FcmqanPV3a~<={!W|U#b33qroor;Anl}xcO@P9I}VqV(qFebX%V?BnS$&j zrF&H(lH+|8kTqH5CR|vnJq{|iK<@am_}r)bG&5-?JSso}Dyo0*!Ul-VT~}wSu@u6H z&n9-z!YWmpnrEMzAa_JtP_nH8biblQrmFGnWg9`39kkCm!lN%#k(J`fv#V-`=Ne0@ z2A~Zw`K238{Puy?91OT&y>wzPt_}AZ=cDD8B1;XC@b*2?#Fn#Kg;V||O9*IlE^BOZ ziA|1=0>ui%YVKm2{1RyLhJ15($h%Xb$nF-I%>GaE?G&~!Ieq_vEJNXbFKXBG;e$|n5h6M%VFRH^oRaAgoe8A zh9Ba5hF|cJ7jPpSq+O8^ImU89VHI}lW1j)!G|aT&?wn~H_pX*(bOa&_pSpbY*yKio zFk`3@;damsUh=_2?~*C$RL|Udk0y03LCsV7C4=!f^sU-ih=J0IzMGr$kpOs>l~++J za@argE6uSCzeT1}gd62w@*Vf0eeT;h!$P${W_p6&f5Z^e+-DFGj(^n)A0!6--m~qzURkA@>f`XIAgROP(hbJG@^!T0k-W4`R zE8*i`bzC^_3If@N(~Jb1@*VVS6{dSv$D>jWi(A;ZuWzqN+V{ynwpXr}SGVi)KA4bgHDr|67>}KP+yJF zz4@qgGXCeKS7F_t&e@I0?Plsq@-sn^in>h#ARvkVWN&^vJQeG6YN~q*h48JEUeYS` z#4Ehe(9LwYjurb~C$D^8?me5Z!n*07;kl=dfz{o-r%qAp#-bFI#Ww14F{l>I1ym|! z!YrfRMbTYc1$tAd)FFI0Ek2}c8lN$mF>VEbeB4|&V=f1x^t|zO(!VHkb4*d3IXp|} zGcSCo;8oFt0NV5+Yr`44GY}YE@7T^XB@_ginfDVZI%+b^Xkq%-KBA+uWBW*A&yGWJ zb3QP>MeN2m!uRZnD@4j~8e!a!h#j&9_~zYpQ}8%|Aog=_ISQCPJTGk#(u^@^C+ z&37{xNy9>Peo6}R)}xHSy#eG9-Str{f3+C+{>(gRlVc=SiX^~2s*13e-U!{~jNVCe z6nQN+tYPrqweouI2`Io(D^}I}&MpeY?Ql&!zfS;68QeV}3-IIWt!ANy410&i#u_aAk=lQ+)8ra&r?mm9*}-5h-7yCGq66 z-`^&wpFK?|u0EXu(TRkox{=XBWa52QPAJz$DY=pKH?gr7YW)9=Rt+d8{-)fg38=Lu zeje$WJxUJ8v`y0BThxBn6Nm_+gbj-$f9BcoIiv#H71CyfJwn`W(SX=VG-NmgBwZFhv=KulB2nDZ}nFYw^weE*A||b63DjH8RAW9`F^u zxQivnM>qT|(MMDrv@`sg2tR07``*4j`!?N?DYQc1=ps%BrnWHPYrS0xVOPMkzpgI0 z)Df~sMo(bGF#8rv2rQ1-VwW@mqdeQw2a5b{C+>`?Pb}S3*^fC<8{T%N3y2$RI&&>6 zNoNcPd=@^5Jj0-)M~ITDX`Enr=uRQ_;~rxnJ(Czs2N+T+_--0bBYvBEdaV@5Qq4kx zftagYyYq7(x{e3OZ687a&l|&VRF43FoNoc#-jPYdR!Bo)sxQ3A11RLm@FZD3GM{>D z8fLJH)u-*E$#p$?KR`Pq5i{E}w5)(Lq5pE0OcW$N8nUZ+l#21Nr9y^$aCmJg4 ziJlL2qoTCiFSPC~*iYhg04zy^$xJd-ZTX`~Nzq9YxEIl#q1o9tuG37`?M?myZnpGg3 zW@t|-Uc-}N-E<#q(OLA*V&kwa1SrIy79Y+R4wb1|wvVD!xcS|!J?;(HsIL7eR!N#w zn@R-ACf=wBC;MH8?G{EV6pS@G0+bF8#v-r6QJGX`kD6uBB=EZLa}X1;EN!=QSUt@S z`kj4OvQT;C4Cth-PgDkLNjZyzX0gBrxFjWOGdnD(U;Wr(oFF;wQAFjk=x5Y*{gM2S z+jy(9)nRSjbmHA7vSyqNQ;#fnz0RXs88Ro7f;YN?S5-P!jf5NC54AwlyGhm36O=!w@4O_*VWFZ5F7 zh6CC^E{Tt=l0JS(noX)&$#1Ni&=)n4>gN0ai1w3?2@Fycd3G7rIH1W9lqQ5TmYw(X z+l?(VNDHm%d7}9^A*vd@`K33wEXsr#BY;CEYo!hMoIaEpP38 z!Yy>quT++antd^DmvWe|(~FWO+r{c+kY7~s2@!DIhh<~weXUgb;?=KN4GS%h^$y?q zH*yQ_9QtPJX<%)ccBYSKdNqe^%*<_bg!%84hWy;3PGiSjs3u}_Ipt*NEd9OYl2#Qv z_&x-1d`LO?`D)QC7uXyGt7~=-YY*`9!ybUWLJ;R|vmrgO-b}?#d-A%A`Q{ynNdDv< z;ww3zKa&i#`?7J-Z!9QvHxk4^%X)K{*Yg)ZOACV!BCBsQ?raVu`&j2oc)En~9ELi? zh&$*yNZLMb-o@O>={(>tZv0bEaU8ql4W~r_5p5reXd$fDa3F7@M|R|%M^u4bFVmtP z*Xka)m@MSpmdUhE#Hxpfp2BadMtZ4wDqBwkZ&9a_h!D6()E2Tqi!CtXE}w}vBZq5L zu9=>&jgR@3AASzOD`^=OjKqixHYHLgV^KQ5YtT-9Y2=mb1=+5frP)76Zbb+3K8A-m9bOC&WP zZ?d4G*_bHyt4vLvaTX#A$Y5*@A z+?TVLv!9;F!DJFEqv8vAXukT+uw3l%h{}&T5_4K|t~s$T-a~gB*bJ&K}G)EU0CDEVSsYEgLuf?~VwJWVGk`Y<^$%7jsT_O4HcNNl?IvkFy@; zvdRn=igzp4wKc`Jb=>~eXiw20@kHP4;A<~+D12mp3UfitE}9#sZNdEG0I2;V)s@|z zUO@KnYZ%n=orDV`=lon6k4mg_iov;TKT*MKJwq|oOAEGFL*uugjJNWDxU+C3Nc2Q4 zyVYN}X{4lROcEb7CTR>XXw645!`Q+D%xMR4?H(l3Df`KSrZ4~@0u!-wtCsht-^#sr zd3TobE1V8ks|yS04JKo_^O_ysa=x&LZXgi!!?8@g=hO9YBQ#k1Ju4eS416b_t6BY!kc+N`Y=R(&ptXAvR)BLs*)1m*V>k`!dNORw`gS5>OCXWsMWyJt~f zoX;XZxt?5(H|lwxN$WIJ`&~cYTrEgC(lsZIFH|_mY7_P(rp^XcQ@Q99dDPk`Zy72D zT_)5QBd%bGYc^-9`tILdxiR}u_y4m zk(a|TawJ~?$b5rB2L428*DUO4ogR6bc4us3H6krIoIR?aAK^i@G?d8iR4qIlBKA zkw;`9uEq+@$wqPrCf8Q;K)ph{M%S3+wizwVP2Lz>A*=OO_FY!2@@3^5`KfNaLg$4R zF2JS#k%R($5HNkpPUKQL&ICAGL5x3a?}7!ekG8G!0QPx}12q0+quIjQm(aN*17N)m z^ViF87`Sl&t-8oevp}KvcI?Ly`uGLZ{i7HohBAW5e?WTy?gMdrLQtzJWkA|@G?VgD=BkG7UEt4@vK&3~Zc z<4KvjXAC)o0vKY!wT0C=+vY$RIeGcmiLy7r>!Yc#MFAux!bsgWl20!p%Gl7}O6*Ku zh)}~8chy+nsC-befsX4(MAiPW@_PEK&l$1kq-MFzAw{$@?ut1E1ps4`?c_Gmwc`+G zaFtSF^I{0~!b@Ru%Te^qbMygdK`%Tw2%z$=_yHx%K<9V?w_Ktvd#9(Y3NgsmErNWU z8V~@RV}Lr%dgwgTNMnkAhx!Ey z`<~pSL-@<8JN%@0h?6o3pg$@Oz9gEAbxe;MOx$;Kz>^DdW_9O^_w^=w<;o_%`UdtG zykE9Hsg$11{Ia6R%1#%0^XaIkOyFUMK8ia@L@l>U)v~4-IXvEAbk^rAd_)oS3Voi4 zJgr{w+i5$@-?im&@Fr*U02e<`Yi#_5%Q`NeFv|L2?CU5>~X1Xv#H-!d5 z$~yTMxt+p>o4DN)py7(iiu${ROeu`61P89~=Nh%N5$Q$C&j+TbTHbqu^vjD+=GMnw z+;;L5%R6w{D{g!fG?$K)iSJ*i0xPVs5d#)uMy^TCng})f(2DQjMUKi-uW=8nqnW{1JU(c?u;|X~%ZVY-Qq_OETdm;K|H{Q+BP8C*%G9fTq(h;}m zuub_TLH6F&-7eyv{QprU5!9=+yI;!P=OlOnTC7v<<`C?78flIuBZy^vZhF&v$f?e+ z>TQvMwyP}@>$Am03-d`i+w&Iy83wcDK{wVa8d58BRqWGcfqib-{;QO5 zD3&x#Kb8gzx(=gNU!W&}%1pb^1y#5BG>yDN_{Xcc$6EZ-pmbTyPn9l#rXWX%BV8!4 zS{3YA!8YbY@;n>Gd~iDNjhc8}=z5V>EoP|W+^q(sY`G7JtvlP#Py$51!$dc#HBH_w ztKHQP0;{LR$b$o<#N*DJ;T*=lmSqzetdlsrLmI<7kVf;0KQJnq;>vPjjs$Z&BgN~H zvF&g3su<90kmM8&*Bw=om|Ur%kS5{QscD|IiaU%ml!fYRY%zv(Rt8(;)g|X5i0o+X zwHEh`TMho%qWOKcv-Smp$GaF;Z6rcF!oZ5c(DD{`IuL4U<7Zo8&p0Tm*ehFQA!~h@ z2ezfGr}P?m#xvD;YRV;z&VdBCRQy*RZYgu+sScVq?nQ(OFT=iD^+~o5Eggy?Wq-u*Bq?9r3N|4{#w*xsjNE{*z>KO&Cu@10fez+uc+Pg}FxL zm8@&?&ZHQLjt<%>k;c91LHXslRXwi0Z&qpwj)zcD`EE4*3(}3chk2vT0;pbK!5Z9| z@?6X6L^-`d)B35uPc9G$Yd@ybVDdwmbM5lv0>ETxNk_=Advz_eY277O$IbnZ@18pm zx|j~N#_}K-#|{(}4V2qX_;4h4e(SV(I{|t~>+*;P+={O#q^1{0NqXF_@kA8Hg$v=1 zS=5iB4UFz?Qog_i&aduPZBBW4@OS?}c1+I^VUN!fSU(~RpHhS;NSa-a(ibxr2sU?j zBiSxN>I+Oya&QO&brq0wniZ9U*v{BluGhob&uzbxWK<*`mmZtlXdXi_hKo0N86u3I zRrmzso8~AB&`U!FgW(YLZmS-QDqSis!uVF*8YN!8 z0Dz?~t5r?YRZYFSH2Uw6jGK2Zv9wTh!}sF-oOxUtP6x=96xEOcxtjne5Gjlk#d)N> zO|?_zRDo!1<(!av4y1-L*?R2C`q{tC!^CZ!gM(prdcNQ z;U)&kW@owkI-GQ%%JRMFUrcLrf`5dLuffccWRWm&Zeywb?!32B{i9gkj9gFc|9x$J z(DM0~DDd_?COd_-MkbKKC+uuteycgM@lRjld3pZnKIj~fkebjrv@`j-Qjy-C5*bXH zr$`}EKv}k?3=rqNAIksFg0lrRQ2N6?qV$uU$>u3v4xcd8*2Np{ zY7-fQ6e=KJBJg(=~}`o{htd0U!Jw`jE#04?oCMY7em@ZpG?S+hV(L9H4;+J1-=1nqe2yI_KPRl*dLtj^5 zcUuRRhR$va^$juNdffG&?zV!Ufxg>1JC>H55Js*DhHU?ze#%=U^?a$_h)R5(KkHoW ztzUZYZ^a`{I5^{B9bSiqVB~yR&GusjK1(ZnH3>7$BkybFBl!ES?0)`Y=wiP*TcLdG z7qeo(2C`H9CBgUhosTzOTEVnPc(UrjSONzCPXK@?1L!bT$Og)KTWjv~o}_u|;mi#v zM$tAhy>oVUZ!%)m9N9$7HoET5(NljLj9ub9qE9sidXb(a1<#_23;VGcv{Y$ zidp1$5uhD3ug&@V3tQwl2sN{|vrkY?KfR7{T zM7T0045xHCZzT3Zth)z(H9v}I8|gH8&* z{?1d-=>wD`7{tORCeSR@SiosuXqUTW=8s*UAa^7bCt0PNW25m)FqNc`QV)LqF$4Gu zMf+YI3{{h5y$;h>jm(1GPO=0Zb|O{@pH0G{Qz)M@f7d=X)s21zO@6LKA+eERQSSk3{R->qY)JdmCPWb#F#o&lr}cLm$$WCj19&ui zt9dy1ptd-+foLMUQbigg6}F{++@m^fs3EU>gGTXn#S0Gq#wK7ivy-okc|X+LOH~Al z#Sw<{Nxn?|^g%Ai*weZ>5hs`3jlhIOS1X=WY|lPU@8XcBLlgdd;azL*VtTuWp~&p5 zP^vw9z#(&-=gcgleIHSN*bE+eb6I|IA7fbc7OH_SOMa=Xxf-+WDL5q_wg;KP=qKcr#ax%I!WEiW+QL>vf0vSqu^5MSuGB*A_SCJs*RwrfYDoc z{3lk_22=oO$t-8gb&apm<$GMWfiQH2UubrIrqB5Dj>Zse2!z zowP9(oEKjBid>4Abs~Iwg7)S}#G7Pqg#dDt=t|ll(rpjTN2n!nSz(woXx}Bc2aFOQ zc1C`{kV{OL!)T5nK^}iS@P_G^?O{R4!i~7Ztv}?~(3;98 zV|Q>m&P{BOULzFBcd%W=44d6YE6KUrW(;yOH_|J&fy@e+>BX)&bSzKZmc@9sltwmE zo-DOD@qgJ}F_nytbR?+@i;gO_HzcL8z#P0AcB8?qe{Ps5V%C_dFxhly7_qNZM2blQ z`MQUx%b*a?$jK}}bhsLP`AnqP=9(Qq+0PJoll;K?B?cm=w}qx`v>?7=nqj>VOlJ`8 zi^ORJ|C-FEhU!{H5%!VU)~K<}|FeEF7rGJ6 zL(_FZF&rNJht@I9I6pv0O%B4KinkLxk7vNiHvbX7_Y#MPPzY4 zy6F8;QpTi9#^eiwsbsq~!MUw4CJd%Obg4s(DemNj(pOSAVWg*QWu+n6jO?swC4|8Lb0X8%J& zAxq)QICcx&t!fs7H}zcBLpf}`qmiAvw>I<#0hg^_#D_4_wRaGc_roO41-5XZdexUD z*A@%N;W6JDr{;8I&Lq>$iZ+Jwp_|PrInt-ypDIbhlF7oo{SYE=wwxRe!C@r%gJOg= zPEb8BoB*qQ58NCF!@-NF;hOqIh=q=#y|MegoFSapJx>8CqB@4a^Rz5bO}k7dftIF7X`TR(NVkJOk|E13@x%cCQt3q?Naq}xe*bSOfRw(JYbf8U*m+j&@+*Vmtx-dJ@hVWE!!&Cs zg`MTVyE80$@BG(i3l}5~*%>cg{7lMkVRkI*Ew+IJg32Ze%A0F@M)fy}+uvn6!5 z^Udu(ipe@W=N3xbd}8@xFzZU2@+ke@c?;s5>fX|s37Rpb298rr8Tu&x`dmOw$Ck3y z>GSRk8D%O24|FZ%G9$OCc=>l2Dq{n#igzfhW3>*Wi2oEY7yOX?L5WDA*nP>r+!Wf!->h-?PH%;>o(tX^Y8%-wjC|_o0u>WpT*Ex1B9@n3>O^1r_^_9E}F3v_Q`*AlO{YYN^%^tdtL2zeoUU=kc-n5&$cK9R3%vD2PzF-#Xcs>Ms!Lo%C z)#!Ho*NL9hRtO9r&?q3FB1wpo(+nF8Fo!kwMC5sz31#9WC!;b2{8W^ara@xZ*b-44 zLZXpL9^qA|d9=s|y)n8wCDm0fIl2Sm7r8sEaaU=YV0brs(RoR-wk0=uu`Y)k&=T}H$e!D(TFUFH%ZlDpU>Ccx% zr>d&z%W^;P|3g3(uVfcw9a?OihbA|Y6BTou(@dym$0Z3`rBlp!ed*-C?^7?+Gn!XT zL2+Y6!hVw%k%*CDPxlbmRCdIgDzw=GP)s)?zj9s}QL4SJxjWDZmxgP(gSY$O#iTP# zs7Ax|30r;kGlGb{LZxJ&r6-jWr;lL|!!`M!zE0uPCX*oBKnOSxC8RaW@K(n@L8Ey) zex`YF!!W4@YfVPcVusQ0uoSG9*^>6oV_!VS>vd>&A+Yx5aJZXgcS$MFxL9I>ZQ@xPmr#CGPL4A2`i^_GNi*^&7xI!ud{aPlDHWmVhyi2 zAfR3)QO?lNPMu5NzA;ORmkqawh?V@3Jvhl55VMjNh z$Y6zmO@l8mw)1Ek0grafbx5O-YiS2Ee50@B?OgCI>ft2lf&H{*x#Dq_&Pv?4gRI2} zTKnTIm{Z`Rz+)BqKPYL0pyMzpT^0&neL(m`UX(vx71c?q(;`a??J&JuT;J-Z`iPgG zHja)&(6+BXLVlwTb>vws?Hb!wc6fcjS)+YH&_Hw>VlQXA;ac4V_U6hkPyBEicxh2V zz4<%qqyKD>^F;<=`I9N@iN0g|(T>2L6D!amPcVTX##18M@!y<0jC)SnYEfeqNn~dF zsi^DD8ObC<<{3oYEP{0>Dk7QjK+=r0F(_*D^G&w2l$k9Zs}hg$c= zgo@qK)e{n;wXd6%3N$^u8~tf9ro;sNg*dlx8IlB*TBcQ7`)_VcMfQu8Nb_QpSbnQw zpTr^{cNjN>W{=Mt&s;tX-VMdfraO{2iN#LYpL_iR^N+SgPjXgYsuzhkLSc;d!MOc^6eAfC zOrz^y5akxUD3_JSy${ingduBgo#SoePx?b=$b;Eiwx9P>8)Qg(;%7ho)(t^$Mnd)EJ0AJ6 zs+vR}7c(G_pHy+~|D4YI!9!XE6B8D0)sj1Q=)UhO(NzFc(nm3}R+lkXZ-$CZ(;X=~ zgrL|QN`Mo;Eawsyp^U!mGu04@gVZ=^T5Mi0 zw?d+mIYxX?H7t>5ImU8sA#f4wQ4OwIm=4n;%gzOpZxm5-K=mVS|5=no|bjnLyy)k*%Y7rbj&e3)Ji?_%B$ z&t}~fkaCUJc|AJ+sco9kRNWpNJ$H!Stw*zMRPaaNCF{}5($^7=^(9Lq&YQ;g1I!16 zk=KTR_Jfsbt>Jg%G&AV~C?b3{_;hpn7l?CH0qJLaEqZ=Kw`C#*yxK!rrfSD1ACb*S@}!C+|O6Ox{O8ihe4OR4%tU$f4auE_QlEfwWmtS?&Rmghq14Hzh8SVg@y_rc$s~t zK%F!jO)vt}CGVI1Z2zId8c>wqhR>m@jUH;Ek&neC_^JEjr9Z*W+sT*b7g_7U8fkd+ zLJ~RJ@rY$rJEl*3n@(lHwS6TcTN~bw6dJ>FDf@fvbO8OZwzJzuc1J*Icws~uTe2u+rQRLd;P3d&(<9m52uv}1x z+}NsVFTx3(J@3|<8_Ov>K$7?3Aojg!957w%a&F8Oe=;j^5HO3HJH?W@b1O*VT`!41 zYdiBsfHPhN`>PkLOb7hmUWXc2`_rT0Uq3Z!`|mp=!Ta;Tk#W zbqs-x0f~nRd9*qd#NHeqjLz1ea`8la51X`yYsl0cLvvCW-V2mmEN?U>u^w2TV%x!yNHJ)#K}e>%5$)s?JvyyHJ!?OkEV7`Z167bML@Y})gySkm<0UXKU{sU1OZUq+e1;{P0i=J&lJi7E}1Cn6ciis zSK_($%DU*|NyK}EXKi|($@r&cjN3qPz|>bxC-ZXVF4XK^uUg}y@R z9S<>e-c)mHUYq9?!B_P$3j?pWZ*vqR{M^)I*QL!0F!;XCE?0s{z=!LxB9{GCcRP$u zj)KXuBx4uT1}F{r9{bGHXm~&hxQpSt>z$wPpC2L1`he+4_4(qXq5<%XZ{AG3>|B0X zb2s^Y(8^Oc-3m4!C%;K^Q8{SQg-?hrxg$=&KuXa+Ngq5AK@ZR(azptBC@VizGBTbT zs}2=}CN#eBoz=|9K3sOPqdV0yn4Q&=LvnW!T(6M z^H~JY$o-jExJUj=PPc9zz~`!E(67-M+Qpvjq0JjOzcdBTNgPqPA@p~+^ho~4L^4nQ znvu$sM(^Sicsy}<9v$~;bm6jA%6iNHlH?p2MwMTm-M~!NLcp z3M*^0J*_L!7!1<$i{lt!oSgKura6R3v<;?WHum=zZXZ%Zm+}4KIik-1c7#!<)}VVlZ=AxK)6Fo-Ja6#gWi1 zc-;FT&uWYSH`ibT#VV70(eB1EWlx+L)fzZdpoZeLnsTCikzp7lz}w zT1DtNjk&h>s~M`lh~~_OS$?w`k)F%jews>~jaRPH-uL@0*yW?bQWY`jH zS9ASd7e7C(9%>)|e@2{D^KX2UnO>)TJnD_d;i`9dpo)!m^^HMLijM7^CBVW(R?26xblOghMDBxU~ z?yNAC#X8^`I;<#I1^uu4L`3U<@!u>+lT1g@aE;@ z1(4wUr|1P%I$^f{PVR&LD{;ao24iz5v@O)PFMA-}`7>zMp=Rg%X|C|Q4>b;nBGpZ@ zr+LZ1IU)Rzj}TPBrI`o1u3M+k^F_^2Gx~HCYN6r$!CQt5w1KHf{nop)Vtm#@%*p|_TTo<$*seFOHvyMLBnj3)GIbA)LIGd94sOh2H1SZc9YB(`r$x31 z4=lMbr|lt_*HP_FhPP0yZmzegRG@9U|>UvRv}8)<@E-B#bg4H;wO^WY|C1W#t?-ntlUd>xVRn*k3{ z`0s+xpkUiH^sTmew38p-9^QF>y{j^wGRiunU7=rHLOP4cy$G@IJCy5CoqScrQXPGB zD=pOS^yGImOE`HxCu;3i9XjJ>aBE&XLWGLWMk|{I_;thoJyc3UbZS=PIp}4r`gG5eO$z-$cL~;gXhQ22XrNtxUuZgGVUN5H z9;Kf>{r*y?xZOjqAKb8MZoes%&Y9~XIxPRHF{;s^R5%dY*%R*H#46mf5 z-YWg)?BPKOw^rra6QO6gRqfr{L^ZWei&ZGjQNE_QW3fH($#s*!o-K?o4=8(l)<2(j zJKX!roT8COcp4%H?&1HJFa>(A9I}j;VVVf64%_-l3;wI>^^Sc@Bl(=H4cP;#?Mz?? z?CB1nltHtwFqu9kdccK5N(f9hstC($qJ_#XndxM9lm&HYA0q4|1Rfvsk-MJ|V$<=I z6B+ydy0A@_S)(&>Dq!{Fqte#ngNd)AyA0EM`5x+7Jk@gQ6n!tmHk|CvO_)FFjeM-@ zhVUWVNqh1&Cs6olo=qQgaYc(P0%W3fS8K;`)@F&=J9^-=sG|B1GZ3mkqe^C~IW^_O zf2U{96>IJO25YW^52+HbfyvBiQ7v~- zRZXLPIkIX{Y4TuG$`FSay;snLy7N?$NTAkqWl+bsG}% zGp>v_XDsub;d|H%B^70e&zxZ?R%C?t9z!kAf9HC!gFFB0stKj7kxzosTqpKS*VP7e!1^Qb6_Dg z9Wi=@K_1Sr$J5EUh7D2>qNI|JVvZdlw>S|5-L}8TG4P)kwibkn=GP0NJJ#Q4 zl}@|dO22Y=(lL!W{W3K2enU>@tG~!{lw}X*N)!|rA_7cZ1=Iq^^V}gRo!N*+3nf`x zm%F>IoBkz!31hG3->}hj=zyDYpIKlq&p#gez30wTX-9ZH?Rd&(wfbCj_{Z8T#J$J0 z6AQ1oLM2_od(13v*A@%?KsHy6LJ6Ige7hU4KM9)+$TB?Nubtqmw(%2s)*8I|OncEt zd%-WsmKUY7$MAf>H3-j#re79bS*n9=?IFnTJLcruTpW%^9iuyG6zq{-1y(?jwMt?V zvFslMp|`aF9oncERG7tToOXD0JTIhuGDD=Jr$D1JLN8}Y07iptb=l0xG&P|wL zjIR8$CF}C+@WL3qw|-!r!xY3MAeBb#*F^BohVi=w2In5}KW{E;YvZFSo8Wq;h5$oR!zCBISeaFm>dN{PFW%L3a^?$Qm zHep{@t(wp|pPew-fS=p;t{#Tw?(Y$xQngm?4{@F8&S63fw>~Ax^;C5Qmv2ty4 z2P61v6LGIr->6^SbL@O&=yY%716C@Y+bE;~TPw!P&g1P_yfDrL9PVUU+wrh^u5=qu zfQ3D;DIUG1-H?bTnP1R}DXfni@1TS|(65M9PS*1LHBFsw#it&kLC-JV-tu*gM#$%M|sL ztS<~$SrXcaP3!95r8@{PRZoq#*mNG;o zEi&n;?bZ!w`+gF28ZH>T3ljvb3USjXq~7J*dnZfZ7S*_f6>WjmegmW>6vV4Ujeh?> DS&Y%@ literal 844 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoKX5Ps$$$P@HVh2R!k#XUAr*7p-f_%&>>%K9 zvEszv^=~3ml8pp9jye4beLvShqbBO*yHCg2fqLG2sIZ$KZqHnBVg71)1`EFf0%{3B zVTQc-g(A}}6bfw^F7G0%}nx%vtJpkf46rH$YBr%Fsys9qCn^K0qGwtQ0+cQk_-*H z_sR~xyYHBL{riI)vyBRH$)BO8HlAV5PhiE=b!ZNA|I;_+%-S#y!W;(F{7j|-WLZR` zBHSd1Pk?HkA4sVF+W7bOQu!rUH+zTTW_A$Cfi@TWw72U7% QPX%#3UHx3vIVCg!03seA>;M1& diff --git a/games/twoplayer/lang/fr.txt b/games/twoplayer/lang/fr.txt index 6bf2f85b..95a4a34f 100644 --- a/games/twoplayer/lang/fr.txt +++ b/games/twoplayer/lang/fr.txt @@ -5,7 +5,6 @@ Tanks Tanks Light Cycles Motos de lumière Return the ball with your paddle: its middle sends the ball back straight, its ends at a steep angle. The longer a rally lasts, the faster the ball. Renvoie la balle avec ta raquette : son milieu la renvoie tout droit, ses bouts en biais. Plus l'échange dure, plus la balle va vite. Knock the puck into the other goal. Your mallet stays in your half; hit the puck on the move to send it flying. Envoie le palet dans l'autre but. Ton maillet reste dans ta moitié ; frappe le palet en bougeant pour qu'il file. -Drive through the maze and hit the other tank. Shells bounce off the walls: watch out for your own! Roule dans le labyrinthe et touche l'autre tank. Les obus rebondissent sur les murs : gare aux tiens ! Steer your light cycle and make the other one crash into a wall or a trail. It never stops and never turns back. Pilote ta moto de lumière et fais percuter l'autre contre un mur ou une traînée. Elle ne s'arrête et ne recule jamais. Computer IA Player 2 Joueur 2 @@ -31,3 +30,45 @@ Rematch Revanche No Non Yes Oui Quit game? Quitter ? + +# Additional mini-games +Quick Draw Duel éclair +Tug of War Tir à la corde +Football Football +Volley Ball Volley +Archery Tir à l'arc +Dodge Ball Balle au prisonnier +Meteor Run Météores +Rocket Race Fusées +Sumo Sumo +Fishing Pêche +Memory Duel Duel de mémoire +Wait for DRAW, then press your action key. A false start loses the round. Simultaneous shots draw. Attends le signal, puis appuie sur Action. Un faux départ perd la manche. Tirs simultanés : égalité. +Tap your action key to pull the rope. Release between pulls: holding does not repeat. Drag the flag past your line. Appuie puis relâche Action pour tirer. Maintenir ne répète pas. Fais passer le drapeau derrière ta ligne. +Move around the pitch and kick with your action key. Push the ball into the other goal; rebounds stay in play. Déplace-toi et tire avec Action. Envoie le ballon dans le but adverse. Les rebonds restent en jeu. +Move left and right; Up or your action key jumps. Keep the ball off your floor and send it over the net. Va à gauche ou à droite ; Haut ou Action fait sauter. Renvoie la balle au-dessus du filet sans la laisser tomber. +Move in your half and throw with your action key. Dodge incoming balls. Three hits knock a player out. Déplace-toi dans ta moitié et lance avec Action. Évite les balles. Trois impacts éliminent un joueur. +Move left and right to dodge the falling rocks. Both lanes get the same obstacles. Stay alive longer than your rival. Va à gauche ou à droite pour éviter les rochers. Les deux pistes sont identiques. Survis plus longtemps que ton rival. +Tap Up or your action key to boost your rocket. Fly through the gaps; avoid the walls. Both pilots face the same course. Haut ou Action propulse ta fusée. Vole dans les ouvertures sans toucher les murs. Le parcours est le même pour les deux. +Move inside the ring. Your action key dashes and pushes your rival. Stay inside: the ring gradually shrinks. Bouge dans le cercle. Action fait charger pour pousser ton rival. Reste à l'intérieur : le cercle rétrécit. +Move your rod left and right. Hold your action key to lower the hook; release to reel in a fish. Catch five first. Déplace ta canne. Maintiens Action pour descendre le crochet ; relâche pour remonter un poisson. Premier à cinq. +Watch the arrow sequence, then repeat it with your direction keys. The first correct sequence wins; a wrong arrow loses. Observe les flèches, puis répète la suite avec les directions. Le premier sans faute gagne ; une erreur fait perdre. +DRAW! GO ! +Wait... Attends... +Too soon loses the round Trop tôt : manche perdue +Tap, release, pull! Appuie, relâche, tire ! +Repeat the arrows! Répète les flèches ! +Watch the arrows Observe les flèches +7 / 9: page 7 / 9 : page +Use direction keys Touches de direction +Retry saving Réessayer +Exit without saving Quitter sans sauver +Save failed Échec de sauvegarde +Aim with Up and Down. Hold OK (player 1) or EXE (player 2) to charge; release to shoot. The dotted arc shows your shot. Three hits win the round. Haut/Bas pour viser. Maintiens OK (J1) ou EXE (J2), puis relâche pour tirer. Les pointillés montrent le tir. Trois impacts gagnent. +Power Puissance +Hold OK / EXE, release to shoot Maintiens OK / EXE, relâche pour tirer +Action: OK / EXE Action : OK / EXE +Up/Down drive; Left/Right turn. OK (player 1) or EXE (player 2) fires. Shells bounce off walls and can hit your own tank! Haut/Bas pour avancer ou reculer, Gauche/Droite pour tourner. OK (J1) ou EXE (J2) tire. Les obus rebondissent : gare aux tiens ! +Release! Relâche ! +Hold OK Maintiens OK +Hold EXE Maintiens EXE diff --git a/games/twoplayer/lang/zh.txt b/games/twoplayer/lang/zh.txt index 7f16e822..66fc60ef 100644 --- a/games/twoplayer/lang/zh.txt +++ b/games/twoplayer/lang/zh.txt @@ -5,7 +5,6 @@ Tanks 坦克大战 Light Cycles 光速摩托 Return the ball with your paddle: its middle sends the ball back straight, its ends at a steep angle. The longer a rally lasts, the faster the ball. 用球拍把球打回去:拍子中间把球直直打回,两端打出斜角。来回越久,球越快。 Knock the puck into the other goal. Your mallet stays in your half; hit the puck on the move to send it flying. 把冰球打进对方球门。你的球槌只能在自己半场;边移动边击球,球就会飞出去。 -Drive through the maze and hit the other tank. Shells bounce off the walls: watch out for your own! 在迷宫里开坦克,击中对方。炮弹会在墙上反弹:小心别打到自己! Steer your light cycle and make the other one crash into a wall or a trail. It never stops and never turns back. 驾驶你的光速摩托,让对方撞上墙壁或光轨。摩托从不停下,也不能掉头。 Computer 电脑 Player 2 玩家 2 @@ -31,3 +30,45 @@ Rematch 再来一局 No 否 Yes 是 Quit game? 退出游戏? + +# Additional mini-games +Quick Draw 极速对决 +Tug of War 拔河 +Football 足球 +Volley Ball 排球 +Archery 射箭 +Dodge Ball 躲避球 +Meteor Run 陨石闪避 +Rocket Race 火箭竞速 +Sumo 相扑 +Fishing 钓鱼 +Memory Duel 记忆对决 +Wait for DRAW, then press your action key. A false start loses the round. Simultaneous shots draw. 等待开枪信号,再按行动键。抢先开枪会输;同时开枪则平局。 +Tap your action key to pull the rope. Release between pulls: holding does not repeat. Drag the flag past your line. 反复按下并松开行动键来拉绳。长按不会重复。把旗子拉过你的线。 +Move around the pitch and kick with your action key. Push the ball into the other goal; rebounds stay in play. 在球场移动,用行动键踢球。把球踢进对方球门;球会在边线反弹。 +Move left and right; Up or your action key jumps. Keep the ball off your floor and send it over the net. 左右移动,用上键或行动键跳跃。把球打过球网,别让它落在己方地上。 +Move in your half and throw with your action key. Dodge incoming balls. Three hits knock a player out. 在己方半场移动,用行动键投球。躲避来球,被击中三次就出局。 +Move left and right to dodge the falling rocks. Both lanes get the same obstacles. Stay alive longer than your rival. 左右移动躲避陨石。两条赛道的障碍完全相同,比对手坚持更久。 +Tap Up or your action key to boost your rocket. Fly through the gaps; avoid the walls. Both pilots face the same course. 按上键或行动键推进火箭。穿过空隙,避开墙壁。两位飞行员面对同一赛道。 +Move inside the ring. Your action key dashes and pushes your rival. Stay inside: the ring gradually shrinks. 在圆环里移动。行动键冲刺并推开对手。别出界,圆环会逐渐缩小。 +Move your rod left and right. Hold your action key to lower the hook; release to reel in a fish. Catch five first. 左右移动鱼竿。按住行动键放下鱼钩,松开收竿。先钓到五条鱼获胜。 +Watch the arrow sequence, then repeat it with your direction keys. The first correct sequence wins; a wrong arrow loses. 先记住箭头顺序,再用方向键重复。先正确完成者获胜,按错就输。 +DRAW! 开枪! +Wait... 等等…… +Too soon loses the round 抢先行动会输 +Tap, release, pull! 按下、松开、拉! +Repeat the arrows! 重复箭头! +Watch the arrows 记住箭头 +7 / 9: page 7 / 9:翻页 +Use direction keys 使用方向键 +Retry saving 重试保存 +Exit without saving 不保存退出 +Save failed 保存失败 +Aim with Up and Down. Hold OK (player 1) or EXE (player 2) to charge; release to shoot. The dotted arc shows your shot. Three hits win the round. 用上下键瞄准。玩家1按住OK,玩家2按住EXE蓄力,松开射箭。虚线显示轨迹,命中三次获胜。 +Power 力度 +Hold OK / EXE, release to shoot 按住OK / EXE,松开射箭 +Action: OK / EXE 行动:OK / EXE +Up/Down drive; Left/Right turn. OK (player 1) or EXE (player 2) fires. Shells bounce off walls and can hit your own tank! 上下键前后移动,左右键转向。玩家1按OK,玩家2按EXE开火。炮弹会反弹,小心自己的炮弹! +Release! 松开! +Hold OK 按住OK +Hold EXE 按住EXE diff --git a/games/twoplayer/src/main.c b/games/twoplayer/src/main.c index 66cd8ec5..eba40770 100644 --- a/games/twoplayer/src/main.c +++ b/games/twoplayer/src/main.c @@ -1,6 +1,6 @@ -/* 2 Players: Pong and three more games for two people on one calculator. +/* 2 Players: fifteen mini-games for two people on one calculator. * - * Player 1 holds the left of the keyboard (the arrows, and shift to fire), player 2 the right + * Player 1 holds the left of the keyboard (the arrows, and OK for action), player 2 the right * (the keys around +, and EXE to fire), both at once; or player 2 is the computer, easy, normal * or hard. Pong plays as the 1972 arcade game does; then Air Hockey, Tanks in a maze with * shells that bounce off the walls, and Light Cycles. A match is first to a few points, and the @@ -11,6 +11,7 @@ * along. Positions are in 256ths of a pixel and time in milliseconds, but for the round things * of Air Hockey. */ #include +#include #include "../../../launcher/src/gfx.h" #include "../../common/np_text.h" @@ -33,14 +34,32 @@ void np_push(int x, int y, int w, int h, const color_t *px) { #define INK HEX(0x161A33) /* the menus' night blue */ #define GOLD HEX(0xFFC93C) -enum { PONG, HOCKEY, TANKS, CYCLES, NG }; -static const char *const NAME[NG] = {T("Pong"), T("Air Hockey"), T("Tanks"), T("Light Cycles")}; -static const uint8_t TARGET[NG] = {11, 7, 5, 5}; /* first to */ +/* IDs 0..3 are the original games and remain stable in existing saves. */ +enum { PONG, HOCKEY, TANKS, CYCLES, QUICK, TUG, FOOTBALL, VOLLEY, + ARCHERY, DODGE, METEORS, ROCKETS, SUMO, FISHING, MEMORY, NG }; +static const char *const NAME[NG] = {T("Pong"), T("Air Hockey"), T("Tanks"), T("Light Cycles"), + T("Quick Draw"), T("Tug of War"), T("Football"), T("Volley Ball"), + T("Archery"), T("Dodge Ball"), T("Meteor Run"), T("Rocket Race"), + T("Sumo"), T("Fishing"), T("Memory Duel")}; +static const uint8_t TARGET[NG] = {11, 7, 5, 5, 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5}; +/* left=1, up=2, down=4, right=8, action=16; used by the keyboard tutorial. */ +static const uint8_t CONTROL[NG] = {6,15,31,15,16,16,31,27,22,31,9,18,31,25,15}; static const char *const RULES[NG] = { T("Return the ball with your paddle: its middle sends the ball back straight, its ends at a steep angle. The longer a rally lasts, the faster the ball."), T("Knock the puck into the other goal. Your mallet stays in your half; hit the puck on the move to send it flying."), - T("Drive through the maze and hit the other tank. Shells bounce off the walls: watch out for your own!"), + T("Up/Down drive; Left/Right turn. OK (player 1) or EXE (player 2) fires. Shells bounce off walls and can hit your own tank!"), T("Steer your light cycle and make the other one crash into a wall or a trail. It never stops and never turns back."), + T("Wait for DRAW, then press your action key. A false start loses the round. Simultaneous shots draw."), + T("Tap your action key to pull the rope. Release between pulls: holding does not repeat. Drag the flag past your line."), + T("Move around the pitch and kick with your action key. Push the ball into the other goal; rebounds stay in play."), + T("Move left and right; Up or your action key jumps. Keep the ball off your floor and send it over the net."), + T("Aim with Up and Down. Hold OK (player 1) or EXE (player 2) to charge; release to shoot. The dotted arc shows your shot. Three hits win the round."), + T("Move in your half and throw with your action key. Dodge incoming balls. Three hits knock a player out."), + T("Move left and right to dodge the falling rocks. Both lanes get the same obstacles. Stay alive longer than your rival."), + T("Tap Up or your action key to boost your rocket. Fly through the gaps; avoid the walls. Both pilots face the same course."), + T("Move inside the ring. Your action key dashes and pushes your rival. Stay inside: the ring gradually shrinks."), + T("Move your rod left and right. Hold your action key to lower the hook; release to reel in a fish. Catch five first."), + T("Watch the arrow sequence, then repeat it with your direction keys. The first correct sequence wins; a wrong arrow loses."), }; /* twoplayer.sav: the game last chosen, who player 2 is, and the matches won */ @@ -59,7 +78,7 @@ static int pad[2], tap[2]; /* each player's keys held, and just enum { B_LEFT = 1, B_UP = 2, B_DOWN = 4, B_RIGHT = 8, B_FIRE = 16 }; /* the keys: left, up, down, right, fire */ static const uint8_t KEYS[2][5] = { - {eadk_key_left, eadk_key_up, eadk_key_down, eadk_key_right, eadk_key_shift}, + {eadk_key_left, eadk_key_up, eadk_key_down, eadk_key_right, eadk_key_ok}, {eadk_key_three, eadk_key_multiplication, eadk_key_ans, eadk_key_minus, eadk_key_exe}}; static uint32_t rnd(void) { @@ -76,6 +95,16 @@ static bool down(uint64_t keys, int k) { return (uint32_t)(keys >> (k & 32)) >> static bool is_cpu(int p) { return p && cpu; } static int dirx(int p) { return !!(pad[p] & B_RIGHT) - !!(pad[p] & B_LEFT); } static int diry(int p) { return !!(pad[p] & B_DOWN) - !!(pad[p] & B_UP); } +/* CPU intentions are sampled, never recomputed with perfect reflexes every tick. + * Each round starts with a short observation delay, and harder still leaves + * a human reaction window. The two-human input path never uses this state. */ +static struct { uint32_t next; float x,y; int pad; } bot; +static bool bot_due(void) { + if((int32_t)(now-bot.next)<0)return false; + bot.next=now+(cpu==1?340:cpu==2?240:160)+rn(cpu==1?140:cpu==2?100:70); + return true; +} +static void bot_input(void) { pad[1]=bot.pad;tap[1]=0; } /* sine of a 64th of a turn, times 127 */ static const int8_t SINQ[17] = {0, 12, 25, 37, 49, 60, 71, 81, 90, 98, 106, 112, 117, 122, 125, 126, 127}; static int sin64(int a) { @@ -128,21 +157,26 @@ static uint32_t serve_at; /* the ball waits in the middle until then (0: in play static int pong_speed(void) { return hits >= 12 ? clampi(46 + hits, 58, 84) : hits >= 4 ? 48 : 38; } static void pong_start(void) { /* the ball is served towards the one who lost the point */ int to = winner < 2 ? 1 - winner : rn(2); - hits = aim = 0; + hits = aim = 0;bot.y=120<<8; bx = (160 - BS / 2) << 8, by = (70 + rn(100)) << 8, bvx = to ? 1 : -1, bvy = rn(9) - 4; serve_at = now + 900; if (!score[0] && !score[1]) py[0] = py[1] = (120 - PH / 2) << 8; } /* the computer's paddle (player 2): to where the ball will come, off centre by its aim */ static int pong_cpu(void) { - static const uint8_t SPEED[4] = {0, 32, 46, 64}; - int to = 120 << 8, v = SPEED[cpu]; - if (bvx > 0 && !serve_at && bx > (cpu == 1 ? 170 << 8 : cpu == 2 ? 100 << 8 : 0)) { - int span = (PBOT - BS - PTOP) << 8, y = by - (PTOP << 8) + bvy * (((PX[1] - BS) << 8) - bx) / bvx; - for (int i = 0; i < 8 && (y < 0 || y > span); i++) y = y < 0 ? -y : 2 * span - y; - to = y + ((PTOP + BS / 2) << 8) - aim; + static const uint8_t SPEED[4]={0,20,30,40}; + if(bot_due()){ + int to=120<<8; + if(bvx>0&&!serve_at&&bx>(cpu==1?190<<8:cpu==2?145<<8:90<<8)){ + int span=(PBOT-BS-PTOP)<<8,y=by-(PTOP<<8)+bvy*(((PX[1]-BS)<<8)-bx)/bvx; + for(int i=0;i<8&&(y<0||y>span);i++)y=y<0?-y:2*span-y; + to=y+((PTOP+BS/2)<<8)-aim; + } + int error=cpu==1?20:cpu==2?12:7; + bot.y=clampi(to+(rn(error*2+1)-error)*256,PTOP<<8,PBOT<<8); } - return clampi((to - py[1] - (PH << 7)) / 32, -v, v); + int delta=(int)bot.y-py[1]-(PH<<7); + return clampi(delta/40,-SPEED[cpu],SPEED[cpu]); } static void pong_step(void) { for (int p = 0; p < 2; p++) @@ -200,6 +234,7 @@ static float mx[2], my[2], mvx[2], mvy[2], qx, qy, qvx, qvy, qaim; static void hockey_start(void) { /* the puck to the one who was scored on */ int to = winner < 2 ? 1 - winner : rn(2); for (int p = 0; p < 2; p++) mx[p] = p ? RX1 - 40 : RX0 + 40, my[p] = RYM, mvx[p] = mvy[p] = 0; + bot.x=RX1-40;bot.y=RYM; qx = to ? 220 : 100, qy = RYM, qvx = qvy = 0, qaim = (float)(rn(44) - 22); /* where the computer aims */ } /* the puck off something round at (x, y) moving at (vx, vy) */ @@ -212,10 +247,11 @@ static void knock(float x, float y, float vx, float vy, float r) { if (vn < 0) qvx -= 1.85f * vn * dx, qvy -= 1.85f * vn * dy; } static void hockey_step(void) { - static const float V[4] = {0, 120, 175, 235}; + static const float V[4] = {0, 90, 130, 175}; for (int p = 0; p < 2; p++) { float tx, ty, k = clampf(ms * 0.014f, 0, 1); if (is_cpu(p)) { /* behind the puck to shoot it at the other goal, or guarding its own */ + if(bot_due()) { tx = RX1 - 36, ty = RYM + (qy - RYM) / 2; if (qx > 160 - QR && !phase) { float ax = RX0 - qx, ay = RYM + qaim - qy, l = len(ax, ay); @@ -224,7 +260,9 @@ static void hockey_step(void) { if (mx[1] < qx + 2) tx = qx + MR + QR + 10, ty = qy + (qy > RYM ? -28 : 28); /* in front of it: go round */ else if (len(tx - mx[1], ty - my[1]) < 7) tx = qx + ax * 24, ty = qy + ay * 24; /* strike */ } - tx -= mx[1], ty -= my[1]; + bot.x=tx;bot.y=ty+(rn(cpu==1?37:cpu==2?23:13)-(cpu==1?18:cpu==2?11:6)); + } + tx=bot.x-mx[1];ty=bot.y-my[1]; float l = len(tx, ty) + 0.01f, v = V[cpu] * (l < 16 ? l / 16 : 1) / l; tx *= v, ty *= v; } else { @@ -393,14 +431,14 @@ static bool shot_finds(int a, int b) { /* the computer's tank: a shot when there is one to take, else the way to the player, cell by cell through the maze (found breadth first from the player) */ static void tanks_cpu(int *v, int *turn) { - static const int16_t RELOAD[4] = {0, 1500, 950, 550}; - static const int8_t BOUNCES[4] = {0, 0, 1, 3}; + static const int16_t RELOAD[4] = {0, 2300, 1700, 1200}; + static const int8_t BOUNCES[4] = {0, 0, 0, 1}; int dir = ta[1] >> 8, want = dir; - if (ago(ai_t) > 300) { + if (ago(ai_t) > (uint32_t)(cpu==1?700:cpu==2?500:350)) { ai_t = now, ai_aim = -1; for (int i = 0; i < 64 && ai_aim < 0; i++) { /* the nearest to where it faces first */ int a = (dir + (i & 1 ? 1 : -1) * ((i + 1) / 2)) & 63; - if (shot_finds(a, BOUNCES[cpu])) ai_aim = (a + (cpu == 1 ? rn(5) - 2 : 0)) & 63; + if (shot_finds(a, BOUNCES[cpu])) ai_aim = (a + rn(cpu==1?11:cpu==2?7:3) - (cpu==1?5:cpu==2?3:1)) & 63; } } if (ai_aim >= 0) { @@ -422,10 +460,10 @@ static void tanks_cpu(int *v, int *turn) { int d = (gx >> 8) * cos64(a) + (gy >> 8) * sin64(a); if (d > best) best = d, want = a; } - *v = clampi(6 - (((want - dir + 32) & 63) - 32) * (((want - dir + 32) & 63) - 32), 0, 1) * 70; + *v = clampi(6 - (((want - dir + 32) & 63) - 32) * (((want - dir + 32) & 63) - 32), 0, 1) * (cpu==1?45:cpu==2?55:64); } int d = ((want - dir + 32) & 63) - 32; - *turn = d > 0 ? 8 : d < 0 ? -8 : 0; + *turn = d > 0 ? 4+cpu : d < 0 ? -4-cpu : 0; } static void tanks_step(void) { for (int p = 0; p < 2; p++) { @@ -535,25 +573,21 @@ static int room(int x, int y, int cap) { } return n; } -/* the computer's way: the turn that leaves it the most room; hard, it counts the cells the - player could take next as taken, and with room to spare it goes to cut the player off */ +/* Choose space at human reaction intervals, without predicting the player's + future cells. Look a little ahead so slower decisions can still avoid a wall. */ static int cycles_cpu(void) { - static const int16_t CAP[4] = {0, 30, 300, 900}; + if(!bot_due())return hd[1]; + static const int16_t CAP[4] = {0, 12, 70, 220}; int best = hd[1], bv = -(1 << 30); - uint8_t *taken[3] = {0}; - for (int d = 0; d < 3 && cpu == 3; d++) { - int x = hx[0] + DX[(hd[0] + d + 3) & 3], y = hy[0] + DY[(hd[0] + d + 3) & 3]; - if (free_at(x, y)) taken[d] = &cell[y][x], cell[y][x] = 3; - } for (int t = 0; t < 3; t++) { int d = (hd[1] + t + (t == 2)) & 3, x = hx[1] + DX[d], y = hy[1] + DY[d], r = room(x, y, CAP[cpu]); - int v = r * 8 + (t ? 0 : 6) + rn(cpu == 1 ? 120 : 6), ex = x - hx[0] - 6 * DX[hd[0]], ey = y - hy[0] - 6 * DY[hd[0]]; - if (cpu == 3 && r >= CAP[3]) v -= (ex < 0 ? -ex : ex) + (ey < 0 ? -ey : ey); + int v = r * 8 + (t ? 0 : 6) + rn(cpu == 1 ? 120 : 6); + int ahead=0; + while(ahead<7&&free_at(x+ahead*DX[d],y+ahead*DY[d]))ahead++; + v+=ahead*48; if (!r) v = -(1 << 29); if (v > bv) bv = v, best = d; } - for (int d = 0; d < 3; d++) - if (taken[d]) *taken[d] = 0; return best; } static void cycles_step(void) { @@ -601,21 +635,77 @@ static void cycles_paint(void) { } } -static void (*const START[NG])(void) = {pong_start, hockey_start, tanks_start, cycles_start}; -static void (*const STEP_[NG])(void) = {pong_step, hockey_step, tanks_step, cycles_step}; -static void (*const PAINT[NG])(void) = {pong_paint, hockey_paint, tanks_paint, cycles_paint}; +#include "party.h" +static void (*const START[NG])(void) = {pong_start,hockey_start,tanks_start,cycles_start, + quick_start,tug_start,football_start,volley_start,archery_start,dodge_start, + meteors_start,rockets_start,sumo_start,fishing_start,memory_start}; +static void (*const STEP_[NG])(void) = {pong_step,hockey_step,tanks_step,cycles_step, + quick_step,tug_step,football_step,volley_step,archery_step,dodge_step, + meteors_step,rockets_step,sumo_step,fishing_step,memory_step}; +static void (*const PAINT[NG])(void) = {pong_paint,hockey_paint,tanks_paint,cycles_paint, + quick_paint,tug_paint,football_paint,volley_paint,archery_paint,dodge_paint, + meteors_paint,rockets_paint,sumo_paint,fishing_paint,memory_paint}; /* ------------------------------------------------------------ screens */ -enum { S_MENU, S_RULES, S_PLAY, S_PAUSE, S_ASK, S_OVER }; +enum { S_MENU, S_RULES, S_PLAY, S_PAUSE, S_ASK, S_OVER, S_SAVE_ERROR }; static int screen, sel, back_to; -static void save(void) { - sv.magic = 'P', sv.version = 1, sv.game = (uint8_t)game, sv.cpu = (uint8_t)cpu; - np_file_write(SAVE_NAME, &sv, sizeof sv); +#define SAVE_BYTES (8+NG*8) +static uint32_t save_crc(const uint8_t*d,unsigned n) { + uint32_t c=~0u;while(n--){c^=*d++;for(int k=0;k<8;k++)c=c>>1^((c&1)?0xEDB88320u:0);}return ~c; +} +static void save_encode(uint8_t*out) { + out[0]='P';out[1]=3;out[2]=(uint8_t)game;out[3]=(uint8_t)cpu; + for(unsigned g=0;g>8); + } + uint32_t crc=save_crc(out,SAVE_BYTES-4);for(int i=0;i<4;i++)out[SAVE_BYTES-4+i]=(uint8_t)(crc>>(8*i)); +} +static bool save_decode(const uint8_t*d,unsigned n) { + if(!d||n<4||d[0]!='P'||d[3]>3)return false; + unsigned count; + if(d[1]==1&&n==36&&d[2]<4)count=4; + else if((d[1]==2&&n==136&&d[2]<16)||(d[1]==3&&n==SAVE_BYTES&&d[2]1500){ + phase=0; + if(score[0]0][score[1]>score[0]];if(*w<65535)(*w)++; + save(); + } + } } static const char *opponent(void) { static const char *const O[4] = {T("Player 2"), T("Computer: easy"), T("Computer: normal"), T("Computer: hard")}; @@ -644,7 +734,7 @@ static void keyboard(int x0, int y0) { else x += (k - 30) % 6 * 24, y += 74 + (k - 30) / 6 * 14, w = 20, h = 10; for (int q = 0; q < 2; q++) for (int i = 0; i < 5; i++) - if (KEYS[q][i] == k && (i == 4 ? game == TANKS : game != PONG || i == 1 || i == 2) && !is_cpu(q)) + if (KEYS[q][i] == k && (CONTROL[game] & (1<= 0 && b == 4) disc(x + w / 2, y + h / 2, 2, WHITE); @@ -660,14 +750,14 @@ static void button(int x, int y, int w, const char *s, bool on) { look: Pong's black court and white walls with its square ball, the air hockey rink with a mallet, the tanks' grey maze, the light cycles' blue grid; over the menu, in the menu's */ static void card(int y, int h, const char *title, const char *const *items, int n, int by) { gfx_fill_alpha(0, 0, SCREEN_W, SCREEN_H, 0, 130); - if (screen <= S_RULES || (screen == S_ASK && back_to == S_MENU)) { + if (screen <= S_RULES || (screen == S_ASK && back_to == S_MENU) || game>=QUICK || screen==S_SAVE_ERROR) { box(60, y, 200, h, 14, HEX(0x262D52)); gfx_rrect_outline(60, y, 200, h, 14, 2, HEX(0x56619A), 256); say(&np_font_title, 160, y + 30, title, WHITE); for (int i = 0; i < n; i++) button(84, by + 32 * i, 152, items[i], sel == i); return; } - static const uint32_t LOOK[NG][3] = {{0x000000, 0xFFFFFF, 0xFFFFFF}, {0xF4F6FA, 0x9AA3B8, 0x161A33}, + static const uint32_t LOOK[4][3] = {{0x000000, 0xFFFFFF, 0xFFFFFF}, {0xF4F6FA, 0x9AA3B8, 0x161A33}, {0xE6E6EA, 0x3A3D4F, 0x3A3D4F}, {0x0B1230, 0x3E8BFF, 0xFFFFFF}}; color_t bg = gfx_rgb(LOOK[game][0]), edge = gfx_rgb(LOOK[game][1]), ink = gfx_rgb(LOOK[game][2]); gfx_fill(57, y - 3, 206, h + 6, edge); @@ -692,46 +782,64 @@ static const int8_t ICON[][6] = { {0, 0, 0, 0, 0, 0}, /* (a tank) */ {4, 7, 12, 3, 0, 0}, {13, 7, 3, 12, 0, 0}, {10, 19, 12, 3, 0, 1}, {10, 12, 3, 9, 0, 1}, /* Light Cycles */ }; -static const uint8_t ICON_AT[NG + 1] = {0, 3, 6, 7, 11}; +static const uint8_t ICON_AT[5] = {0, 3, 6, 7, 11}; static void icon(int g, int x, int y) { const color_t C[3] = {team[0], team[1], WHITE}; box(x, y, 26, 26, 6, INK); - if (g == TANKS) tank(x + 13, y + 14, 54, 0); + if(g>=QUICK){ + int cx=x+13,cy=y+13; + switch(g){ + case QUICK:disc(cx-5,cy,5,team[0]);disc(cx+5,cy,5,team[1]);box(cx-2,cy-8,4,16,2,GOLD);break; + case TUG:gfx_fill(x+3,cy,20,3,WHITE);box(cx-2,cy-5,5,11,2,GOLD);break; + case FOOTBALL:case VOLLEY:disc(cx,cy,8,g==FOOTBALL?WHITE:GOLD);disc(cx-2,cy-2,3,g==FOOTBALL?INK:WHITE);break; + case ARCHERY:gfx_fill(cx-8,cy,17,2,WHITE);gfx_fill(cx+5,cy-3,2,8,team[0]);break; + case DODGE:disc(cx-5,cy+3,5,team[0]);disc(cx+6,cy-5,5,team[1]);break; + case METEORS:disc(cx+3,cy-4,6,HEX(0xA5AFCB));box(cx-7,cy+6,11,4,2,team[0]);break; + case ROCKETS:box(cx-8,cy-4,16,9,4,team[1]);gfx_fill(cx-11,cy-2,5,5,GOLD);break; + case SUMO:disc(cx,cy,10,GOLD);disc(cx-4,cy,4,team[0]);disc(cx+4,cy,4,team[1]);break; + case FISHING:gfx_fill(cx,cy-9,1,14,WHITE);box(cx-6,cy+3,13,7,3,GOLD);break; + default:tri(cx,cy-3,3,team[0]);gfx_fill(cx-1,cy-2,3,11,team[1]);break; + } + }else if (g == TANKS) tank(x + 13, y + 14, 54, 0); else for (int i = ICON_AT[g]; i < ICON_AT[g + 1]; i++) box(x + ICON[i][0], y + ICON[i][1], ICON[i][2], ICON[i][3], ICON[i][4], C[ICON[i][5]]); } static void scene(void *ctx) { - char s[16]; + char s[48]; if (screen <= S_RULES || (screen == S_ASK && back_to == S_MENU)) { gfx_vgrad(0, 0, 160, SCREEN_H, 0xB8323A, 0x3A0F24); /* the two players' colours */ gfx_vgrad(160, 0, 160, SCREEN_H, 0x2A5FD0, 0x0F1A44); say(&np_font_title, 160, 28, T("2 Players"), WHITE); - for (int g = 0; g < NG; g++) { - int y = 46 + 39 * g, on = g == game; + char*page_end=num(s,(uint32_t)(game/4+1));*page_end++='/';num(page_end,(NG+3)/4); + gfx_text_right(&np_font_small,301,28,s,WHITE,256); + for (int g = game/4*4; g < NG && g < game/4*4+4; g++) { + int y = 46 + 39 * (g%4), on = g == game; gfx_rrect(24, y, 272, 32, 10, on ? WHITE : INK, on ? 256 : 170); icon(g, 27, y + 3); gfx_text(&np_font_body, 62, y + 21, NAME[g], on ? INK : WHITE, 256); for (int p = 0; p < 2; p++) { /* the matches each side has won */ - num(s, sv.wins[g][cpu > 0][p]); - gfx_text_center(&np_font_body, 248 + 30 * p, y + 21, s, team[p], 256); + unsigned wins=sv.wins[g][cpu > 0][p];char*e=num(s,wins>999?999:wins);if(wins>999)*e++='+',*e=0; + gfx_text_center(&np_font_body, 246 + 36 * p, y + 21, s, team[p], 256); } gfx_text_center(&np_font_body, 263, y + 21, "-", on ? INK : WHITE, 256); } gfx_rrect(40, 212, 240, 24, 12, INK, 200); tri(52, 224, 2, WHITE), tri(268, 224, 0, WHITE); gfx_text_center(&np_font_body, 160, 229, opponent(), WHITE, 256); + gfx_text_center(&np_font_small,160,207,T("7 / 9: page"),WHITE,256); if (screen == S_RULES) { gfx_fill_alpha(0, 0, SCREEN_W, SCREEN_H, 0, 140); box(8, 8, 304, 224, 14, HEX(0x262D52)); say(&np_font_title, 160, 34, NAME[game], WHITE); - gfx_paragraph(&np_font_small, 160, 54, 284, 12, RULES[game], HEX(0xD6DCF5), 256); + gfx_paragraph(&np_font_small, 160, 52, 284, 11, RULES[game], HEX(0xD6DCF5), 256); char *e = s; for (const char *q = T("First to "); *q; q++) *e++ = *q; num(e, TARGET[game]); gfx_text_center(&np_font_body, 231, 184, s, GOLD, 256); keyboard(26, 100); + gfx_text_center(&np_font_small,231,101,CONTROL[game]&16?T("Action: OK / EXE"):T("Use direction keys"),GOLD,256); for (int p = 0; p < 2; p++) { box(166, 110 + 30 * p, 14, 14, 4, team[p]); gfx_text(&np_font_body, 188, 122 + 30 * p, p ? opponent() : who(0), WHITE, 256); @@ -772,79 +880,85 @@ static void scene(void *ctx) { if (screen == S_ASK) { static const char *const ITEM[2] = {T("No"), T("Yes")}; card(60, 120, T("Quit game?"), ITEM, 2, 104); + }else if(screen==S_SAVE_ERROR){ + static const char*const ITEM[2]={T("Retry saving"),T("Exit without saving")}; + card(45,158,T("Save failed"),ITEM,2,113); } } int main(void) { np_app_begin(); - color_t *their_strip = gfx_buf; - gfx_buf = strip; - static const uint32_t TEAM[2] = {0xEF4136, 0x2E7CF6}; - for (int p = 0; p < 2; p++) - team[p] = gfx_rgb(TEAM[p]), light[p] = gfx_rgb(gfx_lerp888(TEAM[p], 0xFFFFFF, 120)), dark[p] = gfx_rgb(gfx_lerp888(TEAM[p], 0, 110)); - uint32_t last = (uint32_t)eadk_timing_millis(), n = 0; - seed = eadk_random() ^ last; - if (!seed) seed = 1; - const uint8_t *d = np_file_read(SAVE_NAME, &n); - if (d && n == sizeof sv && d[0] == 'P' && d[1] == 1) - for (uint32_t i = 0; i < n; i++) ((uint8_t *)&sv)[i] = d[i]; - game = sv.game % NG, cpu = sv.cpu & 3; - uint64_t held = eadk_keyboard_scan(), stale = held; /* keys still down from the launcher wait to be let go */ - for (bool quit = false; !quit;) { - uint32_t t = (uint32_t)eadk_timing_millis(); - ms = t - last < 40 ? (int)(t - last) : 40, last = t; - if (screen == S_PLAY) now += (uint32_t)ms; - uint64_t k = eadk_keyboard_scan(); - stale &= k, k &= ~stale; - uint64_t hit = k & ~held; - held = k; - if (down(k, eadk_key_home) || down(k, eadk_key_on_off)) break; - bool ok = down(hit, eadk_key_ok) || down(hit, eadk_key_exe), back = down(hit, eadk_key_back); - pad[0] = pad[1] = tap[0] = tap[1] = 0; - for (int i = 0; i < 10; i++) - pad[i / 5] |= down(k, KEYS[i / 5][i % 5]) << i % 5, tap[i / 5] |= down(hit, KEYS[i / 5][i % 5]) << i % 5; - if (cpu && ok) tap[0] |= B_FIRE; /* alone: OK and EXE fire too */ - int dx = down(hit, eadk_key_right) - down(hit, eadk_key_left), dy = down(hit, eadk_key_down) - down(hit, eadk_key_up); - switch (screen) { + color_t *their_strip=gfx_buf;gfx_buf=strip; + static const uint32_t TEAM[2]={0xEF4136,0x2E7CF6}; + for(int p=0;p<2;p++)team[p]=gfx_rgb(TEAM[p]),light[p]=gfx_rgb(gfx_lerp888(TEAM[p],0xFFFFFF,120)),dark[p]=gfx_rgb(gfx_lerp888(TEAM[p],0,110)); + uint32_t last=(uint32_t)eadk_timing_millis(),n=0,accum=0,draw_at=last; + seed=eadk_random()^last;if(!seed)seed=1; + const uint8_t*d=np_file_read(SAVE_NAME,&n);save_decode(d,n); + game=sv.game%NG;cpu=sv.cpu&3;screen=S_MENU;sel=0;now=0; + uint64_t held=eadk_keyboard_scan(),stale=held;int previous_pad[2]={0},queued[2]={0}; + bool dirty=true; + for(bool quit=false;!quit;){ + uint32_t t=(uint32_t)eadk_timing_millis(),elapsed=t-last;last=t; + uint64_t k=eadk_keyboard_scan();stale&=k;k&=~stale;uint64_t hit=k&~held;held=k; + bool ok=down(hit,eadk_key_ok)||down(hit,eadk_key_exe),back=down(hit,eadk_key_back); + int dx=down(hit,eadk_key_right)-down(hit,eadk_key_left),dy=down(hit,eadk_key_down)-down(hit,eadk_key_up),before=screen; + if(hit)dirty=true; + if(screen!=S_SAVE_ERROR&&(down(k,eadk_key_home)||down(k,eadk_key_on_off))){ + if(save())break; + screen=S_SAVE_ERROR;sel=0;stale|=k;ok=back=false;dx=dy=0;dirty=true; + } + pad[0]=pad[1]=0; + for(int i=0;i<10;i++)pad[i/5]|=down(k,KEYS[i/5][i%5])<<(i%5); + if(cpu&&(down(k,eadk_key_ok)||down(k,eadk_key_exe)))pad[0]|=B_FIRE; + for(int p=0;p<2;p++){tap[p]=pad[p]&~previous_pad[p];previous_pad[p]=pad[p];queued[p]|=tap[p];} + switch(screen){ case S_MENU: case S_RULES: - if (dx) cpu = (cpu + dx) & 3, save(); - if (screen == S_RULES) { - if (ok) new_match(); - else if (back) screen = S_MENU; - } else if (dy) game = (game + dy + NG) % NG; - else if (ok) screen = S_RULES, save(); - else if (back) back_to = S_MENU, screen = S_ASK, sel = 0; + if(dx){cpu=(cpu+dx+4)%4;save();} + if(screen==S_RULES){if(ok)new_match();else if(back)screen=S_MENU;} + else if(dy)game=(game+dy+NG)%NG; + else if(down(hit,eadk_key_seven))game=page_game(-1); + else if(down(hit,eadk_key_nine))game=page_game(1); + else if(ok){screen=S_RULES;save();} + else if(back){back_to=S_MENU;screen=S_ASK;sel=0;} break; case S_PLAY: - if (back) { - screen = S_PAUSE, sel = 0; - break; - } - STEP_[game](); - if (phase == 1 && ago(phase_t) > 1500) { - phase = 0; - if (score[0] < TARGET[game] && score[1] < TARGET[game]) START[game](); - else phase = 2, screen = S_OVER, sel = 0, sv.wins[game][cpu > 0][score[1] > score[0]]++, save(); + if(back){screen=S_PAUSE;sel=0;break;} + /* A fixed eight-millisecond simulation, independent of LCD frame rate. + * A tap is queued until a tick consumes it; held keys keep moving. */ + accum+=elapsed>160?160:elapsed; + for(int steps=0;accum>=8&&steps<20&&screen==S_PLAY;steps++){ + ms=8;now+=8;tap[0]=queued[0];tap[1]=queued[1];queued[0]=queued[1]=0; + match_step();accum-=8; } break; - default: /* the cards: Paused, the match over, Quit game? */ - sel = (sel + dy) & (screen == S_PAUSE ? 3 : 1); - if (screen == S_ASK) { - if (back || (ok && !sel)) screen = back_to; - else quit = ok; - } else if (back && screen == S_PAUSE) { - screen = S_PLAY; - } else if (ok) { /* Resume, Restart, Other games, Quit game; Rematch, Other games */ - int a = screen == S_PAUSE ? sel : sel ? 2 : 1; - if (a == 1) new_match(); - else screen = a ? a == 2 ? S_MENU : S_ASK : S_PLAY, back_to = S_PAUSE, sel = 0; + case S_SAVE_ERROR: + if(dy)sel^=1; + if(back||(ok&&sel))quit=true;else if(ok&&save())quit=true; + break; + default: + sel=(sel+dy)&(screen==S_PAUSE?3:1); + if(screen==S_ASK){ + if(back||(ok&&!sel))screen=back_to; + else if(ok){if(save())quit=true;else screen=S_SAVE_ERROR,sel=0;} + }else if(back&&screen==S_PAUSE)screen=S_PLAY; + else if(ok){ + int a=screen==S_PAUSE?sel:sel?2:1; + if(a==1)new_match(); + else{screen=a?(a==2?S_MENU:S_ASK):S_PLAY;back_to=S_PAUSE;sel=0;} } + break; + } + if(screen!=S_PLAY)accum=0,queued[0]=queued[1]=0; + if(before!=screen){ + dirty=true;accum=0;queued[0]=queued[1]=0;previous_pad[0]=previous_pad[1]=0;stale|=k; + last=(uint32_t)eadk_timing_millis(); + } + if(dirty||(screen==S_PLAY&&t-draw_at>=30)){ + eadk_display_wait_for_vblank();gfx_render(scene,0,0,SCREEN_H);draw_at=t;dirty=false; } - eadk_display_wait_for_vblank(); - gfx_render(scene, 0, 0, SCREEN_H); + eadk_timing_msleep(2); } - save(); - gfx_buf = their_strip; + gfx_buf=their_strip; return np_app_end(); } diff --git a/games/twoplayer/src/party.h b/games/twoplayer/src/party.h new file mode 100644 index 00000000..c917cb4e --- /dev/null +++ b/games/twoplayer/src/party.h @@ -0,0 +1,492 @@ +/* Additional games share one small working state and the original game's + * colours, shapes, input, points and CPU levels. Included once by main.c. */ +#ifndef TWOPLAYER_PARTY_H +#define TWOPLAYER_PARTY_H +typedef struct { float x,y,vx,vy; uint32_t ready,last; int aux; } PartyPlayer; +typedef struct { float x,y,vx,vy; int16_t life; int8_t own,kind; } PartyShot; +static struct { + PartyPlayer p[2]; PartyShot shot[12]; + float x,y,vx,vy,value; + uint32_t started,at,next,signal; + uint16_t mark[2]; uint8_t flags[2],seq[8],index[2],n; +} party; +static float sq(float a) { return a*a; } +static float distance2(float x,float y,float a,float b) { return sq(x-a)+sq(y-b); } +static bool reached(uint32_t t) { return (int32_t)(now-t)>=0; } +static float seconds(void) { return ms*.001f; } +static void party_start(void) { + memset(&party,0,sizeof party);party.started=party.at=now;party.p[0].x=52;party.p[1].x=268; + for(int p=0;p<2;p++) party.p[p].y=190,party.mark[p]=3; +} +static void bot_to(float x,float y,float margin) { + pad[1]=(party.p[1].xx+margin?B_LEFT:0)| + (party.p[1].yy+margin?B_UP:0); + tap[1]=0; +} +static void actor2(int x,int feet,int p) { + disc(x+2,feet+1,10,HEX(0x232944));box(x-7,feet-19,14,19,5,team[p]); + disc(x,feet-25,7,light[p]);disc(x+(p?-2:2),feet-26,1,INK); + box(x-8,feet-3,6,5,2,dark[p]);box(x+2,feet-3,6,5,2,dark[p]); +} +static void arena(color_t bg) { + gfx_fill(0,22,320,218,INK);box(6,28,308,206,12,bg); +} +static void centre_text(int y,const char*s,color_t c) { say(&np_font_body,160,y,s,c); } +static void time_text(int y,uint32_t elapsed,uint32_t duration) { + char s[16];char*e=num(s,elapsed=100){pull[p]=1;party.p[p].last=now;} + party.value+=(pull[1]-pull[0])*7.5f; + if(party.value>0)party.value=clampf(party.value-seconds()*3,0,100); + else party.value=clampf(party.value+seconds()*3,-100,0); + if(party.value<-67)point(0);else if(party.value>67)point(1); + else if(ago(party.started)>30000)point(party.value<-1?0:party.value>1?1:2); +} +static void tug_paint(void) { + arena(HEX(0x262D52));centre_text(56,T("Tug of War"),WHITE);time_text(79,ago(party.started),30000); + gfx_fill(91,101,2,100,team[0]);gfx_fill(227,101,2,100,team[1]); + int x=160+(int)party.value; + for(int p=0;p<2;p++){actor2(x+(p?85:-85),182,p);gfx_fill(x+(p?12:-80),141,68,4,HEX(0xC5CBE4));} + box(x-6,131,12,19,3,GOLD);centre_text(219,T("Tap, release, pull!"),WHITE); +} + +/* ------------------------------------------------------------ Football */ +static void football_start(void) { + party_start();party.p[0].x=66;party.p[1].x=254;party.p[0].y=party.p[1].y=131; + party.x=160;party.y=131; +} +static void football_step(void) { + if(phase)return; + float dt=seconds(); + if(cpu){bot_input();if(bot_due()){ + float target=party.x+15,ty=party.y; + if(party.vx>130&&party.x>190)target=282,ty=clampf(party.y+party.vy*.15f,60,202); + bot_to(clampf(target,20,300),ty,3); + if(distance2(party.x,party.y,party.p[1].x,party.p[1].y)vx=dx*speed;a->vy=dy*speed;a->x=clampf(a->x+a->vx*dt,20,300);a->y=clampf(a->y+a->vy*dt,43,220); + float x=party.x-a->x,y=party.y-a->y,d=len(x,y); + if(d<17){ + if(d<.1f){x=p?-1:1;y=0;d=1;} + x/=d;y/=d; + party.x=a->x+x*17;party.y=a->y+y*17; + float v=(party.vx-a->vx)*x+(party.vy-a->vy)*y; + if(v<0)party.vx-=1.5f*v*x,party.vy-=1.5f*v*y; + party.vx+=a->vx*.13f;party.vy+=a->vy*.13f; + } + if((tap[p]&B_FIRE)&&reached(a->ready)){a->ready=now+(is_cpu(p)?1100-cpu*180:350); + if(d<30){float gx=p?5:315,gy=131; + if(is_cpu(p))gy=131+(cpu==1?rn(70)-35:(party.p[0].y>=131?-19:19)+rn(cpu==2?18:6)-(cpu==2?9:3)); + float vx=gx-party.x,vy=gy-party.y,n=len(vx,vy); + party.vx=vx/n*260;party.vy=vy/n*260;}} + } + party.x+=party.vx*dt;party.y+=party.vy*dt;party.vx*=1-dt*.55f;party.vy*=1-dt*.55f; + float v=len(party.vx,party.vy);if(v>310)party.vx*=310/v,party.vy*=310/v; + if(party.y<39)party.y=39,party.vy=__builtin_fabsf(party.vy)*.85f; + if(party.y>223)party.y=223,party.vy=-__builtin_fabsf(party.vy)*.85f; + if(party.y>106&&party.y<156){if(party.x<10)point(1);if(party.x>310)point(0);} + else{if(party.x<18)party.x=18,party.vx=__builtin_fabsf(party.vx)*.85f;if(party.x>302)party.x=302,party.vx=-__builtin_fabsf(party.vx)*.85f;} + if(ago(party.started)>45000)point(2); +} +static void football_paint(void) { + arena(HEX(0x254E46));gfx_rrect_outline(14,35,292,194,8,2,HEX(0x9CC4AE),256); + gfx_fill(159,35,2,194,HEX(0x9CC4AE));gfx_rrect_outline(127,99,66,66,33,2,HEX(0x9CC4AE),256); + gfx_fill(4,103,12,56,dark[0]);gfx_fill(304,103,12,56,dark[1]); + for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y;disc(x+1,y+2,11,HEX(0x18352F));disc(x,y,11,team[p]);disc(x-2,y-3,4,light[p]);} + disc(party.x+1,party.y+2,7,HEX(0x18352F));disc(party.x,party.y,7,WHITE);disc(party.x,party.y,3,INK); + time_text(51,ago(party.started),45000); +} + +/* ------------------------------------------------------------ Volley Ball */ +static void volley_start(void) { + party_start();for(int p=0;p<2;p++)party.p[p].x=75+p*170,party.p[p].y=208; + int serve=winner<2?1-winner:rn(2);party.x=serve?242:78;party.y=75;party.vx=serve?-60:60; +} +static void volley_step(void) { + if(phase)return; + float dt=seconds(); + if(cpu){bot_input();if(bot_due()){ + /* Get behind the ball to return it over the net, with time to react. */ + float target=party.x>152?party.x+14+party.vx*(cpu==1?0:cpu==2?.06f:.12f):240; + bot_to(clampf(target,180,292),208,5);pad[1]&=B_LEFT|B_RIGHT; + if(party.x>161&&party.y>120&&party.y<183&&__builtin_fabsf(party.x-party.p[1].x)<30)tap[1]|=B_FIRE; + bot.pad=pad[1]; + }} + for(int p=0;p<2;p++){ + PartyPlayer*a=&party.p[p];a->x=clampf(a->x+dirx(p)*(is_cpu(p)?60+cpu*15:125)*dt,p?178:20,p?300:142); + if((tap[p]&(B_UP|B_FIRE))&&a->y>=207)a->vy=-232; + a->vy+=570*dt;a->y+=a->vy*dt;if(a->y>208)a->y=208,a->vy=0; + float dx=party.x-a->x,dy=party.y-(a->y-12),d=len(dx,dy); + if(d<24&&d>.01f){party.x=a->x+dx/d*24;party.y=a->y-12+dy/d*24;float v=party.vx*dx/d+(party.vy-a->vy)*dy/d; + if(v<0){party.vx-=1.75f*v*dx/d;party.vy-=1.75f*v*dy/d;party.vy-=30;}} + } + float oldx=party.x,oldy=party.y;party.vy+=360*dt;party.x+=party.vx*dt;party.y+=party.vy*dt; + party.vx=clampf(party.vx,-255,255);party.vy=clampf(party.vy,-285,360); + if(party.x<18)party.x=18,party.vx=__builtin_fabsf(party.vx); + if(party.x>302)party.x=302,party.vx=-__builtin_fabsf(party.vx); + if(party.y<39)party.y=39,party.vy=__builtin_fabsf(party.vy); + if(party.x>149&&party.x<171){ + if(oldy<=136&&party.y>=136){party.y=136;party.vy=-__builtin_fabsf(party.vy)*.85f;} + else if(party.y>136){party.x=oldx<160?149:171;party.vx=oldx<160?-__builtin_fabsf(party.vx):__builtin_fabsf(party.vx);} + } + if(party.y>=211)point(party.x<160?1:0); +} +static void volley_paint(void) { + arena(HEX(0x27385D));gfx_fill(12,221,296,9,HEX(0xB6BFE0));gfx_fill(157,145,6,76,WHITE);disc(160,145,4,WHITE); + for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y;disc(x+1,y+3,15,dark[p]);disc(x,y-3,15,team[p]);gfx_fill(x-15,y+1,30,18,team[p]);disc(x+(p?-4:4),y-7,2,WHITE);} + disc(party.x+1,party.y+2,9,INK);disc(party.x,party.y,9,GOLD);disc(party.x-3,party.y-3,3,WHITE); +} + +/* ------------------------------------------------------------ Archery */ +#define ARROW_GRAVITY 240 +#define BOW_Y 190 +static float archery_power(unsigned held) { return 140+clampi(held,0,1000)*.14f; } +static void archery_plan(void) { + PartyPlayer*a=&party.p[1];int angle=6+rn(5),spread=cpu==1?260:cpu==2?180:110; + float power=__builtin_sqrtf(ARROW_GRAVITY*223.0f*127*127/(2*cos64(angle)*sin64(angle))); + a->vx=angle;a->aux=clampi((int)((power-140)/.14f)+rn(spread*2+1)-spread,180,1000); +} +static void archery_start(void) { + party_start();party.p[0].x=40;party.p[1].x=280; + for(int p=0;p<2;p++){party.p[p].vx=8;party.p[p].y=0;} + if(cpu){archery_plan();party.p[1].ready=now+(cpu==1?1600:cpu==2?1300:1000);} +} +static void archery_step(void) { + if(phase)return; + float dt=seconds(); + if(cpu){ + PartyPlayer*a=&party.p[1];pad[1]=tap[1]=0; + if(reached(a->ready)&&(!party.flags[1]||ago(a->last)<(uint32_t)a->aux))pad[1]=B_FIRE; + } + for(int p=0;p<2;p++){ + PartyPlayer*a=&party.p[p];a->vx=clampf(a->vx-diry(p)*dt*6,2,14); + a->y=clampf(a->y-dt,0,1); /* short hit flash, independent of the reload timer */ + if((pad[p]&B_FIRE)&&reached(a->ready)&&!party.flags[p])party.flags[p]=1,a->last=now; + if(party.flags[p]&&!(pad[p]&B_FIRE)){ + int slot=shot_slot(),angle=(int)a->vx;float power=archery_power(ago(a->last)); + if(slot>=0)party.shot[slot]=(PartyShot){a->x+(p?-17:17),BOW_Y, + (p?-1:1)*cos64(angle)*power/127,-sin64(angle)*power/127,4000,(int8_t)p,0}; + a->ready=now+(is_cpu(p)?(cpu==1?2000:cpu==2?1650:1350)+rn(400):600); + party.flags[p]=0; + if(is_cpu(p))archery_plan(); + } + } + for(int i=0;i<12;i++){ + PartyShot*s=&party.shot[i];if(s->life<=0)continue; + s->life-=ms;s->vy+=ARROW_GRAVITY*dt;s->x+=s->vx*dt;s->y+=s->vy*dt; + if(s->x<-12||s->x>332||s->y>208)s->life=0; + int p=1-s->own; + if(s->life>0&&__builtin_fabsf(s->x-party.p[p].x)<13&&s->y>165&&s->y<208){ + s->life=0;if(party.mark[p])party.mark[p]--;party.p[p].y=.25f; + } + } + tie_dead();if(ago(party.started)>30000)point(party.mark[0]==party.mark[1]?2:party.mark[0]>party.mark[1]?0:1); +} +/* Small integer line segments keep bows, fletching and arrowheads readable + * without a texture atlas. Only pixels in the current LCD strip are drawn. */ +static void archery_line(int x,int y,int xx,int yy,color_t c) { + int dx=xx-x,dy=yy-y,sx=dx<0?-1:1,sy=dy<0?-1:1; + if(dx<0)dx=-dx; + if(dy<0)dy=-dy; + int error=dx-dy; + for(;;){ + if(y>=gfx_y0&&y-dy)error-=dy,x+=sx;if(ex,d=p?-1:1,angle=(int)a->vx,ax=x+d*17; + float power=archery_power(party.flags[p]?ago(a->last):650); + float vx=d*cos64(angle)*power/127,vy=-sin64(angle)*power/127; + for(int j=1;j<36;j++){ + float t=j*.06f,xx=ax+vx*t,yy=BOW_Y+vy*t+ARROW_GRAVITY*t*t*.5f; + if(xx<17||xx>303||yy>208)break; + if(yy>98)disc(xx,yy,1,gfx_mix(INK,light[p],24)); + } + actor2(x,206,p);if(a->y>0)disc(x,181,8,WHITE); + archery_line(x+d*4,190,ax,BOW_Y,light[p]);disc(ax,BOW_Y,2,light[p]); + /* Draw the curved bow and its taut string in the actual aiming direction. */ + int cx=cos64(angle),sn=sin64(angle),ux=d*cx,uy=-sn,px=d*sn,py=cx; + int lastx=ax-px*15/127,lasty=BOW_Y-py*15/127; + for(int j=-2;j<=2;j++){ + int side=j*7,bulge=(4-j*j)*2; + int xx=ax+(px*side+ux*bulge)/127,yy=BOW_Y+(py*side+uy*bulge)/127; + archery_line(lastx,lasty,xx,yy,GOLD);lastx=xx;lasty=yy; + } + archery_line(ax-px*14/127,BOW_Y-py*14/127,ax+px*14/127,BOW_Y+py*14/127,light[p]); + if(!party.flags[p]||now%180<130)archery_arrow(ax,BOW_Y,vx,vy,team[p]); + hearts(26+p*240,48,p,party.mark[p]); + int bx=p?226:18;box(bx,73,76,8,4,INK); + int charge=party.flags[p]?clampi(ago(a->last),0,1000)*72/1000:0; + if(charge)box(bx+2,75,charge,4,2,GOLD); + gfx_text_center(&np_font_small,bx+38,68,T("Power"),light[p],256); + char text[16];char*e=num(text,(unsigned)(angle*360/64)); + *e++=' ';*e++='d';*e++='e';*e++='g';*e=0; + gfx_text_center(&np_font_small,bx+38,96,text,WHITE,256); + } + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0)archery_arrow(s->x,s->y,s->vx,s->vy,light[s->own]);} + /* HUD is painted last, so a high arrow cannot obscure its text. */ + time_text(51,ago(party.started),30000); + centre_text(226,T("Hold OK / EXE, release to shoot"),WHITE); +} + +/* ------------------------------------------------------------ Dodge Ball */ +static void dodge_start(void) {party_start();party.p[0].x=64;party.p[1].x=256;party.p[0].y=party.p[1].y=130;} +static void dodge_step(void) { + if(phase)return; + float dt=seconds(); + if(cpu){bot_input();if(bot_due()){ + float ty=party.p[0].y,tx=254; + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0&&!s->own&&s->vx>0&&s->x>135&&__builtin_fabsf(s->y-party.p[1].y)<(cpu==1?15:28))ty=s->yx=clampf(a->x+dx*speed*dt,p?178:19,p?301:142);a->y=clampf(a->y+dy*speed*dt,44,218); + if((tap[p]&B_FIRE)&&reached(a->ready)){ + int slot=shot_slot();float x=party.p[1-p].x-a->x,y=party.p[1-p].y-a->y;if(is_cpu(p))y+=rn(cpu==1?101:cpu==2?61:33)-(cpu==1?50:cpu==2?30:16);float d=len(x,y); + if(slot>=0&&d>1)party.shot[slot]=(PartyShot){a->x,a->y,x/d*218,y/d*218,3500,(int8_t)p,0}; + a->ready=now+(is_cpu(p)?1950-cpu*300:520); + } + } + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life<=0)continue;s->life-=ms;s->x+=s->vx*dt;s->y+=s->vy*dt; + if(s->y<37)s->y=37,s->vy=__builtin_fabsf(s->vy); + if(s->y>225)s->y=225,s->vy=-__builtin_fabsf(s->vy); + if(s->x<8||s->x>312)s->life=0; + int p=1-s->own;if(s->life>0&&distance2(s->x,s->y,party.p[p].x,party.p[p].y)life=0; + } + } + tie_dead();if(ago(party.started)>30000)point(party.mark[0]==party.mark[1]?2:party.mark[0]>party.mark[1]?0:1); +} +static void dodge_paint(void) { + arena(HEX(0x293658));for(int y=33;y<230;y+=14)gfx_fill(159,y,2,8,HEX(0x7482AF)); + for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y; + if(reached(party.p[p].last)||now%160<100){disc(x+1,y+2,12,dark[p]);disc(x,y,11,team[p]);disc(x-3,y-3,4,light[p]);} + hearts(26+p*240,40,p,party.mark[p]); + } + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0){disc(s->x,s->y,5,team[s->own]);disc(s->x-1,s->y-1,2,WHITE);}} + time_text(45,ago(party.started),30000); +} + +/* ------------------------------------------------------------ Meteor Run */ +static void meteors_start(void) {party_start();party.p[0].x=party.p[1].x=80;party.next=now+650;} +static void meteors_step(void) { + if(phase)return; + float dt=seconds(); + if(cpu){bot_input();if(bot_due()){float best=80;int danger[3]={0}; + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0&&s->y>85&&s->y<226){for(int k=0;k<3;k++)if(__builtin_fabsf(s->x-(30+50*k))<29)danger[k]+=s->y>150?3:1;}} + int choice=0;for(int k=1;k<3;k++)if(danger[k]=0)party.shot[slot]=(PartyShot){25+rn(111),22,0,90+clampi(ago(party.started)/180,0,130),1,0,(int8_t)(8+rn(5))}; + party.next=now+(ago(party.started)>15000?450:650); + } + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life<=0)continue;s->y+=s->vy*dt;if(s->y>250)s->life=0; + for(int p=0;p<2;p++)if(party.mark[p]&&distance2(party.p[p].x,208,s->x,s->y)kind+9))party.mark[p]=0; + } + tie_dead();if(ago(party.started)>30000)point(2); +} +static void meteors_paint(void) { + arena(HEX(0x1C2847));gfx_fill(158,30,4,200,HEX(0x56618C)); + for(int p=0;p<2;p++){ + for(int j=0;j<9;j++)disc(14+p*160+(j*37)%140,45+(j*29)%145,1,HEX(0x8592B7)); + if(party.mark[p]){int x=p*160+(int)party.p[p].x;box(x-9,200,18,14,5,team[p]);disc(x,199,6,light[p]);} + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0){int x=p*160+(int)s->x,y=s->y;box(x-3,y-18,6,18,3,HEX(0xBA714A));disc(x,y,s->kind,HEX(0x757F9D));disc(x-3,y-3,3,HEX(0xA3ACC5));}} + } + time_text(52,ago(party.started),30000); +} + +/* ------------------------------------------------------------ Rocket Race */ +static void rockets_start(void) {party_start();for(int p=0;p<2;p++)party.p[p].y=125;party.next=now+900;} +static void rockets_step(void) { + if(phase)return; + float dt=seconds(); + if(cpu){bot_input();if(bot_due()){float target=125,closest=1000; + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0&&s->x>4&&s->xx,target=s->y;} + if(party.p[1].y>target+(cpu==1?15:cpu==2?7:1)&&party.p[1].vy>-45&&ago(party.p[1].last)>150)tap[1]|=B_FIRE; + bot.pad=pad[1];}} + for(int p=0;p<2;p++)if(party.mark[p]){ + PartyPlayer*a=&party.p[p];if((tap[p]&(B_UP|B_FIRE))&&ago(a->last)>=100)a->vy=-123,a->last=now; + a->vy=clampf(a->vy+225*dt,-160,190);a->y+=a->vy*dt;if(a->y<40||a->y>221)party.mark[p]=0; + } + if(reached(party.next)){int slot=shot_slot();if(slot>=0)party.shot[slot]=(PartyShot){172,88+rn(88),65+clampi(ago(party.started)/1000,0,24),0,1,0,0};party.next=now+1700;} + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life<=0)continue;s->x-=s->vx*dt;if(s->x<-22)s->life=0; + if(s->x<66&&s->x+18>46)for(int p=0;p<2;p++)if(party.p[p].yy-34||party.p[p].y>s->y+34)party.mark[p]=0; + } + tie_dead();if(ago(party.started)>30000)point(2); +} +static void rockets_paint(void) { + arena(HEX(0x1B2441));gfx_fill(158,30,4,200,HEX(0x56618C)); + for(int p=0;p<2;p++){ + for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0){ + int left=clampi((int)s->x,12,148),right=clampi((int)s->x+18,12,148),g=s->y; + if(right>left){int x=p*160+left;box(x,30,right-left,g-73,4,HEX(0x56618C));box(x,g+43,right-left,230-g-43,4,HEX(0x56618C));} + }} + if(party.mark[p]){ + int x=56+p*160,y=party.p[p].y;box(x-9,y-7,18,14,6,team[p]);disc(x+4,y-2,3,WHITE); + int thrust=ago(party.p[p].last)<180?12:5; + gfx_fill(x-8-thrust,y-3,thrust,6,GOLD); + } + } + time_text(52,ago(party.started),30000); +} + +/* ------------------------------------------------------------ Sumo */ +static void sumo_start(void) {party_start();for(int p=0;p<2;p++)party.p[p].x=115+p*90,party.p[p].y=133;} +static float ring_radius(void) {return 96-clampf(((float)ago(party.started)-6000)*.003f,0,57);} +static void sumo_step(void) { + if(phase)return; + float dt=seconds(),radius=ring_radius(); + if(cpu){bot_input();if(bot_due()){float x=party.p[0].x,y=party.p[0].y; + if(distance2(party.p[1].x,party.p[1].y,160,133)>sq(radius-18))x=160,y=133; + bot_to(x,y,2);if(distance2(x,y,party.p[1].x,party.p[1].y)0)dx/=n,dy/=n; + if((tap[p]&B_FIRE)&&reached(a->ready)){ + if(n==0){dx=party.p[1-p].x-a->x;dy=party.p[1-p].y-a->y;n=len(dx,dy);if(n>0)dx/=n,dy/=n;} + a->vx+=dx*225;a->vy+=dy*225;a->ready=now+(is_cpu(p)?2200-cpu*300:1100); + } + a->vx+=dx*500*dt;a->vy+=dy*500*dt;float friction=1-dt*4.2f;a->vx*=friction;a->vy*=friction; + a->x+=a->vx*dt;a->y+=a->vy*dt; + } + PartyPlayer*a=&party.p[0],*b=&party.p[1];float dx=b->x-a->x,dy=b->y-a->y,n=len(dx,dy); + if(n<27){if(n<.01f)dx=1,dy=0,n=1;dx/=n;dy/=n;float shift=(27-n)*.5f;a->x-=dx*shift;a->y-=dy*shift;b->x+=dx*shift;b->y+=dy*shift; + float v=(b->vx-a->vx)*dx+(b->vy-a->vy)*dy;if(v<0){float impulse=-v*.9f+12;a->vx-=dx*impulse;a->vy-=dy*impulse;b->vx+=dx*impulse;b->vy+=dy*impulse;}} + for(int p=0;p<2;p++)if(distance2(party.p[p].x,party.p[p].y,160,133)>sq(radius+2))party.mark[p]=0; + tie_dead();if(ago(party.started)>30000)point(2); +} +static void sumo_paint(void) { + arena(HEX(0x202745));int r=ring_radius();disc(160,135,r+4,HEX(0x10162D));disc(160,133,r+3,GOLD);disc(160,133,r,HEX(0xD0D3DE));disc(160,133,4,HEX(0x8791AD)); + for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y;disc(x+1,y+3,14,HEX(0x8992AA));disc(x,y,13,team[p]);disc(x-3,y-4,5,light[p]);if(reached(party.p[p].ready))disc(x+4,y+3,3,WHITE);} +} + +/* ------------------------------------------------------------ Fishing */ +static void fishing_start(void) { + party_start();party.p[0].x=64;party.p[1].x=256; + for(int p=0;p<2;p++)party.p[p].y=83,party.p[p].aux=-1; + for(int i=0;i<7;i++)party.shot[i]=(PartyShot){25+rn(270),115+rn(90),(i&1?1:-1)*(28+rn(25)),0,1,-1,0}; +} +static void fishing_step(void) { + if(phase)return; + float dt=seconds(); + if(cpu){bot_input();if(bot_due()){ + PartyPlayer*a=&party.p[1];float best=1e6f,target=250;int choice=0; + for(int i=0;i<7;i++){PartyShot*s=&party.shot[i];if(s->own>=0)continue;float d=__builtin_fabsf(s->x-a->x)+(s->y-80)*.2f;if(dx+s->vx*(s->y-a->y)/100,18,302),choice=i;} + bot_to(target,190,5);pad[1]&=B_LEFT|B_RIGHT; + if(a->aux<0&&a->yx-party.shot[choice].x)<(cpu==1?14:cpu==2?23:31))pad[1]|=B_FIRE; + bot.pad=pad[1]; + }} + for(int i=0;i<7;i++){PartyShot*s=&party.shot[i];if(s->own<0){s->x+=s->vx*dt;if(s->x<21)s->x=21,s->vx=__builtin_fabsf(s->vx);if(s->x>299)s->x=299,s->vx=-__builtin_fabsf(s->vx);}} + bool caught[2]={false,false}; + for(int p=0;p<2;p++){ + PartyPlayer*a=&party.p[p];a->x=clampf(a->x+dirx(p)*(is_cpu(p)?60+cpu*15:115)*dt,18,302);bool lower=(pad[p]&B_FIRE)!=0; + a->y=clampf(a->y+(lower?105:-145)*dt,83,219); + if(a->aux>=0){PartyShot*s=&party.shot[a->aux];s->x=a->x;s->y=a->y+6;if(a->y<=83)caught[p]=true;} + } + for(int i=0;i<7;i++)if(party.shot[i].own<0){ + PartyShot*s=&party.shot[i];float d[2];for(int p=0;p<2;p++)d[p]=party.p[p].aux<0?distance2(party.p[p].x,party.p[p].y,s->x,s->y):1e6f; + if(d[0]<144&&d[1]<144&&__builtin_fabsf(d[0]-d[1])<1){point(2);return;} + int p=d[0]own=p; + } + if(caught[0]||caught[1])point(caught[0]&&caught[1]?2:caught[0]?0:1); + if(ago(party.started)>30000)point(2); +} +static void fishing_paint(void) { + arena(HEX(0x283D67));gfx_fill(12,82,296,147,HEX(0x244F75));gfx_fill(12,79,296,3,HEX(0x7FA6C3)); + for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y;actor2(x,77,p);gfx_fill(x,82,1,y-82,light[p]);gfx_fill(x,y,7,2,team[p]);gfx_fill(x+6,y-5,2,7,team[p]);} + for(int i=0;i<7;i++){PartyShot*s=&party.shot[i];int x=s->x,y=s->y;box(x-8,y-4,16,9,4,i&1?GOLD:HEX(0xA4D3DE));gfx_fill(x+(s->vx>0?-11:8),y-5,4,11,HEX(0x7B9DAF));disc(x+(s->vx>0?4:-4),y-1,1,INK);} + for(int p=0;p<2;p++)if(!is_cpu(p)) + gfx_text_center(&np_font_small,80+p*160,47,party.p[p].aux>=0?T("Release!"):p?T("Hold EXE"):T("Hold OK"),GOLD,256); + time_text(48,ago(party.started),30000); +} + +/* ------------------------------------------------------------ Memory Duel */ +static const uint8_t MEMORY_BIT[4]={B_LEFT,B_UP,B_DOWN,B_RIGHT}; +static void memory_start(void) { + party_start();party.n=(uint8_t)(3+clampi(score[0]+score[1],0,4));for(int i=0;i15000&&reached(party.signal))point(2); +} +static void memory_arrow(int x,int y,int d,color_t c) { + static const int8_t dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};int xx=x+dx[d]*20,yy=y+dy[d]*20; + if(dx[d]){gfx_fill(xx-7,yy-2,14,5,c);for(int i=0;i<7;i++)gfx_fill(xx+(dx[d]>0?7-i:-7+i),yy-i,1,2*i+1,c);} + else{gfx_fill(xx-2,yy-7,5,14,c);for(int i=0;i<7;i++)gfx_fill(xx-i,yy+(dy[d]>0?7-i:-7+i),2*i+1,1,c);} +} +static void memory_paint(void) { + arena(HEX(0x262D52));bool replay=reached(party.signal);centre_text(54,replay?T("Repeat the arrows!"):T("Watch the arrows"),WHITE); + int elapsed=ago(party.started),shown=elapsed<700?-1:(elapsed-700)/650; + for(int p=0;p<2;p++){ + int x=80+p*160;box(x-61,76,122,123,14,INK); + for(int d=0;d<4;d++)memory_arrow(x,137,d,!replay&&shown=0&&(elapsed-700)%650<470&&party.seq[shown]==d?GOLD:team[p]); + for(int i=0;i +enum { eadk_key_left=0,eadk_key_up=1,eadk_key_down=2,eadk_key_right=3, + eadk_key_ok=4,eadk_key_back=5,eadk_key_home=6,eadk_key_on_off=8, + eadk_key_shift=12,eadk_key_seven=30,eadk_key_nine=32,eadk_key_multiplication=39, + eadk_key_three=44,eadk_key_minus=46,eadk_key_ans=51,eadk_key_exe=52 }; +uint64_t eadk_timing_millis(void); +uint32_t eadk_random(void); +uint64_t eadk_keyboard_scan(void); +void eadk_display_wait_for_vblank(void); +void eadk_timing_msleep(uint32_t); +#endif diff --git a/games/twoplayer/tests/test.c b/games/twoplayer/tests/test.c new file mode 100644 index 00000000..0bafeefb --- /dev/null +++ b/games/twoplayer/tests/test.c @@ -0,0 +1,136 @@ +#include +#include +#include +#include +#include +#define NP_MODULE 1 +#define main twoplayer_appmain +#include "../src/main.c" +#undef main + +static uint16_t pixels[320*240]; +static uint8_t saved[SAVE_BYTES]; +static unsigned saves; +uint64_t eadk_timing_millis(void){return now;} +uint32_t eadk_random(void){return 1;} +uint64_t eadk_keyboard_scan(void){return 0;} +void eadk_display_wait_for_vblank(void){} +void eadk_timing_msleep(uint32_t n){(void)n;} +void*np_alloc(uint32_t n){return malloc(n);} +bool np_file_write(const char*name,const void*d,uint32_t n){assert(!strcmp(name,SAVE_NAME)&&n==SAVE_BYTES);memcpy(saved,d,n);saves++;return true;} +const uint8_t*np_file_read(const char*name,uint32_t*n){*n=0;return NULL;} +void np_push(int x,int y,int w,int h,const color_t*d){assert(x>=0&&y>=0&&x+w<=320&&y+h<=240);for(int i=0;i>11)*255/31,((c>>5)&63)*255/63,(c&31)*255/31};fwrite(p,1,3,f);}fclose(f);} +static void init(int g,int level,unsigned random){ + game=g;cpu=level;seed=random?random:1;now=1000;ms=8;pad[0]=pad[1]=tap[0]=tap[1]=0; + new_match(); +} +static void tick(unsigned a,unsigned b){pad[0]=tap[0]=a;pad[1]=tap[1]=b;now+=8;ms=8;match_step();} +static void step(unsigned duration,unsigned a,unsigned b){for(unsigned i=0;i>8);} + uint32_t crc=save_crc(v2,132);for(int i=0;i<4;i++)v2[132+i]=(uint8_t)(crc>>(i*8)); + assert(save_decode(v2,sizeof v2)&&sv.game==MEMORY); + for(int g=0;g>(i*8)); + assert(save_decode(v2,sizeof v2)&&sv.game==PONG); + game=MEMORY;cpu=3;uint8_t bytes[SAVE_BYTES];save_encode(bytes);assert(save_decode(bytes,sizeof bytes));assert(sv.game==MEMORY&&sv.cpu==3); + for(unsigned i=0;i0); + init(FOOTBALL,0,1);party.x=party.p[0].x+14;party.y=party.p[0].y;party.vx=-100;tick(0,0);assert(party.vx>0); + init(VOLLEY,0,1);party.x=35;party.y=212;tick(0,0);assert(winner==1&&phase==1); + init(VOLLEY,0,1);party.x=160;party.y=135;party.vy=180;tick(0,0);assert(!phase&&party.vy<0); + init(ARCHERY,0,1);tick(B_FIRE,0);step(320,B_FIRE,0);tick(0,0);assert(party.shot[0].life>0&&party.shot[0].vx>0&&party.shot[0].vy<0); + init(ARCHERY,0,1);party.mark[1]=1;party.shot[0]=(PartyShot){party.p[1].x,185,0,0,1000,0,0};tick(0,0);assert(winner==0&&phase==1); + init(DODGE,0,1);party.mark[0]=party.mark[1]=1;for(int p=0;p<2;p++)party.shot[p]=(PartyShot){party.p[p].x,party.p[p].y,0,0,1000,1-p,0};tick(0,0);assert(winner==2); + init(METEORS,0,1);party.shot[0]=(PartyShot){80,207,0,0,1,0,10};tick(0,0);assert(winner==2&&party.mark[0]==0&&party.mark[1]==0); + init(ROCKETS,0,1);party.p[0].y=222;party.p[1].y=120;tick(0,0);assert(winner==1); + init(SUMO,0,1);party.p[0].x=10;tick(0,0);assert(winner==1); + init(SUMO,0,1);now+=20000;assert(ring_radius()<55);tick(B_FIRE,0);assert(party.p[0].ready>now); + init(FISHING,0,1);party.p[0].y=160;step(80,B_FIRE,0);assert(party.p[0].y>160);step(80,0,0);assert(party.p[0].y<160+8); + init(FISHING,0,1);party.p[0].x=party.p[1].x=100;party.p[0].y=party.p[1].y=150;party.shot[0]=(PartyShot){100,150,0,0,1,-1,0};tick(B_FIRE,B_FIRE);assert(winner==2&&phase==1); + init(MEMORY,0,1);tick(MEMORY_BIT[(party.seq[0]+1)%4],0);assert(!phase&&!party.index[0]);now=party.signal; + for(int i=0;i=0&&n=(uint32_t)(level==1?700:level==2?500:350)); + init(TUG,level,1);for(int t=0;t<16000&&!phase;t+=8)tick(t%200==0?B_FIRE:0,0);assert(phase&&winner==0); + for(int run=0;run<20;run++){ + init(QUICK,level,run+750);for(int t=0;t<300000&&screen==S_PLAY;t+=8)tick(!phase&&reached(party.signal+420)?B_FIRE:0,0); + assert(screen==S_OVER);if(score[0]>score[1])quick_wins[level-1]++; + init(ARCHERY,level,run+900); + for(int t=0;t<300000&&screen==S_PLAY;t+=8)tick(!phase&&ago(party.started)%1800<650?B_FIRE:0,0); + assert(screen==S_OVER);if(score[0]>score[1])archery_wins[level-1]++; + } + assert(quick_wins[level-1]>=(level<3?19:3));assert(archery_wins[level-1]>=12); + } + FILE*f=fopen("balance-report.json","w");assert(f); + fprintf(f,"{\"matches_per_difficulty\":20,\"quick_human_420ms_wins\":[%u,%u,%u],\"archery_human_650ms_charge_wins\":[%u,%u,%u]}\n",quick_wins[0],quick_wins[1],quick_wins[2],archery_wins[0],archery_wins[1],archery_wins[2]);fclose(f); +} +static void validate(void){ + assert(game>=0&&game=0&&score[1]>=0&&score[0]<=TARGET[game]&&score[1]<=TARGET[game]); + if(game>=QUICK){ + assert(isfinite(party.x)&&isfinite(party.y)&&isfinite(party.value)); + for(int p=0;p<2;p++)assert(isfinite(party.p[p].x)&&isfinite(party.p[p].y)&&isfinite(party.p[p].vx)&&isfinite(party.p[p].vy)); + for(int i=0;i<12;i++)assert(isfinite(party.shot[i].x)&&isfinite(party.shot[i].y)&&isfinite(party.shot[i].vx)&&isfinite(party.shot[i].vy)); + } +} +static void playtests(void){ + FILE*f=fopen("host-report.json","w");assert(f);fprintf(f,"{\"games\":%d,\"party_ram_bytes\":%u,\"save_bytes\":%u,\"ai_runs\":[",NG,(unsigned)sizeof party,SAVE_BYTES); + unsigned runs=0; + for(int g=QUICK;g100){fprintf(stderr,"rules too tall %d: %d\n",g,end);abort();} + screen=S_PLAY;step(g==ARCHERY?650:850,g==ARCHERY?B_FIRE:0,0);gfx_render(scene,0,0,240);sprintf(path,"game-%02d.ppm",g);shot(path); + for(int s=S_PAUSE;s<=S_SAVE_ERROR;s++){screen=s;sel=0;gfx_render(scene,0,0,240);} + } +} +int main(void){ + assert(offsetof(__typeof__(party),signal)==328); /* ARM debugger fixture */ + gfx_buf=strip;static const uint32_t colours[2]={0xEF4136,0x2E7CF6}; + for(int p=0;p<2;p++)team[p]=gfx_rgb(colours[p]),light[p]=gfx_rgb(gfx_lerp888(colours[p],0xFFFFFF,120)),dark[p]=gfx_rgb(gfx_lerp888(colours[p],0,110)); + saves_test();mechanics();balance_test();playtests();renders(); + printf("PASS: fifteen games; 33 complete AI matches, 150 random runs, mechanics, legacy/CRC saves and all screens.\n");return 0; +} diff --git a/games/twoplayer/tests/test_arm.py b/games/twoplayer/tests/test_arm.py new file mode 100644 index 00000000..3d4af1ef --- /dev/null +++ b/games/twoplayer/tests/test_arm.py @@ -0,0 +1,128 @@ +"""Execute the actual ARM app, including firmware memory and clean-exit checks.""" +import argparse,io,json,os,re,shlex,struct,tempfile,types +from pathlib import Path +ROOT=Path(__file__).resolve().parents[1];REPO=ROOT.parents[1] +emu_path=REPO/'tools/emu.py';emu=types.ModuleType('twoplayer_emu');emu.__file__=str(emu_path);emu.io=io +source=emu_path.read_text().replace('ELFFile(open(elf, "rb"))','ELFFile(io.BytesIO(open(elf, "rb").read()))') +source=source.replace('cmd = [nwlink, "nwa-elf",','cmd = nwlink + ["nwa-elf",') +source=source.replace('chunk = CPU_HZ // 1000','chunk = CPU_HZ // 10000').replace('self.now_ms += 1\n','self.now_ms += 0.1\n') +source=source.replace(' next_frame = self.now_ms if frame_ms else None',' self.checkpoint = until_ms\n next_frame = self.now_ms if frame_ms else None') +source=source.replace(' self.slept_ms += r0\n',' self.slept_ms += r0\n if self.now_ms >= self.checkpoint: uc.emu_stop()\n') +exec(compile(source,str(emu_path),'exec'),emu.__dict__) +def presses(*items):return[(t,t+d,emu.KEYS[k])for t,k,d in items] +def storage(path,items): + data=bytearray(emu.STORAGE_SIZE);at=0 + for name,value in items: + r=name.encode()+b'\0'+value;n=2+len(r);struct.pack_into('=3 and at+n<=len(data);name,value=data[at+2:at+n].split(b'\0',1);result[name.decode()]=value;at+=n + return result +def uint(c,name):return struct.unpack('clock + if g==8: + # New action keys really charge independently; Shift no longer acts. + key(c,'shift') + flags=c.symbols['party']+336 + assert bytes(c.uc.mem_read(flags,2))==b'\x00\x00' + t=int(c.now_ms)+20;c.keys+=presses((t,'ok',650),(t,'exe',550)) + c.run(t+400);assert bytes(c.uc.mem_read(flags,2))==b'\x01\x01' + c.save_png(str(out/(profile+'-archery-charge.png'))) + c.run(t+740);assert bytes(c.uc.mem_read(flags,2))==b'\x00\x00' + assert any(struct.unpack('0 for i in range(12)) + c.save_png(str(out/(profile+'-archery-shot.png'))) + # Both physical key sets are sampled together; pause stops only game time. + t=int(c.now_ms)+10 + c.keys+=presses((t,'left',70),(t,'ok',60),(t,'minus',70),(t,'exe',60));c.run(t+100) + key(c,'back');assert uint(c,'screen')==3 + frozen=uint(c,'now');c.run(c.now_ms+120);assert uint(c,'now')==frozen + key(c,'back');assert uint(c,'screen')==2 + if g>=4:c.save_png(str(out/(profile+'-game-%02d.png'%g))) + key(c,'back');key(c,'down');key(c,'down');key(c,'ok');assert uint(c,'screen')==0 + check(c) + if g<14:key(c,'down') + # Page jump wraps and retains the row; CPU mode remains independent. + key(c,'9');assert uint(c,'game')==2 + key(c,'7');assert uint(c,'game')==14 + key(c,'right');assert uint(c,'cpu')==1 + key(c,'right');key(c,'right');assert uint(c,'cpu')==3 + key(c,'ok');key(c,'ok');key(c,'back');key(c,'down');key(c,'ok');assert uint(c,'screen')==2 and uint(c,'phase')==0 + # Real keys score for each human in Quick Draw; holding action does not + # leak an extra shot into the following round. + # 14 -> 2 -> 3 -> 4, then CPU hard -> two players. + key(c,'back');key(c,'down');key(c,'down');key(c,'ok') + key(c,'9');key(c,'down');key(c,'down');key(c,'right') + assert uint(c,'game')==4 and uint(c,'cpu')==0 + key(c,'ok');key(c,'ok') + for player,k in enumerate(['ok','exe']): + if player:c.run(c.now_ms+1650) + assert uint(c,'phase')==0 + # signal is a plain uint32 at the offset verified by the host. + signal=struct.unpack(' existing 2 Players module. + assert arm.uint(c, 'screen') == 0 + key('9'); key('ok'); key('ok') + assert arm.uint(c, 'screen') == 2 and arm.uint(c, 'game') == 4 + key('back'); key('down'); key('down'); key('ok') + assert arm.uint(c, 'screen') == 0 + key('back'); key('down'); key('ok', 800) # Module Quit -> carousel. + assert not c.exited + c.save_png(str(out / (profile + '-returned.png'))) + key('ok', 650) # Re-enter: BSS reset, selection restored from real storage. + assert arm.uint(c, 'screen') == 0 and arm.uint(c, 'game') == 4 + key('home', 600) + arm.exited(c, system == 'upsilon') + records = arm.records(st.read_bytes()) + assert len(records['twoplayer.sav']) == 128 and records['keep.py'] == b'print(42)\n' + assert b'twoplayer.sav' in records['numplay_saves.py'] + report.append(dict(profile=profile, launch_return_reenter=True, backup=True, + stack_bytes=c.stack_used())) + (out / 'report.json').write_text(json.dumps(report, indent=2) + '\n') + print('PASS: existing NumPlay module launch, return, re-entry, shared saves and backup.') + + +if __name__ == '__main__': + main() diff --git a/games/twoplayer/tests/test_languages.py b/games/twoplayer/tests/test_languages.py new file mode 100644 index 00000000..56c95ba8 --- /dev/null +++ b/games/twoplayer/tests/test_languages.py @@ -0,0 +1,26 @@ +"""Check translation coverage, mechanics and all layouts using the real fonts.""" +from pathlib import Path +import shutil,importlib.util,subprocess,sys,re +repo=Path(__file__).resolve().parents[3];out=repo/'games/twoplayer/output/languages';out.mkdir(parents=True,exist_ok=True) +def load(name,p): + s=importlib.util.spec_from_file_location(name,p);m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m +lang=load('lang',repo/'tools/lang.py') +for code in ['fr','zh']: + dst=out/code + for sub in ['games/twoplayer/src','games/twoplayer/tests','games/common','launcher/src']: + for p in (repo/sub).glob('*'): + if p.is_file() and p.suffix in ['.c','.h']: + target=dst/sub/p.name;target.parent.mkdir(parents=True,exist_ok=True);text=p.read_text(encoding='utf-8') + if sub=='games/twoplayer/src': + table=lang.load_table('twoplayer',code);missing=[s for s in lang.marked(p) if s not in table];assert not missing,missing + text=lang.MARK.sub(lambda m:'T("'+table[m.group(2)]+'")',text) + if p.name=='np_text.h':text=text.replace('#define NP_TEXT_EXTRA 0','#define NP_TEXT_EXTRA 1') + target.write_text(text,encoding='utf-8') + texts='\n'.join(lang.load_table('twoplayer',code).values());(dst/'texts.txt').write_text(texts,encoding='utf-8') + extra=','.join(str(c)for c in sorted({ord(c)for c in texts if 0x80<=ord(c)<0x180})) + subprocess.run([sys.executable,str(repo/'tools/fontgen.py'),str(dst/'launcher/src/font_data.c'),'--extra',extra],check=True) + subprocess.run([sys.executable,str(repo/'tools/xfont.py'),'table',str(repo/'assets/fonts/fusion-pixel-12px.bin'),str(dst/'launcher/src/np_xfont.h'),str(dst/'texts.txt')],check=True) + target=dst/'games/twoplayer';(target/'output').mkdir(exist_ok=True) + subprocess.run(['gcc','-std=c11','-O2','-Wall','-Wextra','-Wno-unused-parameter','-Wno-misleading-indentation','-Itests','tests/test.c','../../launcher/src/gfx.c','../../launcher/src/font_data.c','../../launcher/src/xfont.c','-lm','-o','output/test.exe'],cwd=target,check=True) + subprocess.run([str(target/'output/test.exe')],cwd=target/'output',check=True) + print('Translations and layout pass:',code) diff --git a/games/twoplayer/tools/bot.py b/games/twoplayer/tools/bot.py index 95501b2b..b19462b7 100644 --- a/games/twoplayer/tools/bot.py +++ b/games/twoplayer/tools/bot.py @@ -138,7 +138,7 @@ def tanks(self): if abs(d) < 0.6 and math.hypot(x1 - x0, y1 - y0) > 50: keys.append("up") if abs(d) < 0.15 and self.c.now_ms - self.fired > 700: - keys.append("shift") + keys.append("ok") self.fired = self.c.now_ms self.hold(keys) diff --git a/launcher/lang/fr.txt b/launcher/lang/fr.txt index bdef86b6..87824f2a 100644 --- a/launcher/lang/fr.txt +++ b/launcher/lang/fr.txt @@ -135,4 +135,6 @@ Needs Il manque Sokoban Sokoban Push every box home Pousse chaque caisse à sa place -Levels: Microban by David W. Skinner Niveaux : Microban de David W. Skinner \ No newline at end of file +Levels: Microban by David W. Skinner Niveaux : Microban de David W. Skinner +Fifteen mini-games, side by side Quinze mini-jeux, côte à côte +Additional mini-games by Bobydeluxe Mini-jeux supplémentaires par Bobydeluxe diff --git a/launcher/lang/zh.txt b/launcher/lang/zh.txt index 8194210b..3ca18325 100644 --- a/launcher/lang/zh.txt +++ b/launcher/lang/zh.txt @@ -134,4 +134,6 @@ Needs 内存还差 Sokoban 推箱子 Push every box home 把每个箱子推到位 -Levels: Microban by David W. Skinner 关卡:David W. Skinner 的 Microban \ No newline at end of file +Levels: Microban by David W. Skinner 关卡:David W. Skinner 的 Microban +Fifteen mini-games, side by side 十五款小游戏,并肩对战 +Additional mini-games by Bobydeluxe 新增小游戏:Bobydeluxe diff --git a/tests/test_games.py b/tests/test_games.py index 8c397437..29e0c1b5 100644 --- a/tests/test_games.py +++ b/tests/test_games.py @@ -459,8 +459,8 @@ def dk_frames(v): "breakout": (lambda v: len(v) == 12 and v[:2] == b"B\2" and v[4] == 1 and struct.unpack_from("= 10, lambda v: v[4] == 0 and struct.unpack_from("= 1), # best kept, shake off # Air Hockey and the easy computer chosen; then the normal computer and Tanks, the tallies kept - "twoplayer": (lambda v: len(v) == 36 and v[:4] == b"P\1\1\1", - lambda v: len(v) == 36 and v[:4] == b"P\1\2\2"), + "twoplayer": (lambda v: len(v) == 128 and v[:4] == b"P\3\1\1", + lambda v: len(v) == 128 and v[:4] == b"P\3\2\2"), # a game kept (Easy, the guide read) with the two digits the hints wrote (the digits at 109); then three "sudoku": (lambda v: len(v) == 352 and v[:4] == b"S\1\3\0" and sum(1 <= b <= 9 for b in v[109:190]) == 2, lambda v: v[2] & 1 and sum(1 <= b <= 9 for b in v[109:190]) == 3), From b4933c713bd849415a18f7e7517812bf69e22e4e Mon Sep 17 00:00:00 2001 From: Mason363 Date: Fri, 23 Oct 2026 19:56:48 -0400 Subject: [PATCH 2/3] 2 Players: Quick Draw and Tug of War, player 1 on OK, a fairer computer Bobydeluxe's Quick Draw and Tug of War join Pong, Air Hockey, Tanks and Light Cycles. Player 1 acts with OK and player 2 with EXE; alone, EXE works as OK, one key either way. The computer now thinks at a player's pace in every game: it decides every so often, misjudges a little and moves slower, more so on easy. Every screen shows its keys in plain words, and each game's page lists each player's keys. Back pauses, Quit game asks first, Home saves and quits. The menu scrolls, and a key still being mashed when a match ends doesn't pick Rematch. Old saves keep their tallies: the file is the same, longer by the new games. In Air Hockey a mallet pressing the puck into a corner now gives way, so the puck can't stay stuck there. The other nine mini-games of the pull request don't fit: they would need about 11.6 KB more room in NumPlay.nwa. With these two it keeps 2.1 KB free, the Chinese one 1.6 KB, Matrices 2.7 KB. make test plays every game on a computer: the rules, bots against bots at every level, 300 random sessions and the old saves. --- .github/workflows/build.yml | 1 + .github/workflows/twoplayer.yml | 52 -- README.md | 4 +- docs/media/thumb_twoplayer.png | Bin 13255 -> 10202 bytes games/games.json | 4 +- games/twoplayer/.gitignore | 2 - games/twoplayer/Makefile | 37 +- games/twoplayer/README.md | 68 +-- games/twoplayer/VALIDATION.md | 53 -- games/twoplayer/docs/archery.png | Bin 9173 -> 0 bytes games/twoplayer/docs/games.png | Bin 66258 -> 22386 bytes games/twoplayer/docs/pages.png | Bin 29678 -> 0 bytes games/twoplayer/docs/shot.png | Bin 15906 -> 844 bytes games/twoplayer/lang/fr.txt | 76 ++- games/twoplayer/lang/zh.txt | 76 ++- games/twoplayer/src/main.c | 557 +++++++++++----------- games/twoplayer/src/party.h | 492 ------------------- games/twoplayer/tests/eadk.h | 14 - games/twoplayer/tests/play.c | 408 ++++++++++++++++ games/twoplayer/tests/test.c | 136 ------ games/twoplayer/tests/test_arm.py | 128 ----- games/twoplayer/tests/test_integration.py | 121 ----- games/twoplayer/tests/test_languages.py | 26 - games/twoplayer/tools/bot.py | 19 +- launcher/lang/fr.txt | 4 +- launcher/lang/zh.txt | 4 +- tests/test_games.py | 6 +- 27 files changed, 813 insertions(+), 1475 deletions(-) delete mode 100644 .github/workflows/twoplayer.yml delete mode 100644 games/twoplayer/VALIDATION.md delete mode 100644 games/twoplayer/docs/archery.png delete mode 100644 games/twoplayer/docs/pages.png delete mode 100644 games/twoplayer/src/party.h delete mode 100644 games/twoplayer/tests/eadk.h create mode 100644 games/twoplayer/tests/play.c delete mode 100644 games/twoplayer/tests/test.c delete mode 100644 games/twoplayer/tests/test_arm.py delete mode 100644 games/twoplayer/tests/test_integration.py delete mode 100644 games/twoplayer/tests/test_languages.py diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dc29f093..03a0c171 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -80,6 +80,7 @@ jobs: make -C games/sudoku host test make -C games/uttt host test make -C games/sokoban host test + make -C games/twoplayer host test make -C games/flappydunk host test make -C games/towerblock host test make -C games/suika host test diff --git a/.github/workflows/twoplayer.yml b/.github/workflows/twoplayer.yml deleted file mode 100644 index ad6df47d..00000000 --- a/.github/workflows/twoplayer.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: 2 Players - -on: - pull_request: - paths: - - 'games/twoplayer/**' - - 'games/common/**' - - 'launcher/src/**' - - 'tools/emu.py' - - 'tools/gen_games.py' - - 'tools/npmodule.py' - - 'games/games.json' - - '.github/workflows/twoplayer.yml' - workflow_dispatch: - -permissions: - contents: read - -jobs: - game: - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - - name: ARM toolchain - run: | - v=15.2.1-1.1 - curl -fsSL "https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases/download/v$v/xpack-arm-none-eabi-gcc-$v-linux-x64.tar.gz" | tar -xz -C "$RUNNER_TEMP" - echo "$RUNNER_TEMP/xpack-arm-none-eabi-gcc-$v/bin" >> "$GITHUB_PATH" - - uses: actions/setup-node@v4 - with: - node-version: 20 - - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - name: Tools - run: | - npm install -g nwlink@1.0.0 - pip install pillow==11.3.0 numpy pyelftools unicorn==2.1.4 - - name: Existing game build and engine checks - run: | - make build/data/apps/TwoPlayers.nwa build/data/modules/twoplayer.o NWLINK=nwlink - make -C games/twoplayer build module check test HOST_CC=gcc NWLINK=nwlink - - name: ARM controls, saves and firmware guards - run: python3 games/twoplayer/tests/test_arm.py --nwlink nwlink - - name: Existing NumPlay launcher integration - run: python3 games/twoplayer/tests/test_integration.py --nwlink nwlink - - name: French and Chinese layouts - run: python3 games/twoplayer/tests/test_languages.py - - uses: actions/upload-artifact@v4 - with: - name: TwoPlayers - path: build/data/apps/TwoPlayers.nwa diff --git a/README.md b/README.md index 35e025dc..f2fc2527 100644 --- a/README.md +++ b/README.md @@ -256,7 +256,7 @@ Read **[Make your own NumWorks game](docs/make-a-game.md)** to go from there, an - [x] Plants vs. Zombies: the whole Adventure, from the front lawn to the roof and Dr. Zomboss - [x] Doom: Knee-Deep in the Dead, the shareware episode - [x] Five Nights at Freddy's: all five nights, the 6th and the Custom Night -- [x] [2 Players](games/twoplayer/README.md): fifteen mini-games, with local two-player controls or three computer difficulties +- [x] Pong and more two-player games: 2 Players, with Pong, Air Hockey, Tanks and Light Cycles - [x] Cookie Clicker - [x] Level Devil - [x] Sonic the Hedgehog: the whole 1991 game, Green Hill to the Final Zone, with the Special Stages @@ -310,8 +310,6 @@ Read **[Make your own NumWorks game](docs/make-a-game.md)** to go from there, an ## Credits -- **[Bobydeluxe](https://github.com/Bobydeluxe)** added eleven mini-games to **[2 Players](games/twoplayer/README.md)** and updated its controls, readability and computer opponents while retaining the original four games and red/blue style. - NumPlay is a fan project, made out of love for these games and for the NumWorks calculator. If you enjoy a game here, go play the original and support the people who made it. NumWorks also has a great community of people making games by hand: try [Numcraft](https://github.com/yannis300307/NumcraftRust), [Celeste Classic](https://github.com/BenchatonDev/Celeste-Numworks), [Tatone26's All the Apps](https://github.com/Tatone26/Numworks-games), the apps on [Nwagyu](https://nwagyu.org/guide/) and [yannis300307's list](https://gist.github.com/yannis300307/9123136f90877107ec0d49ba96b303e5). - **[Tatone26](https://github.com/Tatone26/Numworks-games)**'s **All the Apps** inspired NumPlay's list of classics. Flappy Bird, Pac-Man, Snake, Connect Four, Solitaire and 2048 are written in C for NumPlay and keep its options, with no code copied from it. Tetris is Tatone26's own, which they released into the public domain, adapted for NumPlay. diff --git a/docs/media/thumb_twoplayer.png b/docs/media/thumb_twoplayer.png index 7d952a9addb7a781cd880932364eabd112bffd9b..7e805e2a8f0a87b3bf12cf973241a716aa654e2c 100644 GIT binary patch literal 10202 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 UPJgTx@c;k-07*qoM6N<$f+ye3H~;_u literal 13255 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 FV1oHlF@yjB diff --git a/games/games.json b/games/games.json index c6167ad9..75ccd0e6 100644 --- a/games/games.json +++ b/games/games.json @@ -479,8 +479,8 @@ "id": "twoplayer", "rank": 14, "title": "2 Players", - "tagline": "Fifteen mini-games, side by side", - "credit": "Additional mini-games by Bobydeluxe", + "tagline": "Pong and more, side by side", + "credit": null, "top": "0xD33B3B", "bottom": "0x172A72", "accent": "0x2E7CF6", diff --git a/games/twoplayer/.gitignore b/games/twoplayer/.gitignore index 179b4868..ea1472ec 100644 --- a/games/twoplayer/.gitignore +++ b/games/twoplayer/.gitignore @@ -1,3 +1 @@ output/ -__pycache__/ -*.pyc diff --git a/games/twoplayer/Makefile b/games/twoplayer/Makefile index f95d1be3..c378a398 100644 --- a/games/twoplayer/Makefile +++ b/games/twoplayer/Makefile @@ -1,6 +1,7 @@ -# 2 Players — fifteen mini-games inside the existing NumPlay app/module. +# 2 Players: Pong, Air Hockey, Tanks, Light Cycles, Quick Draw and Tug of War, for two on one calculator. # make build output/twoplayer.nwa # make check link the app like the calculator does (output/twoplayer.bin) +# make test the tests on a computer (tests/play.c) # # In NumPlay the game draws with the launcher's strips, shapes and fonts and saves through its # file functions (module.o leaves them to the launcher); on its own it brings them along. @@ -10,27 +11,22 @@ NWLINK ?= npx --yes -- nwlink@1.0.0 BUILD_DIR = output SRC = src/main.c HEADERS = ../common/epsilon_app.h ../common/epsilon_files.h ../common/np_text.h ../../launcher/src/gfx.h \ - ../../launcher/src/np.h ../../launcher/src/font.h src/party.h -HOST_CC ?= cc -PYTHON ?= python3 + ../../launcher/src/np.h ../../launcher/src/font.h CFLAGS = -std=c11 $(shell $(NWLINK) eadk-cflags-device) CFLAGS += -Os -Wall -Wextra -Wno-unused-parameter -fno-math-errno -fsingle-precision-constant # (smaller still: NumPlay has little room left) CFLAGS += -fno-schedule-insns2 -fno-reorder-blocks -fno-tree-loop-optimize CFLAGS += -fno-tree-loop-distribute-patterns -flto -fno-fat-lto-objects -fwhole-program -fvisibility=internal -CFLAGS += -ffunction-sections -fdata-sections -fstack-usage LDFLAGS = -Wl,--relocatable -nostartfiles --specs=nano.specs LDFLAGS += -Wl,-e,main -Wl,-u,eadk_app_name -Wl,-u,eadk_app_icon -Wl,-u,eadk_api_level LDFLAGS += -Wl,--gc-sections -flinker-output=nolto-rel -.PHONY: build check clean host test test-arm test-integration +.PHONY: build check clean host test build: $(BUILD_DIR)/twoplayer.nwa check: $(BUILD_DIR)/twoplayer.nwa - $(Q) $(NWLINK) nwa-bin --ram-length 107674 $< $(BUILD_DIR)/twoplayer.bin - $(Q) $(NWLINK) nwa-bin --ram-length 107674 $(BUILD_DIR)/twoplayer-debug.nwa $(BUILD_DIR)/twoplayer-debug.bin - $(Q) cmp $(BUILD_DIR)/twoplayer.bin $(BUILD_DIR)/twoplayer-debug.bin + $(Q) $(NWLINK) nwa-bin $< $(BUILD_DIR)/twoplayer.bin @echo "BIN $(BUILD_DIR)/twoplayer.bin: $$(wc -c < $(BUILD_DIR)/twoplayer.bin) bytes" # compiled, then linked (the link options would upset the compiler) @@ -44,22 +40,23 @@ $(BUILD_DIR)/font_data.o: ../../launcher/src/font_data.c ../../launcher/src/font $(BUILD_DIR)/xfont.o: ../../launcher/src/xfont.c ../../launcher/src/np_xfont.h $(HEADERS) | $(BUILD_DIR) $(Q) $(CC) $(CFLAGS) -c $< -o $@ -$(BUILD_DIR)/twoplayer-debug.nwa: $(BUILD_DIR)/main.o $(BUILD_DIR)/gfx.o $(BUILD_DIR)/font_data.o $(BUILD_DIR)/xfont.o \ +$(BUILD_DIR)/twoplayer.nwa: $(BUILD_DIR)/main.o $(BUILD_DIR)/gfx.o $(BUILD_DIR)/font_data.o $(BUILD_DIR)/xfont.o \ $(BUILD_DIR)/icon.o @echo "LD $@" $(Q) $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@ -$(BUILD_DIR)/twoplayer.nwa: $(BUILD_DIR)/twoplayer-debug.nwa - $(Q) cp $< $@ $(Q) arm-none-eabi-strip --strip-unneeded $@ -host: test -test: | $(BUILD_DIR) - $(HOST_CC) -std=c11 -O2 -Wall -Wextra -Wno-unused-parameter -Wno-misleading-indentation -ffunction-sections -fdata-sections -Itests tests/test.c ../../launcher/src/gfx.c ../../launcher/src/font_data.c ../../launcher/src/xfont.c -Wl,--gc-sections -lm -o $(BUILD_DIR)/test - cd $(BUILD_DIR) && ./test -test-arm: build test - $(PYTHON) tests/test_arm.py --nwlink "$(NWLINK)" -test-integration: module - $(PYTHON) tests/test_integration.py --nwlink "$(NWLINK)" +# on a computer, with the sanitizers: the rules, bots against bots, random sessions, old saves (tests/play.c) +HOST_FLAGS = -std=gnu11 -O1 -g -Wall -Wextra -Wno-unused-parameter -DPLATFORM_DEVICE=1 -DHOST -ffp-contract=off \ + $(shell $(NWLINK) eadk-cflags-simulator) -fsanitize=address,undefined -fno-sanitize-recover=undefined +host: output/play +output/play: $(SRC) tests/play.c $(HEADERS) + $(Q) mkdir -p output + $(Q) cc $(HOST_FLAGS) tests/play.c ../../launcher/src/gfx.c ../../launcher/src/font_data.c \ + ../../launcher/src/xfont.c -lm -o $@ + @echo "HOST $@" +test: output/play + output/play test $(BUILD_DIR)/icon.o: src/icon.png | $(BUILD_DIR) @echo "ICON $<" diff --git a/games/twoplayer/README.md b/games/twoplayer/README.md index 9bb9685d..37bd77ef 100644 --- a/games/twoplayer/README.md +++ b/games/twoplayer/README.md @@ -1,87 +1,43 @@ # 2 Players -Fifteen mini-games inside the existing **2 Players** app in NumPlay, side by side: player 1 on the arrows, player 2 on the keys around +, both at once. No one to play with? Player 2 can be the computer, easy, normal or hard. +Six games for two people on one calculator, side by side: player 1 on the arrows and OK, player 2 on the keys around + and EXE, both at once. No one to play with? Player 2 can be the computer, easy, normal or hard. -The fifteen 2 Players mini-games +Pong, Air Hockey, Tanks, Light Cycles, Quick Draw and Tug of War - **Pong**, the 1972 arcade game: black and white, the dashed net and the blocky scores. The paddle has eight segments: the two in the middle send the ball back straight, the others at steeper and steeper angles. The ball speeds up as a rally goes on, and the first to 11 wins. - **Air Hockey**: a mallet each, in your own half, and a puck that slides and bounces off the rails and the goal posts. Hit it while you move to send it flying. First to 7. - **Tanks**: a new maze every round, shells that bounce off the walls (five each at a time) and can hit the tank that fired them. First to 5 rounds. - **Light Cycles**: never stop, never turn back, and make the other cycle crash into a wall or a trail. Two turns can wait in line, and the cycles speed up as the round goes on. First to 5 rounds. +- **Quick Draw**: wait for DRAW!, then press your key before the other one. Press too soon and you lose the round. First to 5. +- **Tug of War**: tap your key as fast as you can to pull the flag past your line. The rope slides back a little, and after 30 seconds the one ahead takes the round. First to 5. - **Before each game**, a map of the calculator's keyboard lights up each player's keys in their colour, with the rules. -- **The computer** has three approachable difficulty levels, with reaction delays, imperfect aiming and slower attack cadence. It does not borrow Player 2’s physical inputs in solo mode. +- **The computer** plays at a player's pace: it reacts after a moment, misjudges a little and moves slower than you, more so on easy. In Pong it works out where the ball will come, in Air Hockey it gets behind the puck to shoot or guards its goal, its tank finds its way through the maze and looks for a shot, and its light cycle keeps the most room for itself. - **The matches won** by each side are kept for every game, against a friend and against the computer. -## Eleven additional games - -The original four games keep their IDs, rules and artwork. The additions use the same red/blue teams, night-blue cards, rounded shapes, fonts, score bar and keyboard tutorial. There are no separate apps for these mini-games. - -| Game | How to play | First to | -| --- | --- | ---: | -| Quick Draw | Wait for DRAW, then press Action; a false start loses | 5 | -| Tug of War | Tap and release Action to pull the flag across your line | 5 | -| Football | Move, push the ball and kick with Action | 5 | -| Volley Ball | Move sideways, jump with Up or Action; keep the ball off your floor | 7 | -| Archery | Aim with Up/Down; follow the dotted trajectory, charge with OK / EXE and release to shoot | 5 | -| Dodge Ball | Move in your half, throw with Action; three hits knock out | 5 | -| Meteor Run | Move sideways; survive the same falling rocks as your rival | 5 | -| Rocket Race | Tap Up or Action to fly through identical obstacle courses | 5 | -| Sumo | Move and dash with Action; push your rival out of the shrinking ring | 5 | -| Fishing | Move the rod, hold Action to lower the hook, release to reel in a fish | 5 | -| Memory Duel | Watch a shared arrow sequence, then repeat it without a mistake | 5 | - -All fifteen games support two people and the existing easy/normal/hard computer choices. Simultaneous outcomes draw when possible. New survival/duel rounds have time limits; a tied round awards neither side a point. Each game's wins against a friend and against the computer are kept separately. - -Four pages of mini-games in the existing red and blue menu - ## Controls | | Player 1 | Player 2 | | --- | --- | --- | | Move (in Pong, up and down) | Arrows | × up, Ans down, 3 left, − right | -| Action (shoot, jump, pull, dash, fish) | OK | EXE | +| Fire, draw, pull | OK | EXE | | Key | Action | | --- | --- | | Up, Down, OK | Pick a game, then OK to play | -| 7, 9 | Previous / next page of four games | | Left, Right | Player 2, or the computer: easy, normal, hard | | Back | Pause: Resume, Restart, Other games, Quit game | -| Home, Power | Save and quit | - -OK is Player 1’s Action key in both modes. Against the computer, EXE is also a solo alias; in two-player mode, EXE belongs only to Player 2. Shift is no longer used. Hold actions are supported for archery and fishing. Each tutorial highlights only the keys used by that game. Confirm keys held while opening a screen must be released before acting again. - -## Saves and footprint - -The same `twoplayer.sav` record is used. Original 36-byte version 1 saves and the previous sixteen-game version 2 saves migrate automatically. Version 3 uses 128 bytes with explicit little-endian encoding and CRC-32. Memory Duel's wins are kept when its ID moves; only the removed game's counters are discarded. If it was the last selection, the menu opens at Pong instead. A malformed save is rejected before changing progress. Full storage shows a retry / explicit unsaved-exit choice when quitting. - -The added games share **352 bytes** of working state, fixed projectile pools and procedural artwork; there are no imported images or sound files in the game. The installed standalone package is **53,912 bytes** (about 52.6 KiB). In NumPlay the module uses **33,597 bytes** of code/read-only data and **22,052 bytes** of shared arena RAM. It reuses the launcher's fonts and drawing functions. A fixed 8 ms physics step keeps gameplay independent of the LCD frame rate; rendering targets roughly 30 frames per second. +| Home | Save and quit | -## Readability and difficulty - -Archery now has clearly drawn bows and directional arrows, coloured trajectory dots, angle readouts, power gauges, hit feedback and three visible hearts. Hold OK / EXE to increase power and release to shoot. The preview follows the same gravity and launch power as the real arrow. The two-player keyboard tutorial highlights OK beside Player 1's arrows and keeps EXE on Player 2's side. - -The other games retain their established layouts. Targeted additions show Football's round clock, Dodge Ball's hearts, Rocket Race's boost flame and Fishing's hold/release prompts. Tanks' tutorial explicitly distinguishes driving from turning. - -Computer difficulty is reduced across all fifteen games: sampled movement decisions instead of instant tracking, lower movement speeds where needed, aiming errors, longer reloads, slower tugging and memory playback, and longer Quick Draw reactions. Light Cycles no longer predicts and blocks the player's next possible cells. Hard remains faster and more accurate than Easy, without the old perfect responses. - -Archery with trajectory previews, power bars, visible arrows and hearts +Against the computer, EXE works as OK too. ## Credits **Pong** is Atari's arcade game (1972, by Allan Alcorn), whose paddles and ball this one follows. Air hockey, tanks duelling in a maze in the spirit of Tank Trouble, and the light cycles of the film Tron (1982) are classics of two-player games. Everything here is written in C for NumPlay and drawn from shapes as it goes, with no code or art from any of them. -**Additional mini-games by [Bobydeluxe](https://github.com/Bobydeluxe)**. Inspired by the short local duels of [GoBattle 2](https://poki.com/fr/g/gobattle2) by YouDevice! and [12 MiniBattles](https://poki.com/fr/g/12-minibattles) by Shared Dreams Studio, together with familiar sports, reaction, memory and survival games. These are native calculator implementations using NumPlay's existing visual style, with no code, images or sounds imported from those games. The original four games remain credited to their existing authors and inspirations above. +**Quick Draw** and **Tug of War** are by [Bobydeluxe](https://github.com/Bobydeluxe), in the spirit of the short duels of 12 MiniBattles and GoBattle 2, with no code or art from them. Bobydeluxe also put player 1's key on OK and made the computer fairer. -It comes inside [NumPlay](https://github.com/Mason363/NumPlay), or on its own as `TwoPlayers.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest). - -## Build and verification +Inside NumPlay it draws with the launcher's own shapes and fonts and saves through its file functions, so the six games take about 15 KB. -Build from this directory with `make build module check` (ARM GCC, Make and nwlink required). The normal NumPlay root build discovers the same `twoplayer` module and `TwoPlayers.nwa` release name through `games/games.json`; Upsilon includes it too. - -- `make test HOST_CC=gcc`: native mechanics, saves, complete CPU matches, random inputs and rendering. -- `make test-arm PYTHON=python3`: actual ARM package, real keypad menus and firmware guards on four memory profiles (Python Unicorn, pyelftools and Pillow required). -- `make test-integration PYTHON=python3`: compile the actual launcher with a deliberately single-module **test catalogue**, then verify module entry, return, re-entry and shared save backup. This test build is not a full NumPlay release. -- `python3 tests/test_languages.py`: French/Chinese string coverage, font generation and the same host/layout checks. Nunito is downloaded from its upstream font source on the first run. +It comes inside [NumPlay](https://github.com/Mason363/NumPlay), or on its own as `TwoPlayers.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest). -See [VALIDATION.md](VALIDATION.md) for measured results and limits. No physical calculator was connected for these checks. `output/` holds generated reports and screenshots. +Build: `make` (needs `arm-none-eabi-gcc` and Node.js for nwlink). `make test` plays every game on a computer, bots against bots. `tools/bot.py` plays it against the computer in the emulator. diff --git a/games/twoplayer/VALIDATION.md b/games/twoplayer/VALIDATION.md deleted file mode 100644 index dcf33487..00000000 --- a/games/twoplayer/VALIDATION.md +++ /dev/null @@ -1,53 +0,0 @@ -# Validation — 23 October 2026 - -This updates the existing `twoplayer` module and `TwoPlayers.nwa`. There are now **15 games**: the original four plus eleven additions. Turtle Hop is removed. Player 1 uses **OK** for Action; Player 2 still uses **EXE**. No physical calculator was connected for these checks. - -## Build and footprint - -| Measurement | Result | -| --- | ---: | -| Release `.nwa` file | 93,728 bytes | -| Installed flash | 53,912 bytes | -| Standalone static RAM, including installer alignment | 22,065 bytes | -| Highest measured standalone ARM stack in these runs | 580 bytes | -| Module code and read-only data | 33,597 bytes | -| Module shared arena RAM | 22,052 bytes | -| Working state shared by the eleven additions | 352 bytes | -| Save payload | 128 bytes | -| Smallest tested installer RAM allocation | 107,674 bytes | - -Release SHA-256: `c4dba2cd62da31fe9ff72cdf13045b976019fedecc8dc741e32f2ebc659bd036`. - -ARM GCC passes with `-Wall -Wextra`. The release and debug packages convert with real nwlink at the smallest RAM allocation and produce identical installed bytes. The root Makefile's actual module and `build/data/apps/TwoPlayers.nwa` targets pass; the release copy matches the tested package. - -There are no imported textures, sounds or heap allocations for the mini-games. Artwork uses the existing shared shapes/fonts, fixed projectile pools and LCD strips. Physics stays on the fixed eight-millisecond step with bounded catch-up. The new bot intention cache is shared, rather than allocating one AI engine per game. - -## Gameplay and difficulty - -All fifteen bots were reviewed. Pong/Hockey use slower, sampled targeting with aiming error. Tanks reacts and reloads more slowly, moves more slowly, and has less accurate bank shots. Light Cycles has delayed decisions and limited lookahead, with no prediction of the player's future cells. The additions receive longer reaction times, reduced movement/attack rates, imperfect archery and throwing accuracy, and slower/error-prone memory responses. Two-human movement and physics do not get these bot handicaps. - -- **33 complete matches** cover the eleven additions at all three difficulties against an idle human. CPU decisions are real; no score injection or forced completion is used. This checks progress, not human difficulty balance. -- **150 seeded random-input runs** cover all fifteen games and opponent modes, checking score bounds and finite state. -- **120 additional scripted-player matches** exercise Quick Draw and Archery, twenty per difficulty per game. The 420 ms reaction policy wins Quick Draw in [20, 20, 16] matches at Easy/Normal/Hard. The 650 ms charge / 1.8 s shot-cycle policy wins Archery in [20, 20, 20] matches. These reproducible policies show the bots are beatable; they are not human play-test results. -- Tug of War is won against each bot with five presses per second. Pong and Football explicitly wait before reacting. A solo EXE action cannot also trigger the bot. -- Targeted regression checks cover false starts/ties, tap debouncing, goals/rebounds, volley net-top collisions, charged arrows/hits, dodge-ball knockouts, mirrored obstacles, rocket bounds, sumo, fishing hold/reel/contested catches and memory watch/input/error/tie rules. - -## Readability and controls - -Archery is rebuilt with visible bows, directional arrows, player-coloured trajectory dots, angle values, power bars, hit flashes and three hearts. The trajectory uses the same launch/gravity formula as the real arrow, with the small integration difference of an eight-millisecond tick. The tutorial explicitly explains charging/releasing and the new OK/EXE layout. - -The review keeps the established layouts where they already communicate the rules. Selected improvements add Football's clock, Dodge Ball's hearts, Rocket Race's boost flame and Fishing's hold/release prompts. Tanks' rules distinguish driving and turning. Menu pagination handles a last page containing three games, including page wrapping from its final row. - -All fifteen rules/game screens, four menu pages, pause/results/failure cards are rendered. English, French and Chinese run the same native engine and text-height checks with the real Nunito/Fusion Pixel fonts. Representative screenshots and actual ARM Archery charging/flight frames were visually inspected. - -## Saves and actual ARM checks - -The original 36-byte v1 save migrates with all sixteen original win counters preserved. The 136-byte v2 format migrates to 128-byte v3: the removed game's counters are dropped, Memory Duel's counters move intact to its new ID, and selecting the removed game falls back to Pong. Old Memory selection restores Memory correctly. Both v2 cases also run through the installed ARM package. V3 round trips, truncation and every individual flipped save bit are tested without mutating progress on rejection. - -The compiled app passes N0120, N0110, the smaller N0115 allocation and Upsilon profiles. Each opens all fifteen games through real keys and checks pause/resume/restart, selection and page wrapping. Real OK and EXE presses score independently in Quick Draw. In Archery, both keys charge and release independently; Shift does nothing, and real arrows remain in flight after release. Home/Power saves, relaunch, held launch keys and full-storage retry/explicit unsaved exit are checked. Unrelated records stay intact. - -Memory guards check unaligned storage accesses, flash writes, firmware RAM preservation, cleaned app RAM on exit and balanced Home locks. Upsilon makes no unsupported Epsilon-only system calls. - -`tests/test_integration.py` compiles the actual launcher and module pipeline with a deliberately one-module **test catalogue**. N0120 and Upsilon open 2 Players, start a game, return to the carousel, re-enter and exit safely. The real record and NumPlay's Python backup are verified. Maximum measured launcher/integration stack is 1,056 bytes. This is not a full release build of every unrelated NumPlay game. - -Reports/screenshots are generated under ignored `output/`: `build-report.json`, `host-report.json`, `balance-report.json`, `arm/report.json`, `integration/report.json` and `languages/`. Commands are in [README.md](README.md). Physical LCD/key-matrix behaviour and subjective difficulty still need play testing on a calculator. diff --git a/games/twoplayer/docs/archery.png b/games/twoplayer/docs/archery.png deleted file mode 100644 index 943d3f8deaa9ac44e992dc1e1711e60e002bf972..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9173 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 h&Q3l- z8IErIxVr7qqj{UsZnet494K>LAAO-I0pEWg$!k0R_gKw5t+TD; zJ4V3hfc8fA#4$Hy=2A~>v=txTNQ zyW@ry4fu?&a!MzpWOoCZs;beuR(xDhl(7fQVVqx?=0Bil_NH%mF+-ZcMRUFtIdU7- z8Ubb_py|>Q&*2_UM1gwdlU=(zbqMFD-U6SkaoTMiUnD#sVNVZ}veXh+?0||u0Csw; zmek?pRa_wx<|N_@i-|Pyins1}3*RSKhK-kzTeU38Y zrdZ)3VZ?o>mQjr<^JRbm1zde74GNHv6WkaS*y?Xn?ehFN@0BYpa|Hly|Ga6@RJK?D zKnX0D;`|3-^jCUA;`Lk$KBJr%>dI406M^;*W=6lBjSo2e^pRiHeXuby0#D)=#h~g> zx^^q`X%F|X)t+jyU8MjPccs@jPFmy%w=)kQLKfRaTR>C*-u3bz=GM zOFsl~vV#hgsy`ieyhq1e$2ytFsNn1UM8MY>5*RMV01)xtUBUlw2>*s*|H2vn4Q-qj z_HXW(U%m`IFH>Cn=M%@tOajo8Glh)KsxYtLN-oFQHiT8Vud;SfOeLxDTmzIOa(p%B5ifPeoz;sOuwM*-c`3v<7xcD9b zD1cjjDvSVe;tfp>;2(*0It?ymL6AE8IBWma?{{<)gN{}tHPFSwX4FR7hXvTaul!Xv zD>CQjimN@if0Q>}6YX_By+Wvon(IRyR7}Zi__{8l}h(wy;k#UdFtqX1u}Vt-fM^Ss`b^nw9Iz*aS%>3aDeafBcby8rq`^> zh!NK)Rxi!q-}xI4en^^1x^U27rW^O#5ZyD;@&x}4rT*SW)vu)Ym}ywNICvT!Tal*_ zC`53ssdm0~q5=>cyl?80vXMVCN-&Vl6Fgpm`xw3v($h`QoFoNw&*l+KhIQG?GE-98 zGUkNB8oxWJ9m1J8%ILppqf-4t_Nf zEb;MbFF6_si4^u8(mMwqLQnVSnzl44`FUf7Y=;g)r`pWV*FxJg0vrujyc*r$jnWUs z)0_!Yi#yt%O23+ZM$i{+Orhu9mQvlFs#AlxUZ59B^M~&mqJ?5j1-NAkL20mI1#r~i zGmK&YZUDYk5yooww4IbIlhe2DyNsRN+=$`;;D`v7f&3~-RZYl;g8fZyS1Ykz$@ATW z>*<-XQ#+gshqdf%m-`<}-L$>+xiD22K}DPxV55o>CIzTh5^J*q&~urJU~a2Hbb!2F zDzLxEiio+@)2WWlaqJ1F2-&Cla6$#{zTFpO9wDa!I_5$Zo*+Uz1W;Zx@J4pd* zw#MRSYsPjP<~Gmd$J zZ>i3Zzd5I@Pn3!M6?g zs=Eg}kxrNI+6nwn5^;z$i*n+=zIZ6zH9UJ49eg&ckUE}Z{Lg|_YJ2F3KFrO>1FTjE zx7r(ch6sT08iUP=CW+}lp5=!O@MyoXv*taQmEoPEz}1%L{WJ2_MwQGj){O~ovmA`o zJ6lG&*ovgnJwtNNTl6Zt%t_R!CI`(6H8n=i;?5eiKs*>~{Gc`{`s|(;65|nZh z4$<;%+$s{uK}U4~Aab4=1QR~0H#GSo><#k^fv=Hvj0s5E(-+XgoLKC+RMMJ=89I+@ z_N?Lhnq+Ys_Df)NInIc=a%`=6Vf0yBt`NfzT;9g z3tjCkG0~RgUXeGu37;%EQjVoqmy@O((U7J2y05b?3uV{oM!6@iD#?FDk~X)lYry2t zn;RNcqDJ*flSf0#-@oFPTU7@yivmO}bhTh!q=aocyoK;(s-jhWZHRr+nD9il`~po* zGix5JEQ;hk_yKNGh42a%WgC28IQD({XC0>f;iUYlu{vgPK<||-nmZ@)6Gu z5=}5JN08nH=>npnB7z3#gx))b z-W5p%3?-q21jqq|01^agQvG)DyLa7tzjfEjzy0n#Z}!Z7=b4#jCSi$mg^KMeXz?LW zarth3>&PxAl4fxE3Kzn5y9OeODzUAAoW&=S9*pDv^?o;oh$IiJY$+#vKuiL@tIUX4fqbYzz*CcUp~Upmkx<+Vm{Li ziX)$`+InFFvgQ&{@d=W!=V)VZEm*~&ysk|2!?b)Hb#>wxeMj|r^EOmd_dC?hTJyaz z^W3wb&%$)XepH195%HNmlJX%8E*#@qZw)~8+4%D9L5M*MrPo?|gj;(lb5q`;{yhK{ zU^>c&AtHflN`EhWzkU2}nllDtt{t&NOF<_kRZPr)>)1^^30A3@vLpP?0d zodPIBjprispP9w1ndl2T)k3(J(IPf;g)&6vf|o3;N8sgdBE`Mq0pk&#viR~e@$Y!j z|5uznlJaj^5F-Xqb|UKW588a_-GU``%bnh?ig7`AcBQS;jJJU*53nn@_h1+78uw!0 zzc&n&{w0|H&ymg!0s&|b6gk&g3ntPw0~OjG{O3IWBG)ViZCJ1)Jp7b8OSV)26!ZHZ z(~qIK0{4IxpbyaC2(yM+r|82iGhdUlmGDG?GcZmmRXX0Xd(}1mbyWUr!&PS*-~J zciU)0d+lyaY=2tq#YVzRtFEiR28u=i!9d(IPUU;m*;mIT}OviURW(Ud2VNov#u-hH#f)_mCnQLnF z%*4_Ut49`Vor+YpR=>j>Tw3QVwh8pCQ@87UaV~lm(4f}^m9Pl2z|9xi;c~yG*qC`p zEV(B_4l-hY)P@Q<@bQmg(D$v*21PM|-f(4d8e^SUQ91Ci!CY+QtkV*ag=yhA^H5V> zpzk8QH|71T9Bpa?cM7+5lM$3Q*zL_#c)_B#Mz$Y+D)(8Q4bacft+9<#3<-_{o+k3r zlPf*vT(@CU98NVdiBE90!k6UQ>zfffKwts6+;t%M0@tsp+_BCob&vu)B}~XUXNHO? zkgCgK+rL?I__jt^97_Ag5N=ZV_(B64Wyithc)gsg=ZS#8ZGR^y_T5Fy+BbjK4U&n; z{q_nlJ9a%ZE~MorW|M#X#>uKHQ9XWJhFi7XUU_4m07ceanW^^cS&#`ScLj9b^q9^3 zWfv)5+C01JxyyhXOU$oU&# zP3_fU5@vpz#fh!GN$xVcchM|uW1BTutd(2OXhjHizq@_YwVI?UZ0h}(<5^g~hYgGq zZWH8P_r|1DK)e+jJq4iTyUOH)CBK~!L|X;jR2DWeLZ^q_L`Vq0Qp`*P!B+K&4J!js zbYh@L@rq=lhsY1ogp_6Qg>0VGx`1wG37fPmD?M%iXl82`Pp|`9q(Qm{w)Cf(Zi~L) zKtJRSUB%UrAF#E9lQ6||#W7xqF@{3Pn35SEa7HklYLaCSTpmOxZ)D{-LHA zsAKS=i(5;4Ve?O$%IsXRoUy_X6^OpG=%NsC^=D3b-O`Bi@>&% zHs?Yzz-c)6eN~q&(W^|$9DBReD;TINd}UFzCU#OmpOSH}#z*

|%N=`q&$AHD^&A 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 literal 66258 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ΊYVh2&Az3v zeya}D7QhGOl5H>qu?55sU1~4JB^c>KI^>-JQtTr{f*Jq|$)q9mthpRDvI+eBD5@`n z?1hBrD~dfEQsUUR{VqS25|R@mZjZFU4GXE>_T^^HsdcKReQZw zP*|WXmL4)!Z*$mFIOouEZ^<2n@tm!zI`kt!$#2Jx!`T2PpRT!&IhqF130i9>iV53- z?-8qo0D_T|vbq<)<*CrG^W}E`s92mjl??|+{y zLmD)3#Hl;1v6UaI|U`kVZ5D~F>Z z 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%0D#N)S#>(}$ni!{o;3Vx0Aio7 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 diff --git a/games/twoplayer/docs/pages.png b/games/twoplayer/docs/pages.png deleted file mode 100644 index d36f1e7cf226e8d9af72ef3e8482a91774e05182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29678 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 QPX%#3UHx3vIVCg!03seA>;M1& literal 15906 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 DS&Y%@ diff --git a/games/twoplayer/lang/fr.txt b/games/twoplayer/lang/fr.txt index 95a4a34f..b9f4b40f 100644 --- a/games/twoplayer/lang/fr.txt +++ b/games/twoplayer/lang/fr.txt @@ -3,72 +3,64 @@ Pong Pong Air Hockey Air hockey Tanks Tanks Light Cycles Motos de lumière +Quick Draw Duel éclair +Tug of War Tir à la corde +Volleyball Volley +Sumo Sumo +Rocket Race Course de fusées +Archery Tir à l'arc +Dodgeball Balle aux prisonniers +Football Football +Meteor Run Pluie de météores +Fishing Pêche +Memory Duel Duel de mémoire Return the ball with your paddle: its middle sends the ball back straight, its ends at a steep angle. The longer a rally lasts, the faster the ball. Renvoie la balle avec ta raquette : son milieu la renvoie tout droit, ses bouts en biais. Plus l'échange dure, plus la balle va vite. Knock the puck into the other goal. Your mallet stays in your half; hit the puck on the move to send it flying. Envoie le palet dans l'autre but. Ton maillet reste dans ta moitié ; frappe le palet en bougeant pour qu'il file. +Drive through the maze and hit the other tank. Shells bounce off the walls: watch out for your own! Roule dans le labyrinthe et touche l'autre tank. Les obus rebondissent sur les murs : gare aux tiens ! Steer your light cycle and make the other one crash into a wall or a trail. It never stops and never turns back. Pilote ta moto de lumière et fais percuter l'autre contre un mur ou une traînée. Elle ne s'arrête et ne recule jamais. +Wait for DRAW!, then press your key: the first one wins. Too soon loses the round. Attends FEU !, puis appuie sur ta touche : le premier gagne. Trop tôt, tu perds la manche. +Tap your key fast to pull the rope. Pull the flag past your line. Appuie vite sur ta touche pour tirer la corde. Fais passer le drapeau derrière ta ligne. +Jump with up or your key. Hit the ball over the net and don't let it land on your side. Saute avec haut ou ta touche. Renvoie la balle par-dessus le filet sans la laisser tomber de ton côté. +Push the other one out of the ring. Your key dashes. The ring shrinks. Pousse l'autre hors du cercle. Ta touche fonce. Le cercle rétrécit. +Tap up or your key to fly through the gaps. Don't touch the walls or the edges. Appuie sur haut ou ta touche pour passer dans les trous. Ne touche ni les murs ni les bords. +Up and down aim. Hold your key to draw the bow, let go to shoot. Three hits win. Haut et bas visent. Maintiens ta touche pour bander l'arc, relâche pour tirer. Trois touches gagnent. +Your key throws at the other one. Dodge their balls. Three hits win. Ta touche lance sur l'autre. Évite ses balles. Trois touches gagnent. +Push the ball into the other goal. Near it, your key kicks it at the goal. Pousse le ballon dans l'autre but. Tout près, ta touche le tire vers le but. +Dodge the falling rocks. Both lanes get the same ones. Last one standing wins. Évite les rochers qui tombent : les mêmes dans les deux couloirs. Le dernier debout gagne. +Hold your key to lower the hook, let go to reel in. Land a fish first. Maintiens ta touche pour descendre l'hameçon, relâche pour remonter. Attrape un poisson le premier. +Watch the arrows, then repeat them. First to finish without a mistake wins. Regarde les flèches, puis refais-les. Le premier à finir sans erreur gagne. Computer IA Player 2 Joueur 2 You Toi Player 1 Joueur 1 +Back pause Retour pause +DRAW! FEU ! +Wait... Attends... +Your turn! À toi ! +Watch Regarde Computer: easy IA : facile Computer: normal IA : normale Computer: hard IA : difficile 2 Players 2 joueurs +OK play Back quit OK jouer Retour quitter +arrows flèches First to Premier à Play Jouer +Back games Retour jeux Draw! Égalité ! Resume Reprendre Restart Recommencer Other games Autres jeux Quit game Quitter Paused Pause +OK choose Back resume OK choisir Retour reprendre Player 1 wins! Joueur 1 gagne ! Player 2 wins! Joueur 2 gagne ! You win! Gagné ! The computer wins L'IA gagne Rematch Revanche +OK choose Back games OK choisir Retour jeux No Non Yes Oui Quit game? Quitter ? - -# Additional mini-games -Quick Draw Duel éclair -Tug of War Tir à la corde -Football Football -Volley Ball Volley -Archery Tir à l'arc -Dodge Ball Balle au prisonnier -Meteor Run Météores -Rocket Race Fusées -Sumo Sumo -Fishing Pêche -Memory Duel Duel de mémoire -Wait for DRAW, then press your action key. A false start loses the round. Simultaneous shots draw. Attends le signal, puis appuie sur Action. Un faux départ perd la manche. Tirs simultanés : égalité. -Tap your action key to pull the rope. Release between pulls: holding does not repeat. Drag the flag past your line. Appuie puis relâche Action pour tirer. Maintenir ne répète pas. Fais passer le drapeau derrière ta ligne. -Move around the pitch and kick with your action key. Push the ball into the other goal; rebounds stay in play. Déplace-toi et tire avec Action. Envoie le ballon dans le but adverse. Les rebonds restent en jeu. -Move left and right; Up or your action key jumps. Keep the ball off your floor and send it over the net. Va à gauche ou à droite ; Haut ou Action fait sauter. Renvoie la balle au-dessus du filet sans la laisser tomber. -Move in your half and throw with your action key. Dodge incoming balls. Three hits knock a player out. Déplace-toi dans ta moitié et lance avec Action. Évite les balles. Trois impacts éliminent un joueur. -Move left and right to dodge the falling rocks. Both lanes get the same obstacles. Stay alive longer than your rival. Va à gauche ou à droite pour éviter les rochers. Les deux pistes sont identiques. Survis plus longtemps que ton rival. -Tap Up or your action key to boost your rocket. Fly through the gaps; avoid the walls. Both pilots face the same course. Haut ou Action propulse ta fusée. Vole dans les ouvertures sans toucher les murs. Le parcours est le même pour les deux. -Move inside the ring. Your action key dashes and pushes your rival. Stay inside: the ring gradually shrinks. Bouge dans le cercle. Action fait charger pour pousser ton rival. Reste à l'intérieur : le cercle rétrécit. -Move your rod left and right. Hold your action key to lower the hook; release to reel in a fish. Catch five first. Déplace ta canne. Maintiens Action pour descendre le crochet ; relâche pour remonter un poisson. Premier à cinq. -Watch the arrow sequence, then repeat it with your direction keys. The first correct sequence wins; a wrong arrow loses. Observe les flèches, puis répète la suite avec les directions. Le premier sans faute gagne ; une erreur fait perdre. -DRAW! GO ! -Wait... Attends... -Too soon loses the round Trop tôt : manche perdue -Tap, release, pull! Appuie, relâche, tire ! -Repeat the arrows! Répète les flèches ! -Watch the arrows Observe les flèches -7 / 9: page 7 / 9 : page -Use direction keys Touches de direction -Retry saving Réessayer -Exit without saving Quitter sans sauver -Save failed Échec de sauvegarde -Aim with Up and Down. Hold OK (player 1) or EXE (player 2) to charge; release to shoot. The dotted arc shows your shot. Three hits win the round. Haut/Bas pour viser. Maintiens OK (J1) ou EXE (J2), puis relâche pour tirer. Les pointillés montrent le tir. Trois impacts gagnent. -Power Puissance -Hold OK / EXE, release to shoot Maintiens OK / EXE, relâche pour tirer -Action: OK / EXE Action : OK / EXE -Up/Down drive; Left/Right turn. OK (player 1) or EXE (player 2) fires. Shells bounce off walls and can hit your own tank! Haut/Bas pour avancer ou reculer, Gauche/Droite pour tourner. OK (J1) ou EXE (J2) tire. Les obus rebondissent : gare aux tiens ! -Release! Relâche ! -Hold OK Maintiens OK -Hold EXE Maintiens EXE +OK choose Back no OK choisir Retour non diff --git a/games/twoplayer/lang/zh.txt b/games/twoplayer/lang/zh.txt index 66fc60ef..67658497 100644 --- a/games/twoplayer/lang/zh.txt +++ b/games/twoplayer/lang/zh.txt @@ -3,72 +3,64 @@ Pong 乒乓 Air Hockey 桌上冰球 Tanks 坦克大战 Light Cycles 光速摩托 +Quick Draw 快枪对决 +Tug of War 拔河 +Volleyball 排球 +Sumo 相扑 +Rocket Race 火箭穿越 +Archery 射箭 +Dodgeball 躲避球 +Football 足球 +Meteor Run 流星雨 +Fishing 钓鱼 +Memory Duel 箭头对决 Return the ball with your paddle: its middle sends the ball back straight, its ends at a steep angle. The longer a rally lasts, the faster the ball. 用球拍把球打回去:拍子中间把球直直打回,两端打出斜角。来回越久,球越快。 Knock the puck into the other goal. Your mallet stays in your half; hit the puck on the move to send it flying. 把冰球打进对方球门。你的球槌只能在自己半场;边移动边击球,球就会飞出去。 +Drive through the maze and hit the other tank. Shells bounce off the walls: watch out for your own! 在迷宫里开坦克,击中对方。炮弹会在墙上反弹:小心别打到自己! Steer your light cycle and make the other one crash into a wall or a trail. It never stops and never turns back. 驾驶你的光速摩托,让对方撞上墙壁或光轨。摩托从不停下,也不能掉头。 +Wait for DRAW!, then press your key: the first one wins. Too soon loses the round. 等到出现「拔枪!」再按你的键,先按的获胜。按太快就输了这一局。 +Tap your key fast to pull the rope. Pull the flag past your line. 快速连按你的键,把旗子拉过你的线。 +Jump with up or your key. Hit the ball over the net and don't let it land on your side. 用上或你的键跳起。把球打过网,别让它落在你这边。 +Push the other one out of the ring. Your key dashes. The ring shrinks. 把对方推出场地。你的键是冲撞。场地会变小。 +Tap up or your key to fly through the gaps. Don't touch the walls or the edges. 按上或你的键飞过缺口。别碰到墙或上下边缘。 +Up and down aim. Hold your key to draw the bow, let go to shoot. Three hits win. 上下调整角度。按住你的键拉弓,松开射箭。命中三次获胜。 +Your key throws at the other one. Dodge their balls. Three hits win. 你的键向对方投球。躲开对方的球。命中三次获胜。 +Push the ball into the other goal. Near it, your key kicks it at the goal. 把球推进对方球门。靠近时,你的键把球踢向球门。 +Dodge the falling rocks. Both lanes get the same ones. Last one standing wins. 躲开落下的石头。两边落下的石头相同。最后留下的获胜。 +Hold your key to lower the hook, let go to reel in. Land a fish first. 按住你的键放下鱼钩,松开收线。先钓到鱼的获胜。 +Watch the arrows, then repeat them. First to finish without a mistake wins. 看好箭头,再照着按一遍。先全部按对的获胜,按错就输。 Computer 电脑 Player 2 玩家 2 You 你 Player 1 玩家 1 +Back pause 返回 暂停 +DRAW! 拔枪! +Wait... 等待… +Your turn! 轮到你了! +Watch 看好 Computer: easy 电脑:简单 Computer: normal 电脑:普通 Computer: hard 电脑:困难 2 Players 双人对战 +OK play Back quit OK 开始 返回 退出 +arrows 方向键 First to 先得 Play 开始 +Back games 返回 游戏 Draw! 平局! Resume 继续 Restart 重新开始 Other games 其他游戏 Quit game 退出游戏 Paused 暂停 +OK choose Back resume OK 选择 返回 继续 Player 1 wins! 玩家 1 获胜! Player 2 wins! 玩家 2 获胜! You win! 你赢了! The computer wins 电脑获胜 Rematch 再来一局 +OK choose Back games OK 选择 返回 游戏 No 否 Yes 是 Quit game? 退出游戏? - -# Additional mini-games -Quick Draw 极速对决 -Tug of War 拔河 -Football 足球 -Volley Ball 排球 -Archery 射箭 -Dodge Ball 躲避球 -Meteor Run 陨石闪避 -Rocket Race 火箭竞速 -Sumo 相扑 -Fishing 钓鱼 -Memory Duel 记忆对决 -Wait for DRAW, then press your action key. A false start loses the round. Simultaneous shots draw. 等待开枪信号,再按行动键。抢先开枪会输;同时开枪则平局。 -Tap your action key to pull the rope. Release between pulls: holding does not repeat. Drag the flag past your line. 反复按下并松开行动键来拉绳。长按不会重复。把旗子拉过你的线。 -Move around the pitch and kick with your action key. Push the ball into the other goal; rebounds stay in play. 在球场移动,用行动键踢球。把球踢进对方球门;球会在边线反弹。 -Move left and right; Up or your action key jumps. Keep the ball off your floor and send it over the net. 左右移动,用上键或行动键跳跃。把球打过球网,别让它落在己方地上。 -Move in your half and throw with your action key. Dodge incoming balls. Three hits knock a player out. 在己方半场移动,用行动键投球。躲避来球,被击中三次就出局。 -Move left and right to dodge the falling rocks. Both lanes get the same obstacles. Stay alive longer than your rival. 左右移动躲避陨石。两条赛道的障碍完全相同,比对手坚持更久。 -Tap Up or your action key to boost your rocket. Fly through the gaps; avoid the walls. Both pilots face the same course. 按上键或行动键推进火箭。穿过空隙,避开墙壁。两位飞行员面对同一赛道。 -Move inside the ring. Your action key dashes and pushes your rival. Stay inside: the ring gradually shrinks. 在圆环里移动。行动键冲刺并推开对手。别出界,圆环会逐渐缩小。 -Move your rod left and right. Hold your action key to lower the hook; release to reel in a fish. Catch five first. 左右移动鱼竿。按住行动键放下鱼钩,松开收竿。先钓到五条鱼获胜。 -Watch the arrow sequence, then repeat it with your direction keys. The first correct sequence wins; a wrong arrow loses. 先记住箭头顺序,再用方向键重复。先正确完成者获胜,按错就输。 -DRAW! 开枪! -Wait... 等等…… -Too soon loses the round 抢先行动会输 -Tap, release, pull! 按下、松开、拉! -Repeat the arrows! 重复箭头! -Watch the arrows 记住箭头 -7 / 9: page 7 / 9:翻页 -Use direction keys 使用方向键 -Retry saving 重试保存 -Exit without saving 不保存退出 -Save failed 保存失败 -Aim with Up and Down. Hold OK (player 1) or EXE (player 2) to charge; release to shoot. The dotted arc shows your shot. Three hits win the round. 用上下键瞄准。玩家1按住OK,玩家2按住EXE蓄力,松开射箭。虚线显示轨迹,命中三次获胜。 -Power 力度 -Hold OK / EXE, release to shoot 按住OK / EXE,松开射箭 -Action: OK / EXE 行动:OK / EXE -Up/Down drive; Left/Right turn. OK (player 1) or EXE (player 2) fires. Shells bounce off walls and can hit your own tank! 上下键前后移动,左右键转向。玩家1按OK,玩家2按EXE开火。炮弹会反弹,小心自己的炮弹! -Release! 松开! -Hold OK 按住OK -Hold EXE 按住EXE +OK choose Back no OK 选择 返回 否 diff --git a/games/twoplayer/src/main.c b/games/twoplayer/src/main.c index eba40770..2a5d5310 100644 --- a/games/twoplayer/src/main.c +++ b/games/twoplayer/src/main.c @@ -1,17 +1,16 @@ -/* 2 Players: fifteen mini-games for two people on one calculator. +/* 2 Players: Pong and more games for two people on one calculator. * - * Player 1 holds the left of the keyboard (the arrows, and OK for action), player 2 the right - * (the keys around +, and EXE to fire), both at once; or player 2 is the computer, easy, normal - * or hard. Pong plays as the 1972 arcade game does; then Air Hockey, Tanks in a maze with - * shells that bounce off the walls, and Light Cycles. A match is first to a few points, and the + * Player 1 holds the left of the keyboard (the arrows, and OK to act), player 2 the right (the keys + * around +, and EXE to act), both at once; or player 2 is the computer, easy, normal or hard. Pong + * plays as the 1972 arcade game does; then Air Hockey, Tanks in a maze with shells that bounce off + * the walls, Light Cycles, and Bobydeluxe's party games. A match is first to a few points, and the * matches each side has won are kept for every game. * * Inside NumPlay it draws with the launcher's strips, shapes and fonts (launcher/src/gfx.c) and * saves through its file functions, like Block Blast; on its own (TwoPlayers.nwa) it brings them * along. Positions are in 256ths of a pixel and time in milliseconds, but for the round things - * of Air Hockey. */ + * of Air Hockey and the party games, in pixels and seconds. */ #include -#include #include "../../../launcher/src/gfx.h" #include "../../common/np_text.h" @@ -34,35 +33,24 @@ void np_push(int x, int y, int w, int h, const color_t *px) { #define INK HEX(0x161A33) /* the menus' night blue */ #define GOLD HEX(0xFFC93C) -/* IDs 0..3 are the original games and remain stable in existing saves. */ -enum { PONG, HOCKEY, TANKS, CYCLES, QUICK, TUG, FOOTBALL, VOLLEY, - ARCHERY, DODGE, METEORS, ROCKETS, SUMO, FISHING, MEMORY, NG }; -static const char *const NAME[NG] = {T("Pong"), T("Air Hockey"), T("Tanks"), T("Light Cycles"), - T("Quick Draw"), T("Tug of War"), T("Football"), T("Volley Ball"), - T("Archery"), T("Dodge Ball"), T("Meteor Run"), T("Rocket Race"), - T("Sumo"), T("Fishing"), T("Memory Duel")}; -static const uint8_t TARGET[NG] = {11, 7, 5, 5, 5, 5, 5, 7, 5, 5, 5, 5, 5, 5, 5}; -/* left=1, up=2, down=4, right=8, action=16; used by the keyboard tutorial. */ -static const uint8_t CONTROL[NG] = {6,15,31,15,16,16,31,27,22,31,9,18,31,25,15}; +/* (in the menu's order, and the saves': a new game goes last) */ +enum { PONG, HOCKEY, TANKS, CYCLES, QUICK, TUG, NG }; +static const char *const NAME[NG] = {T("Pong"), T("Air Hockey"), T("Tanks"), T("Light Cycles"), T("Quick Draw"), + T("Tug of War")}; +static const uint8_t TARGET[NG] = {11, 7, 5, 5, 5, 5}; /* first to */ +/* the keys each game uses, for its keyboard: left 1, up 2, down 4, right 8, the action 16 */ +static const uint8_t KEYS_USED[NG] = {6, 15, 31, 15, 16, 16}; static const char *const RULES[NG] = { T("Return the ball with your paddle: its middle sends the ball back straight, its ends at a steep angle. The longer a rally lasts, the faster the ball."), T("Knock the puck into the other goal. Your mallet stays in your half; hit the puck on the move to send it flying."), - T("Up/Down drive; Left/Right turn. OK (player 1) or EXE (player 2) fires. Shells bounce off walls and can hit your own tank!"), + T("Drive through the maze and hit the other tank. Shells bounce off the walls: watch out for your own!"), T("Steer your light cycle and make the other one crash into a wall or a trail. It never stops and never turns back."), - T("Wait for DRAW, then press your action key. A false start loses the round. Simultaneous shots draw."), - T("Tap your action key to pull the rope. Release between pulls: holding does not repeat. Drag the flag past your line."), - T("Move around the pitch and kick with your action key. Push the ball into the other goal; rebounds stay in play."), - T("Move left and right; Up or your action key jumps. Keep the ball off your floor and send it over the net."), - T("Aim with Up and Down. Hold OK (player 1) or EXE (player 2) to charge; release to shoot. The dotted arc shows your shot. Three hits win the round."), - T("Move in your half and throw with your action key. Dodge incoming balls. Three hits knock a player out."), - T("Move left and right to dodge the falling rocks. Both lanes get the same obstacles. Stay alive longer than your rival."), - T("Tap Up or your action key to boost your rocket. Fly through the gaps; avoid the walls. Both pilots face the same course."), - T("Move inside the ring. Your action key dashes and pushes your rival. Stay inside: the ring gradually shrinks."), - T("Move your rod left and right. Hold your action key to lower the hook; release to reel in a fish. Catch five first."), - T("Watch the arrow sequence, then repeat it with your direction keys. The first correct sequence wins; a wrong arrow loses."), + T("Wait for DRAW!, then press your key: the first one wins. Too soon loses the round."), + T("Tap your key fast to pull the rope. Pull the flag past your line."), }; -/* twoplayer.sav: the game last chosen, who player 2 is, and the matches won */ +/* twoplayer.sav: the game last chosen, who player 2 is, and the matches won (version 1 had four + games: a shorter file of the same layout, read as it is) */ static struct { uint8_t magic, version, game, cpu; /* cpu: 0 a second player, 1 to 3 the computer, easy to hard */ uint16_t wins[NG][2][2]; /* [game][against the computer][player 1, player 2] */ @@ -73,10 +61,11 @@ static color_t strip[SCREEN_W * STRIP_H]; static color_t team[2], light[2], dark[2]; /* player 1 red, player 2 blue */ static uint32_t now, seed, phase_t; /* now: the game's clock, stopped while paused */ static int ms; /* this frame's milliseconds */ +static float dt; /* ...in seconds */ static int game, cpu, score[2], phase, winner; /* phase: 0 playing, 1 a point just won, 2 the match over */ static int pad[2], tap[2]; /* each player's keys held, and just pressed */ enum { B_LEFT = 1, B_UP = 2, B_DOWN = 4, B_RIGHT = 8, B_FIRE = 16 }; -/* the keys: left, up, down, right, fire */ +/* the keys: left, up, down, right, action */ static const uint8_t KEYS[2][5] = { {eadk_key_left, eadk_key_up, eadk_key_down, eadk_key_right, eadk_key_ok}, {eadk_key_three, eadk_key_multiplication, eadk_key_ans, eadk_key_minus, eadk_key_exe}}; @@ -91,20 +80,12 @@ static int clampi(int v, int a, int b) { return v < a ? a : v > b ? b : v; } static float clampf(float v, float a, float b) { return v < a ? a : v > b ? b : v; } static float len(float x, float y) { return __builtin_sqrtf(x * x + y * y); } static uint32_t ago(uint32_t t) { return now - t; } +static bool due(uint32_t t) { return (int32_t)(now - t) >= 0; } static bool down(uint64_t keys, int k) { return (uint32_t)(keys >> (k & 32)) >> (k & 31) & 1; } static bool is_cpu(int p) { return p && cpu; } static int dirx(int p) { return !!(pad[p] & B_RIGHT) - !!(pad[p] & B_LEFT); } static int diry(int p) { return !!(pad[p] & B_DOWN) - !!(pad[p] & B_UP); } -/* CPU intentions are sampled, never recomputed with perfect reflexes every tick. - * Each round starts with a short observation delay, and harder still leaves - * a human reaction window. The two-human input path never uses this state. */ -static struct { uint32_t next; float x,y; int pad; } bot; -static bool bot_due(void) { - if((int32_t)(now-bot.next)<0)return false; - bot.next=now+(cpu==1?340:cpu==2?240:160)+rn(cpu==1?140:cpu==2?100:70); - return true; -} -static void bot_input(void) { pad[1]=bot.pad;tap[1]=0; } +static int acted(int p) { return tap[p] >> 4 & 1; } /* the action key just pressed */ /* sine of a 64th of a turn, times 127 */ static const int8_t SINQ[17] = {0, 12, 25, 37, 49, 60, 71, 81, 90, 98, 106, 112, 117, 122, 125, 126, 127}; static int sin64(int a) { @@ -112,6 +93,18 @@ static int sin64(int a) { return a & 32 ? -v : v; } static int cos64(int a) { return sin64(a + 16); } +/* The computer sees and thinks at a human's pace: it decides again every so often, not every + frame, and holds its keys in between. */ +static struct { + uint32_t next; + float x, y; +} bot; +static bool bot_due(void) { + static const uint16_t EVERY[4] = {0, 340, 240, 160}; + if (!due(bot.next)) return false; + bot.next = now + EVERY[cpu] + rn(EVERY[cpu] / 2); + return true; +} static char *num(char *o, uint32_t v) { /* v in o, then the end of it */ char t[10]; @@ -157,26 +150,26 @@ static uint32_t serve_at; /* the ball waits in the middle until then (0: in play static int pong_speed(void) { return hits >= 12 ? clampi(46 + hits, 58, 84) : hits >= 4 ? 48 : 38; } static void pong_start(void) { /* the ball is served towards the one who lost the point */ int to = winner < 2 ? 1 - winner : rn(2); - hits = aim = 0;bot.y=120<<8; + hits = aim = 0; bx = (160 - BS / 2) << 8, by = (70 + rn(100)) << 8, bvx = to ? 1 : -1, bvy = rn(9) - 4; - serve_at = now + 900; + serve_at = now + 900, bot.y = 120 << 8; if (!score[0] && !score[1]) py[0] = py[1] = (120 - PH / 2) << 8; } -/* the computer's paddle (player 2): to where the ball will come, off centre by its aim */ +/* the computer's paddle (player 2): to where it sees the ball will come, off centre by its aim + and by how much it misjudges, slower than a player's */ static int pong_cpu(void) { - static const uint8_t SPEED[4]={0,20,30,40}; - if(bot_due()){ - int to=120<<8; - if(bvx>0&&!serve_at&&bx>(cpu==1?190<<8:cpu==2?145<<8:90<<8)){ - int span=(PBOT-BS-PTOP)<<8,y=by-(PTOP<<8)+bvy*(((PX[1]-BS)<<8)-bx)/bvx; - for(int i=0;i<8&&(y<0||y>span);i++)y=y<0?-y:2*span-y; - to=y+((PTOP+BS/2)<<8)-aim; + static const uint8_t SPEED[4] = {0, 20, 30, 40}, MISS[4] = {0, 20, 12, 7}; + static const int16_t SEES[4] = {0, 190, 145, 90}; /* where the ball must be before it looks */ + if (bot_due()) { + int to = 120 << 8; + if (bvx > 0 && !serve_at && bx > SEES[cpu] << 8) { + int span = (PBOT - BS - PTOP) << 8, y = by - (PTOP << 8) + bvy * (((PX[1] - BS) << 8) - bx) / bvx; + for (int i = 0; i < 8 && (y < 0 || y > span); i++) y = y < 0 ? -y : 2 * span - y; + to = y + ((PTOP + BS / 2) << 8) - aim; } - int error=cpu==1?20:cpu==2?12:7; - bot.y=clampi(to+(rn(error*2+1)-error)*256,PTOP<<8,PBOT<<8); + bot.y = (float)(to + (rn(2 * MISS[cpu] + 1) - MISS[cpu]) * 256); } - int delta=(int)bot.y-py[1]-(PH<<7); - return clampi(delta/40,-SPEED[cpu],SPEED[cpu]); + return clampi(((int)bot.y - py[1] - (PH << 7)) / 40, -SPEED[cpu], SPEED[cpu]); } static void pong_step(void) { for (int p = 0; p < 2; p++) @@ -192,7 +185,10 @@ static void pong_step(void) { bvx = p ? -s : s, bvy = SEG[clampi((y + BS - top) * 8 / (PH + BS), 0, 7)] * s / 10; bx = (p ? PX[p] - BS : PX[p] + PW) << 8; /* where the computer means to take the next one: off centre, by how much it misjudges */ - if (!p) aim = cpu == 3 ? (rn(2) ? 2816 : -2816) + rn(1536) - 768 : (rn(512) - 256) * (cpu == 1 ? 25 : 14); + if (!p) { + aim = rn(1536) - 768; + aim = cpu == 3 ? aim + (rn(2) ? 2816 : -2816) : aim / 3 * (cpu == 1 ? 25 : 14); + } } if (x < -BS - 10 || x > SCREEN_W + 10) { point(x < 0); @@ -210,6 +206,7 @@ static void pong_paint(void) { gfx_fill(0, PTOP - 4, SCREEN_W, 4, WHITE); gfx_fill(0, PBOT, SCREEN_W, 4, WHITE); for (int y = PTOP + 4; y < PBOT; y += 16) gfx_fill(158, y, 4, 8, WHITE); + gfx_text_center(&np_font_small, 80, 227, T("Back pause"), HEX(0x6E6E6E), 256); /* (under the paddles and the ball) */ for (int p = 0; p < 2; p++) { gfx_fill(PX[p], py[p] >> 8, PW, PH, WHITE); for (int v = score[p], n = v > 9, d = n; d >= 0; d--, v /= 10) @@ -234,8 +231,8 @@ static float mx[2], my[2], mvx[2], mvy[2], qx, qy, qvx, qvy, qaim; static void hockey_start(void) { /* the puck to the one who was scored on */ int to = winner < 2 ? 1 - winner : rn(2); for (int p = 0; p < 2; p++) mx[p] = p ? RX1 - 40 : RX0 + 40, my[p] = RYM, mvx[p] = mvy[p] = 0; - bot.x=RX1-40;bot.y=RYM; qx = to ? 220 : 100, qy = RYM, qvx = qvy = 0, qaim = (float)(rn(44) - 22); /* where the computer aims */ + bot.x = RX1 - 40, bot.y = RYM; } /* the puck off something round at (x, y) moving at (vx, vy) */ static void knock(float x, float y, float vx, float vy, float r) { @@ -246,26 +243,31 @@ static void knock(float x, float y, float vx, float vy, float r) { float vn = (qvx - vx) * dx + (qvy - vy) * dy; if (vn < 0) qvx -= 1.85f * vn * dx, qvy -= 1.85f * vn * dy; } -static void hockey_step(void) { +/* the computer's mallet (player 2): behind the puck to shoot it at the other goal, or guarding + its own, where it saw them last; its speed (tx, ty) */ +static void hockey_cpu(float *tx, float *ty) { static const float V[4] = {0, 90, 130, 175}; + static const uint8_t MISS[4] = {0, 18, 11, 6}; + if (bot_due()) { + float x = RX1 - 36, y = RYM + (qy - RYM) / 2; + if (qx > 160 - QR && !phase) { + float ax = RX0 - qx, ay = RYM + qaim - qy, l = len(ax, ay); + ax /= l, ay /= l; + x = qx - ax * (MR + QR + 3), y = qy - ay * (MR + QR + 3); + if (mx[1] < qx + 2) x = qx + MR + QR + 10, y = qy + (qy > RYM ? -28 : 28); /* in front of it: go round */ + else if (len(x - mx[1], y - my[1]) < 7) x = qx + ax * 24, y = qy + ay * 24; /* strike */ + if (x > RX1 - MR || y < RY0 + MR || y > RY1 - MR) x = qx, y = qy; /* it can't get behind it: at it */ + } + bot.x = x, bot.y = y + (float)(rn(2 * MISS[cpu] + 1) - MISS[cpu]); + } + float x = bot.x - mx[1], y = bot.y - my[1], l = len(x, y) + 0.01f, v = V[cpu] * (l < 16 ? l / 16 : 1) / l; + *tx = x * v, *ty = y * v; +} +static void hockey_step(void) { for (int p = 0; p < 2; p++) { float tx, ty, k = clampf(ms * 0.014f, 0, 1); - if (is_cpu(p)) { /* behind the puck to shoot it at the other goal, or guarding its own */ - if(bot_due()) { - tx = RX1 - 36, ty = RYM + (qy - RYM) / 2; - if (qx > 160 - QR && !phase) { - float ax = RX0 - qx, ay = RYM + qaim - qy, l = len(ax, ay); - ax /= l, ay /= l; - tx = qx - ax * (MR + QR + 3), ty = qy - ay * (MR + QR + 3); - if (mx[1] < qx + 2) tx = qx + MR + QR + 10, ty = qy + (qy > RYM ? -28 : 28); /* in front of it: go round */ - else if (len(tx - mx[1], ty - my[1]) < 7) tx = qx + ax * 24, ty = qy + ay * 24; /* strike */ - } - bot.x=tx;bot.y=ty+(rn(cpu==1?37:cpu==2?23:13)-(cpu==1?18:cpu==2?11:6)); - } - tx=bot.x-mx[1];ty=bot.y-my[1]; - float l = len(tx, ty) + 0.01f, v = V[cpu] * (l < 16 ? l / 16 : 1) / l; - tx *= v, ty *= v; - } else { + if (is_cpu(p)) hockey_cpu(&tx, &ty); + else { int x = dirx(p), y = diry(p); float s = x && y ? 175 : 245; tx = x * s, ty = y * s; @@ -277,6 +279,8 @@ static void hockey_step(void) { if (phase) return; for (int i = 0; i < ms; i++) { qx += qvx / 1000, qy += qvy / 1000; + for (int k = 0; k < 4; k++) knock(k & 1 ? RX1 : RX0, k & 2 ? GY1 : GY0, 0, 0, 0); /* the goal posts */ + for (int p = 0; p < 2; p++) knock(mx[p], my[p], mvx[p], mvy[p], MR); /* the boards: back on their edge, and off them only when moving into them (a mallet can push the puck into a board, and a slow puck flipped back and forth there stayed in it) */ if (qy < RY0 + QR) qy = RY0 + QR, qvy = qvy < 0 ? -qvy * 0.9f : qvy; @@ -289,8 +293,10 @@ static void hockey_step(void) { point(qx < 160); return; } - for (int k = 0; k < 4; k++) knock(k & 1 ? RX1 : RX0, k & 2 ? GY1 : GY0, 0, 0, 0); /* the goal posts */ - for (int p = 0; p < 2; p++) knock(mx[p], my[p], mvx[p], mvy[p], MR); + for (int p = 0; p < 2; p++) { /* and a mallet pressing it into a corner gives way */ + float dx = mx[p] - qx, dy = my[p] - qy, d = len(dx, dy) + .01f; + if (d < MR + QR) mx[p] = qx + dx / d * (MR + QR), my[p] = qy + dy / d * (MR + QR); + } } float s = len(qvx, qvy), f = 1 - 0.00035f * ms; if (s * f > 560) f = 560 / s; @@ -428,17 +434,17 @@ static bool shot_finds(int a, int b) { } return false; } -/* the computer's tank: a shot when there is one to take, else the way to the player, cell by - cell through the maze (found breadth first from the player) */ +/* the computer's tank: a shot when it sees one, a little off, else the way to the player, cell + by cell through the maze (found breadth first from the player) */ static void tanks_cpu(int *v, int *turn) { - static const int16_t RELOAD[4] = {0, 2300, 1700, 1200}; + static const int16_t RELOAD[4] = {0, 2300, 1700, 1200}, LOOK[4] = {0, 700, 500, 350}; static const int8_t BOUNCES[4] = {0, 0, 0, 1}; int dir = ta[1] >> 8, want = dir; - if (ago(ai_t) > (uint32_t)(cpu==1?700:cpu==2?500:350)) { + if (ago(ai_t) > (uint32_t)LOOK[cpu]) { ai_t = now, ai_aim = -1; for (int i = 0; i < 64 && ai_aim < 0; i++) { /* the nearest to where it faces first */ int a = (dir + (i & 1 ? 1 : -1) * ((i + 1) / 2)) & 63; - if (shot_finds(a, BOUNCES[cpu])) ai_aim = (a + rn(cpu==1?11:cpu==2?7:3) - (cpu==1?5:cpu==2?3:1)) & 63; + if (shot_finds(a, BOUNCES[cpu])) ai_aim = (a + rn(9 - 2 * cpu) - (4 - cpu)) & 63; } } if (ai_aim >= 0) { @@ -460,10 +466,10 @@ static void tanks_cpu(int *v, int *turn) { int d = (gx >> 8) * cos64(a) + (gy >> 8) * sin64(a); if (d > best) best = d, want = a; } - *v = clampi(6 - (((want - dir + 32) & 63) - 32) * (((want - dir + 32) & 63) - 32), 0, 1) * (cpu==1?45:cpu==2?55:64); + *v = clampi(6 - (((want - dir + 32) & 63) - 32) * (((want - dir + 32) & 63) - 32), 0, 1) * (36 + 9 * cpu); } int d = ((want - dir + 32) & 63) - 32; - *turn = d > 0 ? 4+cpu : d < 0 ? -4-cpu : 0; + *turn = d > 0 ? 4 + cpu : d < 0 ? -4 - cpu : 0; } static void tanks_step(void) { for (int p = 0; p < 2; p++) { @@ -472,7 +478,7 @@ static void tanks_step(void) { if (is_cpu(p)) tanks_cpu(&v, &turn); else { v = diry(p) < 0 ? 70 : diry(p) * -50, turn = dirx(p) * 8; - if (tap[p] & B_FIRE) fire(p); + if (acted(p)) fire(p); } ta[p] = (ta[p] + turn * ms) & 0x3FFF; /* 8 a ms: half a turn a second */ int x = tx_[p], y = ty_[p], dx = cos64(ta[p] >> 8) * v * ms / 496, dy = sin64(ta[p] >> 8) * v * ms / 496; @@ -573,18 +579,16 @@ static int room(int x, int y, int cap) { } return n; } -/* Choose space at human reaction intervals, without predicting the player's - future cells. Look a little ahead so slower decisions can still avoid a wall. */ +/* the computer's way, at a human's pace: the turn that leaves it the most room and the longest + way ahead, without guessing the player's next move */ static int cycles_cpu(void) { - if(!bot_due())return hd[1]; static const int16_t CAP[4] = {0, 12, 70, 220}; + if (!bot_due()) return hd[1]; int best = hd[1], bv = -(1 << 30); for (int t = 0; t < 3; t++) { - int d = (hd[1] + t + (t == 2)) & 3, x = hx[1] + DX[d], y = hy[1] + DY[d], r = room(x, y, CAP[cpu]); - int v = r * 8 + (t ? 0 : 6) + rn(cpu == 1 ? 120 : 6); - int ahead=0; - while(ahead<7&&free_at(x+ahead*DX[d],y+ahead*DY[d]))ahead++; - v+=ahead*48; + int d = (hd[1] + t + (t == 2)) & 3, x = hx[1] + DX[d], y = hy[1] + DY[d], r = room(x, y, CAP[cpu]), a = 0; + while (a < 7 && free_at(x + a * DX[d], y + a * DY[d])) a++; + int v = r * 8 + a * 48 + (t ? 0 : 6) + rn(cpu == 1 ? 120 : 6); if (!r) v = -(1 << 29); if (v > bv) bv = v, best = d; } @@ -635,76 +639,92 @@ static void cycles_paint(void) { } } -#include "party.h" -static void (*const START[NG])(void) = {pong_start,hockey_start,tanks_start,cycles_start, - quick_start,tug_start,football_start,volley_start,archery_start,dodge_start, - meteors_start,rockets_start,sumo_start,fishing_start,memory_start}; -static void (*const STEP_[NG])(void) = {pong_step,hockey_step,tanks_step,cycles_step, - quick_step,tug_step,football_step,volley_step,archery_step,dodge_step, - meteors_step,rockets_step,sumo_step,fishing_step,memory_step}; -static void (*const PAINT[NG])(void) = {pong_paint,hockey_paint,tanks_paint,cycles_paint, - quick_paint,tug_paint,football_paint,volley_paint,archery_paint,dodge_paint, - meteors_paint,rockets_paint,sumo_paint,fishing_paint,memory_paint}; - -/* ------------------------------------------------------------ screens */ -enum { S_MENU, S_RULES, S_PLAY, S_PAUSE, S_ASK, S_OVER, S_SAVE_ERROR }; -static int screen, sel, back_to; +/* ------------------------------------------------------------ the party games + Bobydeluxe's: short rounds, a key each. */ +static struct { + float rope; /* Tug of War: -100 (player 1's side) to 100 */ + uint32_t t0, at, next; /* the round's start, the signal (Quick Draw), the computer's next press */ +} pg; +static void party(void) { /* a new round */ + pg.rope = 0, pg.t0 = now, pg.next = now + 600; +} +static uint32_t round_ms(void) { return now - pg.t0; } +static void arena(uint32_t bg) { + gfx_fill(0, 22, SCREEN_W, SCREEN_H - 22, INK); + box(6, 28, 308, 206, 12, gfx_rgb(bg)); +} +static void person(int x, int feet, int p) { /* a player seen from the side, its key under it */ + disc(x, feet, 9, HEX(0x232944)); + box(x - 7, feet - 19, 14, 17, 5, team[p]); + disc(x, feet - 25, 7, light[p]); + disc(x + (p ? -3 : 3), feet - 26, 1, INK); + if (!is_cpu(p)) gfx_text_center(&np_font_body, clampi(x, 30, 290), 222, p ? "EXE" : "OK", light[p], 256); +} -#define SAVE_BYTES (8+NG*8) -static uint32_t save_crc(const uint8_t*d,unsigned n) { - uint32_t c=~0u;while(n--){c^=*d++;for(int k=0;k<8;k++)c=c>>1^((c&1)?0xEDB88320u:0);}return ~c; -} -static void save_encode(uint8_t*out) { - out[0]='P';out[1]=3;out[2]=(uint8_t)game;out[3]=(uint8_t)cpu; - for(unsigned g=0;g>8); - } - uint32_t crc=save_crc(out,SAVE_BYTES-4);for(int i=0;i<4;i++)out[SAVE_BYTES-4+i]=(uint8_t)(crc>>(8*i)); -} -static bool save_decode(const uint8_t*d,unsigned n) { - if(!d||n<4||d[0]!='P'||d[3]>3)return false; - unsigned count; - if(d[1]==1&&n==36&&d[2]<4)count=4; - else if((d[1]==2&&n==136&&d[2]<16)||(d[1]==3&&n==SAVE_BYTES&&d[2] d ? r - d : r < -d ? r + d : 0; + if (pg.rope < -67 || pg.rope > 67 || round_ms() > 30000) point(pg.rope < -1 ? 0 : pg.rope > 1 ? 1 : 2); +} +static void tug_paint(void) { + int x = 160 + (int)pg.rope; + char s[8], *e = num(s, round_ms() < 30000 ? (30999 - round_ms()) / 1000 : 0); /* the seconds left */ + arena(0x262D52); + e[0] = 's', e[1] = 0; + say(&np_font_body, 160, 56, s, GOLD); + for (int p = 0; p < 2; p++) gfx_fill(p ? 227 : 91, 96, 2, 100, team[p]); + gfx_fill(x - 86, 150, 172, 4, HEX(0xC5CBE4)); + for (int p = 0; p < 2; p++) person(x + (p ? 86 : -86), 186, p); + box(x - 6, 140, 12, 20, 3, GOLD); } -static int page_game(int direction) { - int page=(game/4+direction+(NG+3)/4)%((NG+3)/4); - return clampi(page*4+game%4,0,NG-1); + +static void (*const START[NG])(void) = {pong_start, hockey_start, tanks_start, cycles_start, quick_start, party}; +static void (*const STEP_[NG])(void) = {pong_step, hockey_step, tanks_step, cycles_step, quick_step, tug_step}; +static void (*const PAINT[NG])(void) = {pong_paint, hockey_paint, tanks_paint, cycles_paint, quick_paint, tug_paint}; + +/* ------------------------------------------------------------ screens */ +enum { S_MENU, S_RULES, S_PLAY, S_PAUSE, S_ASK, S_OVER }; +static int screen, sel, back_to, top; /* top: the first game the menu shows */ +static uint32_t shown; /* when the screen came (the clock's time) */ + +static void save(void) { + sv.magic = 'P', sv.version = 1, sv.game = (uint8_t)game, sv.cpu = (uint8_t)cpu; + np_file_write(SAVE_NAME, &sv, sizeof sv); } static void new_match(void) { - score[0] = score[1] = 0, phase = 0, winner = 2, screen = S_PLAY; - start_round(); + score[0] = score[1] = 0, phase = 0, winner = 2, screen = S_PLAY, bot.next = now + 450; + START[game](); } -static void match_step(void) { - if(cpu)pad[1]=tap[1]=0; /* EXE is a solo action alias, never an input to the bot. */ +static void play(void) { /* a frame of the match */ STEP_[game](); - if(phase==1&&ago(phase_t)>1500){ - phase=0; - if(score[0]0][score[1]>score[0]];if(*w<65535)(*w)++; - save(); - } + if (phase == 1 && ago(phase_t) > 1500) { + phase = 0; + if (score[0] < TARGET[game] && score[1] < TARGET[game]) bot.next = now + 450, START[game](); + else phase = 2, screen = S_OVER, sel = 0, sv.wins[game][cpu > 0][score[1] > score[0]]++, save(); } } static const char *opponent(void) { @@ -720,7 +740,7 @@ static void tri(int x, int y, int d, color_t c) { /* a little arrow, pointing ri } } /* The calculator's keyboard, the keys of this game in each player's colour: arrows on the keys - that move, a dot on the one that fires. */ + that move, a dot on the one that acts. */ static void keyboard(int x0, int y0) { static const int8_t ARROW[4][2] = {{0, 9}, {13, 0}, {13, 18}, {26, 9}}, DIR[4] = {2, 3, 1, 0}; box(x0 - 4, y0 - 4, 132, 136, 10, HEX(0x0E1124)); @@ -734,8 +754,7 @@ static void keyboard(int x0, int y0) { else x += (k - 30) % 6 * 24, y += 74 + (k - 30) / 6 * 14, w = 20, h = 10; for (int q = 0; q < 2; q++) for (int i = 0; i < 5; i++) - if (KEYS[q][i] == k && (CONTROL[game] & (1<> i & 1 && !is_cpu(q)) p = q, b = i; box(x, y, w, h, 3, p < 0 ? HEX(0x3A4268) : team[p]); if (p >= 0 && b == 4) disc(x + w / 2, y + h / 2, 2, WHITE); else if (p >= 0) tri(x + w / 2, y + h / 2, DIR[b], WHITE); @@ -746,11 +765,15 @@ static void button(int x, int y, int w, const char *s, bool on) { box(x, y, w, 26, 13, on ? GOLD : HEX(0x3A4372)); gfx_text_center(&np_font_body, x + w / 2, y + 18, s, on ? INK : WHITE, 256); } -/* a card over the game: its title, then its buttons from by down. Over a game it is drawn in that game's - look: Pong's black court and white walls with its square ball, the air hockey rink with a mallet, the tanks' grey maze, the light cycles' blue grid; over the menu, in the menu's */ -static void card(int y, int h, const char *title, const char *const *items, int n, int by) { +static void keys_line(int y, const char *s) { say(&np_font_small, 160, y, s, HEX(0xD6DCF5)); } +/* a card over the game: its title, then its buttons from by down, and its keys under it. Over + the first four games it is drawn in that game's look: Pong's black court and white walls with + its square ball, the air hockey rink with a mallet, the tanks' grey maze, the light cycles' blue + grid; over the menu and the party games, in the menu's */ +static void card(int y, int h, const char *title, const char *const *items, int n, int by, const char *keys) { gfx_fill_alpha(0, 0, SCREEN_W, SCREEN_H, 0, 130); - if (screen <= S_RULES || (screen == S_ASK && back_to == S_MENU) || game>=QUICK || screen==S_SAVE_ERROR) { + keys_line(232, keys); + if (screen <= S_RULES || (screen == S_ASK && back_to == S_MENU) || game > CYCLES) { box(60, y, 200, h, 14, HEX(0x262D52)); gfx_rrect_outline(60, y, 200, h, 14, 2, HEX(0x56619A), 256); say(&np_font_title, 160, y + 30, title, WHITE); @@ -758,7 +781,7 @@ static void card(int y, int h, const char *title, const char *const *items, int return; } static const uint32_t LOOK[4][3] = {{0x000000, 0xFFFFFF, 0xFFFFFF}, {0xF4F6FA, 0x9AA3B8, 0x161A33}, - {0xE6E6EA, 0x3A3D4F, 0x3A3D4F}, {0x0B1230, 0x3E8BFF, 0xFFFFFF}}; + {0xE6E6EA, 0x3A3D4F, 0x3A3D4F}, {0x0B1230, 0x3E8BFF, 0xFFFFFF}}; color_t bg = gfx_rgb(LOOK[game][0]), edge = gfx_rgb(LOOK[game][1]), ink = gfx_rgb(LOOK[game][2]); gfx_fill(57, y - 3, 206, h + 6, edge); gfx_fill(60, y, 200, h, bg); @@ -775,80 +798,74 @@ static void card(int y, int h, const char *title, const char *const *items, int } } -/* the little picture of each game in the menu: x, y, w, h, roundness, colour (red, blue, white) */ +/* the little picture of each game in the menu: x, y, w, h, roundness, colour (red, blue, white, gold) */ static const int8_t ICON[][6] = { {4, 6, 3, 10, 0, 0}, {19, 10, 3, 10, 0, 1}, {12, 11, 3, 3, 0, 2}, /* Pong */ {3, 8, 10, 10, 5, 0}, {14, 6, 10, 10, 5, 1}, {10, 16, 6, 6, 3, 2}, /* Air Hockey */ {0, 0, 0, 0, 0, 0}, /* (a tank) */ {4, 7, 12, 3, 0, 0}, {13, 7, 3, 12, 0, 0}, {10, 19, 12, 3, 0, 1}, {10, 12, 3, 9, 0, 1}, /* Light Cycles */ + {3, 8, 10, 10, 5, 0}, {13, 8, 10, 10, 5, 1}, {11, 5, 4, 16, 2, 3}, /* Quick Draw */ + {3, 12, 20, 3, 0, 2}, {11, 8, 5, 11, 2, 3}, /* Tug of War */ }; -static const uint8_t ICON_AT[5] = {0, 3, 6, 7, 11}; +static const uint8_t ICON_AT[NG + 1] = {0, 3, 6, 7, 11, 14, 16}; static void icon(int g, int x, int y) { - const color_t C[3] = {team[0], team[1], WHITE}; + const color_t C[4] = {team[0], team[1], WHITE, GOLD}; box(x, y, 26, 26, 6, INK); - if(g>=QUICK){ - int cx=x+13,cy=y+13; - switch(g){ - case QUICK:disc(cx-5,cy,5,team[0]);disc(cx+5,cy,5,team[1]);box(cx-2,cy-8,4,16,2,GOLD);break; - case TUG:gfx_fill(x+3,cy,20,3,WHITE);box(cx-2,cy-5,5,11,2,GOLD);break; - case FOOTBALL:case VOLLEY:disc(cx,cy,8,g==FOOTBALL?WHITE:GOLD);disc(cx-2,cy-2,3,g==FOOTBALL?INK:WHITE);break; - case ARCHERY:gfx_fill(cx-8,cy,17,2,WHITE);gfx_fill(cx+5,cy-3,2,8,team[0]);break; - case DODGE:disc(cx-5,cy+3,5,team[0]);disc(cx+6,cy-5,5,team[1]);break; - case METEORS:disc(cx+3,cy-4,6,HEX(0xA5AFCB));box(cx-7,cy+6,11,4,2,team[0]);break; - case ROCKETS:box(cx-8,cy-4,16,9,4,team[1]);gfx_fill(cx-11,cy-2,5,5,GOLD);break; - case SUMO:disc(cx,cy,10,GOLD);disc(cx-4,cy,4,team[0]);disc(cx+4,cy,4,team[1]);break; - case FISHING:gfx_fill(cx,cy-9,1,14,WHITE);box(cx-6,cy+3,13,7,3,GOLD);break; - default:tri(cx,cy-3,3,team[0]);gfx_fill(cx-1,cy-2,3,11,team[1]);break; - } - }else if (g == TANKS) tank(x + 13, y + 14, 54, 0); + if (g == TANKS) tank(x + 13, y + 14, 54, 0); else for (int i = ICON_AT[g]; i < ICON_AT[g + 1]; i++) box(x + ICON[i][0], y + ICON[i][1], ICON[i][2], ICON[i][3], ICON[i][4], C[ICON[i][5]]); } +#define ROWS 5 /* the games the menu shows at once */ static void scene(void *ctx) { - char s[48]; + char s[24]; if (screen <= S_RULES || (screen == S_ASK && back_to == S_MENU)) { gfx_vgrad(0, 0, 160, SCREEN_H, 0xB8323A, 0x3A0F24); /* the two players' colours */ gfx_vgrad(160, 0, 160, SCREEN_H, 0x2A5FD0, 0x0F1A44); say(&np_font_title, 160, 28, T("2 Players"), WHITE); - char*page_end=num(s,(uint32_t)(game/4+1));*page_end++='/';num(page_end,(NG+3)/4); - gfx_text_right(&np_font_small,301,28,s,WHITE,256); - for (int g = game/4*4; g < NG && g < game/4*4+4; g++) { - int y = 46 + 39 * (g%4), on = g == game; - gfx_rrect(24, y, 272, 32, 10, on ? WHITE : INK, on ? 256 : 170); - icon(g, 27, y + 3); - gfx_text(&np_font_body, 62, y + 21, NAME[g], on ? INK : WHITE, 256); + for (int i = 0; i < ROWS; i++) { + int g = top + i, y = 38 + 33 * i, on = g == game; + gfx_rrect(24, y, 272, 30, 10, on ? WHITE : INK, on ? 256 : 170); + icon(g, 26, y + 2); + gfx_text(&np_font_body, 62, y + 20, NAME[g], on ? INK : WHITE, 256); for (int p = 0; p < 2; p++) { /* the matches each side has won */ - unsigned wins=sv.wins[g][cpu > 0][p];char*e=num(s,wins>999?999:wins);if(wins>999)*e++='+',*e=0; - gfx_text_center(&np_font_body, 246 + 36 * p, y + 21, s, team[p], 256); + num(s, sv.wins[g][cpu > 0][p]); + gfx_text_center(&np_font_body, 248 + 30 * p, y + 20, s, team[p], 256); } - gfx_text_center(&np_font_body, 263, y + 21, "-", on ? INK : WHITE, 256); + gfx_text_center(&np_font_body, 263, y + 20, "-", on ? INK : WHITE, 256); } + if (top) tri(306, 44, 3, WHITE); /* more above, more below */ + if (top < NG - ROWS) tri(306, 194, 1, WHITE); + keys_line(207, T("OK play Back quit")); gfx_rrect(40, 212, 240, 24, 12, INK, 200); tri(52, 224, 2, WHITE), tri(268, 224, 0, WHITE); gfx_text_center(&np_font_body, 160, 229, opponent(), WHITE, 256); - gfx_text_center(&np_font_small,160,207,T("7 / 9: page"),WHITE,256); if (screen == S_RULES) { + static const char *const KEY[2][5] = {{"", "", "", "", "OK"}, {"3", "x", "Ans", "-", "EXE"}}; gfx_fill_alpha(0, 0, SCREEN_W, SCREEN_H, 0, 140); - box(8, 8, 304, 224, 14, HEX(0x262D52)); + box(8, 8, 304, 232, 14, HEX(0x262D52)); say(&np_font_title, 160, 34, NAME[game], WHITE); - gfx_paragraph(&np_font_small, 160, 52, 284, 11, RULES[game], HEX(0xD6DCF5), 256); + gfx_paragraph(&np_font_small, 160, 54, 284, 12, RULES[game], HEX(0xD6DCF5), 256); + keyboard(26, 100); + for (int p = 0; p < 2; p++) { /* who plays, and with which keys */ + int y = 100 + 36 * p, u = KEYS_USED[game], x = 188; + box(166, y, 14, 14, 4, team[p]); + gfx_text(&np_font_body, 188, y + 12, p ? opponent() : who(0), WHITE, 256); + if (!p && u & 15) x = gfx_text(&np_font_small, x, y + 27, T("arrows"), light[p], 256) + 6; + for (int i = 0; i < 5; i++) + if (u >> i & 1 && !is_cpu(p)) x = gfx_text(&np_font_small, x, y + 27, KEY[p][i], i < 4 ? light[p] : GOLD, 256) + 6; + } char *e = s; for (const char *q = T("First to "); *q; q++) *e++ = *q; num(e, TARGET[game]); - gfx_text_center(&np_font_body, 231, 184, s, GOLD, 256); - keyboard(26, 100); - gfx_text_center(&np_font_small,231,101,CONTROL[game]&16?T("Action: OK / EXE"):T("Use direction keys"),GOLD,256); - for (int p = 0; p < 2; p++) { - box(166, 110 + 30 * p, 14, 14, 4, team[p]); - gfx_text(&np_font_body, 188, 122 + 30 * p, p ? opponent() : who(0), WHITE, 256); - } - button(166, 196, 130, T("Play"), true); + gfx_text_center(&np_font_body, 231, 182, s, GOLD, 256); + button(166, 190, 130, T("Play"), true); + say(&np_font_small, 231, 233, T("Back games"), HEX(0xD6DCF5)); } } else { PAINT[game](); - if (game != PONG) { /* the score bar: each side's name and points */ + if (game != PONG) { /* the score bar: each side's name and points, and the pause key */ gfx_fill(0, 0, SCREEN_W, 22, INK); for (int p = 0; p < 2; p++) { box(p ? 214 : 4, 3, 102, 17, 8, team[p]); @@ -857,6 +874,7 @@ static void scene(void *ctx) { gfx_text_right(&np_font_body, p ? 308 : 98, 16, s, WHITE, 256); } } + if (game) gfx_text_center(&np_font_small, 160, 15, T("Back pause"), HEX(0xD6DCF5), 256); if (phase == 1 && screen == S_PLAY) { int t = (int)ago(phase_t), y = 120 - (t < 200 ? (200 - t) / 10 : 0); gfx_rrect(70, y - 26, 180, 62, 14, INK, 200); @@ -865,11 +883,11 @@ static void scene(void *ctx) { } if (screen == S_PAUSE) { static const char *const ITEM[4] = {T("Resume"), T("Restart"), T("Other games"), T("Quit game")}; - card(40, 172, T("Paused"), ITEM, 4, 82); + card(40, 172, T("Paused"), ITEM, 4, 82, T("OK choose Back resume")); } else if (screen == S_OVER) { static const char *const WON[2][2] = {{T("Player 1 wins!"), T("Player 2 wins!")}, {T("You win!"), T("The computer wins")}}; static const char *const ITEM[2] = {T("Rematch"), T("Other games")}; - card(46, 158, WON[cpu > 0][score[1] > score[0]], ITEM, 2, 140); + card(46, 158, WON[cpu > 0][score[1] > score[0]], ITEM, 2, 140, T("OK choose Back games")); for (int p = 0; p < 2; p++) { num(s, (uint32_t)score[p]); say(&np_font_title, 124 + 72 * p, 118, s, light[p]); @@ -879,86 +897,81 @@ static void scene(void *ctx) { } if (screen == S_ASK) { static const char *const ITEM[2] = {T("No"), T("Yes")}; - card(60, 120, T("Quit game?"), ITEM, 2, 104); - }else if(screen==S_SAVE_ERROR){ - static const char*const ITEM[2]={T("Retry saving"),T("Exit without saving")}; - card(45,158,T("Save failed"),ITEM,2,113); + card(60, 120, T("Quit game?"), ITEM, 2, 104, T("OK choose Back no")); } } int main(void) { np_app_begin(); - color_t *their_strip=gfx_buf;gfx_buf=strip; - static const uint32_t TEAM[2]={0xEF4136,0x2E7CF6}; - for(int p=0;p<2;p++)team[p]=gfx_rgb(TEAM[p]),light[p]=gfx_rgb(gfx_lerp888(TEAM[p],0xFFFFFF,120)),dark[p]=gfx_rgb(gfx_lerp888(TEAM[p],0,110)); - uint32_t last=(uint32_t)eadk_timing_millis(),n=0,accum=0,draw_at=last; - seed=eadk_random()^last;if(!seed)seed=1; - const uint8_t*d=np_file_read(SAVE_NAME,&n);save_decode(d,n); - game=sv.game%NG;cpu=sv.cpu&3;screen=S_MENU;sel=0;now=0; - uint64_t held=eadk_keyboard_scan(),stale=held;int previous_pad[2]={0},queued[2]={0}; - bool dirty=true; - for(bool quit=false;!quit;){ - uint32_t t=(uint32_t)eadk_timing_millis(),elapsed=t-last;last=t; - uint64_t k=eadk_keyboard_scan();stale&=k;k&=~stale;uint64_t hit=k&~held;held=k; - bool ok=down(hit,eadk_key_ok)||down(hit,eadk_key_exe),back=down(hit,eadk_key_back); - int dx=down(hit,eadk_key_right)-down(hit,eadk_key_left),dy=down(hit,eadk_key_down)-down(hit,eadk_key_up),before=screen; - if(hit)dirty=true; - if(screen!=S_SAVE_ERROR&&(down(k,eadk_key_home)||down(k,eadk_key_on_off))){ - if(save())break; - screen=S_SAVE_ERROR;sel=0;stale|=k;ok=back=false;dx=dy=0;dirty=true; - } - pad[0]=pad[1]=0; - for(int i=0;i<10;i++)pad[i/5]|=down(k,KEYS[i/5][i%5])<<(i%5); - if(cpu&&(down(k,eadk_key_ok)||down(k,eadk_key_exe)))pad[0]|=B_FIRE; - for(int p=0;p<2;p++){tap[p]=pad[p]&~previous_pad[p];previous_pad[p]=pad[p];queued[p]|=tap[p];} - switch(screen){ + color_t *their_strip = gfx_buf; + gfx_buf = strip; + static const uint32_t TEAM[2] = {0xEF4136, 0x2E7CF6}; + for (int p = 0; p < 2; p++) + team[p] = gfx_rgb(TEAM[p]), light[p] = gfx_rgb(gfx_lerp888(TEAM[p], 0xFFFFFF, 120)), dark[p] = gfx_rgb(gfx_lerp888(TEAM[p], 0, 110)); + uint32_t last = (uint32_t)eadk_timing_millis(), n = 0; + seed = eadk_random() ^ last; + if (!seed) seed = 1; + const uint8_t *d = np_file_read(SAVE_NAME, &n); + if (d && n >= 4 && n <= sizeof sv && d[0] == 'P' && d[1] == 1) /* (a save with fewer games: the first ones) */ + for (uint32_t i = 0; i < n; i++) ((uint8_t *)&sv)[i] = d[i]; + game = sv.game % NG, cpu = sv.cpu & 3; + top = clampi(game - 2, 0, NG - ROWS); + uint64_t held = eadk_keyboard_scan(), stale = held; /* keys still down from the launcher wait to be let go */ + for (bool quit = false; !quit;) { + uint32_t t = (uint32_t)eadk_timing_millis(); + ms = t - last < 40 ? (int)(t - last) : 40, last = t, dt = ms * .001f; + if (screen == S_PLAY) now += (uint32_t)ms; + uint64_t k = eadk_keyboard_scan(); + if (cpu) k |= (uint64_t)down(k, eadk_key_exe) << eadk_key_ok; /* alone, EXE is OK: one key, either */ + stale &= k, k &= ~stale; + uint64_t hit = k & ~held; + held = k; + if (down(k, eadk_key_home) || down(k, eadk_key_on_off)) break; + bool ok = down(hit, eadk_key_ok) || down(hit, eadk_key_exe), back = down(hit, eadk_key_back); + pad[0] = pad[1] = tap[0] = tap[1] = 0; + for (int i = 0; i < 10; i++) + pad[i / 5] |= down(k, KEYS[i / 5][i % 5]) << i % 5, tap[i / 5] |= down(hit, KEYS[i / 5][i % 5]) << i % 5; + if (cpu) pad[1] = tap[1] = 0; /* (player 2's keys are the computer's) */ + int dx = down(hit, eadk_key_right) - down(hit, eadk_key_left), dy = down(hit, eadk_key_down) - down(hit, eadk_key_up); + int was = screen; + switch (screen) { case S_MENU: case S_RULES: - if(dx){cpu=(cpu+dx+4)%4;save();} - if(screen==S_RULES){if(ok)new_match();else if(back)screen=S_MENU;} - else if(dy)game=(game+dy+NG)%NG; - else if(down(hit,eadk_key_seven))game=page_game(-1); - else if(down(hit,eadk_key_nine))game=page_game(1); - else if(ok){screen=S_RULES;save();} - else if(back){back_to=S_MENU;screen=S_ASK;sel=0;} + if (dx) cpu = (cpu + dx) & 3, save(); + if (screen == S_RULES) { + if (ok) new_match(); + else if (back) screen = S_MENU; + } else if (dy) { + game = (game + dy + NG) % NG, top = clampi(top, game - ROWS + 1, game); + } else if (ok) screen = S_RULES, save(); + else if (back) back_to = S_MENU, screen = S_ASK, sel = 0; break; case S_PLAY: - if(back){screen=S_PAUSE;sel=0;break;} - /* A fixed eight-millisecond simulation, independent of LCD frame rate. - * A tap is queued until a tick consumes it; held keys keep moving. */ - accum+=elapsed>160?160:elapsed; - for(int steps=0;accum>=8&&steps<20&&screen==S_PLAY;steps++){ - ms=8;now+=8;tap[0]=queued[0];tap[1]=queued[1];queued[0]=queued[1]=0; - match_step();accum-=8; + if (back) { + screen = S_PAUSE, sel = 0; + break; } + play(); break; - case S_SAVE_ERROR: - if(dy)sel^=1; - if(back||(ok&&sel))quit=true;else if(ok&&save())quit=true; - break; - default: - sel=(sel+dy)&(screen==S_PAUSE?3:1); - if(screen==S_ASK){ - if(back||(ok&&!sel))screen=back_to; - else if(ok){if(save())quit=true;else screen=S_SAVE_ERROR,sel=0;} - }else if(back&&screen==S_PAUSE)screen=S_PLAY; - else if(ok){ - int a=screen==S_PAUSE?sel:sel?2:1; - if(a==1)new_match(); - else{screen=a?(a==2?S_MENU:S_ASK):S_PLAY;back_to=S_PAUSE;sel=0;} + default: /* the cards: Paused, the match over, Quit game? */ + sel = (sel + dy) & (screen == S_PAUSE ? 3 : 1); + if (screen == S_OVER && t - shown < 700) break; /* (a key still being mashed doesn't choose) */ + if (screen == S_ASK) { + if (back || (ok && !sel)) screen = back_to; + else quit = ok; + } else if (back) { + screen = screen == S_PAUSE ? S_PLAY : S_MENU; + } else if (ok) { /* Resume, Restart, Other games, Quit game; Rematch, Other games */ + int a = screen == S_PAUSE ? sel : sel ? 2 : 1; + if (a == 1) new_match(); + else screen = a ? a == 2 ? S_MENU : S_ASK : S_PLAY, back_to = S_PAUSE, sel = 0; } - break; - } - if(screen!=S_PLAY)accum=0,queued[0]=queued[1]=0; - if(before!=screen){ - dirty=true;accum=0;queued[0]=queued[1]=0;previous_pad[0]=previous_pad[1]=0;stale|=k; - last=(uint32_t)eadk_timing_millis(); - } - if(dirty||(screen==S_PLAY&&t-draw_at>=30)){ - eadk_display_wait_for_vblank();gfx_render(scene,0,0,SCREEN_H);draw_at=t;dirty=false; } - eadk_timing_msleep(2); + if (screen != was) shown = t; + eadk_display_wait_for_vblank(); + gfx_render(scene, 0, 0, SCREEN_H); } - gfx_buf=their_strip; + save(); + gfx_buf = their_strip; return np_app_end(); } diff --git a/games/twoplayer/src/party.h b/games/twoplayer/src/party.h deleted file mode 100644 index c917cb4e..00000000 --- a/games/twoplayer/src/party.h +++ /dev/null @@ -1,492 +0,0 @@ -/* Additional games share one small working state and the original game's - * colours, shapes, input, points and CPU levels. Included once by main.c. */ -#ifndef TWOPLAYER_PARTY_H -#define TWOPLAYER_PARTY_H -typedef struct { float x,y,vx,vy; uint32_t ready,last; int aux; } PartyPlayer; -typedef struct { float x,y,vx,vy; int16_t life; int8_t own,kind; } PartyShot; -static struct { - PartyPlayer p[2]; PartyShot shot[12]; - float x,y,vx,vy,value; - uint32_t started,at,next,signal; - uint16_t mark[2]; uint8_t flags[2],seq[8],index[2],n; -} party; -static float sq(float a) { return a*a; } -static float distance2(float x,float y,float a,float b) { return sq(x-a)+sq(y-b); } -static bool reached(uint32_t t) { return (int32_t)(now-t)>=0; } -static float seconds(void) { return ms*.001f; } -static void party_start(void) { - memset(&party,0,sizeof party);party.started=party.at=now;party.p[0].x=52;party.p[1].x=268; - for(int p=0;p<2;p++) party.p[p].y=190,party.mark[p]=3; -} -static void bot_to(float x,float y,float margin) { - pad[1]=(party.p[1].xx+margin?B_LEFT:0)| - (party.p[1].yy+margin?B_UP:0); - tap[1]=0; -} -static void actor2(int x,int feet,int p) { - disc(x+2,feet+1,10,HEX(0x232944));box(x-7,feet-19,14,19,5,team[p]); - disc(x,feet-25,7,light[p]);disc(x+(p?-2:2),feet-26,1,INK); - box(x-8,feet-3,6,5,2,dark[p]);box(x+2,feet-3,6,5,2,dark[p]); -} -static void arena(color_t bg) { - gfx_fill(0,22,320,218,INK);box(6,28,308,206,12,bg); -} -static void centre_text(int y,const char*s,color_t c) { say(&np_font_body,160,y,s,c); } -static void time_text(int y,uint32_t elapsed,uint32_t duration) { - char s[16];char*e=num(s,elapsed=100){pull[p]=1;party.p[p].last=now;} - party.value+=(pull[1]-pull[0])*7.5f; - if(party.value>0)party.value=clampf(party.value-seconds()*3,0,100); - else party.value=clampf(party.value+seconds()*3,-100,0); - if(party.value<-67)point(0);else if(party.value>67)point(1); - else if(ago(party.started)>30000)point(party.value<-1?0:party.value>1?1:2); -} -static void tug_paint(void) { - arena(HEX(0x262D52));centre_text(56,T("Tug of War"),WHITE);time_text(79,ago(party.started),30000); - gfx_fill(91,101,2,100,team[0]);gfx_fill(227,101,2,100,team[1]); - int x=160+(int)party.value; - for(int p=0;p<2;p++){actor2(x+(p?85:-85),182,p);gfx_fill(x+(p?12:-80),141,68,4,HEX(0xC5CBE4));} - box(x-6,131,12,19,3,GOLD);centre_text(219,T("Tap, release, pull!"),WHITE); -} - -/* ------------------------------------------------------------ Football */ -static void football_start(void) { - party_start();party.p[0].x=66;party.p[1].x=254;party.p[0].y=party.p[1].y=131; - party.x=160;party.y=131; -} -static void football_step(void) { - if(phase)return; - float dt=seconds(); - if(cpu){bot_input();if(bot_due()){ - float target=party.x+15,ty=party.y; - if(party.vx>130&&party.x>190)target=282,ty=clampf(party.y+party.vy*.15f,60,202); - bot_to(clampf(target,20,300),ty,3); - if(distance2(party.x,party.y,party.p[1].x,party.p[1].y)vx=dx*speed;a->vy=dy*speed;a->x=clampf(a->x+a->vx*dt,20,300);a->y=clampf(a->y+a->vy*dt,43,220); - float x=party.x-a->x,y=party.y-a->y,d=len(x,y); - if(d<17){ - if(d<.1f){x=p?-1:1;y=0;d=1;} - x/=d;y/=d; - party.x=a->x+x*17;party.y=a->y+y*17; - float v=(party.vx-a->vx)*x+(party.vy-a->vy)*y; - if(v<0)party.vx-=1.5f*v*x,party.vy-=1.5f*v*y; - party.vx+=a->vx*.13f;party.vy+=a->vy*.13f; - } - if((tap[p]&B_FIRE)&&reached(a->ready)){a->ready=now+(is_cpu(p)?1100-cpu*180:350); - if(d<30){float gx=p?5:315,gy=131; - if(is_cpu(p))gy=131+(cpu==1?rn(70)-35:(party.p[0].y>=131?-19:19)+rn(cpu==2?18:6)-(cpu==2?9:3)); - float vx=gx-party.x,vy=gy-party.y,n=len(vx,vy); - party.vx=vx/n*260;party.vy=vy/n*260;}} - } - party.x+=party.vx*dt;party.y+=party.vy*dt;party.vx*=1-dt*.55f;party.vy*=1-dt*.55f; - float v=len(party.vx,party.vy);if(v>310)party.vx*=310/v,party.vy*=310/v; - if(party.y<39)party.y=39,party.vy=__builtin_fabsf(party.vy)*.85f; - if(party.y>223)party.y=223,party.vy=-__builtin_fabsf(party.vy)*.85f; - if(party.y>106&&party.y<156){if(party.x<10)point(1);if(party.x>310)point(0);} - else{if(party.x<18)party.x=18,party.vx=__builtin_fabsf(party.vx)*.85f;if(party.x>302)party.x=302,party.vx=-__builtin_fabsf(party.vx)*.85f;} - if(ago(party.started)>45000)point(2); -} -static void football_paint(void) { - arena(HEX(0x254E46));gfx_rrect_outline(14,35,292,194,8,2,HEX(0x9CC4AE),256); - gfx_fill(159,35,2,194,HEX(0x9CC4AE));gfx_rrect_outline(127,99,66,66,33,2,HEX(0x9CC4AE),256); - gfx_fill(4,103,12,56,dark[0]);gfx_fill(304,103,12,56,dark[1]); - for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y;disc(x+1,y+2,11,HEX(0x18352F));disc(x,y,11,team[p]);disc(x-2,y-3,4,light[p]);} - disc(party.x+1,party.y+2,7,HEX(0x18352F));disc(party.x,party.y,7,WHITE);disc(party.x,party.y,3,INK); - time_text(51,ago(party.started),45000); -} - -/* ------------------------------------------------------------ Volley Ball */ -static void volley_start(void) { - party_start();for(int p=0;p<2;p++)party.p[p].x=75+p*170,party.p[p].y=208; - int serve=winner<2?1-winner:rn(2);party.x=serve?242:78;party.y=75;party.vx=serve?-60:60; -} -static void volley_step(void) { - if(phase)return; - float dt=seconds(); - if(cpu){bot_input();if(bot_due()){ - /* Get behind the ball to return it over the net, with time to react. */ - float target=party.x>152?party.x+14+party.vx*(cpu==1?0:cpu==2?.06f:.12f):240; - bot_to(clampf(target,180,292),208,5);pad[1]&=B_LEFT|B_RIGHT; - if(party.x>161&&party.y>120&&party.y<183&&__builtin_fabsf(party.x-party.p[1].x)<30)tap[1]|=B_FIRE; - bot.pad=pad[1]; - }} - for(int p=0;p<2;p++){ - PartyPlayer*a=&party.p[p];a->x=clampf(a->x+dirx(p)*(is_cpu(p)?60+cpu*15:125)*dt,p?178:20,p?300:142); - if((tap[p]&(B_UP|B_FIRE))&&a->y>=207)a->vy=-232; - a->vy+=570*dt;a->y+=a->vy*dt;if(a->y>208)a->y=208,a->vy=0; - float dx=party.x-a->x,dy=party.y-(a->y-12),d=len(dx,dy); - if(d<24&&d>.01f){party.x=a->x+dx/d*24;party.y=a->y-12+dy/d*24;float v=party.vx*dx/d+(party.vy-a->vy)*dy/d; - if(v<0){party.vx-=1.75f*v*dx/d;party.vy-=1.75f*v*dy/d;party.vy-=30;}} - } - float oldx=party.x,oldy=party.y;party.vy+=360*dt;party.x+=party.vx*dt;party.y+=party.vy*dt; - party.vx=clampf(party.vx,-255,255);party.vy=clampf(party.vy,-285,360); - if(party.x<18)party.x=18,party.vx=__builtin_fabsf(party.vx); - if(party.x>302)party.x=302,party.vx=-__builtin_fabsf(party.vx); - if(party.y<39)party.y=39,party.vy=__builtin_fabsf(party.vy); - if(party.x>149&&party.x<171){ - if(oldy<=136&&party.y>=136){party.y=136;party.vy=-__builtin_fabsf(party.vy)*.85f;} - else if(party.y>136){party.x=oldx<160?149:171;party.vx=oldx<160?-__builtin_fabsf(party.vx):__builtin_fabsf(party.vx);} - } - if(party.y>=211)point(party.x<160?1:0); -} -static void volley_paint(void) { - arena(HEX(0x27385D));gfx_fill(12,221,296,9,HEX(0xB6BFE0));gfx_fill(157,145,6,76,WHITE);disc(160,145,4,WHITE); - for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y;disc(x+1,y+3,15,dark[p]);disc(x,y-3,15,team[p]);gfx_fill(x-15,y+1,30,18,team[p]);disc(x+(p?-4:4),y-7,2,WHITE);} - disc(party.x+1,party.y+2,9,INK);disc(party.x,party.y,9,GOLD);disc(party.x-3,party.y-3,3,WHITE); -} - -/* ------------------------------------------------------------ Archery */ -#define ARROW_GRAVITY 240 -#define BOW_Y 190 -static float archery_power(unsigned held) { return 140+clampi(held,0,1000)*.14f; } -static void archery_plan(void) { - PartyPlayer*a=&party.p[1];int angle=6+rn(5),spread=cpu==1?260:cpu==2?180:110; - float power=__builtin_sqrtf(ARROW_GRAVITY*223.0f*127*127/(2*cos64(angle)*sin64(angle))); - a->vx=angle;a->aux=clampi((int)((power-140)/.14f)+rn(spread*2+1)-spread,180,1000); -} -static void archery_start(void) { - party_start();party.p[0].x=40;party.p[1].x=280; - for(int p=0;p<2;p++){party.p[p].vx=8;party.p[p].y=0;} - if(cpu){archery_plan();party.p[1].ready=now+(cpu==1?1600:cpu==2?1300:1000);} -} -static void archery_step(void) { - if(phase)return; - float dt=seconds(); - if(cpu){ - PartyPlayer*a=&party.p[1];pad[1]=tap[1]=0; - if(reached(a->ready)&&(!party.flags[1]||ago(a->last)<(uint32_t)a->aux))pad[1]=B_FIRE; - } - for(int p=0;p<2;p++){ - PartyPlayer*a=&party.p[p];a->vx=clampf(a->vx-diry(p)*dt*6,2,14); - a->y=clampf(a->y-dt,0,1); /* short hit flash, independent of the reload timer */ - if((pad[p]&B_FIRE)&&reached(a->ready)&&!party.flags[p])party.flags[p]=1,a->last=now; - if(party.flags[p]&&!(pad[p]&B_FIRE)){ - int slot=shot_slot(),angle=(int)a->vx;float power=archery_power(ago(a->last)); - if(slot>=0)party.shot[slot]=(PartyShot){a->x+(p?-17:17),BOW_Y, - (p?-1:1)*cos64(angle)*power/127,-sin64(angle)*power/127,4000,(int8_t)p,0}; - a->ready=now+(is_cpu(p)?(cpu==1?2000:cpu==2?1650:1350)+rn(400):600); - party.flags[p]=0; - if(is_cpu(p))archery_plan(); - } - } - for(int i=0;i<12;i++){ - PartyShot*s=&party.shot[i];if(s->life<=0)continue; - s->life-=ms;s->vy+=ARROW_GRAVITY*dt;s->x+=s->vx*dt;s->y+=s->vy*dt; - if(s->x<-12||s->x>332||s->y>208)s->life=0; - int p=1-s->own; - if(s->life>0&&__builtin_fabsf(s->x-party.p[p].x)<13&&s->y>165&&s->y<208){ - s->life=0;if(party.mark[p])party.mark[p]--;party.p[p].y=.25f; - } - } - tie_dead();if(ago(party.started)>30000)point(party.mark[0]==party.mark[1]?2:party.mark[0]>party.mark[1]?0:1); -} -/* Small integer line segments keep bows, fletching and arrowheads readable - * without a texture atlas. Only pixels in the current LCD strip are drawn. */ -static void archery_line(int x,int y,int xx,int yy,color_t c) { - int dx=xx-x,dy=yy-y,sx=dx<0?-1:1,sy=dy<0?-1:1; - if(dx<0)dx=-dx; - if(dy<0)dy=-dy; - int error=dx-dy; - for(;;){ - if(y>=gfx_y0&&y-dy)error-=dy,x+=sx;if(ex,d=p?-1:1,angle=(int)a->vx,ax=x+d*17; - float power=archery_power(party.flags[p]?ago(a->last):650); - float vx=d*cos64(angle)*power/127,vy=-sin64(angle)*power/127; - for(int j=1;j<36;j++){ - float t=j*.06f,xx=ax+vx*t,yy=BOW_Y+vy*t+ARROW_GRAVITY*t*t*.5f; - if(xx<17||xx>303||yy>208)break; - if(yy>98)disc(xx,yy,1,gfx_mix(INK,light[p],24)); - } - actor2(x,206,p);if(a->y>0)disc(x,181,8,WHITE); - archery_line(x+d*4,190,ax,BOW_Y,light[p]);disc(ax,BOW_Y,2,light[p]); - /* Draw the curved bow and its taut string in the actual aiming direction. */ - int cx=cos64(angle),sn=sin64(angle),ux=d*cx,uy=-sn,px=d*sn,py=cx; - int lastx=ax-px*15/127,lasty=BOW_Y-py*15/127; - for(int j=-2;j<=2;j++){ - int side=j*7,bulge=(4-j*j)*2; - int xx=ax+(px*side+ux*bulge)/127,yy=BOW_Y+(py*side+uy*bulge)/127; - archery_line(lastx,lasty,xx,yy,GOLD);lastx=xx;lasty=yy; - } - archery_line(ax-px*14/127,BOW_Y-py*14/127,ax+px*14/127,BOW_Y+py*14/127,light[p]); - if(!party.flags[p]||now%180<130)archery_arrow(ax,BOW_Y,vx,vy,team[p]); - hearts(26+p*240,48,p,party.mark[p]); - int bx=p?226:18;box(bx,73,76,8,4,INK); - int charge=party.flags[p]?clampi(ago(a->last),0,1000)*72/1000:0; - if(charge)box(bx+2,75,charge,4,2,GOLD); - gfx_text_center(&np_font_small,bx+38,68,T("Power"),light[p],256); - char text[16];char*e=num(text,(unsigned)(angle*360/64)); - *e++=' ';*e++='d';*e++='e';*e++='g';*e=0; - gfx_text_center(&np_font_small,bx+38,96,text,WHITE,256); - } - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0)archery_arrow(s->x,s->y,s->vx,s->vy,light[s->own]);} - /* HUD is painted last, so a high arrow cannot obscure its text. */ - time_text(51,ago(party.started),30000); - centre_text(226,T("Hold OK / EXE, release to shoot"),WHITE); -} - -/* ------------------------------------------------------------ Dodge Ball */ -static void dodge_start(void) {party_start();party.p[0].x=64;party.p[1].x=256;party.p[0].y=party.p[1].y=130;} -static void dodge_step(void) { - if(phase)return; - float dt=seconds(); - if(cpu){bot_input();if(bot_due()){ - float ty=party.p[0].y,tx=254; - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0&&!s->own&&s->vx>0&&s->x>135&&__builtin_fabsf(s->y-party.p[1].y)<(cpu==1?15:28))ty=s->yx=clampf(a->x+dx*speed*dt,p?178:19,p?301:142);a->y=clampf(a->y+dy*speed*dt,44,218); - if((tap[p]&B_FIRE)&&reached(a->ready)){ - int slot=shot_slot();float x=party.p[1-p].x-a->x,y=party.p[1-p].y-a->y;if(is_cpu(p))y+=rn(cpu==1?101:cpu==2?61:33)-(cpu==1?50:cpu==2?30:16);float d=len(x,y); - if(slot>=0&&d>1)party.shot[slot]=(PartyShot){a->x,a->y,x/d*218,y/d*218,3500,(int8_t)p,0}; - a->ready=now+(is_cpu(p)?1950-cpu*300:520); - } - } - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life<=0)continue;s->life-=ms;s->x+=s->vx*dt;s->y+=s->vy*dt; - if(s->y<37)s->y=37,s->vy=__builtin_fabsf(s->vy); - if(s->y>225)s->y=225,s->vy=-__builtin_fabsf(s->vy); - if(s->x<8||s->x>312)s->life=0; - int p=1-s->own;if(s->life>0&&distance2(s->x,s->y,party.p[p].x,party.p[p].y)life=0; - } - } - tie_dead();if(ago(party.started)>30000)point(party.mark[0]==party.mark[1]?2:party.mark[0]>party.mark[1]?0:1); -} -static void dodge_paint(void) { - arena(HEX(0x293658));for(int y=33;y<230;y+=14)gfx_fill(159,y,2,8,HEX(0x7482AF)); - for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y; - if(reached(party.p[p].last)||now%160<100){disc(x+1,y+2,12,dark[p]);disc(x,y,11,team[p]);disc(x-3,y-3,4,light[p]);} - hearts(26+p*240,40,p,party.mark[p]); - } - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0){disc(s->x,s->y,5,team[s->own]);disc(s->x-1,s->y-1,2,WHITE);}} - time_text(45,ago(party.started),30000); -} - -/* ------------------------------------------------------------ Meteor Run */ -static void meteors_start(void) {party_start();party.p[0].x=party.p[1].x=80;party.next=now+650;} -static void meteors_step(void) { - if(phase)return; - float dt=seconds(); - if(cpu){bot_input();if(bot_due()){float best=80;int danger[3]={0}; - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0&&s->y>85&&s->y<226){for(int k=0;k<3;k++)if(__builtin_fabsf(s->x-(30+50*k))<29)danger[k]+=s->y>150?3:1;}} - int choice=0;for(int k=1;k<3;k++)if(danger[k]=0)party.shot[slot]=(PartyShot){25+rn(111),22,0,90+clampi(ago(party.started)/180,0,130),1,0,(int8_t)(8+rn(5))}; - party.next=now+(ago(party.started)>15000?450:650); - } - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life<=0)continue;s->y+=s->vy*dt;if(s->y>250)s->life=0; - for(int p=0;p<2;p++)if(party.mark[p]&&distance2(party.p[p].x,208,s->x,s->y)kind+9))party.mark[p]=0; - } - tie_dead();if(ago(party.started)>30000)point(2); -} -static void meteors_paint(void) { - arena(HEX(0x1C2847));gfx_fill(158,30,4,200,HEX(0x56618C)); - for(int p=0;p<2;p++){ - for(int j=0;j<9;j++)disc(14+p*160+(j*37)%140,45+(j*29)%145,1,HEX(0x8592B7)); - if(party.mark[p]){int x=p*160+(int)party.p[p].x;box(x-9,200,18,14,5,team[p]);disc(x,199,6,light[p]);} - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0){int x=p*160+(int)s->x,y=s->y;box(x-3,y-18,6,18,3,HEX(0xBA714A));disc(x,y,s->kind,HEX(0x757F9D));disc(x-3,y-3,3,HEX(0xA3ACC5));}} - } - time_text(52,ago(party.started),30000); -} - -/* ------------------------------------------------------------ Rocket Race */ -static void rockets_start(void) {party_start();for(int p=0;p<2;p++)party.p[p].y=125;party.next=now+900;} -static void rockets_step(void) { - if(phase)return; - float dt=seconds(); - if(cpu){bot_input();if(bot_due()){float target=125,closest=1000; - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0&&s->x>4&&s->xx,target=s->y;} - if(party.p[1].y>target+(cpu==1?15:cpu==2?7:1)&&party.p[1].vy>-45&&ago(party.p[1].last)>150)tap[1]|=B_FIRE; - bot.pad=pad[1];}} - for(int p=0;p<2;p++)if(party.mark[p]){ - PartyPlayer*a=&party.p[p];if((tap[p]&(B_UP|B_FIRE))&&ago(a->last)>=100)a->vy=-123,a->last=now; - a->vy=clampf(a->vy+225*dt,-160,190);a->y+=a->vy*dt;if(a->y<40||a->y>221)party.mark[p]=0; - } - if(reached(party.next)){int slot=shot_slot();if(slot>=0)party.shot[slot]=(PartyShot){172,88+rn(88),65+clampi(ago(party.started)/1000,0,24),0,1,0,0};party.next=now+1700;} - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life<=0)continue;s->x-=s->vx*dt;if(s->x<-22)s->life=0; - if(s->x<66&&s->x+18>46)for(int p=0;p<2;p++)if(party.p[p].yy-34||party.p[p].y>s->y+34)party.mark[p]=0; - } - tie_dead();if(ago(party.started)>30000)point(2); -} -static void rockets_paint(void) { - arena(HEX(0x1B2441));gfx_fill(158,30,4,200,HEX(0x56618C)); - for(int p=0;p<2;p++){ - for(int i=0;i<12;i++){PartyShot*s=&party.shot[i];if(s->life>0){ - int left=clampi((int)s->x,12,148),right=clampi((int)s->x+18,12,148),g=s->y; - if(right>left){int x=p*160+left;box(x,30,right-left,g-73,4,HEX(0x56618C));box(x,g+43,right-left,230-g-43,4,HEX(0x56618C));} - }} - if(party.mark[p]){ - int x=56+p*160,y=party.p[p].y;box(x-9,y-7,18,14,6,team[p]);disc(x+4,y-2,3,WHITE); - int thrust=ago(party.p[p].last)<180?12:5; - gfx_fill(x-8-thrust,y-3,thrust,6,GOLD); - } - } - time_text(52,ago(party.started),30000); -} - -/* ------------------------------------------------------------ Sumo */ -static void sumo_start(void) {party_start();for(int p=0;p<2;p++)party.p[p].x=115+p*90,party.p[p].y=133;} -static float ring_radius(void) {return 96-clampf(((float)ago(party.started)-6000)*.003f,0,57);} -static void sumo_step(void) { - if(phase)return; - float dt=seconds(),radius=ring_radius(); - if(cpu){bot_input();if(bot_due()){float x=party.p[0].x,y=party.p[0].y; - if(distance2(party.p[1].x,party.p[1].y,160,133)>sq(radius-18))x=160,y=133; - bot_to(x,y,2);if(distance2(x,y,party.p[1].x,party.p[1].y)0)dx/=n,dy/=n; - if((tap[p]&B_FIRE)&&reached(a->ready)){ - if(n==0){dx=party.p[1-p].x-a->x;dy=party.p[1-p].y-a->y;n=len(dx,dy);if(n>0)dx/=n,dy/=n;} - a->vx+=dx*225;a->vy+=dy*225;a->ready=now+(is_cpu(p)?2200-cpu*300:1100); - } - a->vx+=dx*500*dt;a->vy+=dy*500*dt;float friction=1-dt*4.2f;a->vx*=friction;a->vy*=friction; - a->x+=a->vx*dt;a->y+=a->vy*dt; - } - PartyPlayer*a=&party.p[0],*b=&party.p[1];float dx=b->x-a->x,dy=b->y-a->y,n=len(dx,dy); - if(n<27){if(n<.01f)dx=1,dy=0,n=1;dx/=n;dy/=n;float shift=(27-n)*.5f;a->x-=dx*shift;a->y-=dy*shift;b->x+=dx*shift;b->y+=dy*shift; - float v=(b->vx-a->vx)*dx+(b->vy-a->vy)*dy;if(v<0){float impulse=-v*.9f+12;a->vx-=dx*impulse;a->vy-=dy*impulse;b->vx+=dx*impulse;b->vy+=dy*impulse;}} - for(int p=0;p<2;p++)if(distance2(party.p[p].x,party.p[p].y,160,133)>sq(radius+2))party.mark[p]=0; - tie_dead();if(ago(party.started)>30000)point(2); -} -static void sumo_paint(void) { - arena(HEX(0x202745));int r=ring_radius();disc(160,135,r+4,HEX(0x10162D));disc(160,133,r+3,GOLD);disc(160,133,r,HEX(0xD0D3DE));disc(160,133,4,HEX(0x8791AD)); - for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y;disc(x+1,y+3,14,HEX(0x8992AA));disc(x,y,13,team[p]);disc(x-3,y-4,5,light[p]);if(reached(party.p[p].ready))disc(x+4,y+3,3,WHITE);} -} - -/* ------------------------------------------------------------ Fishing */ -static void fishing_start(void) { - party_start();party.p[0].x=64;party.p[1].x=256; - for(int p=0;p<2;p++)party.p[p].y=83,party.p[p].aux=-1; - for(int i=0;i<7;i++)party.shot[i]=(PartyShot){25+rn(270),115+rn(90),(i&1?1:-1)*(28+rn(25)),0,1,-1,0}; -} -static void fishing_step(void) { - if(phase)return; - float dt=seconds(); - if(cpu){bot_input();if(bot_due()){ - PartyPlayer*a=&party.p[1];float best=1e6f,target=250;int choice=0; - for(int i=0;i<7;i++){PartyShot*s=&party.shot[i];if(s->own>=0)continue;float d=__builtin_fabsf(s->x-a->x)+(s->y-80)*.2f;if(dx+s->vx*(s->y-a->y)/100,18,302),choice=i;} - bot_to(target,190,5);pad[1]&=B_LEFT|B_RIGHT; - if(a->aux<0&&a->yx-party.shot[choice].x)<(cpu==1?14:cpu==2?23:31))pad[1]|=B_FIRE; - bot.pad=pad[1]; - }} - for(int i=0;i<7;i++){PartyShot*s=&party.shot[i];if(s->own<0){s->x+=s->vx*dt;if(s->x<21)s->x=21,s->vx=__builtin_fabsf(s->vx);if(s->x>299)s->x=299,s->vx=-__builtin_fabsf(s->vx);}} - bool caught[2]={false,false}; - for(int p=0;p<2;p++){ - PartyPlayer*a=&party.p[p];a->x=clampf(a->x+dirx(p)*(is_cpu(p)?60+cpu*15:115)*dt,18,302);bool lower=(pad[p]&B_FIRE)!=0; - a->y=clampf(a->y+(lower?105:-145)*dt,83,219); - if(a->aux>=0){PartyShot*s=&party.shot[a->aux];s->x=a->x;s->y=a->y+6;if(a->y<=83)caught[p]=true;} - } - for(int i=0;i<7;i++)if(party.shot[i].own<0){ - PartyShot*s=&party.shot[i];float d[2];for(int p=0;p<2;p++)d[p]=party.p[p].aux<0?distance2(party.p[p].x,party.p[p].y,s->x,s->y):1e6f; - if(d[0]<144&&d[1]<144&&__builtin_fabsf(d[0]-d[1])<1){point(2);return;} - int p=d[0]own=p; - } - if(caught[0]||caught[1])point(caught[0]&&caught[1]?2:caught[0]?0:1); - if(ago(party.started)>30000)point(2); -} -static void fishing_paint(void) { - arena(HEX(0x283D67));gfx_fill(12,82,296,147,HEX(0x244F75));gfx_fill(12,79,296,3,HEX(0x7FA6C3)); - for(int p=0;p<2;p++){int x=party.p[p].x,y=party.p[p].y;actor2(x,77,p);gfx_fill(x,82,1,y-82,light[p]);gfx_fill(x,y,7,2,team[p]);gfx_fill(x+6,y-5,2,7,team[p]);} - for(int i=0;i<7;i++){PartyShot*s=&party.shot[i];int x=s->x,y=s->y;box(x-8,y-4,16,9,4,i&1?GOLD:HEX(0xA4D3DE));gfx_fill(x+(s->vx>0?-11:8),y-5,4,11,HEX(0x7B9DAF));disc(x+(s->vx>0?4:-4),y-1,1,INK);} - for(int p=0;p<2;p++)if(!is_cpu(p)) - gfx_text_center(&np_font_small,80+p*160,47,party.p[p].aux>=0?T("Release!"):p?T("Hold EXE"):T("Hold OK"),GOLD,256); - time_text(48,ago(party.started),30000); -} - -/* ------------------------------------------------------------ Memory Duel */ -static const uint8_t MEMORY_BIT[4]={B_LEFT,B_UP,B_DOWN,B_RIGHT}; -static void memory_start(void) { - party_start();party.n=(uint8_t)(3+clampi(score[0]+score[1],0,4));for(int i=0;i15000&&reached(party.signal))point(2); -} -static void memory_arrow(int x,int y,int d,color_t c) { - static const int8_t dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};int xx=x+dx[d]*20,yy=y+dy[d]*20; - if(dx[d]){gfx_fill(xx-7,yy-2,14,5,c);for(int i=0;i<7;i++)gfx_fill(xx+(dx[d]>0?7-i:-7+i),yy-i,1,2*i+1,c);} - else{gfx_fill(xx-2,yy-7,5,14,c);for(int i=0;i<7;i++)gfx_fill(xx-i,yy+(dy[d]>0?7-i:-7+i),2*i+1,1,c);} -} -static void memory_paint(void) { - arena(HEX(0x262D52));bool replay=reached(party.signal);centre_text(54,replay?T("Repeat the arrows!"):T("Watch the arrows"),WHITE); - int elapsed=ago(party.started),shown=elapsed<700?-1:(elapsed-700)/650; - for(int p=0;p<2;p++){ - int x=80+p*160;box(x-61,76,122,123,14,INK); - for(int d=0;d<4;d++)memory_arrow(x,137,d,!replay&&shown=0&&(elapsed-700)%650<470&&party.seq[shown]==d?GOLD:team[p]); - for(int i=0;i -enum { eadk_key_left=0,eadk_key_up=1,eadk_key_down=2,eadk_key_right=3, - eadk_key_ok=4,eadk_key_back=5,eadk_key_home=6,eadk_key_on_off=8, - eadk_key_shift=12,eadk_key_seven=30,eadk_key_nine=32,eadk_key_multiplication=39, - eadk_key_three=44,eadk_key_minus=46,eadk_key_ans=51,eadk_key_exe=52 }; -uint64_t eadk_timing_millis(void); -uint32_t eadk_random(void); -uint64_t eadk_keyboard_scan(void); -void eadk_display_wait_for_vblank(void); -void eadk_timing_msleep(uint32_t); -#endif diff --git a/games/twoplayer/tests/play.c b/games/twoplayer/tests/play.c new file mode 100644 index 00000000..8eef5914 --- /dev/null +++ b/games/twoplayer/tests/play.c @@ -0,0 +1,408 @@ +/* 2 Players on a computer, for tests and pictures (make host, make test). + * + * play test the rules of every game; bots against bots: player 1 played by the computer's + * own mind (at a player's speed) against the computer, at every level, and a + * quick or slow player in Quick Draw and Tug of War; random sessions through the + * menus and the games, quitting and opening again, that never break a rule; the + * old saves (four games) come back with their tallies, damaged ones reset + * play shot DIR pictures (DIR/NAME.ppm): the menu, each game's page, each game, the cards + * + * Built with -ffp-contract=off, and the game uses no libc randomness, sorting or unordered + * arguments: the same results on any computer. */ +#define NP_MODULE 1 +#define main tp_main +#include "../src/main.c" +#undef main +#include +#include +#include + +static uint16_t fb[SCREEN_H][SCREEN_W]; +static uint8_t disk[1024]; +static uint32_t disk_len; +static int writes, fails, unfinished; +void np_push(int x, int y, int w, int h, const color_t *p) { + for (int j = 0; j < h; j++) + for (int i = 0; i < w; i++) fb[y + j][x + i] = p[j * w + i]; +} +void *np_alloc(uint32_t size) { return malloc(size); } +const uint8_t *np_file_read(const char *name, uint32_t *len) { + *len = disk_len; + return disk_len ? disk : 0; +} +bool np_file_write(const char *name, const void *d, uint32_t len) { + if (strcmp(name, "twoplayer.sav") || len > sizeof disk) return false; + memcpy(disk, d, disk_len = len), writes++; + return true; +} +#define CHECK(c, ...) do { if (!(c)) { printf("FAIL %s:%d: ", __FILE__, __LINE__); printf(__VA_ARGS__); printf("\n"); fails++; } } while (0) + +/* ---------------------------------------------------------------- whole sessions, scripted */ +static uint32_t clock_ms, frames, fseed = 1; +static int session_frames; +static uint64_t (*script)(uint32_t frame); +static uint32_t frnd(void) { return fseed = fseed * 1664525u + 1013904223u; } +static uint64_t K(int k) { return (uint64_t)1 << k; } +static uint64_t no_keys(uint32_t f) { return 0; } +uint64_t eadk_keyboard_scan(void) { + clock_ms += 15 + frnd() % 30, frames++; + if (session_frames && frames >= (uint32_t)session_frames) return K(eadk_key_home); + if (script) return script(frames); + /* mostly play keys, sometimes the menus' and Back */ + static const uint8_t KEY[] = {eadk_key_left, eadk_key_up, eadk_key_down, eadk_key_right, eadk_key_ok, eadk_key_exe, + eadk_key_three, eadk_key_multiplication, eadk_key_ans, eadk_key_minus, eadk_key_back}; + uint64_t k = 0; + for (int i = 0; i < 3; i++) { + uint32_t a = frnd(), b = frnd(), c = frnd(); /* (one at a time: the same order on any compiler) */ + if (a % 3 == 0) k |= K(KEY[b % (sizeof KEY - (c % 8 ? 1 : 0))]); + } + return k; +} +uint64_t eadk_timing_millis(void) { return clock_ms; } +uint32_t eadk_random(void) { return frnd(); } +bool eadk_display_wait_for_vblank(void) { return true; } +void eadk_timing_msleep(uint32_t ms) { (void)ms; } + +/* the game's state is sane */ +static void sane(const char *where) { + CHECK(game >= 0 && game < NG && cpu >= 0 && cpu <= 3, "%s: game %d cpu %d", where, game, cpu); + CHECK(score[0] >= 0 && score[1] >= 0 && score[0] <= TARGET[game] && score[1] <= TARGET[game], "%s: score %d-%d in %d", where, + score[0], score[1], game); + CHECK(screen >= S_MENU && screen <= S_OVER && top >= 0 && top <= NG - ROWS && game >= top && game < top + ROWS, "%s: screen %d top %d", + where, screen, top); + CHECK(pg.rope >= -75 && pg.rope <= 75, "%s: rope %f", where, (double)pg.rope); +} +static void reset_all(void) { /* as a fresh start of the app */ + memset(&sv, 0, sizeof sv), memset(&pg, 0, sizeof pg), memset(&bot, 0, sizeof bot); + screen = sel = back_to = top = game = cpu = 0, now = 0, phase = 0, score[0] = score[1] = 0; +} + +/* ---------------------------------------------------------------- matches, frame by frame */ +static void begin(int g, int level, uint32_t s) { + reset_all(); + game = g, cpu = level, seed = s ? s : 1, now = 1000, ms = 20, dt = ms * .001f, top = clampi(g - 2, 0, NG - ROWS); + new_match(); +} +static void frame(int p1pad, int p1tap, int p2pad, int p2tap) { /* as main's loop in a match */ + ms = 20, dt = .02f, now += 20; + pad[0] = p1pad, tap[0] = p1tap, pad[1] = p2pad, tap[1] = p2tap; + if (cpu) pad[1] = tap[1] = 0; + play(); +} + +/* Player 1 played by the computer's own mind at a level, at a player's speed: the court mirrored + so player 1 is player 2, the computer's thinking (with its own memory) run, its keys read. */ +static __typeof__(bot) mind; +static int ai_aim1; +static uint32_t ai_t1, ai_shot1; +#define SWAP(a, b) do { __typeof__(a) t_ = a; a = b; b = t_; } while (0) +static void think(int level, int *p, int *t) { + int keep = cpu; + __typeof__(bot) b = bot; + memcpy(&bot, &mind, sizeof bot), cpu = level, *p = *t = 0; + if (game == PONG) { + int y = py[1], x = bx, vx = bvx, a = aim; /* (a player aims at the middle) */ + py[1] = py[0], bx = ((SCREEN_W - BS) << 8) - bx, bvx = -bvx, aim = 0; + int v = pong_cpu(); + py[1] = y, bx = x, bvx = vx, aim = a; + *p = v > 3 ? B_DOWN : v < -3 ? B_UP : 0; + } else if (game == HOCKEY) { + float s[8] = {mx[0], my[0], mvx[0], mvy[0], mx[1], my[1], mvx[1], mvy[1]}, q[2] = {qx, qvx}, tx, ty; + mx[1] = SCREEN_W - s[0], my[1] = s[1], mvx[1] = -s[2], mvy[1] = s[3]; + mx[0] = SCREEN_W - s[4], my[0] = s[5], mvx[0] = -s[6], mvy[0] = s[7], qx = SCREEN_W - qx, qvx = -qvx; + hockey_cpu(&tx, &ty); + mx[0] = s[0], my[0] = s[1], mvx[0] = s[2], mvy[0] = s[3], mx[1] = s[4], my[1] = s[5], mvx[1] = s[6], mvy[1] = s[7]; + qx = q[0], qvx = q[1], tx = -tx; + *p = (tx > 40 ? B_RIGHT : tx < -40 ? B_LEFT : 0) | (ty > 40 ? B_DOWN : ty < -40 ? B_UP : 0); + } else if (game == TANKS) { + int v, turn; + SWAP(tx_[0], tx_[1]); SWAP(ty_[0], ty_[1]); SWAP(ta[0], ta[1]); SWAP(dead[0], dead[1]); SWAP(dead_t[0], dead_t[1]); + SWAP(ai_aim, ai_aim1); SWAP(ai_t, ai_t1); SWAP(ai_shot, ai_shot1); + for (int i = 0; i < SHELLS; i++) sh[i].own = sh[i].own < 0 ? -1 : 1 - sh[i].own; + tanks_cpu(&v, &turn); + SWAP(tx_[0], tx_[1]); SWAP(ty_[0], ty_[1]); SWAP(ta[0], ta[1]); SWAP(dead[0], dead[1]); SWAP(dead_t[0], dead_t[1]); + SWAP(ai_aim, ai_aim1); SWAP(ai_t, ai_t1); SWAP(ai_shot, ai_shot1); + for (int i = 0; i < SHELLS; i++) sh[i].own = sh[i].own < 0 ? -1 : 1 - sh[i].own; + *p = (v > 0 ? B_UP : 0) | (turn > 0 ? B_RIGHT : turn < 0 ? B_LEFT : 0); + } else if (game == CYCLES) { + static const uint8_t BIT[4] = {B_RIGHT, B_DOWN, B_LEFT, B_UP}; + uint32_t next = bot.next; + SWAP(hx[0], hx[1]); SWAP(hy[0], hy[1]); SWAP(hd[0], hd[1]); + int d = cycles_cpu(); + SWAP(hx[0], hx[1]); SWAP(hy[0], hy[1]); SWAP(hd[0], hd[1]); + int last = nturns[0] ? turns[0][nturns[0] - 1] : hd[0]; + if (bot.next != next && d != last) *t = BIT[d]; /* (a turn when it decided one) */ + } + memcpy(&mind, &bot, sizeof bot), bot = b, cpu = keep; +} +/* a match of player 1 (a mind at level l1, or for Quick Draw and Tug of War a player who reacts + in r ms, or taps every r ms) against the computer at l2; who won */ +static int match(int g, int l1, int r, int l2, uint32_t s) { + begin(g, l2, s); + memset(&mind, 0, sizeof mind), ai_aim1 = -1, ai_t1 = ai_shot1 = now; + uint32_t last_tap = 0; + for (int f = 0; f < 60000 && screen == S_PLAY; f++) { /* (20 minutes: two minds can pin the puck forever) */ + int p = 0, t = 0; + if (g == QUICK) t = !phase && due(pg.at + r) ? B_FIRE : 0; + else if (g == TUG) { + if (!phase && now - last_tap >= (uint32_t)r) t = B_FIRE, last_tap = now; + } else think(l1, &p, &t); + frame(p | t, t, 0, 0); + sane("match"); + } + if (screen != S_OVER) unfinished++, printf("unfinished: game %d %d-%d screen %d\n", g, score[0], score[1], screen); + return score[1] >= score[0]; +} + +/* ---------------------------------------------------------------- the rules */ +static void rules(void) { + /* Quick Draw: too soon loses, after the signal the first wins, together a draw */ + begin(QUICK, 0, 7); + frame(B_FIRE, B_FIRE, 0, 0); + CHECK(phase == 1 && winner == 1 && score[1] == 1, "quick: too soon %d %d", phase, winner); + begin(QUICK, 0, 7), now = pg.at - 20; + frame(0, 0, B_FIRE, B_FIRE); + CHECK(winner == 1, "quick: player 2 first %d", winner); + begin(QUICK, 0, 7), now = pg.at - 20; + frame(B_FIRE, B_FIRE, B_FIRE, B_FIRE); + CHECK(winner == 2 && !score[0] && !score[1], "quick: together %d", winner); + begin(QUICK, 0, 7), now = pg.at - 25; + frame(0, 0, 0, 0); + CHECK(!phase, "quick: nothing yet"); + begin(QUICK, 3, 7); /* the computer's keys are its own */ + int f = 0; + while (!phase && f++ < 1000) frame(0, 0, B_FIRE, B_FIRE); + CHECK(winner == 1 && now >= pg.next, "quick: the computer drew at %u (%u)", now, pg.next); + /* Tug of War: a tap pulls 7.5, the rope slides back 3 a second, past 67 wins, 30 s ends it */ + begin(TUG, 0, 7); + frame(B_FIRE, B_FIRE, 0, 0); + CHECK(pg.rope < -7.4f && pg.rope > -7.5f, "tug: one tap %f", (double)pg.rope); + frame(B_FIRE, B_FIRE, B_FIRE, B_FIRE); + CHECK(pg.rope < -7.3f && pg.rope > -7.5f, "tug: together %f", (double)pg.rope); + for (int i = 0; i < 50; i++) frame(0, 0, 0, 0); + CHECK(pg.rope < -4.3f && pg.rope > -4.5f, "tug: slides back %f", (double)pg.rope); + frame(B_FIRE, 0, 0, 0); + CHECK(pg.rope > -4.5f, "tug: holding doesn't pull"); + for (int i = 0; i < 9 && !phase; i++) frame(B_FIRE, B_FIRE, 0, 0), frame(0, 0, 0, 0); + CHECK(phase == 1 && winner == 0, "tug: player 1 pulls it over %d %f", phase, (double)pg.rope); + begin(TUG, 0, 7); + frame(0, 0, B_FIRE, B_FIRE); + while (!phase) frame(0, 0, 0, 0); + CHECK(winner == 2 && round_ms() > 30000, "tug: time up, the rope back in the middle: a draw %d", winner); + begin(TUG, 0, 7); + while (!phase) frame(0, 0, 0, 0), frame(0, 0, B_FIRE, B_FIRE); + CHECK(winner == 1, "tug: player 2 wins"); + /* a match: first to its points, the tally kept */ + begin(TUG, 0, 7); + sv.wins[TUG][0][1] = 41; + for (int r = 0; r < 5; r++) { + while (!phase) frame(0, 0, 0, 0), frame(0, 0, B_FIRE, B_FIRE); + for (int i = 0; i < 80 && phase; i++) frame(0, 0, 0, 0); + } + CHECK(screen == S_OVER && score[1] == 5 && sv.wins[TUG][0][1] == 42, "tug: the match %d %d %d", screen, score[1], sv.wins[TUG][0][1]); + /* Pong: a ball past a paddle is the other's point; the serve goes to the one who lost it */ + begin(PONG, 0, 7); + bx = 2 << 8, bvx = -40, serve_at = 0, by = 120 << 8, bvy = 0, py[0] = 20 << 8; + for (int i = 0; i < 20 && !phase; i++) frame(0, 0, 0, 0); + CHECK(phase == 1 && winner == 1, "pong: past player 1"); + for (int i = 0; i < 80 && phase; i++) frame(0, 0, 0, 0); + CHECK(!phase && bvx < 0, "pong: served to player 1"); + /* Light Cycles: into a wall */ + begin(CYCLES, 0, 7); + for (int i = 0; i < 400 && !phase; i++) frame(0, 0, 0, 0); + CHECK(phase == 1 && winner == 2, "cycles: both into the walls together %d", winner); +} + +/* ---------------------------------------------------------------- saves */ +static void saves(void) { + /* version 1, four games: its tallies, game and opponent come back, the new games at 0 */ + uint8_t v1[36] = {'P', 1, 3, 2}; + for (int i = 0; i < 16; i++) v1[4 + 2 * i] = (uint8_t)(10 + i), v1[5 + 2 * i] = (uint8_t)i; + reset_all(), memcpy(disk, v1, disk_len = 36), writes = 0; + session_frames = 3, frames = 0, script = no_keys, tp_main(), session_frames = 0; + CHECK(game == CYCLES && cpu == 2, "v1: game %d cpu %d", game, cpu); + for (int g = 0; g < NG; g++) + for (int i = 0; i < 4; i++) { + int want = g < 4 ? (10 + g * 4 + i) | (g * 4 + i) << 8 : 0; + CHECK(sv.wins[g][i / 2][i % 2] == want, "v1: game %d tally %d: %d", g, i, sv.wins[g][i / 2][i % 2]); + } + CHECK(writes && disk_len == sizeof sv && disk[0] == 'P' && disk[1] == 1 && !memcmp(disk + 4, v1 + 4, 32), "v1: saved again, the same"); + /* the new length comes back as it is */ + uint8_t full[sizeof sv]; + memcpy(full, disk, sizeof full); + reset_all(), session_frames = 3, frames = 0, tp_main(), session_frames = 0; + CHECK(!memcmp(disk, full, sizeof full), "a save comes back the same"); + /* damaged ones: another magic, a later version, too long: a fresh start */ + for (int k = 0; k < 3; k++) { + memcpy(disk, full, disk_len = sizeof full); + if (k == 0) disk[0] = 'Q'; + if (k == 1) disk[1] = 2; + if (k == 2) disk_len = sizeof full + 2; + reset_all(), sv.wins[0][0][0] = 0, session_frames = 3, frames = 0, tp_main(), session_frames = 0; + CHECK(sv.wins[0][0][0] == 0 && sv.wins[1][0][0] == 0, "damaged save %d read", k); + } + disk_len = 0, script = 0; +} + +/* ---------------------------------------------------------------- random sessions */ +static void sessions(int n) { + disk_len = 0; + for (int s = 0; s < n; s++) { + reset_all(); + session_frames = 300 + (int)(frnd() % 1500), frames = 0, script = 0; + tp_main(); + sane("session"); + CHECK(disk_len == sizeof sv && disk[0] == 'P', "session %d: saved", s); + } + session_frames = 0; +} + +/* Back pauses, Quit game asks first, Home saves and quits */ +static uint64_t walk_script(uint32_t f) { + /* OK (its page), OK (play), Back (pause), down x3 (Quit game), OK, OK (No), Back (play), Back (pause), down x3, OK, + down (Yes), OK: out */ + static const uint8_t STEPS[] = {eadk_key_ok, eadk_key_ok, eadk_key_back, eadk_key_down, eadk_key_down, eadk_key_down, + eadk_key_ok, eadk_key_ok, eadk_key_back, eadk_key_back, eadk_key_down, eadk_key_down, + eadk_key_down, eadk_key_ok, eadk_key_down, eadk_key_ok}; + static const uint8_t SCREEN[] = {S_MENU, S_RULES, S_PLAY, S_PAUSE, S_PAUSE, S_PAUSE, S_PAUSE, S_ASK, S_PAUSE, S_PLAY, + S_PAUSE, S_PAUSE, S_PAUSE, S_PAUSE, S_ASK, S_ASK}; + if (f % 4 || f / 4 < 1 || f / 4 > sizeof STEPS) return 0; + CHECK(screen == SCREEN[f / 4 - 1], "keys: step %u on screen %d", f / 4, screen); + return K(STEPS[f / 4 - 1]); +} +/* Tug of War against the computer: down to it, the computer, OK, OK, then OK mashed; once the match is + over, mashing on doesn't pick Rematch (for 600 ms) */ +static uint32_t over_at; +static uint64_t mash_script(uint32_t f) { + if (f < 30) return f % 2 ? 0 : K(f < 12 ? eadk_key_down : f < 14 ? eadk_key_right : eadk_key_ok); + if (screen == S_OVER && !over_at) over_at = clock_ms; + if (over_at && clock_ms - over_at > 600) { + CHECK(screen == S_OVER, "a mashed key picked from the end card"); + return K(eadk_key_home); + } + return f % 2 ? K(eadk_key_ok) : 0; +} +/* alone, EXE is OK: Tug of War against the computer, OK and EXE pressed in turn, one always held: a single pull */ +static float rope_was; +static int pulls; +static uint64_t both_script(uint32_t f) { + if (f < 30) return f % 2 ? 0 : K(f < 12 ? eadk_key_down : f < 14 ? eadk_key_right : f < 18 ? eadk_key_exe : 0); + if (f == 30) CHECK(screen == S_PLAY && game == TUG && cpu == 1 && round_ms() < 600, "exe: in the match %d %d", screen, game); + pulls += pg.rope < rope_was - 5, rope_was = pg.rope; + if (f < 90) return f % 4 == 0 ? K(eadk_key_ok) : f % 4 == 2 ? K(eadk_key_exe) : K(eadk_key_ok) | K(eadk_key_exe); + CHECK(pulls == 1, "exe: %d pulls", pulls); + return K(eadk_key_home); +} +static void keys(void) { + reset_all(), frames = 0, script = both_script, pulls = 0, rope_was = 0; + tp_main(); + reset_all(), disk_len = 0, frames = 0, script = walk_script, session_frames = 0; + tp_main(); + CHECK(frames == 64 && disk_len == sizeof sv, "quit game asks first, then quits and saves (frame %u)", frames); + reset_all(), frames = 0, script = mash_script, over_at = 0; + tp_main(); + CHECK(over_at && game == TUG && cpu == 1, "tug: over %u game %d cpu %d", over_at, game, cpu); + script = 0; +} + +/* ---------------------------------------------------------------- bots against bots */ +static void bots(void) { + static const char *const GAME[] = {"Pong", "Air Hockey", "Tanks", "Light Cycles"}; + int n = 12; + for (int g = PONG; g <= CYCLES; g++) { + printf("%-12s player 1 at easy/normal/hard against the computer at easy/normal/hard, of %d:\n", GAME[g], n); + int won[4][4] = {{0}}; + for (int l1 = 1; l1 <= 3; l1++) { + printf(" "); + for (int l2 = 1; l2 <= 3; l2++) { + for (int i = 0; i < n; i++) won[l1][l2] += !match(g, l1, 0, l2, 1000u * g + 100u * l1 + 10u * l2 + i); + printf(" %2d", won[l1][l2]); + } + printf("\n"); + } + /* the levels: a harder computer wins more; a good player beats easy, and can beat hard; hard beats a + weak player */ + CHECK(won[2][1] >= won[2][3] && won[3][1] > n / 2 && won[3][3] > 0 && won[1][3] < n, "%s: the levels", GAME[g]); + } + /* Quick Draw: a quick player (250 ms) and a slow one (400 ms); Tug of War: 7 and 5 taps a second */ + int quick[4][2] = {{0}}, tug[4][2] = {{0}}; + for (int l2 = 1; l2 <= 3; l2++) + for (int i = 0; i < n; i++) { + quick[l2][0] += !match(QUICK, 0, 250, l2, 50u + 10u * l2 + i), quick[l2][1] += !match(QUICK, 0, 400, l2, 90u + 10u * l2 + i); + tug[l2][0] += !match(TUG, 0, 143, l2, 50u + 10u * l2 + i), tug[l2][1] += !match(TUG, 0, 200, l2, 90u + 10u * l2 + i); + } + printf("Quick Draw a 250 ms / 400 ms player against easy, normal, hard, of %d: %d/%d %d/%d %d/%d\n", n, quick[1][0], quick[1][1], + quick[2][0], quick[2][1], quick[3][0], quick[3][1]); + printf("Tug of War 7 / 5 taps a second against easy, normal, hard, of %d: %d/%d %d/%d %d/%d\n", n, tug[1][0], tug[1][1], tug[2][0], + tug[2][1], tug[3][0], tug[3][1]); + printf("unfinished (the puck pinned by two minds): %d\n", unfinished); + CHECK(unfinished <= 4, "unfinished matches"); + CHECK(quick[1][1] > n / 2 && quick[3][0] > 0 && quick[3][1] < n, "quick draw: levels"); + CHECK(tug[1][1] > n / 2 && tug[3][0] > 0 && tug[3][1] < n, "tug of war: levels"); +} + +/* ---------------------------------------------------------------- pictures */ +static void shot(const char *dir, const char *name) { + char path[256]; + snprintf(path, sizeof path, "%s/%s.ppm", dir, name); + FILE *f = fopen(path, "wb"); + if (!f) return; + fprintf(f, "P6\n%d %d\n255\n", SCREEN_W, SCREEN_H); + gfx_render(scene, 0, 0, SCREEN_H); + for (int y = 0; y < SCREEN_H; y++) + for (int x = 0; x < SCREEN_W; x++) { + unsigned c = fb[y][x]; + unsigned char p[3] = {(unsigned char)((c >> 11) * 255 / 31), (unsigned char)((c >> 5 & 63) * 255 / 63), (unsigned char)((c & 31) * 255 / 31)}; + fwrite(p, 1, 3, f); + } + fclose(f); +} +static void shots(const char *dir) { + char name[32]; + reset_all(); + sv.wins[QUICK][1][0] = 3, sv.wins[QUICK][1][1] = 1, sv.wins[PONG][1][0] = 2, sv.wins[TUG][1][1] = 1; + static const uint16_t AT[NG] = {170, 120, 400, 160, 20, 90}; /* (frames into a round: the README's pictures) */ + for (int g = 0; g < NG; g++) { + begin(g, 3, 11u + g); + memset(&mind, 0, sizeof mind), ai_aim1 = -1, ai_t1 = ai_shot1 = now; + for (int i = 0; i < AT[g] && screen == S_PLAY; i++) { + int p = 0, t = 0; + if (g <= CYCLES) think(3, &p, &t); + else if (g == TUG) t = i % 6 == 0 ? B_FIRE : 0; + frame(p | t, t, 0, 0); + } + if (g == QUICK) now = pg.at + 150; /* (the signal) */ + snprintf(name, sizeof name, "game_%02d", g), shot(dir, name); + screen = S_RULES, top = clampi(top, g - ROWS + 1, g), shot(dir, (snprintf(name, sizeof name, "rules_%02d", g), name)); + if (g == 0 || g == QUICK) screen = S_MENU, shot(dir, (snprintf(name, sizeof name, "menu_%02d", g), name)); + } + begin(PONG, 0, 3), shot(dir, "pong_2p"); + begin(TUG, 0, 3), screen = S_RULES, shot(dir, "rules_tug_2p"); + begin(HOCKEY, 1, 5); + for (int i = 0; i < 60; i++) frame(0, 0, 0, 0); + screen = S_PAUSE, sel = 1, shot(dir, "pause_hockey"); + begin(TUG, 1, 5), screen = S_PAUSE, shot(dir, "pause_tug"); + score[0] = 5, score[1] = 3, screen = S_OVER, sel = 0, shot(dir, "over_tug"); + screen = S_ASK, back_to = S_PAUSE, sel = 0, shot(dir, "ask_tug"); + begin(TUG, 1, 5); + for (int i = 0; i < 100; i++) frame(i % 6 ? 0 : B_FIRE, i % 6 ? 0 : B_FIRE, 0, 0); + point(0), now += 300, shot(dir, "point_tug"); +} + +int main(int argc, char **argv) { + gfx_buf = strip; + static const uint32_t TEAM[2] = {0xEF4136, 0x2E7CF6}; + for (int p = 0; p < 2; p++) + team[p] = gfx_rgb(TEAM[p]), light[p] = gfx_rgb(gfx_lerp888(TEAM[p], 0xFFFFFF, 120)), dark[p] = gfx_rgb(gfx_lerp888(TEAM[p], 0, 110)); + if (argc > 2 && !strcmp(argv[1], "shot")) { + shots(argv[2]); + return 0; + } + rules(); + saves(); + keys(); + sessions(argc > 2 ? atoi(argv[2]) : 300); + bots(); + printf(fails ? "%d FAILED\n" : "all passed\n", fails); + return fails != 0; +} diff --git a/games/twoplayer/tests/test.c b/games/twoplayer/tests/test.c deleted file mode 100644 index 0bafeefb..00000000 --- a/games/twoplayer/tests/test.c +++ /dev/null @@ -1,136 +0,0 @@ -#include -#include -#include -#include -#include -#define NP_MODULE 1 -#define main twoplayer_appmain -#include "../src/main.c" -#undef main - -static uint16_t pixels[320*240]; -static uint8_t saved[SAVE_BYTES]; -static unsigned saves; -uint64_t eadk_timing_millis(void){return now;} -uint32_t eadk_random(void){return 1;} -uint64_t eadk_keyboard_scan(void){return 0;} -void eadk_display_wait_for_vblank(void){} -void eadk_timing_msleep(uint32_t n){(void)n;} -void*np_alloc(uint32_t n){return malloc(n);} -bool np_file_write(const char*name,const void*d,uint32_t n){assert(!strcmp(name,SAVE_NAME)&&n==SAVE_BYTES);memcpy(saved,d,n);saves++;return true;} -const uint8_t*np_file_read(const char*name,uint32_t*n){*n=0;return NULL;} -void np_push(int x,int y,int w,int h,const color_t*d){assert(x>=0&&y>=0&&x+w<=320&&y+h<=240);for(int i=0;i>11)*255/31,((c>>5)&63)*255/63,(c&31)*255/31};fwrite(p,1,3,f);}fclose(f);} -static void init(int g,int level,unsigned random){ - game=g;cpu=level;seed=random?random:1;now=1000;ms=8;pad[0]=pad[1]=tap[0]=tap[1]=0; - new_match(); -} -static void tick(unsigned a,unsigned b){pad[0]=tap[0]=a;pad[1]=tap[1]=b;now+=8;ms=8;match_step();} -static void step(unsigned duration,unsigned a,unsigned b){for(unsigned i=0;i>8);} - uint32_t crc=save_crc(v2,132);for(int i=0;i<4;i++)v2[132+i]=(uint8_t)(crc>>(i*8)); - assert(save_decode(v2,sizeof v2)&&sv.game==MEMORY); - for(int g=0;g>(i*8)); - assert(save_decode(v2,sizeof v2)&&sv.game==PONG); - game=MEMORY;cpu=3;uint8_t bytes[SAVE_BYTES];save_encode(bytes);assert(save_decode(bytes,sizeof bytes));assert(sv.game==MEMORY&&sv.cpu==3); - for(unsigned i=0;i0); - init(FOOTBALL,0,1);party.x=party.p[0].x+14;party.y=party.p[0].y;party.vx=-100;tick(0,0);assert(party.vx>0); - init(VOLLEY,0,1);party.x=35;party.y=212;tick(0,0);assert(winner==1&&phase==1); - init(VOLLEY,0,1);party.x=160;party.y=135;party.vy=180;tick(0,0);assert(!phase&&party.vy<0); - init(ARCHERY,0,1);tick(B_FIRE,0);step(320,B_FIRE,0);tick(0,0);assert(party.shot[0].life>0&&party.shot[0].vx>0&&party.shot[0].vy<0); - init(ARCHERY,0,1);party.mark[1]=1;party.shot[0]=(PartyShot){party.p[1].x,185,0,0,1000,0,0};tick(0,0);assert(winner==0&&phase==1); - init(DODGE,0,1);party.mark[0]=party.mark[1]=1;for(int p=0;p<2;p++)party.shot[p]=(PartyShot){party.p[p].x,party.p[p].y,0,0,1000,1-p,0};tick(0,0);assert(winner==2); - init(METEORS,0,1);party.shot[0]=(PartyShot){80,207,0,0,1,0,10};tick(0,0);assert(winner==2&&party.mark[0]==0&&party.mark[1]==0); - init(ROCKETS,0,1);party.p[0].y=222;party.p[1].y=120;tick(0,0);assert(winner==1); - init(SUMO,0,1);party.p[0].x=10;tick(0,0);assert(winner==1); - init(SUMO,0,1);now+=20000;assert(ring_radius()<55);tick(B_FIRE,0);assert(party.p[0].ready>now); - init(FISHING,0,1);party.p[0].y=160;step(80,B_FIRE,0);assert(party.p[0].y>160);step(80,0,0);assert(party.p[0].y<160+8); - init(FISHING,0,1);party.p[0].x=party.p[1].x=100;party.p[0].y=party.p[1].y=150;party.shot[0]=(PartyShot){100,150,0,0,1,-1,0};tick(B_FIRE,B_FIRE);assert(winner==2&&phase==1); - init(MEMORY,0,1);tick(MEMORY_BIT[(party.seq[0]+1)%4],0);assert(!phase&&!party.index[0]);now=party.signal; - for(int i=0;i=0&&n=(uint32_t)(level==1?700:level==2?500:350)); - init(TUG,level,1);for(int t=0;t<16000&&!phase;t+=8)tick(t%200==0?B_FIRE:0,0);assert(phase&&winner==0); - for(int run=0;run<20;run++){ - init(QUICK,level,run+750);for(int t=0;t<300000&&screen==S_PLAY;t+=8)tick(!phase&&reached(party.signal+420)?B_FIRE:0,0); - assert(screen==S_OVER);if(score[0]>score[1])quick_wins[level-1]++; - init(ARCHERY,level,run+900); - for(int t=0;t<300000&&screen==S_PLAY;t+=8)tick(!phase&&ago(party.started)%1800<650?B_FIRE:0,0); - assert(screen==S_OVER);if(score[0]>score[1])archery_wins[level-1]++; - } - assert(quick_wins[level-1]>=(level<3?19:3));assert(archery_wins[level-1]>=12); - } - FILE*f=fopen("balance-report.json","w");assert(f); - fprintf(f,"{\"matches_per_difficulty\":20,\"quick_human_420ms_wins\":[%u,%u,%u],\"archery_human_650ms_charge_wins\":[%u,%u,%u]}\n",quick_wins[0],quick_wins[1],quick_wins[2],archery_wins[0],archery_wins[1],archery_wins[2]);fclose(f); -} -static void validate(void){ - assert(game>=0&&game=0&&score[1]>=0&&score[0]<=TARGET[game]&&score[1]<=TARGET[game]); - if(game>=QUICK){ - assert(isfinite(party.x)&&isfinite(party.y)&&isfinite(party.value)); - for(int p=0;p<2;p++)assert(isfinite(party.p[p].x)&&isfinite(party.p[p].y)&&isfinite(party.p[p].vx)&&isfinite(party.p[p].vy)); - for(int i=0;i<12;i++)assert(isfinite(party.shot[i].x)&&isfinite(party.shot[i].y)&&isfinite(party.shot[i].vx)&&isfinite(party.shot[i].vy)); - } -} -static void playtests(void){ - FILE*f=fopen("host-report.json","w");assert(f);fprintf(f,"{\"games\":%d,\"party_ram_bytes\":%u,\"save_bytes\":%u,\"ai_runs\":[",NG,(unsigned)sizeof party,SAVE_BYTES); - unsigned runs=0; - for(int g=QUICK;g100){fprintf(stderr,"rules too tall %d: %d\n",g,end);abort();} - screen=S_PLAY;step(g==ARCHERY?650:850,g==ARCHERY?B_FIRE:0,0);gfx_render(scene,0,0,240);sprintf(path,"game-%02d.ppm",g);shot(path); - for(int s=S_PAUSE;s<=S_SAVE_ERROR;s++){screen=s;sel=0;gfx_render(scene,0,0,240);} - } -} -int main(void){ - assert(offsetof(__typeof__(party),signal)==328); /* ARM debugger fixture */ - gfx_buf=strip;static const uint32_t colours[2]={0xEF4136,0x2E7CF6}; - for(int p=0;p<2;p++)team[p]=gfx_rgb(colours[p]),light[p]=gfx_rgb(gfx_lerp888(colours[p],0xFFFFFF,120)),dark[p]=gfx_rgb(gfx_lerp888(colours[p],0,110)); - saves_test();mechanics();balance_test();playtests();renders(); - printf("PASS: fifteen games; 33 complete AI matches, 150 random runs, mechanics, legacy/CRC saves and all screens.\n");return 0; -} diff --git a/games/twoplayer/tests/test_arm.py b/games/twoplayer/tests/test_arm.py deleted file mode 100644 index 3d4af1ef..00000000 --- a/games/twoplayer/tests/test_arm.py +++ /dev/null @@ -1,128 +0,0 @@ -"""Execute the actual ARM app, including firmware memory and clean-exit checks.""" -import argparse,io,json,os,re,shlex,struct,tempfile,types -from pathlib import Path -ROOT=Path(__file__).resolve().parents[1];REPO=ROOT.parents[1] -emu_path=REPO/'tools/emu.py';emu=types.ModuleType('twoplayer_emu');emu.__file__=str(emu_path);emu.io=io -source=emu_path.read_text().replace('ELFFile(open(elf, "rb"))','ELFFile(io.BytesIO(open(elf, "rb").read()))') -source=source.replace('cmd = [nwlink, "nwa-elf",','cmd = nwlink + ["nwa-elf",') -source=source.replace('chunk = CPU_HZ // 1000','chunk = CPU_HZ // 10000').replace('self.now_ms += 1\n','self.now_ms += 0.1\n') -source=source.replace(' next_frame = self.now_ms if frame_ms else None',' self.checkpoint = until_ms\n next_frame = self.now_ms if frame_ms else None') -source=source.replace(' self.slept_ms += r0\n',' self.slept_ms += r0\n if self.now_ms >= self.checkpoint: uc.emu_stop()\n') -exec(compile(source,str(emu_path),'exec'),emu.__dict__) -def presses(*items):return[(t,t+d,emu.KEYS[k])for t,k,d in items] -def storage(path,items): - data=bytearray(emu.STORAGE_SIZE);at=0 - for name,value in items: - r=name.encode()+b'\0'+value;n=2+len(r);struct.pack_into('=3 and at+n<=len(data);name,value=data[at+2:at+n].split(b'\0',1);result[name.decode()]=value;at+=n - return result -def uint(c,name):return struct.unpack('clock - if g==8: - # New action keys really charge independently; Shift no longer acts. - key(c,'shift') - flags=c.symbols['party']+336 - assert bytes(c.uc.mem_read(flags,2))==b'\x00\x00' - t=int(c.now_ms)+20;c.keys+=presses((t,'ok',650),(t,'exe',550)) - c.run(t+400);assert bytes(c.uc.mem_read(flags,2))==b'\x01\x01' - c.save_png(str(out/(profile+'-archery-charge.png'))) - c.run(t+740);assert bytes(c.uc.mem_read(flags,2))==b'\x00\x00' - assert any(struct.unpack('0 for i in range(12)) - c.save_png(str(out/(profile+'-archery-shot.png'))) - # Both physical key sets are sampled together; pause stops only game time. - t=int(c.now_ms)+10 - c.keys+=presses((t,'left',70),(t,'ok',60),(t,'minus',70),(t,'exe',60));c.run(t+100) - key(c,'back');assert uint(c,'screen')==3 - frozen=uint(c,'now');c.run(c.now_ms+120);assert uint(c,'now')==frozen - key(c,'back');assert uint(c,'screen')==2 - if g>=4:c.save_png(str(out/(profile+'-game-%02d.png'%g))) - key(c,'back');key(c,'down');key(c,'down');key(c,'ok');assert uint(c,'screen')==0 - check(c) - if g<14:key(c,'down') - # Page jump wraps and retains the row; CPU mode remains independent. - key(c,'9');assert uint(c,'game')==2 - key(c,'7');assert uint(c,'game')==14 - key(c,'right');assert uint(c,'cpu')==1 - key(c,'right');key(c,'right');assert uint(c,'cpu')==3 - key(c,'ok');key(c,'ok');key(c,'back');key(c,'down');key(c,'ok');assert uint(c,'screen')==2 and uint(c,'phase')==0 - # Real keys score for each human in Quick Draw; holding action does not - # leak an extra shot into the following round. - # 14 -> 2 -> 3 -> 4, then CPU hard -> two players. - key(c,'back');key(c,'down');key(c,'down');key(c,'ok') - key(c,'9');key(c,'down');key(c,'down');key(c,'right') - assert uint(c,'game')==4 and uint(c,'cpu')==0 - key(c,'ok');key(c,'ok') - for player,k in enumerate(['ok','exe']): - if player:c.run(c.now_ms+1650) - assert uint(c,'phase')==0 - # signal is a plain uint32 at the offset verified by the host. - signal=struct.unpack(' existing 2 Players module. - assert arm.uint(c, 'screen') == 0 - key('9'); key('ok'); key('ok') - assert arm.uint(c, 'screen') == 2 and arm.uint(c, 'game') == 4 - key('back'); key('down'); key('down'); key('ok') - assert arm.uint(c, 'screen') == 0 - key('back'); key('down'); key('ok', 800) # Module Quit -> carousel. - assert not c.exited - c.save_png(str(out / (profile + '-returned.png'))) - key('ok', 650) # Re-enter: BSS reset, selection restored from real storage. - assert arm.uint(c, 'screen') == 0 and arm.uint(c, 'game') == 4 - key('home', 600) - arm.exited(c, system == 'upsilon') - records = arm.records(st.read_bytes()) - assert len(records['twoplayer.sav']) == 128 and records['keep.py'] == b'print(42)\n' - assert b'twoplayer.sav' in records['numplay_saves.py'] - report.append(dict(profile=profile, launch_return_reenter=True, backup=True, - stack_bytes=c.stack_used())) - (out / 'report.json').write_text(json.dumps(report, indent=2) + '\n') - print('PASS: existing NumPlay module launch, return, re-entry, shared saves and backup.') - - -if __name__ == '__main__': - main() diff --git a/games/twoplayer/tests/test_languages.py b/games/twoplayer/tests/test_languages.py deleted file mode 100644 index 56c95ba8..00000000 --- a/games/twoplayer/tests/test_languages.py +++ /dev/null @@ -1,26 +0,0 @@ -"""Check translation coverage, mechanics and all layouts using the real fonts.""" -from pathlib import Path -import shutil,importlib.util,subprocess,sys,re -repo=Path(__file__).resolve().parents[3];out=repo/'games/twoplayer/output/languages';out.mkdir(parents=True,exist_ok=True) -def load(name,p): - s=importlib.util.spec_from_file_location(name,p);m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m -lang=load('lang',repo/'tools/lang.py') -for code in ['fr','zh']: - dst=out/code - for sub in ['games/twoplayer/src','games/twoplayer/tests','games/common','launcher/src']: - for p in (repo/sub).glob('*'): - if p.is_file() and p.suffix in ['.c','.h']: - target=dst/sub/p.name;target.parent.mkdir(parents=True,exist_ok=True);text=p.read_text(encoding='utf-8') - if sub=='games/twoplayer/src': - table=lang.load_table('twoplayer',code);missing=[s for s in lang.marked(p) if s not in table];assert not missing,missing - text=lang.MARK.sub(lambda m:'T("'+table[m.group(2)]+'")',text) - if p.name=='np_text.h':text=text.replace('#define NP_TEXT_EXTRA 0','#define NP_TEXT_EXTRA 1') - target.write_text(text,encoding='utf-8') - texts='\n'.join(lang.load_table('twoplayer',code).values());(dst/'texts.txt').write_text(texts,encoding='utf-8') - extra=','.join(str(c)for c in sorted({ord(c)for c in texts if 0x80<=ord(c)<0x180})) - subprocess.run([sys.executable,str(repo/'tools/fontgen.py'),str(dst/'launcher/src/font_data.c'),'--extra',extra],check=True) - subprocess.run([sys.executable,str(repo/'tools/xfont.py'),'table',str(repo/'assets/fonts/fusion-pixel-12px.bin'),str(dst/'launcher/src/np_xfont.h'),str(dst/'texts.txt')],check=True) - target=dst/'games/twoplayer';(target/'output').mkdir(exist_ok=True) - subprocess.run(['gcc','-std=c11','-O2','-Wall','-Wextra','-Wno-unused-parameter','-Wno-misleading-indentation','-Itests','tests/test.c','../../launcher/src/gfx.c','../../launcher/src/font_data.c','../../launcher/src/xfont.c','-lm','-o','output/test.exe'],cwd=target,check=True) - subprocess.run([str(target/'output/test.exe')],cwd=target/'output',check=True) - print('Translations and layout pass:',code) diff --git a/games/twoplayer/tools/bot.py b/games/twoplayer/tools/bot.py index b19462b7..56f779bc 100644 --- a/games/twoplayer/tools/bot.py +++ b/games/twoplayer/tools/bot.py @@ -2,9 +2,9 @@ """Plays 2 Players in the ARM emulator for the README's pictures. Runs the calculator build (TwoPlayers.nwa) in tools/emu.py as player 1 against the hard computer, -game after game: it reads the screen (the ball, the puck, the tanks, the light cycles) and presses -the keys a player would. Saves the raw frames, then the gallery's GIF (a few seconds of each game) -and a screenshot of each game. +game after game: it reads the screen (the ball, the puck, the tanks, the light cycles, the signal) +and presses the keys a player would. Saves the raw frames, then the gallery's GIF (a few seconds of +each game) and a screenshot of each game. Usage: bot.py TwoPlayers.nwa OUT [--fps 25] [--seconds 8] (needs NumPy; gifsicle for small GIFs) """ @@ -42,6 +42,7 @@ def __init__(self, nwa, out, fps): self.last = None self.dir = 0 self.fired = 0 + self.seen = None def grab(self, calc): open(os.path.join(self.out, f"{self.frame:06d}_{int(calc.now_ms):06d}.raw"), "wb").write(bytes(calc.screen)) @@ -183,6 +184,14 @@ def cycles(self): best, bv = d, v self.hold([] if best == self.dir else [["right", "down", "left", "up"][best]]) + def quick(self): # Quick Draw: OK a quarter of a second after the ground turns at the signal + go = near(self.screen()[100:101, 20:21], 0x3A2F1C, 12).any() + self.seen = (self.seen or self.c.now_ms) if go else None + self.hold(["ok"] if go and self.c.now_ms - self.seen >= 250 else []) + + def tug(self): # Tug of War: OK, let go, OK... + self.hold(["ok"] if int(self.c.now_ms // STEP) % 4 == 0 else []) + def play(self, game, seconds): self.tap("ok", 1400) # the rules self.tap("ok", 300) # play @@ -190,7 +199,7 @@ def play(self, game, seconds): self.last = None end = self.c.now_ms + seconds * 1000 while self.c.now_ms < end: - [self.pong, self.hockey, self.tanks, self.cycles][game]() + [self.pong, self.hockey, self.tanks, self.cycles, self.quick, self.tug][game]() self.marks.append((self.c.now_ms, -1)) self.tap("back") # Paused, Other games self.tap("down") @@ -212,7 +221,7 @@ def main(): for _ in range(3): # the hard computer bot.tap("right", 150) bot.run(500) - for g in range(4): + for g in range(6): bot.play(g, a.seconds) bot.tap("down", 300) frames = record.load_frames(raw) diff --git a/launcher/lang/fr.txt b/launcher/lang/fr.txt index 87824f2a..bdef86b6 100644 --- a/launcher/lang/fr.txt +++ b/launcher/lang/fr.txt @@ -135,6 +135,4 @@ Needs Il manque Sokoban Sokoban Push every box home Pousse chaque caisse à sa place -Levels: Microban by David W. Skinner Niveaux : Microban de David W. Skinner -Fifteen mini-games, side by side Quinze mini-jeux, côte à côte -Additional mini-games by Bobydeluxe Mini-jeux supplémentaires par Bobydeluxe +Levels: Microban by David W. Skinner Niveaux : Microban de David W. Skinner \ No newline at end of file diff --git a/launcher/lang/zh.txt b/launcher/lang/zh.txt index 3ca18325..8194210b 100644 --- a/launcher/lang/zh.txt +++ b/launcher/lang/zh.txt @@ -134,6 +134,4 @@ Needs 内存还差 Sokoban 推箱子 Push every box home 把每个箱子推到位 -Levels: Microban by David W. Skinner 关卡:David W. Skinner 的 Microban -Fifteen mini-games, side by side 十五款小游戏,并肩对战 -Additional mini-games by Bobydeluxe 新增小游戏:Bobydeluxe +Levels: Microban by David W. Skinner 关卡:David W. Skinner 的 Microban \ No newline at end of file diff --git a/tests/test_games.py b/tests/test_games.py index 5a481820..0313aaf7 100644 --- a/tests/test_games.py +++ b/tests/test_games.py @@ -466,9 +466,9 @@ def dk_frames(v): and struct.unpack_from("= 10, lambda v: v[4] == 0 and struct.unpack_from("= 1), # best kept, shake off - # Air Hockey and the easy computer chosen; then the normal computer and Tanks, the tallies kept - "twoplayer": (lambda v: len(v) == 128 and v[:4] == b"P\3\1\1", - lambda v: len(v) == 128 and v[:4] == b"P\3\2\2"), + # Air Hockey and the easy computer chosen; then the normal computer and Tanks, the tallies of the six games kept + "twoplayer": (lambda v: len(v) == 52 and v[:4] == b"P\1\1\1", + lambda v: len(v) == 52 and v[:4] == b"P\1\2\2"), # a game kept (Easy, the guide read) with the two digits the hints wrote (the digits at 109); then three "sudoku": (lambda v: len(v) == 352 and v[:4] == b"S\1\3\0" and sum(1 <= b <= 9 for b in v[109:190]) == 2, lambda v: v[2] & 1 and sum(1 <= b <= 9 for b in v[109:190]) == 3), From b4496d1d335a6ced740874781ccb07c4d580d2d5 Mon Sep 17 00:00:00 2001 From: Mason363 Date: Fri, 23 Oct 2026 20:01:03 -0400 Subject: [PATCH 3/3] README: 2 Players' six games --- README.md | 2 +- docs/media/gallery/twoplayer.gif | Bin 208636 -> 265953 bytes docs/play.md | 8 ++++---- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f2fc2527..b460e28b 100644 --- a/README.md +++ b/README.md @@ -431,7 +431,7 @@ NumPlay is licensed under the [GNU General Public License v3.0](LICENSE). Copyri Level Devil: platforms give way, a saw comes out of the floor, the ice slides the runner onto a spring, gravity flips past the saws
Level Devil - 2 Players: Pong, Air Hockey, Tanks and Light Cycles against the computer
2 Players + 2 Players: Pong, Air Hockey, Tanks, Light Cycles, Quick Draw and Tug of War against the computer
2 Players Cookie Clicker: a golden cookie caught for a Frenzy, the store's upgrades, then an ascension: the cookie bursts and the heavens open
Cookie Clicker Space Invaders: the rack marches down, the saucer is hit for 100
Space Invaders diff --git a/docs/media/gallery/twoplayer.gif b/docs/media/gallery/twoplayer.gif index 66580b14646bfffe625af613b053834dc429b760..8fb9cd142a2776b6cbaf41f9349cf1d14665a556 100644 GIT binary patch literal 265953 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

iqQi63tXMHp@W{IW`x`ASQ-F3WvQ;&lvE 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

l&FpVYn7X6$^Ku@i0SU6k^>9mkc8`dtV6!P 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

-Ru~_hw2#% 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 *# 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

2qJmTjKa6@A0F){K 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 RxH$e9yT85NpLx5z{}1*mrI!Ez diff --git a/docs/play.md b/docs/play.md index ae9d6b81..b1c076ba 100644 --- a/docs/play.md +++ b/docs/play.md @@ -816,16 +816,16 @@ Google's brick breaker: seven bricks across in blue, red, yellow and green, wall ## 2 Players -2 Players: Pong, Air Hockey, Tanks and Light Cycles +2 Players: its six games | Key | Player 1 | Player 2 | | --- | --- | --- | | **Move** (in Pong, up and down) | Arrows | **×** up, **Ans** down, **3** left, **−** right | -| **Fire** (Tanks) | **shift** | **EXE** | +| **Fire, draw, pull** | **OK** | **EXE** | -On the menu, **Up / Down** pick a game and **Left / Right** who player 2 is: a friend, or the computer (easy, normal, hard). Against the computer, **OK** and **EXE** fire too. **Back** pauses (Resume, Restart, Other games, Quit game). +On the menu, **Up / Down** pick a game and **Left / Right** who player 2 is: a friend, or the computer (easy, normal, hard). Against the computer, **EXE** works as OK too. **Back** pauses (Resume, Restart, Other games, Quit game). -Pong (first to 11), Air Hockey (first to 7), Tanks in a new maze every round and Light Cycles (first to 5 rounds). Before each game, a map of the keyboard lights up each player's keys. The matches each side wins are kept for every game. +Pong (first to 11), Air Hockey (first to 7), Tanks in a new maze every round, Light Cycles (first to 5 rounds), Quick Draw (draw first when the signal shows) and Tug of War (tap faster than the other side). Before each game, a map of the keyboard lights up each player's keys. The matches each side wins are kept for every game.