From 3eb54e4306d5184de35fd4ba4bf4105cac230e73 Mon Sep 17 00:00:00 2001 From: Luxferre Date: Fri, 23 Oct 2026 14:57:59 +0300 Subject: [PATCH] fix(games): correct Snake self-collision on spawn, enlarge Tetris, brighten labels Snake: the snake was initialized with its head at the left end while moving right, so the first gravity step walked the head into its own body and the game started at Game Over. Initialize the head at the right end (cx) so the initial direction is valid. Tetris: enlarge the playfield cell (10 -> 12px) so pieces are not too small, and slow gravity (800ms base, gentler per-level ramp, 250ms floor) so pieces do not fall too fast. Both: brighten the secondary/dim text colour (0x0a3a0a -> 0x2f9f2f) so score/label/menu text is actually legible on the black background. Also wire the Games section into the real main menu: the system menu is hardcoded in the dwm-plugin dmenu (src/sxmo-dmenu/dmenu.c), not in sxmo_appmenu.sh, so add a 'games' builtin menu that loads sxmo_hook_games.sh and a Games entry after Apps in the sys menu, plus scripts/build-dmenu.sh to cross-compile dmenu.so. --- overlay/rootfs/usr/bin/snake | Bin 13672 -> 13672 bytes overlay/rootfs/usr/bin/tetris | Bin 13668 -> 13668 bytes overlay/rootfs/usr/lib/dwm/plugins/dmenu.so | Bin 58608 -> 58608 bytes prebuilt/games/usr/bin/snake | Bin 13672 -> 13672 bytes prebuilt/games/usr/bin/tetris | Bin 13668 -> 13668 bytes .../sxmo-x11/usr/lib/dwm/plugins/dmenu.so | Bin 58608 -> 58608 bytes scripts/build-dmenu.sh | 78 ++++++++++++++++++ src/games/snake.cpp | 4 +- src/games/tetris.cpp | 8 +- src/sxmo-dmenu/dmenu.c | 14 +++- 10 files changed, 97 insertions(+), 7 deletions(-) create mode 100755 scripts/build-dmenu.sh diff --git a/overlay/rootfs/usr/bin/snake b/overlay/rootfs/usr/bin/snake index a199a732a8ac4ca139d7bf28fca32b754575fcf5..6207e5fbf01d831085ea095fbd8356597690276a 100755 GIT binary patch delta 77 zcmaEn^&)FS3ZuxqXzM-wCj`RFc&&u0kM7H>le|~4xq|T)54-0#{o(_k^fyQHP3M>7 WWME+617a>H%?+h_Hgn3wivs|CM;1H) delta 77 zcmaEn^&)FS3Zux|gr!qY3YGQEeg0`*!~ri|lZMXsn=2S^@vu98<5E8GiEDEt-*kRS W9tH*mJ|O0X(p*rQb2F!0yf^^us~6h< diff --git a/overlay/rootfs/usr/bin/tetris b/overlay/rootfs/usr/bin/tetris index 1858184e66c4e516365576c151835d0194a17b44..e434bbe439bccc790eba1bbde0598930a71bb9e8 100755 GIT binary patch delta 201 zcmV;)05<>RYUFCLWC0Y{<4K#*XD<26sIZgRcws&r`fbd!cmbdc2TArXbHMU1vmXwD z5fdi>0Q&>;DMjFS^0Apwk&H6kMcjFVX+;{gn_JtNBu0w4pk3NTs) D@gG#z delta 201 zcmV;)05<>RYUFCLWC0ZHb@8+A@OUJM48Kp3Nn_x$3^8}Jcmbdc2SfG>Bf#00Q&>;DMc#{(%Apv-kH6kMcc#~No;{gh@JtNBu0$2jG3NTs) Dr~**a diff --git a/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so b/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so index 2033225c0c67226d5c45173e6556a68da8f85831..40f7bf8cb291a9861d95b66163684b8f51c70b93 100755 GIT binary patch delta 13478 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 Po#)*}joR2hz7YN&00qhn delta 13666 zcmZu%3s{uJ`k!xE5D^s>6cLr13W5rXikB2=`vO5Fv%F-Amki02)NE050m<-=4x!@Z zP^qCQ7gr1K9`l%)d9cV#Nz71Kc3C#!Fdw@s{C~6iv8VGqf1c;J@4Pd=d1vOG`+S(b zb25GBl&f;S{|h1acgJ1u^vj$5`WLf@jb?|A_#})^PP)Eb^yo ztP8OBGwjco^^4AAG1-p_B*_tfAVZm!kX%%RH+BnZEu8yrV@5#V0)uO1egF)9^tZ;{ zLcS>|K$O!HVJ}lFbZhk%@~LHTnPO@wEgmvb;Z{nY3<+?~$s=SB?HsIePC;lX-4VP* zctrmU{zqpObRVEiyFVme5OTCnhmIAzlJ=mjz&zmKAwrsW6VjrM2zycSf-#qnD&XoB z)DAM>03kJy_jVDYhCBgX0qF{K1F{hR6;K0Q*Om=`M{vHglaSL||L{!;=Y-E;O?!Og zznv6`hw1t;K8mS_wE1HmISa?=`x68EkIW|I;#op&Z$bkg@0`JaKv)gAQ+sxzM(|3_ zB&4u}kQm4xPZJVY-`;+N#!b2)q*CX}7kZ!8pb|hna00jt#AvklCc8T+0xYy9CP3j~ zp{_3;6#hw%zBo$wLi_8BZ!4W!HWFf_FU5}NT}jbO_}&bEt3MZTgqR@B$X)|%Mffq~X03l> zwcs^p6)1o&5C%k}Z-3N!&Fn7pow*Vo1x{mh%5SNp=NUnn)@2o?gj4ib{O z91{;=734_B-jF_!^~nUYh>+nxG%y{wg%UVN13zI&nIMM3T7~H zaX)$v@-XBHNEcu|Fb2964sY29_aa;exeSdPrlU{h926?GnzQf^V~Ys!-UXK}MNvQ`QgSfH76a=r;f5l80o}21U_bB0gfv0Bv49W>bEy=vTDmw4 zpx-VW7+Tn0DW<6`tgVp*FTGnW<#ko7tSml&>Fd+sd zy{Yl+?`O+Zid@8WD09uQXw$juCF-@I(WbN6pQ{OES$4H#N(dLzRsN!tEv@r7S1r{f zq^s~dKTxce9*0Hyf2dloa{iByWMPXNtEEa`Mc}`r$D{4Gvl^Xkb?BCby87DV)VA{8 z)u1}1a#X5JD?)LFa@;aGt~26t<+%B_tWOb>A;-*=S>}(crBpdC))pt2)@4*nNpjpI znP>W_T1vFVX)G*KCjKWQP`xH}iYYCFw|$6=8X5MCGW8Kq7CqY20ie^SS`8x4i)2z(!d@H76}_Aa$bDVdZhn| z^yYrHbPWhTAk>9U_#5FG2vv3h(%q0=fpq+C;6~P~;){4O#b8}^uox;;{y$a@BfZFx zUW@d?|4HA8bWN^<@Cyhz6YQbHIspa6SbmnsYR8-9!gT1S#A>+67XuY$(XVi3G>n!TAsz51Hfc-~@m}9GrK+ zk;dB_);zSMVIJVr`Di+7Jr|_MGO5ZzYHNVgeL6TVgL8A}-+R)C^m3n$o*rv`=Sj76 za%#G2?K8N3{05abCU17MEn9M((w6#pmXo>{92pkJ zSEewzBEgP|JT_pqhVb>uH*Q8V!8D4(ie_Pz1`;q%493bf5LHov!JA-r)st6XaMJ;%qe$p_JDKJ!FdSI5t&oy z;ADW4XX9vi$9@OWcA1ppAgu%`-C^i!aMsG4R0n51I7=Ozqv!-nD<4n>EXIj4JHf#g z!B#ogJ7Fq)3p$9Heyf)y70@PQI>w0TH6u+THC&gR;ww2A3|ppAWT0p_`Pp zG_HTrdcQ0j-8>lUdh}nHPzghyG<2b1Y%n^jZV1`UJ-S}C0i8uqPE{XGM~}p!HWg#- z4!=F5!{J6f9NwqH;bXulmpNw~oGNfmIygb#6v~`~4$dub^7?d?)f1c?J4YjBJ4odq zr8^7}kWytsD;%6-;4F0*GPYuYlsU5;oIG$69Gog}qGirR2PX@hNR*|qPwiVE1&`gJ z`bG*XZD&s<>`Fs0xgyuAewyQx{F@XudS3Jl6LE?*#cl4|6#3?*I@2ypW8`ROdoN&7 zbm2?OZKM5!Ff7Zy5Y>(03sKGBZN=QL;aE~i(K#x8PpoB?V{E?GNEL(0C-J8`R-7@Y z*VWzum_&SFYFZ;fJ=5Dh$6uGM>;@`YWX~!c8Qie~`y$uD-W`kQQgCu*&UOdK4V-KT zXC^pma5Q|!UF#r8_0`e}2Pqn)B-zk>2j>|$vwC-|n%g+VG6p>xsU-CutPtwKFSfxxCv)foC47!i`z68I6Y1{JNnq&17aCVy9 zJiNrhT=XPZ(;QL~B|c{_w_^Z%ao1SbKijP=0vRj30B8I1oQYn%Iodv=uMg^Q)kf5; z+^eJZ--1&rb51%qE5IrAlHI9cXC)naAy1~|4(ga3^FYh->X;m#Nd&BPuQb&ZNcBtU zsyCm)wQ>dDLj`|FVad*Xpp-V)7g{f@&wQbs1vY+1^QAa(5U;X*JixVY;aoKs1*uTb zMr=!bSiB2EQMT%g#6aPb*%ORlua5ckCer;zkCazmo~}f?ha-I&(p}}|C>_md(qSBX zb~I;#WMRA8agx=TCU3$Z4qC4wd+g4visY+FRgitVyN_&@o*hN|!Su~Y+37(Yp1J|f zMThBb;FJb&PN2BWwm*NRBmUcpEUZw+7f&V1%X5^c!P;yqaJ#KQxO^%0F&NDD3>G)4 z_=ag=PcatMa@q2V&AutH6TO<@vV%= zr->xp_s6+W3p)Y2-~Z5Og6-)rSAcX^xk#m>$Y@=AoPDRaur2M++!2!6oudT!JCz<94_n_n&z{EKqH&0)D&PrF2N-4a1jmFh&tnDJ043r$_)V`P?1r!_;12LS z9zY~2!o!|`ChBhrkLWEY{5@QXmYoL90C&)mBD@fVFGL0AqVmwg(E4YHD?s=dPz7Wm zeJf-Ra2~h~984nQGoWf4xNqQ&orF8@S|qFk)Ibhey%R`AqKIqbL?9U9-jFNi!EGqW z3^d8|86b9izlCcMwgS1R2(N$w zm2r{b4(TSt1F{mamkdhFk`NuLJXe1u~K#7Xz1(-Vxpi+ZjL>um|0<4_J-LJp*DlquT&Y6AB?9 zv>?$PvJ~<(a0a-J7T*GnyoL&)uX%qr0Y1nx6mdb|D`4y*!uJth1=Jy5CFC70fqTGh zAP*J0C5NNYsCwAAI3N9g8Ic^<0Zym@Dq-{nxi(s`UhuoLg}w5;)wb|RQ|&vWnMuZ$IQzb6 zVKL8}ZK=&u<2AO+xS7=(n;glbo||mRjgHI@j17*|pyzs9s@{=$+o*G-dOfeTr9N|{ zUNqJ?s^#*$osGXB_&$NzJ`V+Szv(ev0ESCT3js?XM^~8UL1Jj@e?OO)q5L zmMs@rEX?EicX2~C;&-yabJm+E?53=pw%&ktL)N~u{tMc_WbKIc8))Ci+9B&TXxC&d z-+C3=Rax6*y#noutmRlQLAxYtnbwQ&6i#Rt9IgsBo^v>Iwe@S8BfoZ}`WVk5yS;yx zp!IvtpO#xQ-cpK`QrYlp))M%sMAoK*nROnoUFLQcbKwMX;E0)(rjjs923U%eGc0Te zeQ!-KO-;km>G4HVa7X0>FwFXyt@zIz#aA}O7mY(IvRMz=(hfP&ZZsTlRIR&p|Njij z@`ijznqbYd<)n_BMGd>{sr;d)$+F9qyvvbX(6Gai`47uBTk2Lv>ehxFM{1>Ivn_SA zBQ?EY3cSTDe8ZAyOUrbmt!x;Fw2d=(>erSJr`kF~gZHBKstKZ*Eoew{bVQNmgQ@?0 zb278UhP95g0?X?EX=_ZwDo2I3TiV&xb1Sg1^YibQWzSieB_;m*l9Z{$e*>=6>v0`< z>}5ZBnAu=WgZ&&_e7v1)M1T34>uN3RWZey{Q@4Thz!|<~0XKn4;DL-MkTo*0v2gRX zjbkd-#RMP`Sc>=*K%9B5+Ou*8q(IiRB1vM8bBgc`XR9gUpbz6_O)Q#$iZ~ zA{nP4Ih0rfIp)bI=Q?b=0B*nltbsuQnTG8NYpM&%!Ct8$RWq?oAfg!yrWxR?eJV0c zhx`m_>kv*v_y%wrxCvYbt^)I6WC2i&a6WA80}6rL0N>W`0fUhq28;nF0&8J268!PN z>ofbH#=MYMuwut!58Qw)1~^YYS@)sm^hV)8FOyQKylZ8t7C(%Tss=jvg9N{k7yn2m zp-B~Q;P=f6oMi`XE8<5-%=kB@)x@{Mfh2n6a7Iw!t*H7!jZNEi#1Pu&RQ(gBW<4G zL*Gg3-}gzqzZfmHu|Lg6pViCb%}M*5y-Gh#^Af`8*J=H|E`k#b&i7``Gczl1|E<={ z&Qe|4OPch05}bNhIP4cNMdYswE|RM@8ZFG{Z)bniW&Cs6hpOl%!9QHQ+T@Pa?Gc#*8 z#GqNoP;X|}U_#TpqIj~cp-yd+u%7TYY|iK7AVC-1)X*ayo1UbPZkpmhqxr|xyt>@B zHyYjEl2~kJlk^GC!cmP2wfvXXYN;;0yT)Z5j-zRq4GN6*_i+wVW1vFL!a&W%$>IJ7 zm=QoOunw391Oq(*ml-(cB7YKO7Gx@r2zWxjHi zZP9Rn@&t3X6xgc5=?$2QxB!r&0VCqCy@;txkAAqYR|T%|#B?X)XK979Psunm@*3^4 zF+#|raT~wIceEZFuTjA|p&tnrOl}!|7;^{Oy6-cyV|ph%3#U%-E#PbB+DMF!=Gk}_ zc)eZl<2L4MCU@?s=T>^|+B@k1ZC`bsHwEnd&? z$XqGqcvecYkc-fUjM0PKb(PY-$nl~;E2V_UN@=Ypp%X+qV-oUl`-Sx7%-@CHG$iX4 zg`tk7XASLpukN8V$Md0-FpKDg&QrvPFgdKBncbpSvib^_>91L%g=pG+Q(qyMhHM(x z_vh9*Pc1A(;$!2zQ=JQhK)QIvQ!`W1MVm$o=jq-}YfwO!>>q?Q?XTHyDTJkT^2dFJ zx9HrD1D)TunAtg+`SJI?x>`P8zGRV^b+!a94?O4k7&DD7%;_tYBg3xgvSGw zsaW%Y0>FxIfC-S{zyQDn$XSIY8At~9Bx2A)MgccrZz8Yx}4y*(c0VQC@J+}&Y0IUF%z$4r^ zuLAo-+$`vO+akIw*0rmUUZ=-PmiL1UENf)~eJgjEXMG!wZ)MNg?A_kV zes814a`$xgtK$P|dvOSc9;Gks_UDFnM>xOTW@cZ~L%VfC4E=b|Uaw%BuO~I0&1WcH)0j!V4w-%N5BmrAMgc| zf#E;^a3&Tb0XJt?;6V}`4E#78n=Rzlg;+g+b-}_FkB#0Cfl##%OJg>^P6kcB&nx+JmfhHz10%|^QNlS#w6Uv6bdb>s>^aPS#%5~rRV;H%kKc0=J8$T5&n zklysyPZmu(ZHU$?_WQv^vB5*@WD6A;>i7pF+t*bI1F967pR5%a)X=0s@Wnu47aQ#_kLU0Kxw0Rx_(=LgzW><8MvpRy^)${o z=UgE8eZ%`nJ)ekdxp(0+VnZTY$S{qg8aoEm{i|L zsj#t9k0TN4l!ABeNH@NT@(q-4q`U-Q*y!<4VvCXLJJd<^^Vi}eFR?Ltg{VEw%eqz1 ze@CKL1Umu`r|M@kKYY)x8-l(@TM(gW+GBsOzDB(=ms95Gqgw=l1n{B+6z)P_*gr5L z-!Ss{$^bqd!f>$DG+!w8!}H<8_ax?SaN6gJW+c~_@<-yn{5~o%H@aiLf4GFEO~x4k zO_SqIwwNWw%7S4-iOCzE+9Q#o+{5!csi%+j4-NSY54*0Ng#hhw-pcv<3xAUClbaV5 z52+1?kCXI%NxwWxMrb~bDCje!()N757e(BR0$exX;qWJ^$O}EM-}Y=^S(Hfptt^YK zDtI+?E4XnF|JZWB6Z!M&j6b&i+Nt_yr+p-#2bz`G;548!{pBGJvWXJgN*fA>2#cxL zfq|p>3obEbY|0Q_^_@B=iuL{CL}9$dmcbEMn_@GGX?kWSRb{Qj3Jgxk%Fw+PW)@GE zA4p3n*OL)faX^m!7%p{zLtTOgNh;^ZF-;z+5}VW@yiisVfm5u+*267-J*<|3hA71e zVut^Em9|J?dAg3C9IE48ldIp4j}FS0(^XZ^l>4-&qMO=#h9Lf#o+cc`f5p+a4vu|m zem#E)nB44D5`m*BOr!d`3jPgKVry+p*_AQHrmcXMbQiDA_+0Tu%BC2nhk_{h;j2Cl z7;9Y!hOw2YT7RtVmwa84#x8j3aa{15*0O0C9}~i%g~C0$=uk+HJ*`=&RE3wb?K>!j zBRz0va@X6^Jly2wKA#P@yiRKmMRba+OHP4{=)l7h#{F0qCn>vU*}lw{XS(W@!aPwJ z!yCd^EjOu4c&7u}7{#w){lAEL^y6M#>$h$C*sN!=e%+>z$ofOpFG7zteZ1*%OysX~r6ELO z2kU>sDfj;3?ApcjrNS4-Z3m<9?)Nf3+s04abW_&Tp=+AQm!SP0%@QL@I_WpN%!c12 zHl6;naDvwd&q>&niZ$x@eTA{K%nhe@iAB;LpY{@#&_SP$osq8lS(+2+q&he)TKrJ; zFG&?Cu@+rHd}kar=Ped&|AT{rruE~ReAMcV6cSo~m)lre-}NBB;^1%?>77CX34H^x z74*wbKj?E%*Lk1B^6MgNNJx9jom0f0A5;HL$9*5d(b((!kdE*X;54ukm8rqK`3~&gABBrLIPNnw*zjSf7@5-n zPv9|H6$x1fSv(RS0uVlth)N(+H^3SJ?*KKxec(256*vPtn1SOWqzJ?SBcb1(j=YdH zkgI`GU=olE7t0v)gA`rraS|KC zClap8r;db9@o9|G^0C9%RHJJd33N*3pKAD$m~Q!1QiiWid9_~QR%06(C+hBDOen-3 zBvKe6dZz?}o+32l13bxjljHc!DlXjkhuKL1D=te*K;$&;#hRE3#ybZx%0C zWXRfW+Nmfs?kii49U1S-vA8M+Z>U%;YempfDpF;w5Zc^|cV(>r+T@CNWNi=KP}EnG zYFvuf+{8s~%zXJJRdO<8%Zy2J-oa50W<7;t3RGRAM;x=|ywkYXeK^fPi4CglXtsEC=oQAjx4QQ9;s2Y8ojg}4C89DBO z{v}(S8gVD&xC;FgTUT>_-vUpsVhvB9I83Z)rj!m3!wnexO;dQ`G;9eXKjgS?Pw}xUq z;6ObGawl*E;V{VUkOmCxp^zVCw6{ONWWEDj2hIboh;Mlr*D8cJ$Kod)SPdit3xGT% z`T|NWp?d=!z;HR<6|x1_q9?!|;5-mR=bji5am~O_mZ}OqIaV7wAskyVDo*ib(sKU! zm9g^;9_JJXNa(P;o>&GMn?=u^7%P<1KTq`4oYp%%E=~4F&d7S=_e*W>_@QE-xH*zj zc$&%^!=gt2S8Wf(_4-@f1HCw`y+Bi6@w)c;7e>? zD3;DC_N7yTqtbyq;74Ev-SXv?KII6R&VE$tEOr;2Xb|ey8}-Sc3r`O6zo$=HL;`(8 zen?im*FMO%96{KQLj9?^_hE~LKfaaJi#S)PITZiY{n7eXGa^GjhYudahtcY)@dn$&Nm z&b7?Blw4BAI_+1hoJ-%7lzPTqJx8vrq`#jE>3c$#DW;YwCpn9+OUe-;I4B8`?xRsG z4J=+HOr;+c4;*;uT$SX0^^aP&eAhqQN4e7t1G>;qQBjKjW_g+6823%_lI~k|g~`O< z1#zjU;<+sK%fZCNKfVhiD*7T_;>ATAi5X3V2rm)!HqqT~RCx9YOsm=+vf{O~&5(*(}VnzjOB3HNnH(IFZgKm9&ASe_QaFe z$T!jm?I2|fYigwPv=4;Sbo80Ac)ES}%u&IY_BuPvKdcVtRGcjoVxag69xGdzwGsah zeYfj@US+)GF?7+{Z9*w+I6KJeT4Rt83CvOjh=jf(#$(8~usw9hSFZ@K)3mP!&JHs4 zI_!+0+=46R1e;rzRJ5>-hVJ`^ib}+OWk|r+A$~JyVMe3fnJw%DS`Isnt;wEWmcyAX z%)K$gW_uZ~YAtvUYy7Hzzgswk&6Rz&-C+0Ga05^Gp+mlY)oZh@#JpO|^2DHX%O50{ z!>8BjuCM#_nbhzL#!cFCK4z5im_ZHcrLX(7G)#SYc^NsosWcW zNPZUMrL?fD1}D)2z2SseD#54W%?y>Q?^wZ{J7@V^jZnv|JQFSy5EiHn&!fM|8) zpDTou+8q~0xN57uneWtT&63s2Q`fGcAACDn^X{spZ@r6L(`5Nq>8^5aWzZTwTa;g7 z98NBTtWm$aYT^4USFBp{&YI=#4quauxW??`|K-K4T(+u%XEVAS5q6%#R>G>c9ky(o z6`fYSZR2Q9e7j!I27edjs!hHd?W{d=FF~m}I|Se4fyke6@B+A0$ua?Q7Qo}Vle|~4xq|T)54-0#{o(_k^fyQHP3M>7 WWME+617a>H%?+h_Hgn3wivs|CM;1H) delta 77 zcmaEn^&)FS3Zux|gr!qY3YGQEeg0`*!~ri|lZMXsn=2S^@vu98<5E8GiEDEt-*kRS W9tH*mJ|O0X(p*rQb2F!0yf^^us~6h< diff --git a/prebuilt/games/usr/bin/tetris b/prebuilt/games/usr/bin/tetris index 1858184e66c4e516365576c151835d0194a17b44..e434bbe439bccc790eba1bbde0598930a71bb9e8 100755 GIT binary patch delta 201 zcmV;)05<>RYUFCLWC0Y{<4K#*XD<26sIZgRcws&r`fbd!cmbdc2TArXbHMU1vmXwD z5fdi>0Q&>;DMjFS^0Apwk&H6kMcjFVX+;{gn_JtNBu0w4pk3NTs) D@gG#z delta 201 zcmV;)05<>RYUFCLWC0ZHb@8+A@OUJM48Kp3Nn_x$3^8}Jcmbdc2SfG>Bf#00Q&>;DMc#{(%Apv-kH6kMcc#~No;{gh@JtNBu0$2jG3NTs) Dr~**a diff --git a/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so b/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so index 2033225c0c67226d5c45173e6556a68da8f85831..40f7bf8cb291a9861d95b66163684b8f51c70b93 100755 GIT binary patch delta 13478 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 Po#)*}joR2hz7YN&00qhn delta 13666 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 /etc/apk/repositories </dev/null + + echo "[2/3] Preparing armv7 sysroot (X11 + xinerama/xft/fontconfig)..." + SYSROOT="/tmp/armv7-sysroot" + mkdir -p "$SYSROOT/etc/apk/keys" + cp /etc/apk/repositories "$SYSROOT/etc/apk/repositories" + cp /etc/apk/keys/* "$SYSROOT/etc/apk/keys/" + apk --root "$SYSROOT" --initdb --arch armv7 add --no-scripts \ + alpine-baselayout \ + musl-dev \ + linux-headers \ + libx11-dev \ + libxinerama-dev \ + libxft-dev \ + fontconfig-dev \ + freetype-dev >/dev/null + + export PKG_CONFIG_SYSROOT_DIR="$SYSROOT" + export PKG_CONFIG_LIBDIR="$SYSROOT/usr/lib/pkgconfig:$SYSROOT/usr/share/pkgconfig" + CC="armv7-alpine-linux-musleabihf-gcc --sysroot=$SYSROOT" + STRIP="armv7-alpine-linux-musleabihf-strip" + OPT_CFLAGS="-O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -fno-plt -fomit-frame-pointer" + + mkdir -p /bananarchy/prebuilt/sxmo-x11/usr/lib/dwm/plugins + + echo "[3/3] Compiling dmenu.so..." + cd /bananarchy/src/sxmo-dmenu + cp -f config.def.h config.h + DMENU_INCS="$(pkgconf --cflags x11 xinerama xft fontconfig freetype2)" + DMENU_LIBS="$(pkgconf --libs x11 xinerama xft fontconfig freetype2)" + $CC $OPT_CFLAGS -fPIC -shared -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"5.0.14-bananarchy\" -DXINERAMA $DMENU_INCS \ + dmenu.c drw.c util.c $DMENU_LIBS -o /bananarchy/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so + $STRIP --strip-unneeded /bananarchy/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so + + echo "Installing into overlay and (optional) target rootfs..." + mkdir -p /bananarchy/overlay/rootfs/usr/lib/dwm/plugins + cp -f /bananarchy/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so /bananarchy/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so + if [ -d /target-rootfs/usr/lib/dwm/plugins ]; then + cp -f /bananarchy/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so /target-rootfs/usr/lib/dwm/plugins/dmenu.so + fi + + chown -R "$HOST_UID:$HOST_GID" \ + /bananarchy/prebuilt/sxmo-x11/usr/lib/dwm/plugins \ + /bananarchy/overlay/rootfs/usr/lib/dwm/plugins \ + /bananarchy/src/sxmo-dmenu + ls -lh /bananarchy/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so +' diff --git a/src/games/snake.cpp b/src/games/snake.cpp index 40d5d96..b1d261e 100644 --- a/src/games/snake.cpp +++ b/src/games/snake.cpp @@ -141,7 +141,7 @@ static void reset_game() { snakelen = 4; int cx = COLS / 2, cy = ROWS / 2; for (int i = 0; i < snakelen; i++) { - snake[i][0] = cx - i; // tail to the left, head at cx + snake[i][0] = cx - (snakelen - 1 - i); // head at cx, tail to the left snake[i][1] = cy; } dirx = 1; diry = 0; @@ -306,7 +306,7 @@ static void setup_window() { C_FG = 0x33ff33; C_HEAD = 0x99ff99; C_FOOD = 0x66ff66; - C_DIM = 0x0a3a0a; + C_DIM = 0x2f9f2f; XSelectInput(dpy, win, KeyPressMask | StructureNotifyMask | ExposureMask); XMapWindow(dpy, win); diff --git a/src/games/tetris.cpp b/src/games/tetris.cpp index 51c62ab..d72015c 100644 --- a/src/games/tetris.cpp +++ b/src/games/tetris.cpp @@ -27,7 +27,7 @@ static const int WIN_W = 240; static const int WIN_H = 296; static const int PCOLS = 10; static const int PROWS = 20; -static const int CELL = 10; +static const int CELL = 12; // ---- 5x7 bitmap font ---- struct Glyph { char ch; unsigned char r[7]; }; @@ -101,7 +101,7 @@ static int board[PCOLS][PROWS]; // 0 empty, else type+1 static int curType = 0, curRot = 0, curX = 3, curY = 0; static int nextType = 0; static int score = 0, best = 0, lines = 0, level = 1; -static int speed = 600; // ms per gravity step +static int speed = 800; // ms per gravity step static unsigned long nextTick = 0; static bool running = true; @@ -176,7 +176,7 @@ static void lock_piece() { score += pts[cleared] * level; if (score > best) best = score; int nl = 1 + lines / 10; - if (nl != level) { level = nl; speed = 600 - (level - 1) * 50; if (speed < 120) speed = 120; } + if (nl != level) { level = nl; speed = 800 - (level - 1) * 40; if (speed < 250) speed = 250; } } spawn(); } @@ -341,7 +341,7 @@ static void setup_window() { C_FG = 0x33ff33; C_HEAD = 0x99ff99; C_FOOD = 0x66ff66; - C_DIM = 0x0a3a0a; + C_DIM = 0x2f9f2f; XSelectInput(dpy, win, KeyPressMask | StructureNotifyMask | ExposureMask); XMapWindow(dpy, win); diff --git a/src/sxmo-dmenu/dmenu.c b/src/sxmo-dmenu/dmenu.c index 21f4e3a..8119b58 100644 --- a/src/sxmo-dmenu/dmenu.c +++ b/src/sxmo-dmenu/dmenu.c @@ -157,6 +157,7 @@ static const char *ICON_ZMO = "\xf3\xb0\x9b\xac"; static const char *ICON_A2X = "\xe2\x87\x84"; static const char *ICON_KBD = "\xef\x84\x9c"; static const char *ICON_THM = "\xf3\xb0\x8f\x98"; +static const char *ICON_GAM = "\xf3\xb0\x8a\xb4"; static void drawmenu(void); static void show_menu(void); @@ -1682,6 +1683,9 @@ open_builtin_menu(const char *menu_name, int keep_idx) snprintf(label, sizeof(label), "%s Apps", ICON_GRD); add_menu_item(label, "@menu:applications", 1); + snprintf(label, sizeof(label), "%s Games", ICON_GAM); + add_menu_item(label, "@menu:games", 1); + snprintf(label, sizeof(label), "%s Scripts", ICON_GRD); add_menu_item(label, "@menu:scripts", 1); @@ -1764,7 +1768,15 @@ open_builtin_menu(const char *menu_name, int keep_idx) add_menu_item(label, "@menu:sys", 1); snprintf(label, sizeof(label), "%s Close Menu", ICON_CLS); add_menu_item(label, "@close", 0); - } else if (strcmp(menu_name, "scripts") == 0) { + } else if (strcmp(menu_name, "games") == 0) { + reset_session_defaults(1, "Games"); + append_active_call_entries(); + load_cache_or_hook("sxmo_games.cache", "sxmo_hook_games.sh"); + snprintf(label, sizeof(label), "%s System Menu", ICON_MNU); + add_menu_item(label, "@menu:sys", 1); + snprintf(label, sizeof(label), "%s Close Menu", ICON_CLS); + add_menu_item(label, "@close", 0); + } else if (strcmp(menu_name, "modem") == 0) { reset_session_defaults(1, "Scripts"); append_active_call_entries(); load_cache_or_hook("sxmo_scripts.cache", "sxmo_hook_scripts.sh");