From 3be05a7978dd0eb8f91b3c990e05cf1cf29cb0ed Mon Sep 17 00:00:00 2001 From: TalkingSasquach Date: Tue, 11 Oct 2022 19:56:24 -0400 Subject: [PATCH 1/4] Updated Now With More Bubbles! --- .../Sasquach_Narut0_128x64/Sasquach_Naruto.zip | Bin 0 -> 31368 bytes .../dolphin/Sasquach_Narut0_128x64/frame_0.bm | Bin 923 -> 914 bytes .../dolphin/Sasquach_Narut0_128x64/frame_1.bm | Bin 896 -> 887 bytes .../dolphin/Sasquach_Narut0_128x64/frame_10.bm | Bin 903 -> 908 bytes .../dolphin/Sasquach_Narut0_128x64/frame_11.bm | Bin 909 -> 893 bytes .../dolphin/Sasquach_Narut0_128x64/frame_12.bm | Bin 910 -> 906 bytes .../dolphin/Sasquach_Narut0_128x64/frame_13.bm | Bin 913 -> 909 bytes .../dolphin/Sasquach_Narut0_128x64/frame_14.bm | Bin 903 -> 901 bytes .../dolphin/Sasquach_Narut0_128x64/frame_15.bm | Bin 926 -> 916 bytes .../dolphin/Sasquach_Narut0_128x64/frame_16.bm | Bin 918 -> 913 bytes .../dolphin/Sasquach_Narut0_128x64/frame_17.bm | Bin 916 -> 913 bytes .../dolphin/Sasquach_Narut0_128x64/frame_18.bm | Bin 926 -> 932 bytes .../dolphin/Sasquach_Narut0_128x64/frame_19.bm | Bin 910 -> 901 bytes .../dolphin/Sasquach_Narut0_128x64/frame_2.bm | Bin 897 -> 891 bytes .../dolphin/Sasquach_Narut0_128x64/frame_20.bm | Bin 929 -> 916 bytes .../dolphin/Sasquach_Narut0_128x64/frame_21.bm | Bin 909 -> 904 bytes .../dolphin/Sasquach_Narut0_128x64/frame_22.bm | Bin 915 -> 907 bytes .../dolphin/Sasquach_Narut0_128x64/frame_23.bm | Bin 923 -> 924 bytes .../dolphin/Sasquach_Narut0_128x64/frame_24.bm | Bin 911 -> 898 bytes .../dolphin/Sasquach_Narut0_128x64/frame_25.bm | Bin 923 -> 913 bytes .../dolphin/Sasquach_Narut0_128x64/frame_26.bm | Bin 899 -> 888 bytes .../dolphin/Sasquach_Narut0_128x64/frame_27.bm | Bin 909 -> 898 bytes .../dolphin/Sasquach_Narut0_128x64/frame_28.bm | Bin 934 -> 935 bytes .../dolphin/Sasquach_Narut0_128x64/frame_29.bm | Bin 907 -> 893 bytes .../dolphin/Sasquach_Narut0_128x64/frame_3.bm | Bin 921 -> 912 bytes .../dolphin/Sasquach_Narut0_128x64/frame_4.bm | Bin 898 -> 885 bytes .../dolphin/Sasquach_Narut0_128x64/frame_5.bm | Bin 924 -> 911 bytes .../dolphin/Sasquach_Narut0_128x64/frame_6.bm | Bin 896 -> 888 bytes .../dolphin/Sasquach_Narut0_128x64/frame_7.bm | Bin 901 -> 896 bytes .../dolphin/Sasquach_Narut0_128x64/frame_8.bm | Bin 913 -> 910 bytes .../dolphin/Sasquach_Narut0_128x64/frame_9.bm | Bin 891 -> 892 bytes .../Sasquach_RMCF_128x64/Sasquach_RMCF.zip | Bin 0 -> 28013 bytes .../dolphin/Sasquach_RMCF_128x64/frame_12.bm | Bin 638 -> 679 bytes .../dolphin/Sasquach_RMCF_128x64/frame_13.bm | Bin 605 -> 638 bytes .../dolphin/Sasquach_RMCF_128x64/frame_14.bm | Bin 630 -> 605 bytes .../dolphin/Sasquach_RMCF_128x64/frame_15.bm | Bin 637 -> 630 bytes .../dolphin/Sasquach_RMCF_128x64/frame_16.bm | Bin 619 -> 637 bytes .../dolphin/Sasquach_RMCF_128x64/frame_17.bm | Bin 619 -> 618 bytes .../dolphin/Sasquach_RMCF_128x64/frame_18.bm | Bin 644 -> 617 bytes .../dolphin/Sasquach_RMCF_128x64/frame_19.bm | Bin 782 -> 702 bytes .../dolphin/Sasquach_RMCF_128x64/frame_20.bm | Bin 644 -> 701 bytes .../dolphin/Sasquach_RMCF_128x64/frame_21.bm | Bin 788 -> 644 bytes .../dolphin/Sasquach_RMCF_128x64/frame_22.bm | Bin 631 -> 782 bytes .../dolphin/Sasquach_RMCF_128x64/frame_23.bm | Bin 628 -> 644 bytes .../dolphin/Sasquach_RMCF_128x64/frame_24.bm | Bin 710 -> 788 bytes .../dolphin/Sasquach_RMCF_128x64/frame_25.bm | Bin 739 -> 631 bytes .../dolphin/Sasquach_RMCF_128x64/frame_26.bm | Bin 722 -> 628 bytes .../dolphin/Sasquach_RMCF_128x64/frame_27.bm | Bin 642 -> 710 bytes .../dolphin/Sasquach_RMCF_128x64/frame_28.bm | Bin 594 -> 739 bytes .../dolphin/Sasquach_RMCF_128x64/frame_29.bm | Bin 518 -> 722 bytes .../dolphin/Sasquach_RMCF_128x64/frame_30.bm | Bin 441 -> 642 bytes .../dolphin/Sasquach_RMCF_128x64/frame_31.bm | Bin 367 -> 594 bytes .../dolphin/Sasquach_RMCF_128x64/frame_32.bm | Bin 400 -> 518 bytes .../dolphin/Sasquach_RMCF_128x64/frame_33.bm | Bin 438 -> 441 bytes .../dolphin/Sasquach_RMCF_128x64/frame_34.bm | Bin 428 -> 407 bytes .../dolphin/Sasquach_RMCF_128x64/frame_35.bm | Bin 395 -> 517 bytes .../dolphin/Sasquach_RMCF_128x64/frame_36.bm | Bin 0 -> 634 bytes .../dolphin/Sasquach_RMCF_128x64/frame_37.bm | Bin 0 -> 549 bytes .../dolphin/Sasquach_RMCF_128x64/frame_38.bm | Bin 0 -> 427 bytes .../dolphin/Sasquach_RMCF_128x64/meta.txt | 10 +++++----- 60 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 assets/resources/dolphin/Sasquach_Narut0_128x64/Sasquach_Naruto.zip create mode 100644 assets/resources/dolphin/Sasquach_RMCF_128x64/Sasquach_RMCF.zip create mode 100644 assets/resources/dolphin/Sasquach_RMCF_128x64/frame_36.bm create mode 100644 assets/resources/dolphin/Sasquach_RMCF_128x64/frame_37.bm create mode 100644 assets/resources/dolphin/Sasquach_RMCF_128x64/frame_38.bm diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/Sasquach_Naruto.zip b/assets/resources/dolphin/Sasquach_Narut0_128x64/Sasquach_Naruto.zip new file mode 100644 index 0000000000000000000000000000000000000000..aee6efbfc1088af0a08873a01a5f0700683ef918 GIT binary patch literal 31368 zcma&Oe^^s>|37}VGj;}yogpYg<~G0|bZ0Wabja8lphDf=g4JDACgVq9Wje%k=wN3I z0TmgfcVZ#KAEoc>ZHd`^hh?xaWT*sK-HD~LF?5s&XN+W%!(N{=?EU>-y|3%;^YOY~ z|M;&y_IN&iovgpYj8Mq;=k3D3{{8WONzD5&1o_^4>hE66EiQU5H-Agc`rIAw?c5%_ zc}MQMZ{~=X<-JRTYGFtPwQ%uO{UUtV5!#O_q3}PCa4z}RIgEm3+1v$rT<%j^);Sdm zc`OTC#rQ0EaUJbCJlD25ik4@6`9$~_i?8V~+4jyu#exr*!liijKA7HB>e%^K^=KY{ zDMR+m;Yt&>p<$o>{8gR&zqns9Uk94~9oUPqs={yDD@@CRF`i^QcRLg9yP=;tL&R4T zSgQuu(~I%^BxiS(>r~`Qy~_*n_{AWhPp%dYu(La45x{Q8$I?KfHfu0u?nn^4XO4g= z{Mzd7?#sV#16n(O6(=7P8gj?Uz%!UZ!$F67+vgW{AW|?8)Bjeywf(rtFQlYFKd>rH z$bbJEHlimtNi^ewHmrFYAUEyo7UTeS>RSSx;*3{Mu2_?b>}M4QvwwqU+@OCE_bTYm zj*aY4eGR~Ipoe}a9elTQ6u+Rw?%&?Z9$D*A?sv zs)I>cba29tp|T4$dcU=YIj>^yF)SJ>_Z zroprrQnwnC4PZaz_A>Y~(@|j60QS=rn!EJ6kJpB{-({a5(NhD`8{Kcv+5X8)D4@8eeRE_T^0CfK z#4w|Qxo(@NMjLY$DiuC1E%z+I8LI`}w;VcWFwV|`l)a3OIMGLPk&28XKP7VNSvBSKg5bDpW&h9Vsc}$4Ry5>%r&^kibr(jr3y~x9VRLH^&5o9*T|C}8 zT$XFpS`}qzwNyc5tVp}4X@a|8Elx;xh2T2NnH+LcG_Br9D0uG(VSt(oPEBL%d>b&0 zD8jE}K~^^n58&uu-f;C9TQyVRmwe7uhgvz+oAUK=shPH6ZX_SEr`4)tX5^lxTiv0kOA zV@tue(k|E{G?R9R81SUIho`>*;nQ^AK7i+WQz-Vm|BU3gStJ+xkbIgeTGc5M?b=8CG1w3OG%6l>W1+a%ib9J;?Dk*XDc39_ zT=}`*KTWB*P;PU!=+f6;aF@Q$`d2`oc-~xiD(TePpf%0f4k8?v5M*4$l}!x@e~H}EVqa9|@ z1Y*fR$9S$L>=0id+b#tr6NTEG?TzY9n8Rw!%Z=-s8k0#EF62m1@<&?mQCqvq%Nz%X z4jRov@dCf9-dyUxyk`21MllbYCWri;HQ;@-{77zGFillgxuC+(kKMd0rEjoQ4WN4=f9} zWU^Nf9DeC#V~$?-?kBGWj+z}N9T15FfmxRjP>X=7K6hEt&MlpA>RuseLmoF2SJAKV z{GKM4#*$5l1gL0;ZnR{(mnEE7!t7H!01JH#=pd!%P3RDi5YJlAtQFQUxzH)>VD$nq zSH8zw5NuqP8)+@5OWPUvKEz4o3UVsGR8(_m&o6|2t4>=4O^!x)LdUD$e4pvzGF+k~ z8FL}wradxxkb)^u{0o!v=P1^2)f$aT6|+2LG(Yy?Scu>2{zP?U4Bv06kXC-af*ud; z%~VPxOL>Af(`r&__q^qBR}j5!Nsn@QO%Q`87ITeJsTUx2eB|1}ZjJj{+(^`iSKw@M z&pt$yDXf#8tM{)c)+3ebm<2VHu+E7a9rgZKI+D@KjWPV%Em9RB;qQp#5t-5bZ|#F` z6dJSR+$#Tt`TXmQp&$~tJ|P1u@)yuRpPl=e-~FJmQ|_Ui{`)M++L_M$x~+a)L5^nc z_7y=_suInYJEL!?{PaOCYx>q=js?D8Yf>lFx&1z>SrGnkRoqtNwrwj%9_xd?(EK#bPaR^lUB!iO7_S}}1mW8kA)wqO-RjY(X_eL*S zdPNp4b8Ge*Zt1^5aiYgTmRus_>@+An06$v1vV}ShL_Q~$ZHHdKq=>TVmAnp5l^EQP8G zKrR118QNXI6U058?gh+m?=*9dpH3~|?$>ptNwsNM$X6@qk%Dvbgn3t)@LSN#%lStS zd_(^yq`!`NzGBd~(`Lx&nGYYqD{%znY<_`9vh>DpM4%g_*Hr3dh&#-Nh#R(2(w0d;Z8q^_x!e9czNV;B&<4A(u=B z4U%nXk>>7&S(E%GG4}lb< zMNvqgQ-V^Jcdz`OYY+@!sy&dh$cZ0M2VAX&m;pT+h!D|6l3O%im>a|AS6v5an}TM? zJ1maDal~sd9@X^Z74U_%C^o2Y05;mCF+TSJy;xVS5nIc

DzM-p~-I6Rsal`DOSC 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%0ArOaofwFwRa?&ue;Q{GsHxVO3A_% zoWpHrcoy=Q)Uw{q`3DF_66Yg80^`UD1TGRf|5 zTlyjF=MyENDYXiubFVaiZ(1(aqtBG8Fsy`04(`@1VzXLjO~a5XK4)1)d4}mSUv4Db z%MbNbsLJovcF&>sv?eibQ0Gkf1mMKLypc8^?1oNM@jb9yr3<52qP6>2!fo3*K03}T zE5JRMRHQUMSp9EUuXC2P<&$*pmjI8|*ur5t6(*n@JeGHg!)u@;RY^cOvT@`nCc78E zFQE^Y9wgvdE~PpXlgST#^xgF`nRab_54V>K2s=*M6>dVOTK;uLd{t-%7?fnp;JqU* zaJT7_CCD?y0Yrg4QylKr zSoLN$Si!k?*uzYxao0$J+v|K5*X!hM3o23en;ASC;kue|=}n-=yaskvh|2!+~9r$LTJO4wIGhp1u=~z5PY9Mg&>OYoPlP@V8JK7G68On*ut&jE$k=IO)S) zob)c+N5h3A0w+Cn3cyKo_qD2b2VewF+Hao+C!O9o)sV0qBXH6hw+AO(t-#$o+Asnq zeM4OR0*lgOIa79h?#%!Y{k4q}IBDPBmZMh(;*d*Xw{p-40e`xpPzZ3+m>f2X%Qnun zsBmL}bzgBkN9<<9wz{T$t*g?xl;L$TCr4bD$T8e8D=kK44b+gZ;(EGGJiK5zBQV5; zl1lgKbY{2C>Wr5NoC(&g)Rs-NIh4_n>-Cq^W}`+ISvf!Do8@X8G>0;`;Vnj2^sZr! zc;pPU@vM{@<_D;=Iz2aPUI=BmG$@QBZV}f3uXFqq z$_5^nO|^fd*DX)(KgpEqKMpG04QCqa@T1lh+qa4NMoGUkI-ut=Zz>l-Y8!wh0oIW!8IrVQF`)!izS#_%}=UwKgPyKeB zr1{UntdoVGuJ()V;;h_WpZ9%s)Pf`bxjyiP=8M}|+DnD=&Neq}zPD!j_R61@yx3hA z>EyrBzJyg2IPIUTMVl|F;?KV}V{Oqqncrd~wYO-=3etHoc~1DWPfA!T;4R_TYOW1e z^?nrAT)Ay#%4cakKit@S+=(XS4{pLwxvyWg<(_$Z*>=%=a!mSjB=S^f@=1;0#|FQ6 zon zjwa6a7#AA$pHzrQm`?nTCQcU^7y2%6QX!%jIZJaiJw( z&zj_=5rx``LK8W!<3cpfq(VfgXrj$LK7)><3d$4Clw+N)f0s# z61B#K^5;w{MC|Jmg(kv%#)T3VOeXZC|3(vuBjY;1^C#7L(h8YKI~W)GZqcMdPh24r zQrF``a>1lRPx{d&MnA`egu+RMp0q+H#?8is0wj|PJ!yqZ48M#Eb)-xx^rRIs(R)8G z^g-IBLQh&D6FtG>LTS%UD)gikGSQ(pE<|2EsnC;F$V4mDxKRHKlL|d)g-mp3j0;u1 zGMUhm-u}ey@VJijZE%ysT#f7at(#2eN$-AQ<$PS{=gi4;p7iP`R`kYoieH~h z=SgpVVufK`N4RA&ohQBciFcfF9rBx#>HPVLvi_}l*h_i|@F literal 0 HcmV?d00001 diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_0.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_0.bm index b7a224738d2707796dea042e3c05145de4c74626..3ef2af522c79f5548aa24e0cbb33882c5671f35e 100644 GIT binary patch literal 914 zcmV;D18w{P0FDCycmS{vfI841fOeDt)*vkbZLm}VjL_4 zJ}r}m!9P)$h2yWugFvYex&~YSe~H3BQ$B}hy}yLPE)hQ%IByVd1`p5CkN2nWGKla$ zxPSlSM{|HOn?N9N0pWlP`JaIEpteA11KI^Jf!O1;%mf73WJ7`2Fw>chV}O?s z(F44PghFP_P&r1?C;>2bF?A4;TNxa59ez=7akeh-K|VDLybL$iOL1I7b^ zfbcwa6M%!qr(gVDBLR`X@L(8g9|Qjn!(^lTKMZ5x|H0^B8OuL{{RG40aq@pWXK^3k ziv}@gxJR&@eyj#r#+>IM{u_%hY}1H*^UssP$?=iibPu2Tgjg)u%={nEvf<405x+m5 zgSoJ9CY{gx7ssRdlSUi&zwmz?4h;95dBS}3bNltfA9Ig*e~=73|IIwc1IHi3{Nv{^ o{}?=Bll#5@8T*j=;C=poc0c348^(R}xr4^Tuz=&a|H$AxKm``HdH?_b literal 923 zcmV;M17!RG0G9&*cmU!cWxzrJ?N9@)0#FBPP#t6vQOAHhT(CiNK!BzMBCWFpvn`vPBz& zey6aF#HS+-f@C6C31?TmB8Yyjevi$z-w}jpB-CqO|6vT^LFt{i<|4NSD2@ZQ4(ixw ze}9H&I|-a@v@|ey+B=xVICISp<;mSVfW7@0>QGtY9Lq&(eR;p zp9jWc0Elq#y})?N4ude4Pv_Ws{eyEE%kIVFaOJPZG2nskKl%v?kX8k#*1$0qiHv^1 z=-AvS+epAXZ%{Y{EBE{OPwXAP{tFvq2aj9b!;nlP&}@i|Ngj0{Qmv$>sJ52Xw?D@y@6r0FlqjO zufKr9bQ;)?LVLh~OpU|*;lpeRvaSIR0eQheKNo;OfCfkdEC=_^4v<5E$so1?3xV#I zLg);W42=*9cMSICArJ?p0s{d8ltcfckWL^#^t%O*q5a3$KZ=2b6jVN3IgG>S34lQX z@4(N%dC*yu074@)01Ogg1F^^C&;p7B(!mCt%%zY5(3cDVP%Z{CIcAn%9YPy089?wK zn6$C=q~o#{uOT2aZG89|x2g1H-sq0pkyXL%Nsv#sh(X@H}=CfP=>;kNe&u0g=G)U>Iv31OE@hbierj3}fN{!RTNa%Rhqs1jFon zu|GU#aUbA|1~F&2N3fiIFa9^ioaZ3^8;lBJW}HLko_!vEAB>LkpnU(#BEe?PXW;&Q z7ak9ojrsii9nFJ*H12=kzC9n#J@AJ8@BAOf1A{&1UT~j3A7*hhYK7bN`XRcz~{)xvu~K diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_1.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_1.bm index a4007da3c2b3aee92dff3b2d8c415a06893f1a8f..4cb8129858fc29ad58e1af6d7375366dcd82d7fc 100644 GIT binary patch literal 887 zcmV--1BmP#)wH@&AwKpf`^N^SK;|bKnILn1B2; z|M#LHpZNFS7Yp^!(mfCO0H77WhaZCg;9sx}0pNZk_vz$pxgj> z{{R0Nz&vi-A6|Ms0u5jWIAFFvJRA~WMG$;{e|UH(G(qfR zFYWFV1zQR5h=wQ}1@~tGg0F-EG5~u|a5y+D7#?Lqj6wnB{(=L>4FZrS%y2Y}4Fni4 zFc82ZLa_i0G9gCa$ba}XfWYvP8H9igFwBJqAWt8VJgkukgmaGvhI}X;jPwJ8@qobR zkqO1ZJr9OlC>)MxJb3Up9C9HT@J}PqX@vvPXTVr7_;?85XcmFJT>kuh#XcE6_gO!ef0RKV4 z=OBu~B5?pP;3yEQ6fzJNDFl`Y&9DWF0}}0DW(K05K}~}Z6b<@?`_1S`1qiV4AlSY{ z8U-1J`ad??Bn|_lf=DTQUA!X+eTi~2{`%Y!1*nAdds6vi4&k5f_8=3Cv;?9y4YdyI z*yu!O{~mk?;coOAM?u=#cXrSox5JO%4G(Go3p@_OTePfDBba#o`A#zV2B`2gV<7k_ zUup01|6t$TWIJ(q;(_Cg<=1>1KmLM2$MVaCrk3=lwf_9+}>7(2h*!V%z(f4?931YQjgkc-A!0CSB0f&TvZ z;2CT@U(`S<1q)-9|G@wJ_#VTtI*B9(0Z_tNJ!T<;a3J~(haOaH7BJTN{OD&M|G@R#Mb>Bk|M+|N{zbdT7VVe^+fn7&pd1Vj|Bvs|;9hb89ox-fE^?W@&Ft{ z8K?uLLVyom#52g45CLR6p!McKD3BZgDL@JLv%nx?rT{1R_lJR438D;8!GCXfm=aiG z0QuSAU_j9au$Zs792^N!D*_@Ipl}o14f+KPfB;574{QwtzA#{Ul>`7Wh(-hdA^*TZ z;|7693`RH_N5f|Uf;0poF(=u>A{1`McxEdBf#D)E2>=*jnFz0! zXTpK#qrf;n7z_@15S&~i(D-G-f$W=u$BzSn$08Ar1oAxwm{2^^JOzUvhk%ksG0d<| zAm7jb&U3)HMlsMI{QfZt;9g+f>OJrNm){`q8NW6|J5f4}Se^Q{1Z zK{{}H1biMo3-A8_{PFhTkT@p*9zPgrV0_>E=fVS@A&vh*2e4pg@DKMMeR%$RK;`q_ z|KdM*dH`^7@qnF2{}6$H@csYHe*o|x0q8xjf3(A#85)Pn{|~-k0poze$LHVg2mYVH zmw(J+WE>xk4?o{v=l={3#(%&`mI8Bwf`2gJg2({K9(T?Z6Y=o_k>o+?=aT7%UJTv+TcSA&>``?H(Wm#DDm54Zv-H2k1Nvg83Z>*P40Y{6szjoT4#~fdA+G8w>-3#Js_?*!w(U;hw<$;yxRW2g8QA z!@BSrWpcrs;ND^!|IY%z&Ky2Z2WOvfGaeb|!-Ki7Y#=^vHs^$0 z`NQ7)=Nsq`PT~KH_ i#{=(koB8(<`G@nl{g{KsF>Jti=6C-9JZxW%XFg)H|GbU> literal 903 zcmV;219HmrMM*cb(>1^T)B|2EhJ)&p79VCX-{@>^ zbVwgZ!!w_R&I04Kj_SViZU7u&ANig>1MmZnLv3w_!toNQ2BIH)@<1#RXIR^GFbd}) zS`Qxw#$qHGxV%I|fVl2qa0!I_4}Y+3N#jr@4FiC*F9g4T|IkQ5}{Cm((u1L4BXvK$Zh zI0+Z-v)8P3A&@vH z03I_!fbcstTfXCqHvj+c`3df0!y14{D35C@bh5D!?V|3@I42Fqm|2d_i>kFb9X)4TU`B$B zOy+itCIBADf{bCKHjYDN;Ls+JssSo1Pn0D#Xo=`C>|0bA1*{3 z9yt$hKHv{4BtruOfWbKMcxS@j_~3j)V>}0mSYVO(cs#Cn4m=JA90!jE0fL^#pxX{T zo?(x}z+sUL9)O_sK_f8iTtC)6cYGc(&-P>IF!A4}3X%KV d{``H!eqsFXe`X-@j9V}sIh_0+RxighpD}$AmW==a diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_11.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_11.bm index cf55725557cf7327d2b15d387b15226081b63be1..0a8df32ba05b1477c40e3cc471edf7c6f3b8764b 100644 GIT binary patch literal 893 zcmV-@1A_bk0C@udd;%f{Tm&Ev)c`usB>;Bi0oFlf9C!o33j`N53;iDhoItFQ5V>%o z1+gcX44_iDM4CaGyFf58SR_vd8yo}@wSLchXLM==3R?u{@dyJzghTjn7?t9$Ai_c7 z& z2aoX1JPqIcjz8;M0v$W$um}GD!2|>zV4;xWArKz~WBvI5&?N%$|J)=W&V(LuK>uHO z@CiYjXN8gC|MEASNB#%@@4)O6(m>ECSZn=zBgve=U|r}v1CkFLh7*7PkK_F?2oxFA zGy#ynFCFl3|Nk85XB|8++r{<=0K$G}>yhAR*u($OUuGT{dEkC9`1SwyH*Jmw|A){2 zL*xGNamEAu_y7IyKh(pW{)5OK1OO@gqE7>y281#>M1a8K;Bk}KB5-W>JT5Ukhb?j~ z(%^n0f5Ty4EFZ{xz#dQvL;^GTxPi(@3^gHsAQ0IEa1JsH;5~65A%^G~gMgv~mjMES zd?mXG2$*0XF$bsi4-ke*0b{`bBg6o)4#YCZ3vdC#Igm;u2p>?-Js$xE2hZ?!C~3MU|3~{gU1JejzT08 ziT7hY2Z2HH(D=uL1HdZ`gYkIeb6{{N9P&I58~{9E(GO?G(dU4`uy>i{GQbZgEMgtQ z=l%cidLIVi4E%riFz6g2P0sP$=lCuj1Lq9xWBeHSTrzKr{LW$gFB}WU4Ci3}9Oyh6 zHyDoi;Q8;I2aOE#;C%e(E)E+op7Xi*JDdlZjQRZh9B4icd*HtIKlm?*c*Hn%d-giwB3Gb` literal 909 zcmV;819JQU0Eq(td;&xVXowxOAZ5T*0PU0mtpb!d@CSev5H4sS9b^#zDZql|{)2%A z0#6`uK`K!SWdg(@7!;-vCWAo1;|a<{CYV0l_W=Z@LNi!`0N^4KtMmi;n~=~U5ZNRG zi8hEHiZd_uer2)=E&>}C-qBgQ+u^a^bQE$XnwN+ovB?|Tpl!IX4+TK@+P z4l;~tfAQzQegN^d;q6=aZooc0kB1+@0I&ncX>INCU|J|t0wsr!m_{Iw8x3!90E^tA za1Ye?`G2r)(Ic%D4T8Du6O5z9!~f_c0P%_vh9NLo7Q>sK_v~%~aokx!+Ra=5hyo5-+%4Pr5BxC7BxV&(`XUD z<&G<$w#eidKXY{OJs8j8a0ed81JNFk0fYcC2n04k4g-}S7-~Z3Kw-KF7#wIFfO^EB zKM8KY4p@+Kz#ys0CIS7zWC*F@d9t8)-L*pI{4*;w(55?ozw}HT*bI9;KZ~*axL_MD$ zwoU^A!QN+(%K$u}v50pM=lTD^=zJT5Gx7i6!=P}9H#&cQpWwK751cc(kMLvRaLK+i z|9FS+yl^iZGo6F@bD;2O+++9OgXg|*9yBx0f%EgAxHxRWf8Xce?rdF=5z1hLA#U(gTcB$@Deakz@*E<|9J2H%N-gG0RO`<5-RjC z9wp(2ckVtoAv|MP4j(#X4;%mDK|tMq%i}*Yj3Pxs7nlD7KjZ_%PBZxAB7gK~jB%dUc-Vj3_&k5%m;d1Y_&9yT^8@fPhX=>+|GF>;9N`u* z0}!AG@$vt`|NS^;pZ(y&_uoT^bBoBo`S1|@zw-`oWMrU$;6dACIRg$3ejy+H6WQ`u zhyZ8T3+L2mn1S`vh>{a)g5n05J*oLIE)N0mcy@2PFbU00)l(IIkFp zd2|>E1wisD!KhFH>tH*LU5JP}~@Sy{&H@h_h6BT}obbQ*`Gis#$H0H%@X3Y(!J^E-{_;7*GI7t~e_;^q#{%Ia$l?BS z3FNwA&hSqm82jaeVPTo@?>-64e!yJ7|oX_CzdC#09&wh+sHy7!Tp2M7v!>|0y%wx|#j9)w# g&Cl+~+=s?5-tY8d?>~l3xDXu9d>&I9=bO$C5UAOse*gdg literal 910 zcmV;919AKT0Ez$pNk%qw! zL%@S#;roeAA`@W2(Pr@&MuJTsrTu(AnQcNRkka<85MqenK0jRj{yB(&@GTzLzhgy1 z2aMbQ&+x)05Gn_6Lpt5S<%SW>Kr9{z55TfE-rc&xfYd;+9S{Bg{1OoO_9E4;1`oIo z82A6*|5*$Ufh!dZV>`P759{&&;8=GoA)IQ^!B=Xyh zf#Vv0L9ADLLO`$c{{YZo;Bk;>crmSCBf%fwV0dtS0U)ImEdSpfMVN3u-`;pUWFYa* zYi_vNt+S^&MGgXcnAZVDh4jV3<=PIk0tYz2U-=sdHv{dcgJHJ5-i$NPe)w_yzhL;+ zZXO-%I<=So|NdY6gr8dih+6vk{hwW)sMSe*uOCln^#R@{CD89Q*zR9#CZv$RJ>0hE=x~ z`T@j2=`cZ*Gi98U&?o@%fxu!B0C>V6(~NxHNni(@0uvZs2pD;@c-)S_ARGh-g$M_X z1Ifeo-@7sk1mGT1Ab6F>1>^touaXOggYXX+^ddMl92Y)shM&kL91k7_0}g~k2;;%8 zXW(&wc;-0#Gk}A}p@8t*JMcgC{$Uh`aqu7b{4!yHuz0V~KfI1{44iZLAJ{}Yalp86 z@A!Y5f_W~ObG#GCMn3sq*kFJBJI{i1AFy*S5$ne~xiIWNFaAH|@^Kg7b0-t{dE`Ok z1ONDc()h=J0cqTS;e2cK;_(jmTzS$w=6?r!&V1n>d-P)2IRDIi_8jDX9e?ItV;*_@ kV)@|x?tgYZTTtGdc5KubdAV77}LjdbigARNF;0%!g+9G2>5YP)~0vQAl z23rgjf&^YDg<^v+fW`phNYG(?5twKCKP2c-z7Wb`=)N2X6oO5{h)}N<2n<7Ifq-@vCAwHkyuyBin5)daGf8$|)7mn`( zKmWjd5MM*=zJECQykbAdJ@^VRPXQ=+7zjvAa25aOf_}CbHv)eHkYXb6FrfF~KkL5& z=>za@;LNev!vW?0kML|2Xg7i%0Gwd44$;78|MWiP$HxTVf8qFk6h8Vu8MhSAYc@D$M65~j7%sI>E{9gs3wjB z@BIf3KHrf4{^R^3_>o3|nE(9vFn{MpafAQ&;Pemt1MwgK_&z&(|3Vo8Rg6CHq7Wd@ zzn}gO|3BZu&-4@d17Lhfad{X1U;-Qdga48L(0L$%_%4V4W`KRXfBZjwe*xY93}R#( ze>(pIgNX;72jdh)xF7+TcV-Y6X2v~R-$_!W@Y@r>9OhCinoNVGD*$@s~No zKh5)j83&z%_--KZXxw6VoP+zY@E$ZX&w=ybAhgR95>ECbB}wc{vU@QIfuC4uzVOk j`#-y%^SAgP51-wSxX<`@2pn@i`JBVB5e^-m{f-BSTiLQx literal 913 zcmV;C18)2Q0F46xe1ZfAScC))(4acPAfR=mLO|=Jf)0EE;0&Sx+C)}400?jev;hqQ z5CbU$7lQ;R6oVmxut25&amY|1G#Q*=)LINCf-{Ic7KZ}_piw{2d?!MI0+3lCa1+q% zI5+K;YI{crZ|RP#^W~ z!MT9YEwEYzhRYcTj<^4x@MtA4J_K3;P=Z8cBJrL7=zi^u!Ucfd$KcpVx2PUAXar)x z+y8^c3{D=zb|jD=hyRB^@NdZi@)<_MjVhT;I1%aRf&tczgU1yR>F;cD9Ebn+AK<_; z4S|4J{b1pS_WBSA6my>k&|1v{5C;wh7pUmNAW%+(KY6Tx>?gLa1&Z5y&v)?i{DglY zdw@_P^~%P-2iBPX|M&fc|B=>!aXV9Az3aQZw!l8#KmQ-!t-$2A_UZ%=Y1Zd|;CO%j zLeG1FOuZ3S>0bL+xD0Z6e%L{=p6Cippc4#?&I9<*@ZUX!K(T z0td`95drg>+yHQGgbQPZf`P{X4`>#H2ONZh>IX3K!=`Z1IM4%T7AOyb?*p0x%D@5` z2t2p|5stuOfc85OJh?Crpgg7#0C=T`02Uqvj)C@9h&)w7I}n(GhQYp=S)u3wj7Twn z@hXh?9ykbR+a5U(c;La~2#`)E!106mq4?;0W5I#oU|%EnyaUDu_Jz+FgW$jx#tjhm zd}ab+`(p1i$Y5M}76>e29mAOTKmU4P2H_0+fA}>B93oB5ncOG-uigje4DMt669`-~ zZ;ZLlA^xv?562AWVE!A3JQ_C`o#!C`@B9ai4D;Z8_sA{|8!(&mx&FKS2bqld{QMQj zJ`Q`}jr+g+ulzSLhW+pC7tB5n&)|=F=bf+2=W)lJcl@6q^9(jh#-#KGeso@_rKh))Y65RX9hyaS95AB287 zWgnz|cQEL7dypU0KmYNM*aPG6|KRxic;r$K_z#c%59Er#Fo0pe_u&@^CkR|VIrp+Y zFBla2`Tv0UAh)4V;6Im3>m_yr6)K_YgKga3f@_wIf;A>4R!AB7CQJPZ&1 zaX{Vw;J*UM$UpRdGC=Y3{s25lBMIXFuQXUUfJ8nC{Q_J#9t1}X{=d&4!omMvc<>EE zAbc0y{r~ynjp9G>Kl$in5ZDAm%$Fa82LI@cKwzCXJpz9K|8eK{kLR{O$cAw5{0M!* z9{~Jd-XnkbPxB4&zvw5j2>t=!Ja>_Q<`e(t&wu~OU+NzqSl=)o{QZLg@qqvE{rZ0b zTv!(AK>UCHOb_KS=U{#*K?eu`WC{U>z~>+920$2K0`Q3j8wSr{_veuZB$5OJ7;o`D zF(7ilAy9@nel9QwD*QkR_GXL%H!zMsKWOm)D4c&2JcBSm4}ds~K4Gv2L(onGpuT7c zi~uVH13@>BY6hI05OOL_9GlIqhz77vOUz6Zn5R3J(|_`@`|C#yj{6 zPUHUz<3Z;ah*walLY literal 903 zcmV;219x- zca5|1GyeDn(mSf*&v*gx&|7>w{v2}?1L$qNw`g7>RCpfW{|C>6P9RuIZikC(#jZy|w*O#w zHXO_bp<4%yVv@NV1TKAi=jh}xJ%knk6rj-^qrmTAJpTQi!UbUW;pjRXEb0M(fdA(< z1DL?H5E5|Ru>3&%Ut)z<=O>{yYO9 zA07v0_1CO$=H3Vb6nGGQ1ZDvsqHFga2o}`fBt;)_x?oI0kOMdcD3uizQX|c;7SAU?dUw3-ru4Dt(x$E{Foo- zA!p9uA(y3ynFbBU_d{TD%k%tnceO}^#Mmc+hQYb~IQ)PXKm(x(1{?gbfyYAw2PGm1 z0~k-@aR8Dp$N+IjfDB`E1K`4+0su=S-U0ZTDB!$sJ2m6qaqxZt;~s=Z5MzSJ!T8g=9K(U*z`$Y9g4n<~G3a~_H#wMQ zIO-vT1I7)2@XRBSKmGn;6ozr|ANc$-3xKeAr-1Rj&LNYIe*^mnhd}rj4jkhT^S{p} z(++onc?ieC>>CUY$A^Fa&SUltWx_pp=RxKjhy~Bb{J+j3{0?N|e-GzDLE{78cz@RT z$A1B7+<)PGXguQa4);}{WD42xozbw6c(ejz z8-z$DxCnpiGabBj;@k*6FOw#Sa4ED5x9;cD?DvR+%m44;lmdYG|M)*YT0h>y{D1TL zO|NMj20pt9S|K@q<4}uH+|9}Pqd4j+^J@|j~kpSRfJ`?}t z;vf5iz&E`Q2gXLT95r}UJ_-1QU=hfS`wxHMT_AYic=Iz00{ng8bI<*PjRyWq*JF5? zlgqCkvUDy!I4Ano0Fh4lVDkBrMuEHkm&KMmJVYRVGl=vX1wZry$NB%bLO-1X_~a-b z@5lauD1uK5BMATGZ!ivr|L1>r4xlhJ3Kz!zUdX_D6NnH0zJC$G+%TRW{C^$~6EML# zaC!hdZyo=7=zkDygfa&NeT@PK0K$Gl!+hXJ@*ny=|3L?^L+~H}k3KzrU<|?m{`v3! z@eug`ycjV6{~`Vl{6Yo)!}s9w2Y~!uML(2&eXxJD!<`?>Bm_Jm!IS^8_*ne-Rxv$? zFaN-9mjef%gHQL^JN9?G!Mn|g#`S3Q{#LGt|x*1yF;WA z%mok}xCj-C%^Zc$Aj;uah&?~E{J&-)kb?d58>#*ZIEw02Ju|5VBxsP?>Yz1%;4kuXz{55W9CttY9P!_@9vPhc9#CLN+O@X; literal 926 zcmV;P17Z9D0Ga~;d_)Ym2tXZZ6#zR*0P7&70oqCjT!8<;9xiAQ9bym=DS-+IV=x&7 z&IKuiNu&@D^dAEhf<(jxfPzw?8LkWh#YBNgV4T|kplA??Y?J*Xfp(|3NHj@2F_=N< za1h_tb{n|V#JCV_Um{Hqpi^iWZ{5$+`L>Y;m$lo$C9gW?1mC5P|s4BhYLV|IxpJdq1-XM$(}NfMhry z@5lZ@7J*G55XeWjAdnu1|L6blz&g-3P|&tDy0%6G&?^oTlLyce2BC!TZ)3Qy_`@J@ zP5?aT6}@~e*VuzhKmYswLVK7OjuX+0MIob-!wWw4uD81 zfc3=iJ<`Zs0tbMi1D62;xo5XA2!sxS0Y8X6J&|wzjzKtqP%g^x03;)!{m0lpkYHkf z3JDP5%w``rNIoFk4D1J;1(^fjY%>@gjz12skU^k!t3(1Z2nUNag2E9Wh({yy4g?PaQ}@T=p9%+o1~Cid z@E$N64n}?t8-)OpEz$d4BLZQ-^mp<2Fx+et3=KRy5+~=3 z?j!skkB0XK_fhTIM{vVI#^9J+KZxzc14jYV)^PqhH%zod7`S31t>4ydl zn2q`T{2k98&&ClA!d)2P$G#BXz5j#wyVE#-+Wf+N4;!7sA9Ig*f054Tk2y!2Pve#j zALk!Ahxq@O|HY4;!v~Br!2|E}`?3EW`+@Me{rKmBhHM}>?s%|42oN1&5kNaafa?gE0oIWj1Fn#N;12*UAOt_?_#CK!!=M1l z0|4PfBmiN+0*e8_gqhvJZ6V%RJE!{IyQP$7I7oM2Ef4ipX-!_34l z6@Lx}3qYnppj3!og9jP2^!q*NFT;ak*+O8K2%baBeeZQ6{pe34<^Q+9;t&o8;{V{z zbYqbVAM^hY=k#PI@&Ckg{~r7T;iCWiBlq|WSi(R0|HF^L6Alah02}=Ry#b(pBlvjz z@a{4%R2;6w~ zI0vEu0)ub?=idAN`1Aer2aycpr-mDN2aSjQ|AWW=5PZWRv=`Zg55a%_eE9wL0L&X> zf&bz2@EipH@!${%aDE^Ed=K?7=Ri#2AQ4eR>0jwQ4srhQLFAyqgP2AW*z&~S+2ByY zJ)bH6!CEuvhx!j2{wKyi7#xdmfCCZ%3}^9i0t_S=U;&6vfMX4iM<5W0_&F#NAR$9^ z5P1YdJh}`341N;bga)BN2d#ttrx=7XQ32S0!Rj6;2VxmyfrC_jKr-e*D3Bm~*Z^hc zqu?OG_ht-20kQeu;E(_apOgY$-`*Yy4|u{LLF0RbgT#VCkpK$FKqGzGz(L|+7(hJ9 z0uLGP2L=y8ScA?D0tb)!34p+Z#BwB23kXDTG!P)*AUFshq-X$P6b=)AA$<=50bvJ- zfPO&ovSc=K*Z@3ZA@Y!LelQpu^Rb?|UjgF}fer94?puyF@W)~ nPre`C=l65ZgTp8Hd;T-`!SF`>AC6}}W8lNaC*M1mJZw7v<_51; literal 918 zcmV;H18MvL0Fna$d=Lz>2oN1&5kNaafa?f}0oIWT1Fn#N;12*UAP&?(AfY&bG4lqLyKiR3i5+P5=5?}YLyUfFC0Apqc7FS-2hW&t>{ zZ9dSxUq(W29^6KM@#nyP8ZT`^J2rsDj3aIB{5bvy1%m~)w(ae-3Zw>s*o$G~_v1Lo z?U1=_T8C~2jIZH6{$K1H{R~u8JC1F12sBs+gNOgnNHB6BQ24-Q0Jlb92GQ8uAX|85 z0|8Ek1IKF>|Ihp#zy1rg3czA1Qy_Tu|4v z0%O!@jPrs1{`lY-XdE^H1EEgji2=ZW;D7#n4`3)9g+tkms@V;r0D(cc5PbkVVv-ug z?~ZXE1T&9+;6rzS@#l5Ed}!9%12F&p{5|{sARaOs)piFLs6gxj5y1cW{`d`o_tfce zdtYE^|NZbk?n2I28Fu2qUxVvlaShy_2OPhAAUKV!uUYEdUg5N^v`P)n_wV4+TYq=; z1GH;lJc}f6`D40m;FeB=tmso|hUy0y{7xVc*vEDT+#mqNfI|(CLx6(`1{eTh5}DvF3?3sA42S?$LID}? z2K)^b2?Ndy4=D|V8bI0!#>fzXN=@P@qxlF5sY*P|No4_u+}~Y{vU>cLnap-_6PSpuR*hxe+Bvo zDi|i>!<^yXf3@hmV$X1oVL0$yH)Da=@XtOy_mB5BHpT>OSs&27AuD;XZsm4BI*X%zXX^p~KJo s)68HzY!mN?_qqL;`=Id2{oenK{qTGdzX#))&j*ekF+Ta+!Q)}r0167K&j0`b diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_17.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_17.bm index 42edc66e2c9f6d372817dccf1b764c21a35b81ad..eb1a572b18d3418ac880ed87ae0712f9c0f7f780 100644 GIT binary patch literal 913 zcmV;C18)2Q0F46xd;|=*fOAnGpmoAPfa^kr0oJ7k1FWQf;12*Shz`*ZA;bVfKmiZ> zKL`R0fE-c{h6=#~FAoYKSfI=xC*q`NFun-Mm~&Tdg$v;fGZqu!z=234-wE9s@nC?& zB6t`FN(K0^OnWiw#a;t^*k&z|C=YT8Wc>gB{65Wk1+xBs^Kb|x0%89D;qU#3|9U_F z|M2E_Ln!nw@sIpI{~U;WC;!eoe*n-P2mZeR@NghL4=8+p@%)8d9zX8C{{Q?73@}_c z_&&n^FBn`y|L^~$$K3lV_s%{T7>&d6|KRX$o-$DIKah}^;4l1d9sjvwqj9J3IR%0* z0}2iP8xDte?mj;z{tY1UY}X^e84uz?K;3`*u=oVy*@$+I0Lnb<4F8e;;-Nf1mIm8h}8_BA@>}Rx%GC^guKx@qoZ6@rF?RV+z5K z@gO{SJpu!O`~QF69DTjOG!OUpz7Hw}VQxGaKk@^R|KR@kIDNtc_;`);fKn(Bdtfy{0ya5&v}pkMg8+wtA)pM5 z0H`5=*e9O|ILJZm0RW7`Km3E)f$e~R;2;^uAM?*6I}mJ#VgW89xM%Z;fM`MIUaO49*4s&6aq+t$L)BG zNIur?Wb!=*m;=UPfUsfwF^z=hg{QDiAm7jZf>FS@MEvoc#%G6N;9g+f>OI0SK$u4O z)0yT+!*RgeVBUHS;<;elLvfMYbkCppfLQR~J_XKwFzi9I5xYIhgSmiNxZj)2!d)1) zN4^l>y$gf*gHt$v+Wf+O81`K582_F7!~BkSJbB7I;(r{TaQ`^{&HKmvxPB~r?if5_ nlV~4*pWVKA@7xcC&+o_FN8yv`4m+RxfP=>o;hE3DW?fyB4jq88BDV5O5 zJqxts|IhHkCl;yQQx6TmGzNj&%Rnq12oJ+WZSC7*aSEzDcHLk7|NIgdS8j!ig5)b= z@r6V`{{Q$`ZEv!dT;k&Ki2Oev{so6~p(PIkaR~{I0=I_o&->ar4-Q)ckXRzHF!k>vu6s_3ev6u&fKfu87;Q9c#(P0~HcEsv44hQ@D z&j*$RXZ7}6ady=J&R`(1p5_k&h_6lfFm9kcN+USHU-=LY#CvOOsO;yU@rHTt-wrsO zbP&09WBWk$z%rlz|I7c7v%oA~*w?RD->+ciK=DV7`r$$3*7o)24$^A^xj-;K{Qtgx z0gU}2R)WC7@t*1Y1O3C`L8#wyxS+%!Fh~Z$1UG|dz=4DSEF?AokOmAo0YY350I~`3 zKo$ZqND~MFB@zG__5ec@iarDYoQrS_s1SLzl5P)CaX>8`2T+4l03%}HSbPw9U_Ic# zA(%)1ka?Z}9>^hp<{*F1JY+uap@6za{Xd3K0n31ZiUxTAkKiE3VhxcjKqVycbMNpu zfM`MIUULza~o)3dOk3opzV3=Sm7=H|7;s3$tY!iq#^Z#I!a4r!xNbWEE8xI2W2KQ0! z5sC!DH^!XjDE=Fc2IB_v&~FvX2I3oxj`Oel|I7l%hWYR=bLod-4VaDj|NI@y0?o$! z-fj};#j-u{hW*Fm_=8h8f7<-QeHiv!?il-=d&B&WcRXZaoKNGE&L8I=Isf?omk-5{ qox=x=GHnCz^ZT*?9s7asx&8S2i2O2r0mpO2f)5-=hG#zqlo~b!AGU=6 diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_18.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_18.bm index 23cf829b6668feb1b31c13e23e572b08d16beebb..1b2ebc4dfcb8ec3bea546baa63116d1617c1dec9 100644 GIT binary patch literal 932 zcmV;V16%w70H6Z^cmbq9c8I`0>!AZK0-*x~u23$t4p8I39xhlw9cU0hDS-+g2RIN2 zLgxt9NHZ7!vDKm!$^aaqR*4Pb3}zqne`ye&V9doKo@^i(h)e^85RXI<|0aM8M;Hbe{4ytatMP#2@PfAatOA9Ca4`hWOx97PPiJO~WJ0T`fe z|Nm0R$Ul^SGl;%Hk)QBC@K^*Vi~qdQV8a2A@I5p71hNUhh~cmI`QSWe6bSV5fdJG& z(j&kB|2%QH21Eb*kMNJ<0f>2wXnkDY&k!T<9Pcf}?tp#ThmW8IiQW0Q~ffEZu`@aFS5GSKhNLbxCSNg!P5hj?l@ zc#t_@5U53q`AixQ!V35h0)3V2}Rc;N-vnhV|c-@F?&iYfu0~I^4+o7zZeT z7Qg}@7vekczzvnfA3OpQ4`{>!5dhp^HZWLOK!ajl7-Rqf zIt~nC6AFQb1Rh)hxP!()V~0$^<|`8LgT@U4uuY(IY*qvwBasJ)SVAMx&OlxGl80EfXL&`5-H zj{||nA`y=V*RKGB!3iS}zGLw47+^ekmV21oLE{62eWMuY5B`4`g;}or5Bxt30)}Dk zIqVPaBOHTWF8&Mj5L7ToorgKYyu>5Xe<#l29>Q_pxM<%4vEiP4Gm!sg9&rzzdEj_B zZUb|1zelr>zefK%pM&}ETo^P5zi|J>@s|HYXS@G``0#uf^dIjy^Tc`F|4sj&dBS}7 zd>fu~|CssAIne)n|Ia+e1IEF__!AZK0-z6E22dWf3Q*&~9xhlwxuAek0u(?Fa3Bzc z&Jm=LW-tL`sYEH1069dZ5*tJs1_u~UQXw?Kn~Fm;$Urdyf&WG0REPx<2_QWb+Ob5R zL@QU=1a4U(jf_TX0j%o3zCXrqLx7fbd&_Ycjx()( zIAj~jImk#O^8fJX{tfuJVLV>7W{U<34+1?r@IX4yIs``rJ(|k`!;t^}UOTXVj03q0fk8SD{p15}N0!3vme_m)J>SF6@)7ZP`Y=$q z^;e-ffJ}e?`~JfJ$iP-Nd~a9&+t<)rU>|QE|Br8|e7f4&+yl3r;B&w5JU{;-XP`m1 zuqd)@V0J#$f&(0$U$z|?>ZCvgAeiK4a398hho1%*0JJ%&j(HS3JO;sVKmw9Lxu1?; zkZ%zna=eBS||HcCYocGNW?Fg{5%F24<2XU);AD%z~LWg#ySK4pT;3yYhMHZ55qvAn0toOmu8H^A(8XP*q@Kk`_rdT${2z{IJRUfB#QW!S2aShe0sE?= AhyVZp diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_19.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_19.bm index 74e01a0166f963356ac40790f9136182293b3c82..c85504e90fe69f3e5288dba5b5063656cbadc610 100644 GIT binary patch literal 901 zcmV;01A6=c0D%JlcmZ$_fI841fOeDt)H`O&Nc$NB&N;Q0J_+F@X3hpmFeUz~capKyVm8{qh08#skNh&r}!U&w%_-{S86?OxI&3n3Kz|fd624 zd>N2JU(&Gybf`X z{~`1Y;M8yW3G9MH{tyeur}Bx*pniM*{zEE|5CHf;@_Pl}0r7zU@csRVFaN+E595LO z@BjHQKa|3pIT?erpcH@^Ltt}{^?(>)0ib>X=LXMc@8I>sfest|;sO!5I!CYZGR27%ZEm8c?9kZ3QO0qVde5F7vybPi!& z2t8v30SA}IiC_n`Ac7$B@ZoGR6Hx=o830ojhvNsK#zO)RI50gUG3o$3xB&7m48kA} z8f<#O4T4YyBo8;eH95Ik^t4sQnm2joZt z<@ta^;~oqSgO6eVL9Y@Ego6R#{6~S~fRJ$G@OU)hKuHjI_~($z1_Hsb=fmJ*ahOIZ z8xB3f8TkM3c6K=A5B-0bMJyADXU-Yi$M`cpndA@eBL)nEF*xzZIoLmkcgHxv{NxkK zbi=tY<3qgoA3b-UG2z~P6PWyB*4Cm^Q3vm{5w5^{&Dk|dye{_{FwRdAn}7n`QHCOyB~3%*gqSe b-H*8sgGc`ydp-LdasU7R8Jze$uyEUecXqoF literal 910 zcmV;919AKT0Ezv0|-410vi^F z(4dv6?*a{rFne<)*vY0K@#+c({ej@v zb31ul0!3QngT~k|5%}};avOUrcvNUWFnb@r4g=5c+1xu{xq|d+5O@T_0T}P`w9W{KqwGS1Rp^F!fH2MI;8>|0Oi9tcm4!Fae(&Rd2ngpZU+F)fB*OVgmhjz zt_BN>4cbGf6HEW|=byjwBpq$`$8G!e&1Dyu2gd?X8-7!H)$3bm6}cRPr~l-@|2YXh zLW6gp4+n9;^hK-?*c@{GaJoa{4$^>90A&q>bNF-cVSomK*ax5T#~`)?*AfIcPvdb! z2QC5y0s@q7VNQUt#2%i-c)&jsJcSPIS`Y!j0A=8Z%q9ZWCWy53ANxBnKnoxeo`d7W z@B`Xm0l)*x!-eq30qYnj2z=oDFndA>A`d9sdw{AS$v`2H3jh#wJoxv3P&5E}p9CI# z|DXIGTmX3&hF~cj3_ruahCwI;k_VgvA)v-05fA7qAcb^32KNz-HIhfy{%w9D4pO5)GoJHZ2ZU^HH z``_3vmOVFz{V$A1;h$^<>u-woWtC2(~soG&tV6Q8aK}O k`Tf}YjQ+v+-2Uu+$b1?<_~Y5{*x-2aJ{g?&Jg{)vfFPW;0{{R3 diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_2.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_2.bm index 96f439b585f39f19f2f08e95a57dc6f85b872b1e..b93e56a4b05434d0abf572e0450f33421da8f7e5 100644 GIT binary patch literal 891 zcmV->1BCnm0CxibcmS~gcA^2>2?7JH3IYdOlo$@Om>B249so%Y9ikw1paBjM0RKR6;1UVRFn79l& z9pAY4{G3pD{02jC>{ejki3J07|MtruVDbOQ;nW%=BY}aR@;~xf6cAo8d;|}}ho4YC zh4GYqC}P3zKq(TB_CJ|_NsI$g|D*Ym0|3WNKc7F;LIw{R2mbR#g9FFk`~Hx}i2>um z=n6re1IGa{U<~4c{{HvD;quWQW85&wz*J|Cn=uCI8S}zcK&8NU&m2uwMpap8*U6 z#x@KF2mikai*%rVFd%>jfuDeXu;7D9ihzIx(11)n0EF+g?2aaZW$D7CqA`cie2ZsT^1IHi6 z$;9Fj$o#{B1Hi!e{}6cj{L_fcLis!gj0Xb&k9h1b2_M?s41|5J5rD|xcr(m3kAc6O z@u2X`KZY^z|KRjC4CSA}zRcm^Fi4-CGq{iNY&;0Xp5Z>o@!+^<-x_nAgZOSZ8HJj0 zZ<+bvcsOn{JI;ag|0z+kXDjzFJ_~~e%trkFeh%dvGfwCJh2z2SW8VmG-v7b;LAW#C zcjo=`;qY#E41LZ$;r>T3^Zz#R9##$?=N~zT`2Uv(Wd85}zJB;V2p@l+-H-V1#_^wg R{%{}NhhYK7bH#!W96$;%sh$7; literal 897 zcmV-{1AhDg0DS`hcmSdh5IW)k?FfQ_*9igxu964`T97?}9suef9i%{Zz!=a3Gy>Z2 zV1(k3WH4XoIXI#eh)o7(7z2$XL4>hKA%Jm`bTBYV0RXU_3I}R>Kq?fYVZo7XuqUFA z?j=2v2+CkQikG%q0)X{6oFC1$CKnr23u*R+^57mw4r2ct#98145sZ6k5!toUasTJ| zVH1e7=+Zul-rv`4z-3?-4+IC{KHvw(LF|P`qR|eo{{Q|73@Z^TM~qC!JB);H|L^~z z#^1=6z%3FGc=+yLf5-oUVchn25V3gs;g}2rCjsN1_q1{v8sNAUs8$0J7JgYBNfAXtcp0|!6!f9O<5K)gsp1K~pMv=8BYV%jV$ z>HxwVg+kdK#NX%s2nSl4PXTSgdm;WIr>uq!wSOk}K+Pcoc;*Svs?!DICeFw?Xn)ECX3=jW5+mHGn9k|p6 zy8$_m0)GJiaNsM!1Pm991P}piAQKC~At(w002V+HFyKOPgoFSj0N^74bEGH80DXWE z#K7kihy&M=K!d7809Hx3J#8Ea1dF-(Ffa|q za!-HKaIc{<1nB`0pcJKc=mm_$jpL14=6MT zhXK9=#-IM@Ln0B#{KJ6*z`*$b5O~q%_-H&r`8)@V2Ll0*c%M13>z^U^ZEEYlyJ>EpZo8R2f>egA-{Y7 z2k{2r&w1CJH_wN`x!f`LIQNJ79K+B2)6eicY#cw%K64N8|1J>8{oenK{qTGcKL0pwU^o!06ebV{9u>k1!Gb{#MS+W8tpDgd12uMq@Mdv?(Qu$}yaWmv@SX9nFj@sN z0Rp5#{1`qj>N63%RsI|s7Rv(!xJ2?EU;plB((Ko{A20pB1rUI6KOg@756{?-_rL%6 ze?9>rH;@0re}H2=1&_Lht73d8E@G2O8^N=?mgs5BUlVXUStm&|AXi7pU^jd`RoJ1u-VX^Cmw@fr~Z%s_J16~Vm^4}E|z3Hiu=d;k1L z13&yR#t;92#2n)gfq(G*{7blhfT91x=|f@m!T!?5GzQVo zm;=N>BOwQj$R0oF2P3}>50*k64=D5^IXItYJ8*aq1YsEHeg*>$ghM_TjE80)0#%gy zJ;OK%Jbd3Cg?=#t!N6dbx#u4N|Bu5UygZD5=Ley{aNIkGKY{&(L!f-@o<2{46%Gp% z^XGVHkc@mU8PkBvI9@mx4jbe4TqD3#a$Nm?_o7gvBKgJ8<4;X*q_ni5{JpO+M`hPy*etbR&&f@>fyv98EejfiHALD*( qI}Z=?{qFxpKJYv=|Ia_;e{3HN55D>4^Ml5R48Qy*An}-XARKVn9;Ge- literal 929 zcmV;S177?A0G$H>cmZS(AUeb#Aa;cT))55*ts)W!T_g~5;12*MAP&?(A$pN{(-K}aaKr9~URC+Ct zy935o0MK|oGZVnY#Y4ErS3rYBfJ{Hwd;NoRBLxqRS)aoA*NK=J!eqtI*=|IxqqPhpTOM^W@J z%!dR0`2WZv(5M6tg$t4-3!(q{|NL+cv=1Rrwnu8VKzQ~XqlDza^a6p9_AGok5IlO2 z$Q%=Z4=UH+XReOzhyybJ|L^$;?qUI9s&{@ddV~*wZh(KjdHeq&!B_5VupHm8ynes< zh7144ZH((-;JCqcusDUj@9l&B@)CSUUf-9=LH1(ULX*VVSol9D!_ky(CGv^ z5cLoN&=cdp_e&vk2^>T`x(oyY;hx;YA{9CSJ!BiW3`75;kWMmP(0YIiq5a3$KagNr z!3rnCn9M$9)`0-afuDf$ptB%)z~B&oAj}|kIQ*C#m z!Wk|A2ulMH(0*Xvz<9w0CJ#x3&Ijm{gTy DYNNK> diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_21.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_21.bm index 7c7c95a7ba249808ff2b802b5e63aa045d23ad72..da849b198b60601d5f411b206c2b878ed6662298 100644 GIT binary patch literal 904 zcmV;319$uZ0E7bocmZ($cA^2>2?7JH3IYdOlo$@Om>B249so%Y48PIv7{oz`5CIJU z3|t^NNC4#^*kG&>BJpOf)ER^Xyi|<_7r`07Kt2<`H4EVkGZqu!z=23Oa2SQ+uV4ZU zOddTb7vjM&jL`ZWn)UNxn6^kDJ;)`K^Z&l#x)J{N&-wq&&>)Zrhx`9`@JBjP$cO*` z!=kr)|FH4!2;UI{{^8@` z{!940VQ0af|1bOtm4@$dKJ|3H*~A^3R&iuynp zJmP`=zVYA^h(7}Z@S)~RrHKE)|NZzIcw~`J{T?eB2ah^)0fBd*^au?eG5);#V*v5@ zz#vd=06cI%fA9MLkGGTukqqOfh8uXG=0ErU&NkMFb*Jeeegfj!=2)H2*5#OgUJBKPXnBPtQ?WCf65~QyAB2=2G4Kj z`?UbyFc=7aGyegDM*p06KNxZ?!FLo82vMKK#(@F@kN~id@F7EF5zZ3efCZ3*0ZtpB zr-_UJQi%W%z7pMpRq!AL>?6bgF$iR%+LRCk_92!+(SQbk4_;&vh+R?PfD6w@z(Iit zFh2+w_CGusd1CN5nmz+fQp|3N4NlLwOoa1a~~1X40VNnoHR5s+g6XMv5z zVHlunIQ%$g?}u?Dh`#$IfByH|&3YW9P7g#tj?iU;O^;ea3&d e=k9-YKIA?PAN*ge_v~;yWS$Jpd>&XhZNm6h|GC)! literal 909 zcmV;819JQU0Eq(tcmZ($cA^2>2?7JH3IYdOkUga!_5gSTq(F9vfes)78UPr-(C`?@ z0OcUaV5|@#aagI88H5C!RE-7`K^cYt$F+T-bRm#q(R3&fDFylg_|4d45Ey{~k3-n7 zL}N5RN9J2>*kUb#G3r4qnxD1z1<23)_Ek&XE`bDqOe{DLp;hhX3mE2#ira}Edl z`{RIRpnMDm!i9+-3D6s^(Xv4D8`pb#iG0uP{oP~jhH#>Idz4m>lD zf8axRm=3qsS!>4G$^$U}|NK4s|001HuHE~PKI8{sZ#j+!|HrrXBEGq1!)rB24_E*1 zf&X$6eFQo^cJ0^k0FVhbf))lLs_iI=@me=hQgLD1${7$>~ZtLx?uql_O z8yo(3=CB>j(i>R7U?JGgbOH?-{9YjRYPzIPVr>u^Kq0aSbpiwkFaY5p!1K^R=ul8{ zWE158_)B&ah#+}o5&$7YA)1Jz;6Mq;w*d>W4DwlK;Pn6}G6_V0f)aoaU%OCEMgS4v z1`qrD!<$xMA7Ab7QV&?dIe)u72t7}NK{yrn1Cs}cWZ{qt0R*5^+zt8#KnI){9*{T< z1~CJmZ~^3H8G>A3FdO`b{{^59Odd=Tz(8gjIBWt)DJ&82V-gHtJaakdG$Kb}5D3U{ z0P(@#JUotU8<8Lnm*gH^3=abX>$AbH5(|Wb0pR=t%K#-FeBKQ>kP<{5K0FLEzz-V- z`ac63jKVQM*m3x9&&U6RQ2EDTf9w3hDPWvKIPlKqKfy5m-=Kea7%*fRiN`)U&cXaQ zAKS(c=OCU-rX9(LIvwZ0`R|?^{|@uuoX6u9%LlU?^ZEEIko*6S`8=FO;gfC$a}E37 z*e{pAe~0}qj7Q<0Yz4oMImg^D)bDl2og>ai;o0mR?~k0r+;7J*nEC7=@q8*sh=uppo) diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_22.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_22.bm index c0fcd2ee4a72dc27cc504ddd7abe0914f9fe21c7..ec1b7ca21bc1308a877c13600d7058b64db0de91 100644 GIT binary patch literal 907 zcmV;619bcW0EYtrcmZM{WxzrJ?N9@)0#FBTP#t6zQOAHhT(CiNK!BzMBC-FY;4urF z60H!XPypq^m_j7d069W-kqPDw0&*PH+7X`Mo{AwJtUx$|f%s17(#Qpfb~Fmq0zWL1 zM&S|b$6g;6$-`in4Bi4+|NqIl96rr^E&sp7%O%DK55gOG>__{+;k-el1d;ti|M4IE zKK~quVL$(k9SlA{fcV$o9u5Qt!Tkgb4p|C32)KG;q5eQP7thDX0lbI6FGC@SfBpaU zXu*O*hyK9e6N8}K24lhC-2p?G&xM5&JopDA$A9iv=+t zo5;ZMe*$rbe&iGl*ZvCt!{=f5A8`Np^YHoi*uX!IoB{_pz<=T&-V7ffzx+q= zACCMp&;IaX`|k1a|KaYDsC<~C|M`FB6z|9wKm||WOQ+yb!O#EJ0x;lV{||--<3F%q zFhBkO5C0#qCdvVj0S^N{V;nso7+?Xwd>kVH=s+eP55PTQK;j3N12`UNED#D+065HF z0suM(?H(WjtN@422M42AKnF;mLG6Hq78n4f;bAW*(RdOX0LZ`u{1`wKtP{_K96p!` z4gel=2>wb37^KL&0yl^lfNXR1q@qqB58I8|!&w!W%#6Tk}%Sx=+H5raY{pKJ8- zQZOtW1_^tfLogrs{<3qzoA?d`LxAD9cL-+#`v})&dGkAj{{_Q-a;{mwnc{MdFLALk$4{)~O^ hn0)^3f5!gUJ{TW=pUvk7j0PK@{LVq+Fzi4$_Hgnotcw5u literal 915 zcmV;E18n>O0FMIzcmZTUc8G!7LIzv~Kn~eJI?yRYj{tbNVFKoY0Za%{06D;bLKiqj zl0lfj0n7bYh*Ky4a*0YLHi$F~4mLcbLTQ75fyP5L$UrdyfxvdBw1@=|b|<2nRw$Eb zggHkohpYd;|AIrV@K|6q7-+mkLlFP_ z|KLGF4gwds0u4auKM%+Mfnfy{!d>@B4}&cM$av@d?Hq@myBxy6suj2jG;!Vijl)!@ z8$`rNI|wWSDf*C5J74lR!lQhV;MhI*dJjVfKlFe7+&KmU5gmYV0wX}Qe+%OlflMSD z&WDM_Q7l#df8c<1pm3fqTO$R79Y@6<;9z)geFp*|f}Yi-gi+v5cpvZYJRUj=tpC>< z@W!AL4&>x$I0^1zAx7%QcJLcq1KHJpK<5|>|03u@XtN_;m5Y>AaJGu((D53mOJGpcfzkNfY7#9)dVy0OffM zAP8N65X9dC06YfDHU%z40uT0Uh&=$QXe^A75Q0VESbPw9U?mBI5CW9KKm38r!RTus z0cIe7&pc#$kQ@Pc`3d2l!wIW^Ae4f60FU5H!Wkm4&;a8QkV!lo`}__F4=Vr!LFF*3 zZawMIf(%Mv4;UN%n6O2FHa4;cA$RhypfbgLaj_l6ofS3cs zKqDb*49XGM_uel!2w;4&5b$|Np%u^9`q_Ykz!)Nz%{x|l)@WA{0{%<%uXmHH`=5h}ihhhQ8vw$)ZsKNjM diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_23.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_23.bm index bdd40776b346202aabd5158cd9e15614e9404bc4..1c074ba84aa59265f83f96c3963f5f8592ecf0a5 100644 GIT binary patch literal 924 zcmV;N17rLF0GI;+cmXI7Ksv}EKz51&)*%W5u0mu7T0~@X;13%t1P-`>A>aUHRyqI- zg6DyX!6I=0v2Y<+C`=$MP$_H^pI|u`{y&1V%mC$tgTySr10Vs|G{lmZi z07KsF_dGNI_n^{W@BjY)_~3RUkw7^A;1IYL1K~gZPAB>793tTyzfU9@_#OhhA{~YX zfB!6u76I_Eh(-a90St5b55GV-5J(4`&p!qa@@D|4e>?zzkVlu}6JQtm*8u52f7gBm z(r*BW%izHBIS)+qJR1dC4ZyJ3<0A6^+%q5gA9Ca4zD^*K84L~qI41}QV-yYF{tFJm zNB>jDkx-UH!=La!@?8(&e=_6)#^L0T@I5p71hRR;_;claaCqJUV;-JxAR3MTzwiGd z2>@`Jpa1SZ!at7;vOYNff**kY^k*11(81^*|Hq#P5B`V8{m_O$pn-9`U;Z2)9l!kt zkbkrN{5=0bKae|z@&6PIe<}Q!0!II!|Kwlf04Scrmu7%{ynp;Zf6IUHK>wG^2lC&} zzrf)C`G-0W7;cmTNdTC4W)KyS|EvJhI*sxHn9SthKaKwWeh*3@2zk>E^aH_%2B3Ig zFc<}k`Ah?kz#g>^@;q){=}ZE_{|kr!_5d=ycjbHvJP2BWG@Wi_ehdT{5^(@}c)t2uM7^q7OI@;{maP!sq~!A_-V<0P)apW009p zJkMeQ90mddAhE-ya;5PCL>@4Jc%uew2b)TdWDgt$1_4OmKsXu5JW@3<2ag0IQ3^Kz zLOhrs(l;;=2*^WYkf87`5DOSQVqx*XK7<}W3I~IM@t?r#k!i$2fpES9#^FG)U^wtF z_{G&@K=^z?<1hz|!yku$*&=a>WP`Eeu)sf``vjsfj)2+b@rYEyIfk+DJ=A-IV&R^^ z-Qw}cG(wr2v-mvp8^vapDNuqaJ&Q&w+EFa5EksW*<2ZhE1jyX~*XCaF<{+ zHy?KYI}3wG>=x|j_P;RSKzer%d}kXEgI@R(e&%wIIG@4(^N)T1pAUoc_%q&jJBAM! y=le11pM%E-4fD_Z-+n&gKQR7xIlKRS9|sScC2hm{wjVqH zK0oiF-FqDg2t0O{-QTzIK<-B|JAUrk0~Uh7EH%4D#($o`!Y2~#rDB0p2adEvHVh8` z{{i?N2f;$O97ZSt8OQP;e+mdZah$s7aCa7129x>VpR-10yBRXzx|Lvfz<<}f2If|$ z8q_czHoQ&)aH!KDVD>+D8HfId?%3Qt(+EU@gkKqi0x@s_4THD;fkPn@ z{-tH)SWlP#hd=Od=u|C@)=7~V4uWyOk54=h4z$k+V8_*Qq4Bt7zyG-Z1_6+?S9$xc zHKGjwgmg~>9OuFG7*37Xk1gOsU>CleG6e+aL-&>4k2(b#t-#U)pYP%4`3U|))!@L< z`M*eY0@*SD|L^+?|02Dw*mj_L*{q|pZGe5efBrwe(Yp8Due-S%gQw2_!0`Y4hMtwz zz(I8ujt8RM+OR-llgstO4yh0UQWgV|nZSP;|2%vea0&-v0i2lUpdJn#P#lm9NCz7!7!1LFaK|06Sqg#zJx2aUpkV8C(U zVDXKr#)0togT`PF8HPU(0SA;aLD=!wU?0!@f>9X9K!5Z2#42GN!&vwp>OI0SaL-_W zd-&`cAxzF${2qD@;<;eXaDOw%{9Z9`jCt-KJ_XKwz|43?!<~o2CesVFtAh`G7v{uDSpK diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_24.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_24.bm index 343f88cdf90acb0d8e12d9531c11d02e824ae22f..e8ed6353d0353c1623656e1349481bbcfb5199ad 100644 GIT binary patch literal 898 zcmV-|1AY7f0Dc1icmX015IW)k?FfQ_*9igxu96rBT9g=b;12*L5DwBHA;AU|UMz(I7r~jvFcA7j`#<1}nTiqNz`;LffcmYIo zAOD1Y|2dd+J3Y_NK7TqijsyMx8~z86$Bsn+<3HdB#zFjt&*R_x4}KAF!bjo!iCDa1 zBDXZ4}V(KlIs0`yb4i1I9VwkC29cK$l}CAJ3jDVh&?yf#3h~0Z{-P6WQ{=;65-P{vW^jkNy>dAB-0V zng8U#{!08mvlwPV z9|VU-H~f1K`vU_wj~)*U_(9;1YsB-1AA#Uf0|bx5;gQ_pyl(G~58=4rd^l^2 zJI@cEdEj`;?>-05{O}ZGW5fLO@P9lDF+J`1_&b{h!UN{xet+;^9ByIp@89@8fOx_0 zoIma73G=z!F!lKNhxu^$M?0Q8$2rmW*PALWkC4#d|0OOFLLTEEM!RV+^I8Fl*fQQ0A_;@7%fJdRQ zVCc3;eG5rizVKvQEDQpn6Ub?MRlhuc@tg3}y|UO5WOx>jY+o%on0xO!-)t|J04R+E zx1pU|F}8k2f8Vf&O|FKLw)XAazYjl$9K_rIcH9IO13>IWt5VPY51$B}LZz{2g;X9g zu@KxR|Ihpf;R1keG8M33(Lh7S!Qb!D3jjQPcPO|pZPAtZ{wM!L$iwg$2ulREu~-C0 z{ej@vb1=0y#h_sE84Uu%KE8AGau^2aa#2gd7=|Nrm# z2<}2xxbReVd)O30w>Q84K6(59Bi&ZkeW)I|Z7XekfP8Qz0k_ugd%Ev`Z3yI9J%9d8 z5A%@o?4`B{4XQOT-9Y0I2y6~He%L^uhq1swB2FR)j2oZJkAe;AGhljuEOD@MKqNp^ zg#IT0<;V;K0CBm6I3BW%+B`r5_?hG_;PvDI55W(ZOaZ9^3NC~HXV3x=R$%k^@jL)? zzysgIh46vTfcFslLHJ;E28cZ30P)PngF>t;1Oh+=7(hI^vF`%#%z|bpLo{?9|DXN^ z1_cNtLFWhujlaV`fgZ>nF^EP22@D61w}YU7z{vs$5Qx}8;|S1w>^ICVn^$1y(Rf{5~0QfrH2A zc#ZyG7#<7*1wD^JrXToz8wKHv{(tyA3^t@?qGxf2@4# l{xkOh;q&{k{~h{a_~3o+U=at5hYipEM*-s)wqQJSIr#SDu6zIh diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_25.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_25.bm index c756241571c8008c4d6df8af2f721235b13b002d..2acd45696ff4f1b8ed2e95d96cad215756b5ad0e 100644 GIT binary patch literal 913 zcmV;C18)2Q0F46xcmXJYc98+vg#iPugdWnE7#T1bK)V1u0nrdL;2{800u+D_f9U)I zAOY{(tj-sh?l7UjKjTvH}psKmYz8&j;t|NBiIZ3}m8S ziU0GDe}H2=1-~2ydcp-4(`tbkfA_2hiao~R_P`qHF zG4FUjGBqf{pb`JHJYFjS;732$d;bFI1F&De$r0dB;BpUy4tf8uQJ~QU$co3ozk^6T zUHb<@yC?AasJ;YK@r~l`F{x*z%KmViO^bmUnKL0-aU?=DTpFls~J^%hA z2anG`-)GSHo&^wrfAIbP{ybnOaiH=+X19ZL=1&K~@a8KqO7(fHzLBZpE;Xywi6~O=t0R#b$1O0Y~NF#ye zi9`TnVDm>IbO>-gV5sqcPBQ(NhC)0KU)T(>AO0MJa5pCigxAskr`Ru%&_NE!9-e9E zgYgjr6kr~(js(InAe#aT82}oaz;o~(bQZ`6AZUZlFf#}pjyp^Qlo|l6AbD6Y)0vH6 z9!enqjsc2X4rFr94*REk;8|R<- nr<{GneqsFXe`Y>-J`NvzpWW}^^09t7ocoW155a>@C*M1mRavLm literal 923 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 Y+5O!79#bFW2hI;39fAiO&;DmTU`c0{-v9sr literal 909 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 T-#p%b$Nz_5fyXodnaDgq3|_C% literal 907 zcmV;619bcW0EYtrcmU{tc98+vg#iPugdWn6df+mHj{tZ9VjyL}LI9=&DF7VcfFXzh z&XGZwKuN_2(nvEH0I}34T?k|t4lyZ2hS3IrfyNVPkU(Mt0l-Vq;wYE-L^Mi@bkEF%ufCrusj!Tg^PmmKlna;B5}fjXrV&!f`rCh zWS{>(@E?Qj<=L12M?C;vt8#MdG#9R}J3AklGu z*d7gsGZE<6f#YBq45Ha2pI+1&IA}I0uP|p&h6V6Yy+_y+VdftJO2V7xVy!>7zolpVbbi!|Nno; zM{*IV<*RK6fLOh8sonqi^UvS;7=EmJ(H)@jcH4Wj1LJ`x55IM8_4e&>9L=&D?Ems$ zf1HJ$4;r9bX|!v+0Ol|VYz{eo*f&dIfmnzD;jnIh4n7DxgcKgX%NQLn6#z0oAwP-0 z9U?$*)RaXV1Q)&O!5Un02gImAOi41<`V!Y#05$KEeHP3paP5_A3q)^fC@0c zbHX$p94~|nFlYiTLFMs-@W8?i5PLy15t;V@3?>mi5fI?o4(#}TI0y&?LqZQ;|Ihyb z5Qsd=hXc^Y{yXq_a3}!rPn-`yjqKns766G*AW&eKiHF6{yx*V-5wKt;0P$;xJZ4{~w;gV-W5f$HD)D(BYGge*^n{r@-M7ZgkG!Kf!S2(++ondHL_c z;gfu2&T$Xnc;ogCWx_pw@4?7p7@g-J`R|-xfy|sw@BH{K4jV9=^SSstpML>q+<)nQ zXg&^m;Ensg_%Dus2Yb$Z`5*i~56|F_dFPxj%zhnz=3ZkSd_M;b^N-x)+;7Z2F@E=d hqaS=91`oc^?&th(>^@_B^LfGJ!>~Z(ng7h>9w1SWra}M! diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_3.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_3.bm index c53b4ce3482cd84f6a4f25a27a82f081f80b941e..1e3416febde0f426519c7074ddf174fd8bcc78c3 100644 GIT binary patch literal 912 zcmV;B18@8R0E`0wcmSk8c8G!7LIzv~Kn~eR2puRKp~rwcT(E#T&>(>Zhye}+0uZ`D zWEqSA7@(DCg))E^Ib4SE27!Ub6SRnbv*uyIK`UDb1|kv%7=(JU!srkNfe44ss}#w! zLV;SJ$MaWc+#*3Oz*c|X`fP&%`|$r~d}%a8flZ))|Na=sL}Sp%{o}6;D3^{u{_*4C z+#VhOz1i+j@Zj)F@Q%BqY#)tY9G%8{sAD*EDP~pfy6#GE`$gD zci>$wa}s$BhBiEyZ`@s z0>QjMB3Q5dkLUm4&-eiG$lgW+fRV#L|H%IX(?6g~FO}?wz<3|K_xu(y>E{9gs45OT z9x@JKICJ0s+<$}#82|tA1~3jj|32(aFn|919)Taea3k;!gdRUU??WI^PXs>kAHT2* zH55(l>yB@Szcb z0YSME3k8k=^@)SVWDgi{lwjA11;TxRvVDQ$9)w3H6X-k|aUd%W1L^m`z+upcXTtFh zfyM#j7@%1?d@@NxJl`1P5B-0bMJyIbzaIhrkHa9mIph!TBb-Ad7fHWAf&GL-pnU1Z z59c7BOQs%ApF6`mgk#}&$&U{6;GDHkNG^DMd6<9|8{Xdhx4Gb z4L67VFN_ig-5Iy;Kk&XZ-ofs;^Q3vm{5#!$z2`n~k3XNm{FwRdAn}8G=lA|)<}v5P m@c$d1-H*8sgLC)y|9AQ^_krQQ8Jze$uyEW3^Udc6jSd*$8>(FZ literal 921 zcmV;K17`dI0F?s(cmSw?c98+vg#iPugdWn6df+mHj{tZ9VjyL}LILd{0vr$oF#tKh zs51x&IH4Lz24esgI+Y8d41)p2B`A>EAkZ*4!g7)b3_yTV8Ky)1k01^LAsV)9F&4=I z=x5VvmG*5Api-b4Dy8oiK!AOGf1KThiWeN#16%#!OrQ`RHUHmv_Qnb&MxE6#@YwDP z=YQwN{rGrsqafj}h_xEzAP0?>av6ZQDa*9CCaz@!>3E`kI8 zz1TNB8xTBo10j@KB$_||f5D)X&GJG4>~~@KI0TAG|DpS~HwY9&em4jo0|D@%Utkf7 z2XFs+(8Hh|2n3QTTciBH{5k)Ff7X!fNCN<(!amcE1bTVkfOWU}$rKIbJ3p?oH~;;| z_%IBIR(BRC4FeHgyY(OtDCa&8pqur!5Yqt1wzAHIG6e+aL-&%+#sW0}&_dudw<*HDc8AzhAl z{s)Kuy_~t+)7l3)hfyV&yd#xeyhk{NE1OlJay=&l6!ztNUhybpe2^(~1V3PnW zbL}3CVB|pgfMOs%d<4)K@&qwJHaJ-90uT?41_n6^B#1qt0rK&~reN_kkZhn4hy??| zc7e?wBL)o!J-89b3{W18B7j36fbrzOJ_+%Gz+wZk2aEzqV6nhH(2#h*AtJE=3>pz5 zuwR&C3&22lP>8^QpxlWCfC@j*c}#)h4ibzS@gTTJFdk3HJY&#^h-!aV+e2l8X*u!F`8 v`~Tnhmzc+&55xR!e|A3PJ`ErIU%lVx$KD5q_-1q9^1;Jy7tc4G9yB;$C``AV diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_4.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_4.bm index 0244d88375b35c9d93fc1f2e3771554cb1c535ef..7fdaabadee121caf9c9c9290e4320268fbc5f078 100644 GIT binary patch literal 885 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 OVB^{E*x-2aJ{gcxe4%{+ literal 896 zcmV-`1AqJh0DJ=gcmQz#cA^2>2?7JH3IYdOkUga!_5gSTq(F9vf!crsI6w%0&~Q0H zAQlJ_IHDAa48q0>5U}Ya8VJlV4l+uG3!&PcfyN~$kiet_0-;}|ADrBT4l)_0LctO2 zkVaD(xB5Re*#-kC0Gn!l(QFI@)qUA>Gyd?n&0sa3?iR}cfm}27-rNFl0#FV!tx$u; z=TJz5|Krbq{3FJZ+DC2w*|!1((D-ru2a&M{$Dy{u!r^#{R6`FRzaa*X6?Koa$TiMH zx8XhhU+f$IELdJ6A;4UBFt`VUhyTz>JMdTqLJ0<-a1{l>&wKVa1;KbS&{_o(7Dpfa z|H0e;@qyz|t$>HINW*_%7$AV}$}kToU?grZ3m80%Wf-6X#t8tQ z%zyJ3fILTJ8yW-&;xi5024MimU;*cVm;=TMn9m9ZL5v58Kw#JiV0^nA@OfbH9uWA0 z#t#AjkE7oYjCe3S3=fV54;UKgxs&+tJa8Nc20jiC6R6?_%0j+eb4#BJDC3j!@)d(&LR9S91H(l@y9vXKZfIhIKk&2 z`R|?w!(Zb=y!anI^8qp8^SSstp9bGw=3{<;KLv6DGx7Vs_%DwJ@lX6=zkB-y@&~5y z`RAN3&xgTz+;QhP`-S=)?zr6J+;7c?;s5?|^O$>$`f>c2?&th(?StWg_xb(U`;7j< W_}uDKg diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_7.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_7.bm index 84275b37d5fa43b99bfea06bd27dbb24797b1233..521c97586572a1aaf2bb7cb42ba6db2a89187abf 100644 GIT binary patch literal 896 zcmV-`1AqJh0DJ=gcmQNTc8G!7LIzv~Kn~eR2puRKp~rwcT(E#T&>(>Zhye}+0w45z z4n(2MU;xDgt3)ZBAi+STaErtm1_u~U(jh#}-G^fYtq(^L2?LBmJy`fo=)^IEL*tw1C3>&0FXAeP`E|L^@aL4eKRJ)AzxdLh83&@$iu3}m7|4n6;|AMa7g1LOby zymLw3su2k{`FZomA{c|dUVID|#oKMV~2k^hE;%m3h@el#%hpq>T+ zDC!r+@c@Zpzw$qx0{=hYKs6bA$iQ$CIA{NPBKgE1VDXSw@*@H8e(&G;|N1|~fbrn; z2>v`CKMr6xrZf-t_r4Dw|KS2KjD7xn_{e|oe|#K1;eFso;2-!retG`uKp=CB2mT>{ z{g?#KIPrk?A)bHtgAd=2{~`1Mcz_E&0w0(DVa@`K{!#gI4EupU1da@PhiX7 z3}XPeU@$-Z_(WBs!2A?M09*|G1O0~t9Uus5Lg+vy9{@QrgdVXjh=^l=a>Rp{0R^fE zhGHft6W~Az`>%k;Ob;*WJU|Obph4|`rT`?p+9jp{Cjvu2fK~zZV4i#+;r33D0A>u4 zgV}-bD;(qx`R9>>1|VV}5Xb@J#8(XdaR7t^$gUvqus|lz1~9|H;}{2=3PB)%NW2{X z`#fO~g2@90B`|?q1!VeJu%qSK}gu?+m^!F+MK zgg5W!i1V@c?tcb*&b;A1cRPkY=ku5Y${XjO`KOrApAW;2od0G%>^<@ye4pL#_|M!2 WhtKZw!Q}yi&L_gb2aJae&;9^TFt51) literal 901 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 diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_9.bm b/assets/resources/dolphin/Sasquach_Narut0_128x64/frame_9.bm index fc8059e55e39253814b34cde0f55cedaa37aa6ef..60e43fcf5564b63a42323c731380a5dcb9390e67 100644 GIT binary patch literal 892 zcmV-?1B3hl0C)ocd;%c>1Fj$*(1<7Q60Pq4)0PP|JwgAR}A)pq} z1TaV-3}hP&6@mm_D1~B!Fqy^x<4Dk9ees+0egP!tP`(rjVd%aei^PM45r9yy76=WC zWr2Wnpis^f$2W9CYD!{@z^-YVr0jDP>} z`~A?$Jqg^yq1o;-2hl(NfA9DJIPfrhemrt12Y`43<3EpND(8X!;Ct|kgs~n!{u~4G zu)mAMPEa2N^j`O54d*c=mNj8 zM}wbp4gWzska$}I;sl5Qr|seS@BjG#K+t(0vG_oL*Zc>@1OLPK!D9j4{|;q<=l}UI zKa|3qz=QF>;L!jU0tpR)&Og=zXuyHV0K!Azux$1Wx;!X2IWiE41ULAf7zH8-9$7?! z0SWwEK;smA2mw0>agEF)fN}N=L;&B3omq(BLqDd2j*bwh(y6W7Gh6#sTV_5O~vL!|{YIMgd?3 z3`$@I9SwiSf55>XBr6#NMqm>i1V6(+u!F=vGYSM^ARinC^P9oIMnU4T5O~3&6NrTa zVaKrlq3}p_az8NOK;i{qpiDS%_#7Sy2E0!J;{gYZGC_FQbKo#Ac>M1XgMiQD5UGcA zXJg=h;rMJ9hB5H}#AAdZre<$G3-l8Y0rSRp5%`39FBrFXe0K=;6ORSsMstvVhH@Va zn^$S`hbYkAE4AI}2JMtuHwzA_&Mz5Hwa&-@q18<<0W_xO)G z9|z~*>-_7^6X$cdWA1V3fIM(;-Tgn!JjQ(ZejI$}A2Ihq@MN*DUGMnM+y{rx?#IF7 Shv31#6Y*e!#zThZ|096SRj;!E literal 891 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 delta 557 zcmV+|0@D4b1^xsB0RVcD173f<|Nr+n&->^7;PVuW{{8>p-|-m#_&omq5O~jT*Z4&I z;2`n;gU7}XJK#Kb`EYsp!Q=4!d%@#BjzOjne|}^hJJ>(N;p~q8C-?ug&JFLt|NZ;e z_&ifX{F~3D9q1>&f)5bDgUTQLnZPgk2nlpS<^K5mJaBOM{T&sl#6CCs z6~d2#7moiQKbQ~F|G=O|KHh%L-p}*E2glhzzJKsF=?ByA-`oBC)L$X|Z@13>e*;MK zeEa!-pZ-(s2b?=Ufyn!QJ^VfHfh*?&#&djwKqxs2N5h8!o!}*X@5hES000b+Eeryb z;{hX$0f+!R32h8UAo70;j7T1k4UCEg1t`VBWfTV{0>|xv0g4far$PnmXN(8W5#p@_ z)`3}+KtRP%@Zo{$V8c=Y>5Biv0qNkMz(MB-zhhz`^pJPp1M`SQzrgjdL$KlVuvezQ z_25VS2UEf4;lTBPU8jk$2aFOI3kS41eJm=M7GaEx1J*tM`W1gl`S`vA+I^1WrAnD! zi#dz{U+Co+9$(4i?i>$m{g|Fp{6EGH4_`k1es(wqQ7mDS;n38{F#HFXf#JY|)BkV> zuY=)-2d8hc4_k+$047WS35;L?oP06lWcS%g>p1*V!0FHZ!GP&}`WuV@JC3w84xi85 vJPwo(3_(1%lDZ+#C{fTlTc4y*N*p8(lXo)+1||kb*g1p(FIKAnJOSVafv+Hw diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_13.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_13.bm index 999e6b95a69a8cf23397fd53ed653efbf290b519..03d3df217cbffbca32faa4770cad78058a888939 100644 GIT binary patch delta 522 zcmV+l0`>jf1pWjA0RVcD1Au=Z@&ALz#t%E-Ja_qUdHKQP@ceth<3El;rVxLAWF9-% zKf~edj{hh3|FzBy@4)~4``GwAQ$zfl&!ipbC%=LZ5Ws`VAN-lXFZl=wbV23*`20L@ zaQObXG6)zvrRs6{gTy{J`xU~Ef)|eeA3vB6(*MAqMn2wt&fd@Szz2WF*+0I2@HOcN z)9>Hg{ruElA^dN*&i{V{Nb`LA`G24OQ|t~Dy&k=v(tpnD9S(HFP#Zd6!f$LzyQUU3T|HJ|5;Ge)j=Lo-JVj%R8 zci;o_h(*7^^{_**;q$Oproi>!NBsv=!RO(?^?+TciLnQa5*G^xv^sq(Dwh^vjEn=; zJ^uO?O8NM{1KNF#Q~Z8E#tsi(KK_1oI0sQI zVUpp{)X6aX2bY22z=PBOa0jo0;fDvOZ?X?thob-{OaBRsU;&(bG2~?T*-7g-{8PZ` z&;7xG>3sSdi~u{1v@{N%&)hr?ln)F+Jhzg%&?r&RI$NKlP)Zym4wH8?2nHqwNZ2`q M0xwpp06YQU29m`G6#xJL delta 489 zcmVvz0ctH{ri82JV)h!fExy9nCyS?=e|!EJbjb< z;(UI5_(a3M=ZyM3|1@One9{t1lciQlus?FI1%jOO_UfM74O z8W#^k1+-rk`IWL52h3 zJxP#IC{^Hm!oF4+2hx9;2M5F>lLv@TcrY-0ej^t+gzCf}oW%1LKfC7v^T?mhI$qd0 z{$LZY4U@5tjsxdq5uWk?(r|qIyz~4`zWNWJ-#@p3zuiIe|M&kO{kyO_Fdz7Q0zY`C zgX4kxy)ir_vh7t4+6VfmN?;^FzA!{;OF`M&-zFc5UW fJP_}JEM_42utEF~90$}tP%;^F4boFjxIaJ+2S5An diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_14.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_14.bm index 10cd983f920bc54733d632b04b069bdc4d0d7a52..999e6b95a69a8cf23397fd53ed653efbf290b519 100644 GIT binary patch delta 489 zcmVvz0ctH{ri82JV)h!fExy9nCyS?=e|!EJbjb< z;(UI5_(a3M=ZyM3|1@One9{t1lciQlus?FI1%jOO_UfM74O z8W#^k1+-rk`IWL52h3 zJxP#IC{^Hm!oF4+2hx9;2M5F>lLv@TcrY-0ej^t+gzCf}oW%1LKfC7v^T?mhI$qd0 z{$LZY4U@5tjsxdq5uWk?(r|qIyz~4`zWNWJ-#@p3zuiIe|M&kO{kyO_Fdz7Q0zY`C zgX4kxy)ir_vh7t4+6VfmN?;^FzA!{;OF`M&-zFc5UW fJP_}JEM_42utEF~90$}tP%;^F4boFjxIaJ+_vriP delta 514 zcmV+d0{#8n1oi|20RVE51Au=Z@&ALz#t%E-Ja_-_dHKQP@ceth<3EmXf#dJYgU5RZ z_!Klw9`U%n6@M<4$Io`1eS4;&mm zGjH_M`Rn7~|C1lb%pM`}zsRrnY(J-iKac6YAn_lS{sBAl@I0NJz5jpN;|Gtje|%4l zPJ2N3ck=&rp#0C{eZDWpqXhT;`~7=;bN&xVb^d|E%6xnLdHrC%An}~vAkYg0g9Y&6 z@M84~;=Ft@m;eA|5e^6tcoEouD1Zqxglu3S@rQ%rxg>CkvE(0gz@5MQJM-^Q^Q z-@&AVN4^-o-1Hvy350S5FyLL{|G;}(FA@lM10SNF!<2#mMkwAVP!IH%{|SKu*YWwl z`QSIG|9TJ)X~fTse1qdDdCSZY9((;e@( z|C@#ZxRK1k?SQxc0p>{d;|L{trlX{(-{Ee0%(P{b0Tz@tofv&b%7 delta 453 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 diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_18.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_18.bm index 9268dc2392d204ada1369ea967485de968dd79d6..d7c90fc267822392810bc15dcbdae750cf314374 100644 GIT binary patch delta 588 zcmV-S0<-;u1?dC>0RUx@11f(OJ_z^>bHMS3|G&`wd_Md)AB6q^z|Zl)$-sf8g=)gU)#w^lpFP^Yeqp;rRE@Z<7mQ1YrLB$UJwje}}`_9sYlO^cetoV1NGo z?0#W@O%L-or;B_6!BSh`EYwXfB*N#`@{OD_sNtOr9c1u`{45X{@{MQ?eawe zh)4h5KK@_-egA{U)DM3c6o%+TACG?y4_4-vk-6~_aT7z=)u9|yx7CR?p}o6L*cpyl^z7& zj~=)PIGmaOG8}mf2LTAvgX8(fl7q+5*J2O>a(;O<2Z8D4JqQ4p42Ewj0N`8y1^1wT zvv!bp&+h>D&~89|G4UYB!SP_+cgI7(hkg(5ApCSeN8*eShr`;ADUgu@4961Hc3eiY-+D delta 615 zcmV-t0+{{j1cU_x0RVuJ11f(QJ_z_cbHMS3|G&`wco0Nm@Sngq8U8ptfB)}){y+W> z599t45PAR#eh(Y}<9`DOo_rqPkM47y_s{#m<|!Hcd!fUz;xYg5dHwz%@t*gv@cCK5 zLF4}ikBlC9$>iq~{|BF(9zPGqzI(jzSo47K_vS(4y@UKd9?0(U14e(#1Iq*d_wQr# z3<79pkX}Sj;13=MJZJa(1pmPgzE5%$kH9>5;PU@?czy^xGmC)ae*x?G`NjM&|70Em z=>OxzGT9?swY{qg?r-l_g_A!71R|NnmYJih<9AFlhn^5HzL zLHYOc|NHO%_W|`^XOVxHCpsVe`1kPO@&8_6eyPp!Co#@J?jH^u1Rgie#0SM0fMlo> zhyVe-90(i(ftSEu0q+Qo1I7WfgTg`Y5XFPbof-$mLkbTpd3&$h>j|aYj(K>)WhX4F$#e(!B9}oOI z@Ct{+bUzvV`3Nod(d&=nkB6NE9{hO-tY`7)fIa`5X)Ff;51vQ??~}91pgagY@E+@- z%;i9XAC5`^?Lb?#d+@zH^g$N%Ai zm){Zb2aE%sF%k#?tI-g7e(x|qd+BO0ad^Q$g+c%?{?QIEkTt*s*fkFVeh;7rfC%1H BJgoo# diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_19.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_19.bm index 20493b32146750fa95a6033d711fb596729c2ffd..20a15ba8ff48625436b7b3c2e76ad5f0f2c54738 100644 GIT binary patch literal 702 zcmV;v0zv%&0J;JIcmu#50PqKZJOSVj0C)l*!0o_6z-12skHQ8DNQNJe0lt1A@Q4Ta z7(NL2JafSDhyTCO{&)~XWALBAI2rypJb(Z1fBrxIj6gph@Q{Ph08{()O8@xZz`^IA z2c-Lt|M=%Q|9t z@$ccmf2aWUb0r5s)5=s=(003`C0tN&ccUC0;|2~8OaERbM zvy}lDz(dJEh+@IzsESR2?I6fuLFJgCUmzb4fYAXX5S()Z1!Td(AQ2ESgUS)q)rZQ- z0)&IdIWd$;qp*!uVh#@;Xrau6{N5S!E+;_)Az=wVh1B2o|An~w4 k_y+L+HF_csFl&GZOHl?7fFED`L^v5B1MEY=`T+0&0MaX6=l}o! literal 782 zcmV+p1M&O;015+`a3?Upeb_h?xr71&51$8yb`2PaK6oBG{09Lc2iMR40Kiy5^XU8k z;5-2Rem~&x^H4$cfB(S#lra7I;Q#P_@BQ`h2!aX>4`1j1o-_Mjv z0T9FS;5X02J`n()_v8Qnye0vj2aG@c{)hA7^Zs=I@%)VNGyHIP|Nq|q{C&+S2b=<7IN$gF`Tux4(Stva@C}3i-~Ykq_xOXxd)&jB2l+n- zkNh4!FnQ)DlbA=~9)56m{68M~?#IDnjswTvnFo&c5AgVVBf2;Z8Y~Yi5C7l2kIXP0 z2>b#I$cf+qgTVm|{{MiV_!uKS$VNB;@#BNb{o&#G8l%O)LIR=>Psh$L;fI7q0|@wI z#o~e;|HtQl@S}yqFwfy|dpm#s_s9FgdZ+jZg^CD29j${N# zR48`<9^Fk?e2HTU;9J4#s?0Zsfq%Y1-QxlWr$!DB90vab2PcS}fCVYA!Gq(x|Ahn| z+y8^Ga5)eE{sG?yt5iYb!GwSGE3pv>0Qz;fOasS1-$?Kv_V;<>A~B?ABmN)wy?hfm z>;mz~|Kt83_Rv}7dECc^&hd?8SA>eSu?EvgU M;2jD0Er1>XVAw;4SpWb4 diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_20.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_20.bm index 9268dc2392d204ada1369ea967485de968dd79d6..13c97c09b0f7a3e680c3a5888c54724fa272cfae 100644 GIT binary patch delta 673 zcmV;S0$%-u1-%6W0RXv?11f(OJ_z^>bHMS3|G&`wd_Md)AB6q^z|Zl)$-sf8g=)gU)#w^lpFP^Yeqp;rRE@Z<7mQ1YrLB$UJwje}}`_9sYlO^cetoV1NGo z?0#W@O%L-or;B_6!BSh`EYwXfB*N#`@{OD_sNtOr9c1u`{45X{@{MQ?eawe zh)4h5KK@_-egA{U)DM3c6o%+TACG?y4H4=99EfDb5zg7gI+&HOqr8H5-fbq|K< z9#nV`JZc?Vh&+F?9zAdraXB;iz;YEzP(1kZ7!Cpvrw5ck9-q!Ulpa2gyAVO`lk>@- zJP%JX=pgdB1IH1N&E;Sm3xD9gNA#qBvv!bp&+h>D)NXw-_yz(#4~s_QzB(QRJMe!X zdP+YX5P0|@-v}%N{r> z599t45PAR#eh(Y}<9`DOo_rqPkM47y_s{#m<|!Hcd!fUz;xYg5dHwz%@t*gv@cCK5 zLF4}ikBlC9$>iq~{|BF(9zPGqzI(jzSo47K_vS(4y@UKd9?0(U14e(#1Iq*d_wQr# z3<79pkX}Sj;13=MJZJa(1pmPgzE5%$kH9>5;PU@?czy^xGmC)ae*x?G`NjM&|70Em z=>OxzGT9?swY{qg?r-l_g_A!71R|NnmYJih<9AFlhn^5HzL zLHYOc|NHO%_W|`^XOVxHCpsVe`1kPO@&8_6eyPp!Co#@J?jH^u1Rgie#0SM0fMlo> zhyVe-90(i(ftSEu0q+Qo1I7WfgTg`Y5XFPbof-$mLkbTpd3&$h>j|aYj(K>)WhX4F$#e(!B9}oOI z@Ct{+bUzvV`3Nod(d&=nkB6NE9{hO-tY`7)fIa`5X)Ff;51vQ??~}91pgagY@E+@- z%;i9XAC5`^?Lb?#d+@zH^g$N%Ai zm){Zb2aE%sF%k#?tI-g7e(x|qd+BO0ad^Q$g+c%?{?QIEkTt*s*fkFVeh;7rfCzU6 BJc0lK diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_21.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_21.bm index 75a32c516f886686032ef1fed5437c63a1a51e1c..9268dc2392d204ada1369ea967485de968dd79d6 100644 GIT binary patch literal 644 zcmV-~0(<=d0DuAjcmu#50PqKZJOSVj0C)l*!0o_6z-12skHQ8DNQNJe0lt1A@Q4Ta z7(NL2JafSDhyTCO{&)~XWALBAI2rypJb(Z1fBrxI4iDr05)gU-3Vsh8|KooH2cCQ$ z-;eHdpZCxE!R9F${ClCpvEniR@Ol0IAn~5}u<-d=z(M2x2ak*%dCBDG6aNRFoE|?9 z$G&^K@L2PJ@%QFI5;PU@?czy^xGmC)ae*x?G`NjM&|70Em=>OxzGT z9?swY{qg?r-l_g_A!71R|NnmYJih<9AFlhn^5HzLLHYOc|NHO%_W|`^XOWmEIv@P_ z_weBH|6X8zsm<~yG0s8m9}XM@9yiX!2gMnHWT+E}00F%m2pj`}m%v^D?+A_q#sRZ~ z!a?s4#e>V88VANh3J)ygiWCod$1(yWDik;#{Y_YWr|_}}k#;K4hkFw z{{jz*O@<5~9q0TX8~=l_a2XH({2uL52af^~|InF80G&G8D0~zB^o$<t5U@T6xW z;P>!MProdh2I zc?hg$@#ug(|D0(o2LTVBNCEGYv&o=52tDu~>!Hl$K!YESN&)Razh>l>BzVLAO+f%GgYnUUkH`Pvf|uVB@du0ppD_{$0jtpvd4BIOKzr$G eFmZUnKZQa7FaFUEFOW6B1=uwY0)7vm2Y?7dM@LKm literal 788 zcmV+v1MB<&01yM1a3?Upeb_h?xr71&51$8yb`2PaK6oBG{09Lc2iMR40Kiy5^XU8k z;5-2Rem~&x^H4$cfB(S#lra7I;Q#P_@BQ`h2!aX>4`1j1o-_Mjv z0T9FS;5X02J`n()_v8Qnye0vj2aG@c{)hA7^Zs=I@%)VNGyHIP|Nq|q{C&+S2b=<7IN$gF`Tux4(Si>sBm@7y|AWu(@du3dc>snW#(obU z_&j`I^W1;piZKVDoE|?9$G&?pfXTt-@63b8dk6S@J(1ZQ3WyIp5C7l2kIXP02>b*6 zgjA~aw8;AhyYEfU^57H{t>_-2mwEwX)FdI2L8ec;tyP%o=hkhKjs(k{*TiEkj&*^ z5Ile89}xdX!RJ7~X6+&2|L!3C1bXN|NjUVg1$aW2IId12aWh1KLhf}KOGS` zz;53NFTs4U3`fKeFnhm(7yL&o0=*FjjQ)3khyR1^rKpYu|2u$iBH-nKf9(+H1@eCY S@NmWL0PI8H7XVWLJOJR)aDr(7 diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_22.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_22.bm index 00c94f05ae0a9fef772328a7e5ed13cf86c69ea1..20493b32146750fa95a6033d711fb596729c2ffd 100644 GIT binary patch literal 782 zcmV+p1M&O;015+`a3?Upeb_h?xr71&51$8yb`2PaK6oBG{09Lc2iMR40Kiy5^XU8k z;5-2Rem~&x^H4$cfB(S#lra7I;Q#P_@BQ`h2!aX>4`1j1o-_Mjv z0T9FS;5X02J`n()_v8Qnye0vj2aG@c{)hA7^Zs=I@%)VNGyHIP|Nq|q{C&+S2b=<7IN$gF`Tux4(Stva@C}3i-~Ykq_xOXxd)&jB2l+n- zkNh4!FnQ)DlbA=~9)56m{68M~?#IDnjswTvnFo&c5AgVVBf2;Z8Y~Yi5C7l2kIXP0 z2>b#I$cf+qgTVm|{{MiV_!uKS$VNB;@#BNb{o&#G8l%O)LIR=>Psh$L;fI7q0|@wI z#o~e;|HtQl@S}yqFwfy|dpm#s_s9FgdZ+jZg^CD29j${N# zR48`<9^Fk?e2HTU;9J4#s?0Zsfq%Y1-QxlWr$!DB90vab2PcS}fCVYA!Gq(x|Ahn| z+y8^Ga5)eE{sG?yt5iYb!GwSGE3pv>0Qz;fOasS1-$?Kv_V;<>A~B?ABmN)wy?hfm z>;mz~|Kt83_Rv}7dECc^&hd?8SA>eSu?EvgU M;2jD0Er1>XVAw;4SpWb4 literal 631 zcmV--0*L(q0CNHWcmu#50PqKZJOSVj0C)l*!0o_6z-12skHQ8DNQNJe0lt1A@Q4Ta z7(NL2JafSDhyTCO{&)~XWALBAI2rypJb(Z1fBrxI4iDr05)gU-3Vsh8|KooH2cCQ$ zz5kE*InVp&{owNyjQ;)q;@|NY|M)!q{}6c3XV3^_{NNz*|AWWI4?XApDZl@N&(04Y zhvVNpo&y?;IjBx385ljo;lqG~#`)NQ_@gq71Og=h05_w71Au)t@CdLy;Ss=i(IqrE zNIl{huz2X99N0iT@)%Hf;GrKNbHFDY$P5C7HoybpsjCl-ir?G{2m!TOh&%$N@9=}; zqX!3%E1mxb#HParfK#}i`QSbG{{v9cv0M6BJ=&rV8ALx$500H}G(L!?nwk%Pcb*~- zAE$nj4}S#CIu9SjetZvo1)_BT=zcHh_=s39Kr!FtPw`OrZkl6Vm%y9xqt^t-KOcev ziq~{|BF(9zPGqzI(jzSo47K_vS(4y@UKd9?0(U14hdO%LD)S?_=`} z0%&KDUPMpe4;~0SXZQRB|G^KwPjVHHz&v>1^8a{veh54>i-6>R0qcMG`NjM&|70Em z=>OxzGT9?swY{qg?r-l_g_A!71R|NnmYJih<9AFlhn^5HzL zLHYOc|NHO%_W|`^XOWmEIv@P__weBH|6X8zsm<~yG0s8m9}XM@9yiX!2gMnHWT+E} z00F%m2pj`}m%v^D?+Aa61I7WfgTg`Y5XFPbof-$mLkbTp! BBbWdH delta 547 zcmV+;0^I$C1@r_10RV83173f<|Nr+n&->^7;PVuW{{8>p-|-m#_&omq5O~jT*Z4&I z;2`n;gU7}XI3>aXzyE{J&JQ1lD7p@!rAy9}i@9NjRnh&jbJW?_=`} z0%&QR2(1^8a{veh591VM_mh0qcMG`NjM&_=N){ z{{Q2};$$8F$LD|W$J`^L{9nt1+1sgy$NR&2r|?b%3*$fk{rlkZ`~Kj5yX*=9L-@G| z=ikf!@4x@t2i1Lmz%WEX{(O7*aCrZ(Fh5l1{{h0_p!W}l4gwDw=VAlmjMOk12qXXi z-i`zg0VsfI3_<{CL~wr|FibUqA`f_mEFL&Y4MHXle1;SrHYtQkDi3+bFxopQd`1!v zex|HGF|2l^pBk*h9s!o8>Os!{=)u9`^0xGW@hPyupcf4GEFT;Hfar1&{4hQmq7NU0 z`-BgUoov)P5A_5e9`8D+zp`+AcqVb!1_QYt2gZWYIsy$I91nkpg@W`18XUkM6%U5! zUNSxaJ~A3TbOV7SfHedj{CNxqzz-M@J^!3(C_GKV4~(6jO#%3S;BZiLU@{q;s=Qv`0}=5DkKp1Y l_kdTTAn}9)#vT_BeJw;(A@X=f{?O|@06ricfm8rI0RTq=3~m4b diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_24.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_24.bm index 6ffc39466f6542a6b58bd0d002e44c8d1c5ae62f..75a32c516f886686032ef1fed5437c63a1a51e1c 100644 GIT binary patch literal 788 zcmV+v1MB<&01yM1a3?Upeb_h?xr71&51$8yb`2PaK6oBG{09Lc2iMR40Kiy5^XU8k z;5-2Rem~&x^H4$cfB(S#lra7I;Q#P_@BQ`h2!aX>4`1j1o-_Mjv z0T9FS;5X02J`n()_v8Qnye0vj2aG@c{)hA7^Zs=I@%)VNGyHIP|Nq|q{C&+S2b=<7IN$gF`Tux4(Si>sBm@7y|AWu(@du3dc>snW#(obU z_&j`I^W1;piZKVDoE|?9$G&?pfXTt-@63b8dk6S@J(1ZQ3WyIp5C7l2kIXP02>b*6 zgjA~aw8;AhyYEfU^57H{t>_-2mwEwX)FdI2L8ec;tyP%o=hkhKjs(k{*TiEkj&*^ z5Ile89}xdX!RJ7~X6+&2|L!3C1bXN|NjUVg1$aW2IId12aWh1KLhf}KOGS` zz;53NFTs4U3`fKeFnhm(7yL&o0=*FjjQ)3khyR1^rKpYu|2u$iBH-nKf9(+H1@eCY S@NmWL0PI8H7XVWLJOJR)aDr(7 literal 710 zcmV;%0y+Hw0Kx(Qcmu#50PqKZJOSVj0C)l*!0o_6z-12skHQ8DNQNJe0lt1A@Q4Ta z7(NL2JafSDhyTCO{&)~XWALBAI2rypJb(Z1fBrxI4iDr05)gU-3Vsh8|KooH2cCQ$ zz5oCBInVp&{owNyjQ;)q;NS5W|M)!q{}6c3Z`b%l{NNz*|AWWI4?EyIcmMEt`N8Ax z{CmOU0Eusbh(t?}N+l`+@rJvPg!D;UE9}`}u$U_y7BV`meDIB@xm;?~i{D z4_B``ng@oVAb?Mx00i`KAaD%^Ljgz1f8h`ydBP)r z^6)_^E@6j*(jkinj6*>jsQ4%Q@Oor0pz@GPJYNa?@(vF<$1(yl86_e`|Bv_s0stAYxc zr2-y;(K-i=h#xTv1?UhyGHC1INLK2aA1h84S)<20jja1APBl1^YK?fLJ0I@c7T_0})3S z=hGh#j81+78U64+b`8gUHa`e_yaqG)`jF%wj)<6c5PJLr@&C=O6A|$Tj^YMQ7$^N) skP7rf9zBQ;@DMZQdg*E;VF!pHm`(q*0tfI9HEIA0u@3{Q$p9VzQ1eAyPyhe` diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_25.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_25.bm index 2bd22fd43ecd3db9513af1c789f76af1e3bf47a8..00c94f05ae0a9fef772328a7e5ed13cf86c69ea1 100644 GIT binary patch delta 548 zcmV+<0^9xL1@{C40RVH617LrT_c_n|=l$UG6pa4;|Ki{A82|V@{{Iko&u7pGWc=VD z@&ALz#t%K`{wcrzgU`+nABW@LJ)S^h``~!{^C0ow!Tui)WOn%iq65zZ|M%}>^9%xL zZ=dWW```~A2s~%^`~?5O4~{|bYjFpU93Efq4-dfy=0YH!-{3ueA2@%%h94w=Qa``^ zc)U!5zxe#`{uum1ank(X%Y)h5|Np)}-W%0FhHQ*ns$>GK~ZRB>(_7 zqk#i}eKzn2usz`sz<7VrB{VolJ>nR!c<7-V*g!q<7*KfNp&uY~z$YBY3<8BVzysr{ zs}GHe-`ola0kv6(JOZWf@Pp%{2M3QUo&N{Kro#q+Q@Ee`;63;M15nbjTl!c%+M*8` zL_basj-72ZK8U88nh$?>o+1w)r+$(Te+14t4mIzX0*$gUkKl;rJl;&-{!1{0Fb&=NEtQ!{?AHIvjE0 z@iGqoYvjg84r~I|M%~M%kTSv`tPzxhKu0jAD@3O z|GxkKa359nA!MRDNBQyZ;lbnnyukfapTrLnn1kFt9ry@5Z=Hw_iZej))Fco90MCGB z0Q7Jma191S0Y?OmQ~!SmfdNJl90!+z2}uNtpkd(hh+@Ix5YR^|Ad&D-_u%r#VL{~} zlz4$7@So2h;8C1&AR{r7QY1i8{>S_Qp@4NYU_pdbvKkO5&)^&Y`D%|N0K{T&9SASO z{{g@Q%cBPZ4dMa+m%#s@@esj*<0-I#20V)eAqFvsL+Hk#h(Is^ z@@j}Yu^-{!s|*w{4xMfj0OVr<1P^a_o+AL%VxWNa02hL19XE{)P(k+4S|>p9kpt!- zV7&o{#!WzaR6ZM^nEm0y_{eDWz%l;J0VIE1haN)#&|PRK0Z*E|znp0-2Z7w* z`7_HWXOjcR!H0hY52OAs5P0A+8JwyNd>rxlZ{O!Yzh><)3j{*`4=?Qgz%d;L=hGh# zj81;3IsEWGHVwypHa`e_ydGZ({`?d&5647EI|w~|9$%0AEo@kih&*=?J@7oBpZBTP rq9F0?K!1v(p8*d`Q6dODS4hN9{h$m#fO@M)09}ZCY2F2l0Pp~S2+&Ai diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_26.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_26.bm index 81cf34ff556a1ec36e751a7f0616fe328beef96d..c56e9119d5602a9061ee075dc36d88c99484defd 100644 GIT binary patch delta 505 zcmV9tb>V_xuF^!4Jkm-hP_{4n^1110|d5+zyI6^)qQ}#FhoKAe0%tCc>k|3KUC-c0m9&*_Ya2-0uLMK zVgurg)G!(dBme;3jsy+?D1c}TLI7w)a2_yBHG(1!c!n$eZzvT%HOCUMvX1Gygu#)8p00u3G<4~T_= z^aL6lz#kP4hUi{0J^(&48a;Fafg^x51Rnf(3pTEHARU2J06YNzW&rNX delta 600 zcmV-e0;m1-1kwcq0RYaC1BZV*;5>K#@Ok;cYvjg84rJy|Nr;zgUj#x zf%@;VNQR5xjsDsbJ zKi|Nz7*KggB_1Go{3n0&h&EQW*%AOWAiI1qhN zVp z&{`)z@sR`OAz-}$2gXfcc~m|dqd5KH!}!Q(^}sRy%mHYBJck}b0nlA&C;?Bm^Nl5d z@H{vm@%!{jqLR2cX<rYaRc82(h2{2jd~&v m9>fRutXc2~bhQ{bJeQ2dFa4khKY)9|fMwW+w&DQxfChj)9xu88 diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_27.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_27.bm index 4b4b5c37f01aa489a3b57c4ac60cde2c6b45a59f..6ffc39466f6542a6b58bd0d002e44c8d1c5ae62f 100644 GIT binary patch delta 547 zcmV+;0^I$A1;zyf0RY001F(P0FbSc)c%f78fIN60@t@!D6aNH0`2>mIzX0*$gUkKl z;rJl;&-{!1{0Fb&=NIt9=a4Eo9C70DG7kUa^S}6G`N%CJ^?xo8XKtn+AMXw7pVJ{3 z50wA^_wR$t@B4xJ@3KgSi{T&t{QLQT{rCU-fcmeo3ndZKKktu!4iA4H_2viaoc4F*F2N6LTU5FmNNBY^VoK`Aa_hlA1~ ziwBHDK^&;~C;RYvWH6xekV-sX3H`v&0y7yUB1Qj?_yYm}E~cyuFp8E#LqC9U z1L>+fi~|vgz;r+G8~}ekIxuiB-XI_OfBZ}^V0p@HAYqV5BmQg1C}5!T-~1s4F^EIx zz>&ZM(W)Tw#D9mvnjm@f>u{I{BNz%mB73~?7zU#i1ZF4zyc0O-yl8Bt0v>|VItPr1 zA2ACB=ny_KX#?7!@ZAK*?+zcvLr1OwkM>{_6Z>R1@)!<+>p_42C&^x)&NP+-!0_Op zALaP7(1INLK2aA1h84S)<20jja1APBl1^YK?fLJ0I@c7T_0})3S=hGh#j81+7 z8U64+b`8gUHa`e_yaqG)`jF%wj)<6c5PJLr@&C=O6A|$Tj^YMQ7$^N)kP7rf9zBQ; l@DMZQdg*E;VFwq8Aec@6v;qh44>f843$YIatH}T!08sxQ0zCi# delta 478 zcmV<40U`dz1%d?w0RVoH1F(OC#WXk16e@l22ag0EGyC{Fq4&rnPW|`?j~pIf?~lXB z2flygU+>^Oe;+V-!{?AHIvjE0@iGqo;tvt{=ODC?)%>_Uow}HOVDa`(>5z%Z6e=crIL3N;@ z1wS9`j|0PkfMFNu_+OP?pTO{8!9ySyAAwFd5B*!g;OCFue*aP&ypF*Tzk}cVKj>rR z{s^4>9{vga^3NXlL*?N2_)qWqIF7;(UkAB>b9%Vm;s?G5yc7Qj^g_E3AL6zr!y$u% U#d|D~z(D^1`hzxT0B@TBI8#gKg#Z8m diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_28.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_28.bm index 9e7f4c5234d61a7ad7ffd045cbf5606d1828bb53..2bd22fd43ecd3db9513af1c789f76af1e3bf47a8 100644 GIT binary patch delta 576 zcmV-G0>Ayz1mgt*0RZ2T1F(P0FbSc)c%f78fIN60@t@!D6aNH0`2>mIzX0*$gUkKl z;rJl;&-{!1{0Fb&=NIt9=a4Eo9C70DG7kUa^S}6G`N%CJ^?xo8XKtn+AMXw7pVJ{3 z50wA^_wR$t@B4xJ@3KgSi{RuRpMNj^zW@JlA651tWTHAp`SI`J!Q+4ayukfapTrLn zn1kFt9ry@5Z=Hw_iZej))Fco90MCGB0Q7Jma191S0Y?OmQ~wBo0Y(uV2bY2gNd$|a zVc_zJV!`7O&_^mDk?>FV;PS{}LFFKnc!4AEpU)uRQJixiBQcUvBtTLA$NT}IfOR!s zL4;JY8W1SY;2Z$?YL9;-0K{T&9SASO{{g@Q%cBPZ4dMa+m%#s@@esj*<0-I#20aHV1~G_3=*FRlKrjIEYKT0sAK~Du3=}X9oo*8Vw*`7_HWXOjcR!G{D7qy8@tc;GS_oT?0b9P#;Y z-{(NTX6-Nw1Va7~FYNxnF&zfy(;p9vPJXF5{O~?D4aa>pKL~uh9$yLm{1h?|$3#dw z2t9lrUyuAPY*;jph&*=?J@7oBpZBTPq9F0?K!1v(p8*d`Q6dODS4hN9{h$m#fO@M) O09}ZCY2J(g@Bn~XeG-KL delta 430 zcmV;f0a5s1F(OC#WXk16e@l22ag0EGyC{Fq4&rnPW|`?j~pIf?~lXB z2flygU+>^Oe;+V-!{?AHIvjE0@iGqo;tvt{=ODC?)%>_Uow}HOVDa`(>5z9E3Rtgg$?b0x!5=YZ(kj_^Kxe01qP>2nN!Kbr_;a1M3k(9>4)H5+HtH zAs#YqgT^8EhXeB={g?w}{#pyI1$2q_@NhghAkrO60smi*!-3$#i=+JyfL=Tv4tPF3 z5V!c)A{X#{bU*MpuYx8t5rpvm{|J1%A3y(}hhYb=qbL8r^zI@cd*FOfJ{b51Vgvja Y&w>UICGB_sL-+^Xfwf=)hy(ZlK-IFx@&Et; diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_29.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_29.bm index f483cb0cdba01f8eb7e74c2708ce9af88a326582..81cf34ff556a1ec36e751a7f0616fe328beef96d 100644 GIT binary patch delta 639 zcmV-_0)YL71kwcq0RYaC17Lsu_c_n|=l$UG6pa4;|KQ*882|V@{{Iko&u`cGMEu|& z@&ALz#t%E-Ja_-_dHKQP@ceth;{b_of#dJYgU5RZ_mIzX0*$gUkKl;rJl;&-{!1{0Fb&=NEtQ!{?AHIvjE0 z@iGqoYvjg84r~I|M%~M%kTSv`tPzxhKu0jAD@3O z|GxkKa359nA!MRDNBQyZ;lbnnyukfapTrLnn1kFt95@I(Z=Hw_iZej))Fco90ndO# z=-@!$8VrU4jt)Gh{tjsDsbJKi|Nz7*KggB_1Go z{3r8>JmZ-GfI=jci4YV(1O1QqAbm|(d|?$VhJ*?r0iVD)5PebPU>J-}1EB>M7ybi) zgY;nF@w`Ak^6>e4Kj1-wN^CG_1cE^y^M76=|Gb383%~e6AQ^uMgg%V|ACy7?fP%F| z9$1g?=vD|?9-VFz0OVr=VgP7IyU!7TYB5kid#J`|9XE{(dSUg@S|>p9kpt!-V7&nc z#!X;(R6ZM{IQ`+n_{eDWz%l;J0cd|bhaN)#&|PRK0Z+H{jU|BaJUAfn{TJtxv&n(u z;KPH>z9R9%)^V{4NEE_=CrB1K$JE3IBVIdLj=V#0U7SS?~ySwHP=& ZmyE_Q{h$axfP2A!W!Q(d;sEx527r3?OL71J delta 434 zcmV;j0ZsnW1%?Cz0RRG#17LrT_c_n|=l$UG6pa4;|Ki{A82|V@{{Iko&u7pGWc=VD z@&ALz#t%K`{wcrzgU`+nABW@LJ)S^h``~!{^C0ow!Tui)WOn%iq65zZ|M%}>;PFij z^ZkUMd;#OZ2aNvy4=8+c4})8XJb2*p|9pNPI6pEG1pfa4>-hPD#vgwqfKord{CK=f zgTMHL#C|ae$4m2nE)QpK|Ni*F4E$f!`4HdbQTG7IS7q=Zebh7Y z^tk{gVGh5)**>udH}oFM^T2=L5P!@pU0>)1Kl2ZN*w}Xvbaf_!$KY?s1^6G=Z-f*Z cSO^8*z+buq0(XEf*Z^l>+yD&xAHWX)aGs3j2LJ#7 diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_30.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_30.bm index 29fe3464d2fa989ccf07ab01424e24fa3398ee76..4b4b5c37f01aa489a3b57c4ac60cde2c6b45a59f 100644 GIT binary patch delta 562 zcmV-20?qxo1A+wv0RVmikpx|Tz5oCBInVp&{owNyjQ;)q;NS5W|M)!q{}6c3Z`b%l z{NNz*|AWWI4?EyIcmMEt`N8Ax{CmOU0Eusb_Uow}HOVDa`(>5zt#>h}N-BcsU1LIKkN^m=s|s31Ont`}@Y4g?RVM}H9_ z2j63x2=S{}0F#b9L+=g;*F#^B{>%Z6e=crIL3N;@1wS9`j|0PkfMFNu_+OP?pTO{8 z!9ySyAAwFd5B*!g;OCFue*YZ2j=>PWgWvl<=wsym2%P*L{t5l^&mQ2@DPw)FU zj=~RL2f2WAdbr*t;s?G5yc7Qj^g_E3AL6zr!y$u%#d|D~z(D^1`hzxT0B@TBI9FXB A`Tzg` delta 359 zcmV-t0hs=R1-SzR0RXiDkpx|TpU(gP`<&lrU;|HCT9y|Z|JpADC_AK~!!M{+a!_&o4G|9D$Bqv#_s8MmgVbizZ};#XzmJ%IJYo7P#EA|# z@pzdBfAI&1{CJl*2k!n{9?soNJ}`LuC-R>s2j@Tk{rlkZ`~1)2eT8yA{}&+q`}u$U z_x=w)6h{7JALqxvhX;v#LE|~lNuUeixO_Np5P07ef2aWMwJ{Zjd!%&bw01x1S;4~Qw1sojo56(Zq zpzuK{Aosu`N5K%#M=B!tGmowzAe4B4@&Doe;Sx$jiUJO9hyDZpgjBK`7#Kai0D=Bu zF*pu{6kPH62jcJr8F+ku;D90Ef2ZgXkVqr`Vfg+HA^9E3Rtgg%V|FSuZ984O4G zswW5l4k&g9zyUE5AbwyW9x`o%#v%8I1M?yMm;+?~S_`cObcy!x za6C95(j7|y|6h;8f#Ac7qx}znUOXNScs@Q5xA@p17w~*^Kkzv`uYx8t5rpvm{|J1% zA3y(}hhYb=qbL8r^zI;g;CxU%82ATb1N;}yf(8#I?RWq~_y^sAwO|5>1NZks+ILBFofz`@a0f$M4THAFpQrQDZyt{*!AxR;R6Kb2ad!RwhOd8W4nC5X{?o~4@v&kid;LfD zjz8-^@ZbHj!*=ej88rzXzxluK{P^?y|NnJAZ1(*({&7FQ`{R$D?9cC?{{Mb|_=hUz z_0ODseE;y^qke}?y7>tc#u{_}c0MM4=|_8N3}-MfACP1Cz}{fP_<*0Gf>=%i0EP{6 A-2eap diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_32.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_32.bm index f655e7de380108ee4750ebe6091736d65e3624ad..f483cb0cdba01f8eb7e74c2708ce9af88a326582 100644 GIT binary patch delta 435 zcmV;k0Zjgo1BL_y0RRF5kpy3VkM}vx`{(`O^AwE!{r}?M@fiR3JpTU>c+Y3h2xR== zAo2f$$Hosm=l&_b|AWuY4k z4fFkkpL_x1!3T`~{tqa8au0)Bh&*`U^8b8(9ymWT5d{AK0qgkrgT^0!B!E&szx;T- zOoPApgT#I@3CBzGe=ZMaZ~y-I!Qh(t?}N+l^FNLD;Q^F+9E0=k<^T8J z_&oHK3`Zg#{P_3q;PEerJZCit#RDS;xO_Np5P07ewr+E*Z_6(ELQ&H1Rq}tm%qXfzyB+p{|CGf1UwJ*JBk0E z15@$;03Lpoir>=87bu76!TIQlX{n(6`giFd{QO7f$qf8o)%g(LCSeZ0zu7*q2siW|%k#j0;1GYzEL~sd20!x;f7sY}5Oj4WgU8@+$OZTx*KdRr d8(0Vh-@sqG1Oj(}FW3NQVB7!<{2#y%0B|vI<;DO2 delta 316 zcmY++F-rnb007{-6yD}5Y6t|atxZBnqmzSd?mEiH}T@@1T-4kynQ_%mlzVUx}7&tQhWmkRcbAssI>BG_zR z>c(Hm4n-@NsjVltg@glU9$K1V(u8J+#dz8nzNoDPAaeLj|FCT+K&Ic9)W?AMT%9IO zP;z=!)8JgR{KaUE!-m?KVIrX(zEo$hI zesBpat7a;um`G5WQ z{trGBM*d_U=f}T?2Z?+^<2letpbO!+d^m6rc;6M{;f%l~FaQS3LEA%-gZG;R2kpx6 z584EPAF{}ZKW;YQe*aqX1Iq`Npc@zmz<>t*<$#Owxk?A^U?1Ecaer_7^M6sr`*Zw2 z!TIEf3-`dk?g&1<3G(5?*ZYHmi}wz0*asXPsPPZ?_#fBce_j>ZgBTLOpuqj$BlrQ} E52WzKDF6Tf delta 355 zcmV-p0i6E11GWPL0RXa*173f<|Nr+n&->^7;PVuW{{8>p-|-m#_&omq5O~jT*Z4&I z;2`n;gU7}XJK#Kb|L}SF!Q=4!d%@#Bj&FhE@63b8dk6S@J(1t!{{9a<5C7l2kAuZD zKgqoMeeeg51Rf!Q2b4egGmc-s0P*94%l+~Ac;Mmjn}5H6_56In;vat-{D}@Y@pzdB zfAI&1{IBp2-Tb&cow}HOVDa`(?}_pG&;S2^_&mPdPA?~ zLiqRa;PEerJZCq^Gy!}!4~Gr{4;$jVd@+~+1Hc{t@CSeneTMx0{PsA&Kf&?C!$Wuz z4`g^B;P`=y#2z-t*gsdn^#S37#GhdQ2kiR!{NQ*I_7C6(fII=<0q|Mp>oNKKd~k4o zgWADh;rpSnxwWuf;Qv01|7~sk{rqq+e~af0Z6D}A!T*Nr#wOmw{R8j;;12+J0syyC B(X#*m diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_34.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_34.bm index 7d2de11d958894ae36d253b735ec08f45c1c635c..c28ea59e0e933e1b151623c6d4fcb93a6a11862b 100644 GIT binary patch delta 284 zcmV+%0ptFx1D68>0RWSc18g1t|KQ*882|V@{{Iko&u$m^MEu|&@&ALz#t%EVk&GRG znFK-Sf&csWvG91Nhx0d|Prd;0;Df|4Ao7R*CUML6;2u11d4Ik?4;&x;|C@imfc5-* z!Q&5y;3PO^aDOMd0G{Xqd!PyKfG4^E0SEX$fF1zw2Y@_y(4XG` delta 306 zcmV-20nPrG1FQoB0RX6x18g1r|KQ*882|V@{{Iko&u`cGMEu|&@&ALz#t%E-k&GRG zdPA?~LiqRa;PEerJZCq5$TR_bHxGvn0uLMFynHd300Y1t0PqKZJOSVj z0C)qy9suwMfII=<1D|2PKfgVWFc0v2aPZLH1jE@L2lzf9V(|x!vNjL!eL#3%@h8|n z!TUbGe>ffleS`P`;12+J0DKmC`pkZR9~>MX;P$XsIDY7CZf$HAxIfRMKigXce}8`* E4A_#Ni~s-t diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_35.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_35.bm index 465b46fe590312bbb77e0712394625823e8beedc..41cb9fb8e0125359be5c4d2623ef7e48ca7e437d 100644 GIT binary patch delta 422 zcmV;X0a^Zw1BC=R9zXDS_`&CV|NQsg z@Ok;c%#@8I%> z|1){?0E5Sl4=?w};p2n^JB4 z=ds2C=Vu4>+#Y;9G&g~NF!o1*=ktey_7eyPlnh=V@wP_6=i!Be^gtl=fbhZMPfz?X zet`JD!GZd}N%iyj!0;c{et`Jr|9I>B&-4AaFn<4IAp4K;{)XcKM|O{Tf&=gOPxiq< z_muy7L-~f=Uem?^h*Sb_o-lo8lg0py1`m)9xC88Mfc$~*B!K)GpTH(S{P1Dd*#L*$ Q7uf*(K;Yo~fPatK0OZv1T>t<8 delta 299 zcmZo=>1JkOWN2rc$dXbL-+cTSzx4x~^8X(y ze;$1N;ZOC!$M${sjgQ}-X+B=f{-efr;{7N8{_)%J|G&Stzxk+%{mDJQYCo{|v&bnn zvQM%9Y1|jTpW)-<=F@*a{-}8H@Z;?I{S9CL)Es;yFa4*J&*EdnO!oSZ>>YpV*MH!@ z`)7yk++8zj5=lTEt>wehm`)~Z?et!4IA3NEf-#`8T{r(SC&g-8!{rLXj z!AJcLn{@LNCX6-a{Ox>9{L+v1)ELfSU_Kzn@PWO-hVcPELj`UQ!}A;Y=ii@C?qU8T mFC%ATV%})*&Ass-e}}{#$HzIn&41(rJI~zdz5IF}80xb?0W0f)BqTz>90~<2IJ?18 z>}?cI%-X8E2CxL24j+{U5!KypSBb~090xN+GvMsFDKTtojoC`jV3RgU(}D8lL1#Zy z9Y$*bPg{|(kmnNs6<_3o%lS8?|q$Ui=0br5h}uD4qjV8-YsA^{J{%c9nsVh_3m^= z*LIMRbqC4}6UpH&cZ%Zgx&|TIzok-?tQxU-KQ2e4Ot~AYA|*$I?hfPs7}c65qp_03 z(Y)I|!F)p^W>2xdan1vrcY~vzyj4zL|h4bX{HJYaDQ0KJ!q}2x_ z`J^Yb1f||Deh<#VJe&LlD*?4V2cJO-7F3Na9rJICxf3f{6_Ar^)h+C*9nB7;hhdsi Q=DqE?ZtN{r~^~ literal 0 HcmV?d00001 diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_37.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_37.bm new file mode 100644 index 0000000000000000000000000000000000000000..eb3d333c3c255692beee2fb6504f51d204cce358 GIT binary patch literal 549 zcmV+=0^0on03iYZcmu#50PqKZJOSVj0C)l*!0o_6z-12skHQ8DNQNJe0lt1A@Q4Ta z7(NL2JafSDhyTCO{&)~XWALBAI2rypJb(Z1fBrxI4iDr05)gU-3Vsh8|KooH2cCQ$ zz5oCBInVp&{owNyjQ;)q{NM2y|M)!q{}6c3Z`b%_@Zccv|AWWI4?E@m&%OVH&(04Y zhvVK49sk50Ui`>Bcd&nl!`U7FfB&1nd0>D3{p@@mDWU#d@6+#qJa{1SpWngd5B^NR zdHTS9e;*tlfe&9G nJ|q7En1BkwVB!0rvAMOf0q}#vf%yRbACUAj{k6CE_wm5MG~P0U literal 0 HcmV?d00001 diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_38.bm b/assets/resources/dolphin/Sasquach_RMCF_128x64/frame_38.bm new file mode 100644 index 0000000000000000000000000000000000000000..b063f4e1c86f0d7b0b4b7da94fe5bcd8dd24cff1 GIT binary patch literal 427 zcmV;c0aX400H*-}cmu#50PqKZJOSVj0C)l*!0o_6z-12skHQ8DNQNJe0lt1A@Q4Ta z7(NL2JafSDhyTCO{&)~XWALBAI2rypJb(Z1fBrxI4iDr05)gU-3Vsh8|KooH2cCQ$ zz5oCBInVp&{owNyjQ;=s;NS5W|M)!q{}6c3Z`b%l{NNz*|AWWI4{iVa9)56m{68M> zc+caT;CTDM;WJwU#k=cE7t literal 0 HcmV?d00001 diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/meta.txt b/assets/resources/dolphin/Sasquach_RMCF_128x64/meta.txt index 209a37b72..b6b3fdf3e 100644 --- a/assets/resources/dolphin/Sasquach_RMCF_128x64/meta.txt +++ b/assets/resources/dolphin/Sasquach_RMCF_128x64/meta.txt @@ -3,13 +3,13 @@ Version: 1 Width: 128 Height: 64 -Passive frames: 90 +Passive frames: 100 Active frames: 0 -Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 11 11 11 11 11 11 11 11 11 11 11 12 13 14 15 16 17 16 17 16 17 16 17 18 18 18 19 20 19 20 19 20 21 22 21 22 22 22 23 24 25 26 27 28 29 30 31 32 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 34 35 -Active cycles: 1 +Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 13 14 15 16 17 18 17 18 17 18 19 20 19 20 19 20 19 20 19 20 21 22 21 22 22 22 23 24 25 26 27 28 29 30 31 32 33 0 34 35 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 36 37 38 +Active cycles: 0 Frame rate: 4 Duration: 3600 -Active cooldown: 1 +Active cooldown: 0 Bubble slots: 1 @@ -20,4 +20,4 @@ Text: I Know \nKung Fu AlignH: Left AlignV: Top StartFrame: 14 -EndFrame: 20 \ No newline at end of file +EndFrame: 20 From 14e266439a3b8f26876c228bc928b06389ecf3f5 Mon Sep 17 00:00:00 2001 From: TalkingSasquach Date: Thu, 13 Oct 2022 09:26:08 -0400 Subject: [PATCH 2/4] New GUI Improvements --- applications/services/gui/gui.c | 42 +++++------------- .../Sasquach_Naruto.zip | Bin 31368 -> 0 bytes .../Sasquach_RMCF_128x64/Sasquach_RMCF.zip | Bin 28013 -> 0 bytes 3 files changed, 11 insertions(+), 31 deletions(-) delete mode 100644 assets/resources/dolphin/Sasquach_Narut0_128x64/Sasquach_Naruto.zip delete mode 100644 assets/resources/dolphin/Sasquach_RMCF_128x64/Sasquach_RMCF.zip diff --git a/applications/services/gui/gui.c b/applications/services/gui/gui.c index d782d2b3b..db080a5a0 100644 --- a/applications/services/gui/gui.c +++ b/applications/services/gui/gui.c @@ -102,23 +102,18 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) { gui->canvas, GUI_DISPLAY_WIDTH - 3 - right_used, GUI_STATUS_BAR_Y, - right_used + 3, + right_used + 2, GUI_STATUS_BAR_HEIGHT); canvas_set_color(gui->canvas, ColorBlack); canvas_draw_rframe( - gui->canvas, 0, 0, canvas_width(gui->canvas), canvas_height(gui->canvas), 1); + gui->canvas, 0, 0, canvas_width(gui->canvas), canvas_height(gui->canvas) - 1, 1); canvas_draw_line( gui->canvas, - canvas_width(gui->canvas) - 2, - 1, - canvas_width(gui->canvas) - 2, - canvas_height(gui->canvas) - 2); - canvas_draw_line( - gui->canvas, - 1, - canvas_height(gui->canvas) - 2, - canvas_width(gui->canvas) - 2, - canvas_height(gui->canvas) - 2); + canvas_width(gui->canvas) - 1, + 2, + canvas_width(gui->canvas) - 1, + canvas_height(gui->canvas) - 4); + } // Left side @@ -133,7 +128,8 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) { canvas_frame_set( gui->canvas, x - 1, - GUI_STATUS_BAR_Y + 1, + // SASQUACH SAYS : This is the white box behind the left bar, move it 64 to hide it + GUI_STATUS_BAR_Y + 64, width + 2, GUI_STATUS_BAR_WORKAREA_HEIGHT + 2); canvas_set_color(gui->canvas, ColorWhite); @@ -142,7 +138,8 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) { canvas_set_color(gui->canvas, ColorBlack); // ViewPort draw canvas_frame_set( - gui->canvas, x, GUI_STATUS_BAR_Y + 2, width, GUI_STATUS_BAR_WORKAREA_HEIGHT); + // SASQUACH SAYS : This is where you move the Icons for the left bar, 64 to hide it + gui->canvas, x, GUI_STATUS_BAR_Y + 64, width, GUI_STATUS_BAR_WORKAREA_HEIGHT); view_port_draw(view_port, gui->canvas); // Recalculate next position left_used += (width + 2); @@ -172,23 +169,6 @@ static void gui_redraw_status_bar(Gui* gui, bool need_attention) { x += (width + 2); } // Draw frame around icons on the left - if(left_used) { - canvas_frame_set(gui->canvas, 0, 0, left_used + 3, GUI_STATUS_BAR_HEIGHT); - canvas_draw_rframe( - gui->canvas, 0, 0, canvas_width(gui->canvas), canvas_height(gui->canvas), 1); - canvas_draw_line( - gui->canvas, - canvas_width(gui->canvas) - 2, - 1, - canvas_width(gui->canvas) - 2, - canvas_height(gui->canvas) - 2); - canvas_draw_line( - gui->canvas, - 1, - canvas_height(gui->canvas) - 2, - canvas_width(gui->canvas) - 2, - canvas_height(gui->canvas) - 2); - } } bool gui_redraw_window(Gui* gui) { diff --git a/assets/resources/dolphin/Sasquach_Narut0_128x64/Sasquach_Naruto.zip b/assets/resources/dolphin/Sasquach_Narut0_128x64/Sasquach_Naruto.zip deleted file mode 100644 index aee6efbfc1088af0a08873a01a5f0700683ef918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31368 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

DzM-p~-I6Rsal`DOSC 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%0ArOaofwFwRa?&ue;Q{GsHxVO3A_% zoWpHrcoy=Q)Uw{q`3DF_66Yg80^`UD1TGRf|5 zTlyjF=MyENDYXiubFVaiZ(1(aqtBG8Fsy`04(`@1VzXLjO~a5XK4)1)d4}mSUv4Db z%MbNbsLJovcF&>sv?eibQ0Gkf1mMKLypc8^?1oNM@jb9yr3<52qP6>2!fo3*K03}T zE5JRMRHQUMSp9EUuXC2P<&$*pmjI8|*ur5t6(*n@JeGHg!)u@;RY^cOvT@`nCc78E zFQE^Y9wgvdE~PpXlgST#^xgF`nRab_54V>K2s=*M6>dVOTK;uLd{t-%7?fnp;JqU* zaJT7_CCD?y0Yrg4QylKr zSoLN$Si!k?*uzYxao0$J+v|K5*X!hM3o23en;ASC;kue|=}n-=yaskvh|2!+~9r$LTJO4wIGhp1u=~z5PY9Mg&>OYoPlP@V8JK7G68On*ut&jE$k=IO)S) zob)c+N5h3A0w+Cn3cyKo_qD2b2VewF+Hao+C!O9o)sV0qBXH6hw+AO(t-#$o+Asnq zeM4OR0*lgOIa79h?#%!Y{k4q}IBDPBmZMh(;*d*Xw{p-40e`xpPzZ3+m>f2X%Qnun zsBmL}bzgBkN9<<9wz{T$t*g?xl;L$TCr4bD$T8e8D=kK44b+gZ;(EGGJiK5zBQV5; zl1lgKbY{2C>Wr5NoC(&g)Rs-NIh4_n>-Cq^W}`+ISvf!Do8@X8G>0;`;Vnj2^sZr! zc;pPU@vM{@<_D;=Iz2aPUI=BmG$@QBZV}f3uXFqq z$_5^nO|^fd*DX)(KgpEqKMpG04QCqa@T1lh+qa4NMoGUkI-ut=Zz>l-Y8!wh0oIW!8IrVQF`)!izS#_%}=UwKgPyKeB zr1{UntdoVGuJ()V;;h_WpZ9%s)Pf`bxjyiP=8M}|+DnD=&Neq}zPD!j_R61@yx3hA z>EyrBzJyg2IPIUTMVl|F;?KV}V{Oqqncrd~wYO-=3etHoc~1DWPfA!T;4R_TYOW1e z^?nrAT)Ay#%4cakKit@S+=(XS4{pLwxvyWg<(_$Z*>=%=a!mSjB=S^f@=1;0#|FQ6 zon zjwa6a7#AA$pHzrQm`?nTCQcU^7y2%6QX!%jIZJaiJw( z&zj_=5rx``LK8W!<3cpfq(VfgXrj$LK7)><3d$4Clw+N)f0s# z61B#K^5;w{MC|Jmg(kv%#)T3VOeXZC|3(vuBjY;1^C#7L(h8YKI~W)GZqcMdPh24r zQrF``a>1lRPx{d&MnA`egu+RMp0q+H#?8is0wj|PJ!yqZ48M#Eb)-xx^rRIs(R)8G z^g-IBLQh&D6FtG>LTS%UD)gikGSQ(pE<|2EsnC;F$V4mDxKRHKlL|d)g-mp3j0;u1 zGMUhm-u}ey@VJijZE%ysT#f7at(#2eN$-AQ<$PS{=gi4;p7iP`R`kYoieH~h z=SgpVVufK`N4RA&ohQBciFcfF9rBx#>HPVLvi_}l*h_i|@F diff --git a/assets/resources/dolphin/Sasquach_RMCF_128x64/Sasquach_RMCF.zip b/assets/resources/dolphin/Sasquach_RMCF_128x64/Sasquach_RMCF.zip deleted file mode 100644 index cae93645badc27b7f0b86de76cfb10a7c0bb57c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28013 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 Date: Thu, 13 Oct 2022 16:45:01 -0400 Subject: [PATCH 3/4] Adding Tuning Fork, Removed Broken Chip8 --- applications/plugins/Tuning Fork/LICENSE | 674 ++++++++++++++++++ applications/plugins/Tuning Fork/README.md | 30 + .../plugins/Tuning Fork/application.fam | 14 + .../plugins/Tuning Fork/img/screenshot_1.png | Bin 0 -> 1638 bytes .../plugins/Tuning Fork/img/screenshot_2.png | Bin 0 -> 1874 bytes .../plugins/Tuning Fork/img/tuning_fork.gif | Bin 0 -> 90811 bytes applications/plugins/Tuning Fork/notes.h | 160 +++++ .../plugins/Tuning Fork/tuning_fork.c | 395 ++++++++++ .../plugins/Tuning Fork/tuning_fork_icon.png | Bin 0 -> 1187 bytes applications/plugins/Tuning Fork/tunings.h | 188 +++++ applications/plugins/chip8/application.fam | 0 applications/plugins/chip8/chip8.c | 203 ------ applications/plugins/chip8/chip8.h | 44 -- applications/plugins/chip8/chip8_app.c | 89 --- applications/plugins/chip8/chip8_app.h | 11 - applications/plugins/chip8/chip8_app_i.h | 33 - .../chip8/emulator_core/flipper_chip.c | 319 --------- .../chip8/emulator_core/flipper_chip.h | 74 -- .../chip8/emulator_core/flipper_fonts.h | 30 - .../plugins/chip8/scenes/chip8_scene.c | 26 - .../plugins/chip8/scenes/chip8_scene.h | 25 - .../plugins/chip8/scenes/chip8_scene_config.h | 2 - .../chip8/scenes/chip8_scene_file_select.c | 45 -- .../plugins/chip8/scenes/chip8_scene_work.c | 90 --- applications/plugins/chip8/views/chip8_view.c | 207 ------ applications/plugins/chip8/views/chip8_view.h | 29 - 26 files changed, 1461 insertions(+), 1227 deletions(-) create mode 100644 applications/plugins/Tuning Fork/LICENSE create mode 100644 applications/plugins/Tuning Fork/README.md create mode 100644 applications/plugins/Tuning Fork/application.fam create mode 100644 applications/plugins/Tuning Fork/img/screenshot_1.png create mode 100644 applications/plugins/Tuning Fork/img/screenshot_2.png create mode 100644 applications/plugins/Tuning Fork/img/tuning_fork.gif create mode 100644 applications/plugins/Tuning Fork/notes.h create mode 100644 applications/plugins/Tuning Fork/tuning_fork.c create mode 100644 applications/plugins/Tuning Fork/tuning_fork_icon.png create mode 100644 applications/plugins/Tuning Fork/tunings.h delete mode 100644 applications/plugins/chip8/application.fam delete mode 100644 applications/plugins/chip8/chip8.c delete mode 100644 applications/plugins/chip8/chip8.h delete mode 100644 applications/plugins/chip8/chip8_app.c delete mode 100644 applications/plugins/chip8/chip8_app.h delete mode 100644 applications/plugins/chip8/chip8_app_i.h delete mode 100644 applications/plugins/chip8/emulator_core/flipper_chip.c delete mode 100644 applications/plugins/chip8/emulator_core/flipper_chip.h delete mode 100644 applications/plugins/chip8/emulator_core/flipper_fonts.h delete mode 100644 applications/plugins/chip8/scenes/chip8_scene.c delete mode 100644 applications/plugins/chip8/scenes/chip8_scene.h delete mode 100644 applications/plugins/chip8/scenes/chip8_scene_config.h delete mode 100644 applications/plugins/chip8/scenes/chip8_scene_file_select.c delete mode 100644 applications/plugins/chip8/scenes/chip8_scene_work.c delete mode 100644 applications/plugins/chip8/views/chip8_view.c delete mode 100644 applications/plugins/chip8/views/chip8_view.h diff --git a/applications/plugins/Tuning Fork/LICENSE b/applications/plugins/Tuning Fork/LICENSE new file mode 100644 index 000000000..f288702d2 --- /dev/null +++ b/applications/plugins/Tuning Fork/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/applications/plugins/Tuning Fork/README.md b/applications/plugins/Tuning Fork/README.md new file mode 100644 index 000000000..5524eba3e --- /dev/null +++ b/applications/plugins/Tuning Fork/README.md @@ -0,0 +1,30 @@ +# Tuning Fork + +Inspired by [Metronome](https://github.com/panki27/Metronome) + +A tuning fork for the [Flipper Zero](https://flipperzero.one/) device. +Allows to play different notes in different pitches. + +![screenshot](img/tuning_fork.gif) + +## Features +- Tuning forks (440Hz, 432Hz, etc.) +- Scientific pitch (..., 256Hz, 512Hz, 1024Hz, ...) +- Guitar Standard (6 strings) +- Guitar Drop D (6 strings) +- Guitar D (6 strings) +- Guitar Drop C (6 strings) +- Guitar Standard (7 strings) +- Bass Standard (4 strings) +- Bass Standard Tenor (4 strings) +- Bass Standard (5 strings) +- Bass Standard Tenor (5 strings) +- Bass Drop D (4 strings) +- Bass D (4 strings) +- Bass Drop A (5 strings) + +## Compiling + +``` +./fbt firmware_tuning_fork +``` diff --git a/applications/plugins/Tuning Fork/application.fam b/applications/plugins/Tuning Fork/application.fam new file mode 100644 index 000000000..e11930e54 --- /dev/null +++ b/applications/plugins/Tuning Fork/application.fam @@ -0,0 +1,14 @@ +App( + appid="tuning_fork", + name="Tuning Fork", + apptype=FlipperAppType.PLUGIN, + entry_point="tuning_fork_app", + cdefines=["APP_TUNING_FORM"], + requires=[ + "gui", + ], + fap_icon="tuning_fork_icon.png", + fap_category="Music", + stack_size=2 * 1024, + order=20, +) diff --git a/applications/plugins/Tuning Fork/img/screenshot_1.png b/applications/plugins/Tuning Fork/img/screenshot_1.png new file mode 100644 index 0000000000000000000000000000000000000000..04727988936235f3ba0760c472bd3cd0b5533b23 GIT binary patch literal 1638 zcmeH{Z&2EG9LGQC^qfU@c{h96&s-h<^0l zmR^_n=vnJwDA0Y7slL0}*qK|cNj|5Gk(^pC?I^tL71UpW?l(^`Y4qu7<9_rlfb}nz z#w=}-;0+D|@@@;Y!^4`HCQq7_>s=S9lK$2Qg!h7#k7L+Kk-8173e zNw)M5|Kftr&pnyc5dUw0^<6Pd4{SYuGb4*7~KVt0xR zRcAt7cx}I7(U&JfLS*5!vT=doP^7}6Y#_kN!YIaRJQQ?N0QSIl+eCN3K9Q?S!$eT= z(RI+8P@hjzNr^GZxl{9vyMz1?TT`O#9iqH!e1Lm=Wg)F!!P z)ZRa0ekdnSxH;;T!4b0!_gZkwb|qlwLTpb*ql^-F+C?NHrM?B>O^Df=yOXn98C_Y< z9PX}Va|^cSLg-R`pW^VAPV44viPR>Y1Zh4O(k{{1w9m7wuLe`Cyhj^l)W9f9;I5tW zgxCIRUgh;-qP0TX<*JD7p?dP2#0-fvIb-J9(k~+a#UD~be7$mAH^5&NPjfU%WavCH zpip(wRF9>tsty?TTH!dy-6+>)uUl9%zHTp5mBRgG)iW!KFtV&o2PGQ>fSWt5Ixv~? z+nT?fT~VuXr?aXBR4bdLa1!Z^`_hN`r}g$@#PUtw8(|W_7u%gjKi3x=xP{gwr-|yR zlE(F)3AFv$We|^e2qzFP)7UoOI{y_Lv;65!Jhw*_(ehb6_gm3IsRw0!}5i# YxFhu+FP?f~8MOf@I#x`VzFyPuHz~C-6aWAK literal 0 HcmV?d00001 diff --git a/applications/plugins/Tuning Fork/img/screenshot_2.png b/applications/plugins/Tuning Fork/img/screenshot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c31f37744ddcb463906f7c58313d030b4da86abe GIT binary patch literal 1874 zcmcIlYfuwc6uuD&NO@=(HBbd9)1uArFiHWV;sZs|()i*L3MkZK6H$Q@agmU5sBH%V zS{@1lK@lG$gc&pnSz>I9X0S>?LNXAeSSBtQlJE*41VTd_hjpg5f9#LlyLWf?obPkZ07F_ z*}OlaT&;)+SFFQf+t1(}`w|!C6%1F6-aqe}L!-)Qrwvl*3?(4N=hBxZb)b-rF~G99fI<4_t&RX=@O*CZo`f;iu!5d6 z#qri8nnXn|hv-~d@WVxF-==I@P_Sn|2IPDQz~%X1)5=6J!>$Xa$LuqXjQ$8EkeR7U z>MxTN(c_=BE*s`DE#81_CukeLcBI!EjJ&j$?!3#i{Hf~kqNCYkvcBTeP zjwQ9E=qTB_x5+b}kR=BOEc^_zueuPeYbhy9O;*D-5pkJxh*{4$O{XAN^|f_kz6PJ? zFnBNGsV(ZKN4QPj7fP47$7ZV2-6*Oyfiyij`8nhZf2CiQ&v5t+eg&dZMKh14`w}hnT2k>|ki#K*A=+$Y$b@Rb6Qf?ojcou zA#Ydze&1@@yas7|H%f$})eI(+D=s;D{cx6>6bWM78hFd2KSUi`&q&d59 z=$c%t7>*Ks_j#19-lKd_DX$N?TM!LnqaGnfRnhe8xe9N@h=61oL+6{4o72{BLh)Vv6~b^y*oK{>D%OClD)QqDSbu~w#`QmSEU>8^XfW~C}Cqgf~)QXoe#5de#~BKC77 f{&kFj6X#|?V&IG0Ysd|UX5Z}G79PUga`4Qb68W

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

LE0adHEt{4OVq>_g4OC$HHoWg5SeawC{1 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 literal 0 HcmV?d00001 diff --git a/applications/plugins/Tuning Fork/notes.h b/applications/plugins/Tuning Fork/notes.h new file mode 100644 index 000000000..dac0fbc88 --- /dev/null +++ b/applications/plugins/Tuning Fork/notes.h @@ -0,0 +1,160 @@ +#ifndef NOTES +#define NOTES + + +#define C0 16.35f +#define Cs0 17.32f +#define Db0 17.32f +#define D0 18.35f +#define Ds0 19.45f +#define Eb0 19.45f +#define E0 20.60f +#define F0 21.83f +#define Fs0 23.12f +#define Gb0 23.12f +#define G0 24.50f +#define Gs0 25.96f +#define Ab0 25.96f +#define A0 27.50f +#define As0 29.14f +#define Bb0 29.14f +#define B0 30.868f +#define C1 32.70f +#define Cs1 34.65f +#define Db1 34.65f +#define D1 36.71f +#define Ds1 38.89f +#define Eb1 38.89f +#define E1 41.203f +#define F1 43.65f +#define Fs1 46.25f +#define Gb1 46.25f +#define G1 49.00f +#define Gs1 51.91f +#define Ab1 51.91f +#define A1 55.00f +#define As1 58.27f +#define Bb1 58.27f +#define B1 61.74f +#define C2 65.41f +#define Cs2 69.30f +#define Db2 69.30f +#define D2 73.416f +#define Ds2 77.78f +#define Eb2 77.78f +#define E2 82.41f +#define F2 87.31f +#define Fs2 92.50f +#define Gb2 92.50f +#define G2 97.999f +#define Gs2 103.83f +#define Ab2 103.83f +#define A2 110.00f +#define As2 116.54f +#define Bb2 116.54f +#define B2 123.47f +#define C3 130.813f +#define Cs3 138.59f +#define Db3 138.59f +#define D3 146.83f +#define Ds3 155.56f +#define Eb3 155.56f +#define E3 164.81f +#define F3 174.61f +#define Fs3 185.00f +#define Gb3 185.00f +#define G3 196.00f +#define Gs3 207.65f +#define Ab3 207.65f +#define A3 220.00f +#define As3 233.08f +#define Bb3 233.08f +#define B3 246.94f +#define C4 261.63f +#define Cs4 277.18f +#define Db4 277.18f +#define D4 293.66f +#define Ds4 311.13f +#define Eb4 311.13f +#define E4 329.63f +#define F4 349.23f +#define Fs4 369.99f +#define Gb4 369.99f +#define G4 392.00f +#define Gs4 415.30f +#define Ab4 415.30f +#define A4 440.00f +#define As4 466.16f +#define Bb4 466.16f +#define B4 493.88f +#define C5 523.25f +#define Cs5 554.37f +#define Db5 554.37f +#define D5 587.33f +#define Ds5 622.25f +#define Eb5 622.25f +#define E5 659.25f +#define F5 698.46f +#define Fs5 739.99f +#define Gb5 739.99f +#define G5 783.99f +#define Gs5 830.61f +#define Ab5 830.61f +#define A5 880.00f +#define As5 932.33f +#define Bb5 932.33f +#define B5 987.77f +#define C6 1046.50f +#define Cs6 1108.73f +#define Db6 1108.73f +#define D6 1174.66f +#define Ds6 1244.51f +#define Eb6 1244.51f +#define E6 1318.51f +#define F6 1396.91f +#define Fs6 1479.98f +#define Gb6 1479.98f +#define G6 1567.98f +#define Gs6 1661.22f +#define Ab6 1661.22f +#define A6 1760.00f +#define As6 1864.66f +#define Bb6 1864.66f +#define B6 1975.53f +#define C7 2093.00f +#define Cs7 2217.46f +#define Db7 2217.46f +#define D7 2349.32f +#define Ds7 2489.02f +#define Eb7 2489.02f +#define E7 2637.02f +#define F7 2793.83f +#define Fs7 2959.96f +#define Gb7 2959.96f +#define G7 3135.96f +#define Gs7 3322.44f +#define Ab7 3322.44f +#define A7 3520.00f +#define As7 3729.31f +#define Bb7 3729.31f +#define B7 3951.07f +#define C8 4186.01f +#define Cs8 4434.92f +#define Db8 4434.92f +#define D8 4698.63f +#define Ds8 4978.03f +#define Eb8 4978.03f +#define E8 5274.04f +#define F8 5587.65f +#define Fs8 5919.91f +#define Gb8 5919.91f +#define G8 6271.93f +#define Gs8 6644.88f +#define Ab8 6644.88f +#define A8 7040.00f +#define As8 7458.62f +#define Bb8 7458.62f +#define B8 7902.13f + +#endif //NOTES + diff --git a/applications/plugins/Tuning Fork/tuning_fork.c b/applications/plugins/Tuning Fork/tuning_fork.c new file mode 100644 index 000000000..7cc2675b0 --- /dev/null +++ b/applications/plugins/Tuning Fork/tuning_fork.c @@ -0,0 +1,395 @@ +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "notes.h" +#include "tunings.h" + +typedef enum { + EventTypeTick, + EventTypeKey, +} EventType; + +typedef struct { + EventType type; + InputEvent input; +} PluginEvent; + +enum Page { + Tunings, + Notes +}; + +typedef struct { + bool playing; + enum Page page; + int current_tuning_note_index; + int current_tuning_index; + float volume; + TUNING tuning; +} TuningForkState; + +static TUNING current_tuning(TuningForkState* tuningForkState) { + return tuningForkState->tuning; +} + +static NOTE current_tuning_note(TuningForkState* tuningForkState) { + return current_tuning(tuningForkState).notes[tuningForkState->current_tuning_note_index]; +} + +static float current_tuning_note_freq(TuningForkState* tuningForkState) { + return current_tuning_note(tuningForkState).frequency; +} + +static void current_tuning_note_label(TuningForkState* tuningForkState, char* outNoteLabel) { + for(int i=0; i < 20; ++i){ + outNoteLabel[i] = current_tuning_note(tuningForkState).label[i]; + } +} + +static void current_tuning_label(TuningForkState* tuningForkState, char* outTuningLabel) { + for(int i=0; i < 20; ++i){ + outTuningLabel[i] = current_tuning(tuningForkState).label[i]; + } +} + +static void updateTuning(TuningForkState* tuning_fork_state) { + tuning_fork_state->tuning = TuningList[tuning_fork_state->current_tuning_index]; + tuning_fork_state->current_tuning_note_index = 0; +} + +static void next_tuning(TuningForkState* tuning_fork_state) { + if (tuning_fork_state->current_tuning_index == TUNINGS_COUNT - 1) { + tuning_fork_state->current_tuning_index = 0; + } else { + tuning_fork_state->current_tuning_index += 1; + } + updateTuning(tuning_fork_state); +} + +static void prev_tuning(TuningForkState* tuning_fork_state) { + if (tuning_fork_state->current_tuning_index - 1 < 0) { + tuning_fork_state->current_tuning_index = TUNINGS_COUNT - 1; + } else { + tuning_fork_state->current_tuning_index -= 1; + } + updateTuning(tuning_fork_state); +} + +static void next_note(TuningForkState* tuning_fork_state) { + if (tuning_fork_state->current_tuning_note_index == current_tuning(tuning_fork_state).notes_length - 1) { + tuning_fork_state->current_tuning_note_index = 0; + } else { + tuning_fork_state->current_tuning_note_index += 1; + } +} + +static void prev_note(TuningForkState* tuning_fork_state) { + if (tuning_fork_state->current_tuning_note_index == 0) { + tuning_fork_state->current_tuning_note_index = current_tuning(tuning_fork_state).notes_length - 1; + } else { + tuning_fork_state->current_tuning_note_index -= 1; + } +} + +static void increase_volume(TuningForkState* tuning_fork_state) { + if (tuning_fork_state->volume < 1.0f) { + tuning_fork_state->volume += 0.1f; + } +} + +static void decrease_volume(TuningForkState* tuning_fork_state) { + if (tuning_fork_state->volume > 0.0f) { + tuning_fork_state->volume -= 0.1f; + } +} + +static void play(TuningForkState* tuning_fork_state) { + furi_hal_speaker_start(current_tuning_note_freq(tuning_fork_state), tuning_fork_state->volume); +} + +static void stop() { + furi_hal_speaker_stop(); +} + +static void replay(TuningForkState* tuning_fork_state) { + stop(); + play(tuning_fork_state); +} + +static void render_callback(Canvas* const canvas, void* ctx) { + TuningForkState* tuning_fork_state = acquire_mutex((ValueMutex*)ctx, 25); + if(tuning_fork_state == NULL) { + return; + } + + string_t tempStr; + string_init(tempStr); + + canvas_draw_frame(canvas, 0, 0, 128, 64); + + canvas_set_font(canvas, FontPrimary); + + if (tuning_fork_state->page == Tunings) { + char tuningLabel[20]; + current_tuning_label(tuning_fork_state, tuningLabel); + string_printf(tempStr, "< %s >", tuningLabel); + canvas_draw_str_aligned(canvas, 64, 28, AlignCenter, AlignCenter, string_get_cstr(tempStr)); + string_reset(tempStr); + } else { + char tuningLabel[20]; + current_tuning_label(tuning_fork_state, tuningLabel); + string_printf(tempStr, "%s", tuningLabel); + canvas_draw_str_aligned(canvas, 64, 8, AlignCenter, AlignCenter, string_get_cstr(tempStr)); + string_reset(tempStr); + + char tuningNoteLabel[20]; + current_tuning_note_label(tuning_fork_state, tuningNoteLabel); + string_printf(tempStr, "< %s >", tuningNoteLabel); + canvas_draw_str_aligned(canvas, 64, 24, AlignCenter, AlignCenter, string_get_cstr(tempStr)); + string_reset(tempStr); + } + + canvas_set_font(canvas, FontSecondary); + elements_button_left(canvas, "Prev"); + elements_button_right(canvas, "Next"); + + if (tuning_fork_state->page == Notes) { + if (tuning_fork_state->playing) { + elements_button_center(canvas, "Stop "); + } else { + elements_button_center(canvas, "Play"); + } + } else { + elements_button_center(canvas, "Select"); + } + if (tuning_fork_state->page == Notes) { + elements_progress_bar(canvas, 8, 36, 112, tuning_fork_state->volume); + } + + string_clear(tempStr); + release_mutex((ValueMutex*)ctx, tuning_fork_state); +} + +static void input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) { + furi_assert(event_queue); + + PluginEvent event = {.type = EventTypeKey, .input = *input_event}; + furi_message_queue_put(event_queue, &event, FuriWaitForever); +} + +static void tuning_fork_state_init(TuningForkState* const tuning_fork_state) { + tuning_fork_state->playing = false; + tuning_fork_state->page = Tunings; + tuning_fork_state->volume = 1.0f; + tuning_fork_state->tuning = GuitarStandard6; + tuning_fork_state->current_tuning_index = 2; + tuning_fork_state->current_tuning_note_index = 0; +} + +int32_t tuning_fork_app() { + FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(PluginEvent)); + + TuningForkState* tuning_fork_state = malloc(sizeof(TuningForkState)); + tuning_fork_state_init(tuning_fork_state); + + ValueMutex state_mutex; + if(!init_mutex(&state_mutex, tuning_fork_state, sizeof(TuningForkState))) { + FURI_LOG_E("TuningFork", "cannot create mutex\r\n"); + free(tuning_fork_state); + return 255; + } + + // Set system callbacks + ViewPort* view_port = view_port_alloc(); + view_port_draw_callback_set(view_port, render_callback, &state_mutex); + view_port_input_callback_set(view_port, input_callback, event_queue); + + Gui* gui = furi_record_open("gui"); + gui_add_view_port(gui, view_port, GuiLayerFullscreen); + + PluginEvent event; + for(bool processing = true; processing;) { + FuriStatus event_status = furi_message_queue_get(event_queue, &event, 100); + + TuningForkState* tuning_fork_state = (TuningForkState*)acquire_mutex_block(&state_mutex); + + if(event_status == FuriStatusOk) { + if(event.type == EventTypeKey) { + if(event.input.type == InputTypeShort) { + // push events + switch(event.input.key) { + case InputKeyUp: + if (tuning_fork_state->page == Notes) { + increase_volume(tuning_fork_state); + if (tuning_fork_state->playing) { + replay(tuning_fork_state); + } + } + break; + case InputKeyDown: + if (tuning_fork_state->page == Notes) { + decrease_volume(tuning_fork_state); + if (tuning_fork_state->playing) { + replay(tuning_fork_state); + } + } + break; + case InputKeyRight: + if (tuning_fork_state->page == Tunings) { + next_tuning(tuning_fork_state); + } else { + next_note(tuning_fork_state); + if (tuning_fork_state->playing) { + replay(tuning_fork_state); + } + } + break; + case InputKeyLeft: + if (tuning_fork_state->page == Tunings) { + prev_tuning(tuning_fork_state); + } else { + prev_note(tuning_fork_state); + if (tuning_fork_state->playing) { + replay(tuning_fork_state); + } + } + break; + case InputKeyOk: + if (tuning_fork_state->page == Tunings) { + tuning_fork_state->page = Notes; + } else { + tuning_fork_state->playing = !tuning_fork_state->playing; + if (tuning_fork_state->playing) { + play(tuning_fork_state); + } else { + stop(); + } + } + break; + case InputKeyBack: + if (tuning_fork_state->page == Tunings) { + processing = false; + } else { + tuning_fork_state->playing = false; + tuning_fork_state->current_tuning_note_index = 0; + stop(); + tuning_fork_state->page = Tunings; + } + break; + } + } else if (event.input.type == InputTypeLong) { + // hold events + switch(event.input.key) { + case InputKeyUp: + break; + case InputKeyDown: + break; + case InputKeyRight: + if (tuning_fork_state->page == Tunings) { + next_tuning(tuning_fork_state); + } else { + next_note(tuning_fork_state); + if (tuning_fork_state->playing) { + replay(tuning_fork_state); + } + } + + break; + case InputKeyLeft: + if (tuning_fork_state->page == Tunings) { + prev_tuning(tuning_fork_state); + } else { + prev_note(tuning_fork_state); + if (tuning_fork_state->playing) { + replay(tuning_fork_state); + } + } + + break; + case InputKeyOk: + break; + case InputKeyBack: + if (tuning_fork_state->page == Tunings) { + processing = false; + } else { + tuning_fork_state->playing = false; + stop(); + tuning_fork_state->page = Tunings; + tuning_fork_state->current_tuning_note_index = 0; + } + break; + } + } else if (event.input.type == InputTypeRepeat) { + // repeat events + switch(event.input.key) { + case InputKeyUp: + break; + case InputKeyDown: + break; + case InputKeyRight: + if (tuning_fork_state->page == Tunings) { + next_tuning(tuning_fork_state); + } else { + next_note(tuning_fork_state); + if (tuning_fork_state->playing) { + replay(tuning_fork_state); + } + } + + break; + case InputKeyLeft: + if (tuning_fork_state->page == Tunings) { + prev_tuning(tuning_fork_state); + } else { + prev_note(tuning_fork_state); + if (tuning_fork_state->playing) { + replay(tuning_fork_state); + } + } + + break; + case InputKeyOk: + break; + case InputKeyBack: + if (tuning_fork_state->page == Tunings) { + processing = false; + } else { + tuning_fork_state->playing = false; + stop(); + tuning_fork_state->page = Tunings; + tuning_fork_state->current_tuning_note_index = 0; + } + break; + } + } + } + } else { + FURI_LOG_D("TuningFork", "FuriMessageQueue: event timeout"); + } + + view_port_update(view_port); + release_mutex(&state_mutex, tuning_fork_state); + } + + view_port_enabled_set(view_port, false); + gui_remove_view_port(gui, view_port); + furi_record_close("gui"); + view_port_free(view_port); + furi_message_queue_free(event_queue); + delete_mutex(&state_mutex); + furi_record_close(RECORD_NOTIFICATION); + free(tuning_fork_state); + + return 0; +} diff --git a/applications/plugins/Tuning Fork/tuning_fork_icon.png b/applications/plugins/Tuning Fork/tuning_fork_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..074d9d5900e574dbac03b4e3785152c5e2cb0632 GIT binary patch literal 1187 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2xkYHHq`AGmsv7|ftIx;Y9?C1WI$O_~$C3(BM zFfiWj5?%u2aTa()7Bet#3xP1>rMq>1fP(BLp1!W^&$xKGrB$O!lIj^47*|wxlq$-qD7Njav8u=Vft-Pbg>skKI`f8C{(J)v^; z{fpYh)>fAiK3#Tl`lM=67FW{Ck)nPoH0Jll5cAEO8-*lJhCVxRZ}N5S|JyQ5m%K2X zbLK%z^6njO4Li)bPOSEsl>5Q!QH$Zh9n*C==Ls2KTJ&bd4v9ux`K>Y9pW>KZ0}s07 zT{4PUvEl<;gFa85MWX1Tj@>TL1%>CjL@LRi%rd=tIB(BkdtHH=Zo|xANhYgEmYgZ%k`ZWGAR7I| z@k+*v^&iSpL@v!|wROxB`7-D5?U!ez^4vc!nDLI&OvaY!xYD=W`OVEYT6VC;FLf0? zov8jhq3GCGy(b+O!IwHNo6EmB%+vJD=wVE&-b=|Yt2gpZpH^5^X=X?iy=BZvtA3UH zU?caO=o@VBe9x?2yY=Q?-Jtv#+g$c*rn_I>IGOboFd7;2i~K?u&o3&U1>^{Ox;Tb# zTu-(rZeZlKwK?!XvWwyMBmw4G3qGX*rCU-XJkxxA8MJ_G4hB|6AqHlU2|&oeD8&Fu zH=s1-#V8GD2Qg|u)i5zIv}ZD~K-EM6X%O%LVvrsP&AfmSVd4TNxN5Ei%m_9}+X<(u z-++{AiEBhjN@7W>RdP`(kYX@0Ff!6LG|)9P4ly*eGBUF=G1fLPure_4?BSb^q9Hdw zB{QuOO@pDim5~WVgRf&kktouW<0pIuN(+E=1G6uR=UMqqTm;IA!Q?P~*T_3%Ertpd&&AC4)c~qs N@O1TaS?83{1OV5mj{N`t literal 0 HcmV?d00001 diff --git a/applications/plugins/Tuning Fork/tunings.h b/applications/plugins/Tuning Fork/tunings.h new file mode 100644 index 000000000..32d1b5e04 --- /dev/null +++ b/applications/plugins/Tuning Fork/tunings.h @@ -0,0 +1,188 @@ +#include "notes.h" + +#ifndef TUNINGS +#define TUNINGS + +typedef struct { + char label[20]; + float frequency; +} NOTE; + +typedef struct { + char label[20]; + int notes_length; + NOTE notes[20]; +} TUNING; + +const TUNING TuningForks = { + "Tuning forks", 6, { + { "Common A4 (440)", 440.00f}, + { "Sarti's A4 (436)", 436.00f}, + { "1858 A4 (435)", 435.00f}, + { "Verdi's A4 (432)", 432.00f}, + { "1750-1820 A4 (423.5)", 423.50f}, + { "Verdi's C4 (256.00)", 256.00f}, + } +}; + +const TUNING ScientificPitch = { + "Scientific pitch", 12, { + { "C0 (16Hz)", 16.0f}, + { "C1 (32Hz)", 32.0f}, + { "C2 (64Hz)", 64.0f}, + { "C3 (128Hz)", 128.0f}, + { "C4 (256Hz)", 256.0f}, + { "C5 (512Hz)", 512.0f}, + { "C6 (1024Hz)", 1024.0f}, + { "C7 (2048Hz)", 2048.0f}, + { "C8 (4096Hz)", 4096.0f}, + { "C9 (8192Hz)", 8192.0f}, + { "C10 (16384Hz)", 16384.0f}, + { "C11 (32768Hz)", 32768.0f} + } +}; + +const TUNING GuitarStandard6 = { + "Guitar Standard 6", 6, { + {"String 1", E4}, + {"String 2", B3}, + {"String 3", G3}, + {"String 4", D3}, + {"String 5", A2}, + {"String 6", E2} + } +}; + +const TUNING GuitarDropD6 = { + "Guitar Drop D 6", 6, { + {"String 1", E4}, + {"String 2", B3}, + {"String 3", G3}, + {"String 4", D3}, + {"String 5", A2}, + {"String 6", D2} + } +}; + +const TUNING GuitarD6 = { + "Guitar D 6", 6, { + {"String 1", D4}, + {"String 2", A3}, + {"String 3", F3}, + {"String 4", C3}, + {"String 5", G2}, + {"String 6", D2} + } +}; + +const TUNING GuitarDropC6 = { + "Guitar Drop C 6", 6, { + {"String 1", D4}, + {"String 2", A3}, + {"String 3", F3}, + {"String 4", C3}, + {"String 5", G2}, + {"String 6", C2} + } +}; + +const TUNING GuitarStandard7 = { + "Guitar Standard 7", 7, { + {"String 1", E4}, + {"String 2", B3}, + {"String 3", G3}, + {"String 4", D3}, + {"String 5", A2}, + {"String 6", E2}, + {"String 7", B1} + } +}; + +const TUNING BassStandard4 = { + "Bass Standard 4", 4, { + {"String 1", G2}, + {"String 2", D2}, + {"String 3", A1}, + {"String 4", E1} + } +}; + +const TUNING BassStandardTenor4 = { + "Bass Stand Tenor 4", 4, { + {"String 1", C3}, + {"String 2", G2}, + {"String 3", D2}, + {"String 4", A1} + } +}; + +const TUNING BassStandard5 = { + "Bass Standard 5", 5, { + {"String 1", G2}, + {"String 2", D2}, + {"String 3", A1}, + {"String 4", E1}, + {"String 5", B0} + } +}; + +const TUNING BassStandardTenor5 = { + "Bass Stand Tenor 5", 5, { + {"String 1", C3}, + {"String 2", G2}, + {"String 3", D2}, + {"String 4", A1}, + {"String 5", E1} + } +}; + +const TUNING BassDropD4 = { + "Bass Drop D 4", 4, { + {"String 1", G2}, + {"String 2", D2}, + {"String 3", A1}, + {"String 4", D1} + } +}; + +const TUNING BassD4 = { + "Bass D 4", 4, { + {"String 1", F2}, + {"String 2", C2}, + {"String 3", G1}, + {"String 4", D1} + } +}; + +const TUNING BassDropA5 = { + "Bass Drop A 5", 5, { + {"String 1", G2}, + {"String 2", D2}, + {"String 3", A1}, + {"String 4", E1}, + {"String 5", A0} + } +}; + +#define TUNINGS_COUNT 14 + +TUNING TuningList[TUNINGS_COUNT] = { + ScientificPitch, + TuningForks, + + GuitarStandard6, + GuitarDropD6, + GuitarD6, + GuitarDropC6, + GuitarStandard7, + + BassStandard4, + BassStandardTenor4, + BassStandard5, + BassStandardTenor5, + BassDropD4, + BassD4, + BassDropA5 +}; + +#endif //TUNINGS diff --git a/applications/plugins/chip8/application.fam b/applications/plugins/chip8/application.fam deleted file mode 100644 index e69de29bb..000000000 diff --git a/applications/plugins/chip8/chip8.c b/applications/plugins/chip8/chip8.c deleted file mode 100644 index 03591baf6..000000000 --- a/applications/plugins/chip8/chip8.c +++ /dev/null @@ -1,203 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include "chip8.h" -#include "emulator_core/flipper_chip.h" - -#define TAG "Chip8Emulator" -#define WORKER_TAG TAG "Worker" -#define FILE_BUFFER_LEN 16 - -typedef enum { - WorkerEvtToggle = (1 << 1), - WorkerEvtEnd = (1 << 2), -} WorkerEvtFlags; - -struct Chip8Emulator { - Chip8State st; - FuriString* file_path; - FuriThread* thread; -}; - -static int32_t chip8_worker(void* context) { - Chip8Emulator* chip8 = context; - - FURI_LOG_I(WORKER_TAG, "Start furi record open"); - Storage* furi_storage_record = furi_record_open(RECORD_STORAGE); - FURI_LOG_I(WORKER_TAG, "furi record opened"); - - FURI_LOG_I(WORKER_TAG, "Start storage file alloc"); - File* rom_file = storage_file_alloc(furi_storage_record); - FURI_LOG_I( - WORKER_TAG, "Start storage file open, path = %s", furi_string_get_cstr(chip8->file_path)); - - uint8_t* rom_data = malloc(4096); - FURI_LOG_I(WORKER_TAG, "4096 array gotten"); - - while(1) { - if(chip8->st.worker_state == WorkerStateBackPressed) { - FURI_LOG_I(WORKER_TAG, "WorkerStateBackPressed"); - break; - } - - if(chip8->st.worker_state == WorkerStateLoadingRom) { - bool is_file_opened = storage_file_open( - rom_file, furi_string_get_cstr(chip8->file_path), FSAM_READ, FSOM_OPEN_EXISTING); - - if(!is_file_opened) { - FURI_LOG_I(WORKER_TAG, "Cannot open storage"); - storage_file_close(rom_file); - storage_file_free(rom_file); - chip8->st.worker_state = WorkerStateRomLoadError; - return 0; - } - - FURI_LOG_I(WORKER_TAG, "File was opened, try read this"); - - int rom_len = read_rom_data(rom_file, rom_data); - - FURI_LOG_I(WORKER_TAG, "Rom data finished reading"); - - FURI_LOG_I(WORKER_TAG, "Load chip8 core data"); - t_chip8_load_game(chip8->st.t_chip8_state, rom_data, rom_len); - FURI_LOG_I(WORKER_TAG, "chip8 core data loaded"); - - FURI_LOG_I(WORKER_TAG, "Wipe screen start"); - for(int i = 0; i < CHIP8_SCREEN_H; i++) { - FURI_LOG_I(WORKER_TAG, "Wipe screen line %d", i); - for(int j = 0; j < CHIP8_SCREEN_W; j++) { - chip8->st.t_chip8_state->screen[i][j] = 0; - } - furi_delay_ms(15); - } - FURI_LOG_I(WORKER_TAG, "Wipe screen end"); - - chip8->st.worker_state = WorkerStateRomLoaded; - } - - if(chip8->st.worker_state == WorkerStateRomLoaded) { - if(chip8->st.t_chip8_state->go_render) { - continue; - } - t_chip8_execute_next_opcode(chip8->st.t_chip8_state); - FURI_LOG_I( - "chip8_executing", - "current: 0x%X next: 0x%X", - chip8->st.t_chip8_state->current_opcode, - chip8->st.t_chip8_state->next_opcode); - furi_delay_ms(2); - //t_chip8_tick(chip8->st.t_chip8_state); - } - } - - FURI_LOG_I("CHIP8", "Prepare to ending app"); - storage_file_close(rom_file); - storage_file_free(rom_file); - t_chip8_free_memory(chip8->st.t_chip8_state, free); - FURI_LOG_I("CHIP8", "End ending"); - return 0; -} - -Chip8Emulator* chip8_make_emulator(FuriString* file_path) { - furi_assert(file_path); - FURI_LOG_I("CHIP8", "make emulator, file_path=", furi_string_get_cstr(file_path)); - - Chip8Emulator* chip8 = malloc(sizeof(Chip8Emulator)); - chip8->file_path = furi_string_alloc(); - string_set(chip8->file_path, file_path); - chip8->st.worker_state = WorkerStateLoadingRom; - chip8->st.t_chip8_state = t_chip8_init(malloc); - - // FURI_LOG_I(WORKER_TAG, "Start wipe screen"); - // furi_delay_ms(1500); - // for (int i = 0; i < CHIP8_SCREEN_H; i++) - // { - // FURI_LOG_I(WORKER_TAG, "Start wipe line %d", i); - // for (int j = 0; j < CHIP8_SCREEN_W; j++) - // { - // chip8->st.t_chip8_state->screen[i][j] = 0; - // } - // } - // FURI_LOG_I(WORKER_TAG, "End wipe screen"); - - chip8->thread = furi_thread_alloc(); - furi_thread_set_name(chip8->thread, "Chip8Worker"); - furi_thread_set_stack_size(chip8->thread, 4096); - furi_thread_set_context(chip8->thread, chip8); - furi_thread_set_callback(chip8->thread, chip8_worker); - - furi_thread_start(chip8->thread); - return chip8; -} - -void chip8_close_emulator(Chip8Emulator* chip8) { - FURI_LOG_I("chip_8_close_emulator", "start"); - furi_assert(chip8); - furi_thread_flags_set(furi_thread_get_id(chip8->thread), WorkerEvtEnd); - furi_thread_join(chip8->thread); - furi_thread_free(chip8->thread); - furi_string_free(chip8->file_path); - free(chip8); - FURI_LOG_I("chip_8_close_emulator", "end"); -} - -void chip8_toggle(Chip8Emulator* chip8) { - furi_assert(chip8); - furi_thread_flags_set(furi_thread_get_id(chip8->thread), WorkerEvtToggle); -} - -Chip8State* chip8_get_state(Chip8Emulator* chip8) { - furi_assert(chip8); - return &(chip8->st); -} - -uint16_t read_rom_data(File* file, uint8_t* data) { - furi_assert(file); - furi_assert(data); - - const uint8_t buffer_size = 32; - uint16_t file_pointer = 0; - uint8_t buff[buffer_size]; - - while(1) { - uint16_t bytes_were_read = storage_file_read(file, buff, buffer_size); - - if(bytes_were_read == 0) { - break; - } - - for(uint16_t i = 0; i < bytes_were_read; i++) { - data[file_pointer] = buff[i]; - file_pointer++; - } - } - - return file_pointer; -} - -void chip8_set_back_pressed(Chip8Emulator* chip8) { - chip8->st.worker_state = WorkerStateBackPressed; - chip8->st.t_chip8_state->go_render = true; - FURI_LOG_I(WORKER_TAG, "SET BACK PRESSED. EMULATION IS STOPPED"); -} - -void chip8_set_up_pressed(Chip8Emulator* chip8) { - chip8->st.t_chip8_state->go_render = true; - t_chip8_set_input(chip8->st.t_chip8_state, k_1); - FURI_LOG_I(WORKER_TAG, "UP PRESSED"); -} - -void chip8_set_down_pressed(Chip8Emulator* chip8) { - chip8->st.t_chip8_state->go_render = true; - t_chip8_set_input(chip8->st.t_chip8_state, k_4); - FURI_LOG_I(WORKER_TAG, "DOWN PRESSED"); -} - -void chip8_release_keyboard(Chip8Emulator* chip8) { - chip8->st.t_chip8_state->go_render = true; - t_chip8_release_input(chip8->st.t_chip8_state); - FURI_LOG_I(WORKER_TAG, "chip8_release_keyboard Release input"); -} diff --git a/applications/plugins/chip8/chip8.h b/applications/plugins/chip8/chip8.h deleted file mode 100644 index f3864201a..000000000 --- a/applications/plugins/chip8/chip8.h +++ /dev/null @@ -1,44 +0,0 @@ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include "emulator_core/flipper_chip.h" - -#define CHIP8_SCREEN_W 64 -#define CHIP8_SCREEN_H 32 - -typedef struct Chip8Emulator Chip8Emulator; - -typedef enum { - WorkerStateLoadingRom, - WorkerStateRomLoaded, - WorkerStateRomLoadError, - WorkerStateBackPressed, -} WorkerState; - -typedef struct { - WorkerState worker_state; - t_chip8_state* t_chip8_state; -} Chip8State; - -Chip8Emulator* chip8_make_emulator(FuriString* file_path); - -void chip8_close_emulator(Chip8Emulator* chip8); -void chip8_set_back_pressed(Chip8Emulator* chip8); -void chip8_set_up_pressed(Chip8Emulator* chip8); -void chip8_set_down_pressed(Chip8Emulator* chip8); -void chip8_release_keyboard(Chip8Emulator* chip8); - -Chip8State* chip8_get_state(Chip8Emulator* chip8); - -void chip8_toggle(Chip8Emulator* chip8); - -uint16_t read_rom_data(File* file, uint8_t* data); - -#ifdef __cplusplus -} -#endif diff --git a/applications/plugins/chip8/chip8_app.c b/applications/plugins/chip8/chip8_app.c deleted file mode 100644 index 1b4d06646..000000000 --- a/applications/plugins/chip8/chip8_app.c +++ /dev/null @@ -1,89 +0,0 @@ -#include "chip8_app_i.h" -#include - -static bool chip8_app_custom_event_callback(void* context, uint32_t event) { - furi_assert(context); - Chip8App* app = context; - return scene_manager_handle_custom_event(app->scene_manager, event); -} - -static bool chip8_app_back_event_callback(void* context) { - furi_assert(context); - Chip8App* app = context; - return scene_manager_handle_back_event(app->scene_manager); -} - -static void chip8_app_tick_event_callback(void* context) { - furi_assert(context); - Chip8App* app = context; - scene_manager_handle_tick_event(app->scene_manager); -} - -uint8_t** chip8_backup_screen_alloc() { - FURI_LOG_I("chip8", "chip8_backup_screen_alloc start"); - - uint8_t** backup_screen = malloc(SCREEN_HEIGHT * sizeof(size_t)); - for(int i = 0; i < SCREEN_HEIGHT; i++) { - backup_screen[i] = malloc(SCREEN_WIDTH * sizeof(uint8_t)); - for(int j = 0; j < SCREEN_WIDTH; j++) { - backup_screen[i][j] = 0; - } - } - - FURI_LOG_I("chip8", "chip8_backup_screen_alloc end"); - return backup_screen; -} - -Chip8App* chip8_app_alloc() { - Chip8App* app = malloc(sizeof(Chip8App)); - - app->gui = furi_record_open(RECORD_GUI); - app->dialogs = furi_record_open(RECORD_DIALOGS); - app->view_dispatcher = view_dispatcher_alloc(); - app->scene_manager = scene_manager_alloc(&chip8_scene_handlers, app); - - view_dispatcher_enable_queue(app->view_dispatcher); - view_dispatcher_set_event_callback_context(app->view_dispatcher, app); - - view_dispatcher_set_tick_event_callback( - app->view_dispatcher, chip8_app_tick_event_callback, 100); - view_dispatcher_set_custom_event_callback( - app->view_dispatcher, chip8_app_custom_event_callback); - view_dispatcher_set_navigation_event_callback( - app->view_dispatcher, chip8_app_back_event_callback); - - view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen); - - app->chip8_view = chip8_alloc(); - app->backup_screen = chip8_backup_screen_alloc(); - view_dispatcher_add_view(app->view_dispatcher, Chip8WorkView, chip8_get_view(app->chip8_view)); - - scene_manager_next_scene(app->scene_manager, Chip8FileSelectView); - - return app; -} - -void chip8_app_free(Chip8App* app) { - FURI_LOG_I("CHIP8", "chip8_app_free started"); - furi_assert(app); - - view_dispatcher_remove_view(app->view_dispatcher, Chip8FileSelectView); - view_dispatcher_remove_view(app->view_dispatcher, Chip8WorkView); - chip8_free(app->chip8_view); - - view_dispatcher_free(app->view_dispatcher); - scene_manager_free(app->scene_manager); - - furi_record_close(RECORD_GUI); - furi_record_close(RECORD_DIALOGS); - - free(app); -} - -int32_t chip8_app(void* p) { - Chip8App* chip8_app = chip8_app_alloc(); - - view_dispatcher_run(chip8_app->view_dispatcher); - chip8_app_free(chip8_app); - return 0; -} \ No newline at end of file diff --git a/applications/plugins/chip8/chip8_app.h b/applications/plugins/chip8/chip8_app.h deleted file mode 100644 index 0d5720388..000000000 --- a/applications/plugins/chip8/chip8_app.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -typedef struct Chip8App Chip8App; - -#ifdef __cplusplus -} -#endif diff --git a/applications/plugins/chip8/chip8_app_i.h b/applications/plugins/chip8/chip8_app_i.h deleted file mode 100644 index 8d8b6bc27..000000000 --- a/applications/plugins/chip8/chip8_app_i.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include "chip8_app.h" -#include "scenes/chip8_scene.h" -#include "chip8.h" - -#include -#include -#include -#include -#include -#include -#include "views/chip8_view.h" - -#define CHIP8_APP_PATH_FOLDER "/any/chip8" -#define CHIP8_APP_EXTENSION ".ch8" - -struct Chip8App { - Gui* gui; - ViewDispatcher* view_dispatcher; - SceneManager* scene_manager; - DialogsApp* dialogs; - - FuriString* file_name; - uint8_t** backup_screen; - Chip8View* chip8_view; - Chip8Emulator* chip8; -}; - -typedef enum { - Chip8FileSelectView, - Chip8WorkView, -} Chip8AppView; diff --git a/applications/plugins/chip8/emulator_core/flipper_chip.c b/applications/plugins/chip8/emulator_core/flipper_chip.c deleted file mode 100644 index 4b438cac2..000000000 --- a/applications/plugins/chip8/emulator_core/flipper_chip.c +++ /dev/null @@ -1,319 +0,0 @@ -// -// Created by dwdraugr on 24.11.2021. -// - -#include "flipper_chip.h" -#include "flipper_fonts.h" -#include -#include -#include -#include - -static uint8_t randbyte(); -static void draw_sprite(t_chip8_state* state, uint8_t x, uint8_t y, uint8_t n); -static void error_stop(t_chip8_state* state, uint16_t opcode); - -t_chip8_state* t_chip8_init(void* (*system_malloc)(size_t)) { - t_chip8_state* state = system_malloc(sizeof(t_chip8_state)); - - state->PC = MEMORY_START_POSITION; - state->SP = 0; - state->I = 0; - state->delay_timer = 0; - state->sound_timer = 0; - state->go_render = false; - state->next_opcode = 0; - - state->memory = system_malloc(MEMORY_SIZE * sizeof(uint8_t)); - // memset(state->memory, 0, MEMORY_SIZE); - state->screen = system_malloc(SCREEN_HEIGHT * sizeof(size_t)); - for(int i = 0; i < SCREEN_HEIGHT; i++) { - state->screen[i] = system_malloc(SCREEN_WIDTH * sizeof(uint8_t)); - // memset(state->screen[i], 0, SCREEN_WIDTH); - } - state->V = system_malloc(CPU_REGISTER_NUMBER * sizeof(uint8_t)); - // memset(state->V, 0, CPU_REGISTER_NUMBER); - state->stack = system_malloc(CPU_STACK_DEPTH * sizeof(uint16_t)); - // memset(state->stack, 0, CPU_STACK_DEPTH * sizeof(short)); - state->key = system_malloc(KEYS_NUMBER * sizeof(uint8_t)); - // memset(state->key, 0, KEYS_NUMBER); - - memcpy(state->memory, font_small, FONT_SMALL); - srand(time(NULL)); - - return state; -} - -bool t_chip8_load_game(t_chip8_state* state, const uint8_t* rom, int rom_size) { - if(MEMORY_ROM_SIZE < rom_size) { - return false; - } - memcpy(&state->memory[MEMORY_START_POSITION], rom, rom_size); - return true; -} - -void t_chip8_free_memory(t_chip8_state* state, void (*system_free)(void*)) { - system_free(state->memory); - for(int i = 0; i < SCREEN_HEIGHT; i++) { - system_free(state->screen[i]); - } - system_free(state->screen); - system_free(state->V); - system_free(state->key); - system_free(state->stack); - system_free(state); -} - -void t_chip8_execute_next_opcode(t_chip8_state* state) { - static bool isWaitInput = false; - static uint8_t register_number = 255; - - uint16_t opcode = state->memory[state->PC] << 8 | state->memory[state->PC + 1]; - uint8_t x = (opcode >> 8) & 0x000F; - uint8_t y = (opcode >> 4) & 0x000F; - uint8_t n = opcode & 0x000F; - uint8_t kk = opcode & 0x00FF; - uint16_t nnn = opcode & 0x0FFF; - - // jump to input-wait opcode - if(isWaitInput) { - opcode = 0xF000; - kk = 0x0A; - x = register_number; - } - state->current_opcode = opcode & 0xF000; - switch(opcode & 0xF000) { - case 0x0000: - switch(kk) { - case 0x00E0: - for(int i = 0; i < SCREEN_HEIGHT; i++) { - for(int j = 0; j < SCREEN_WIDTH; j++) { - state->screen[i][j] = 0; - } - } - state->PC += 2; - break; - case 0x00EE: - state->PC = state->stack[--state->SP]; - break; - default: - error_stop(state, opcode); - } - break; - case 0x1000: - state->PC = nnn; - break; - case 0x2000: - state->stack[state->SP++] = state->PC + 2; - state->PC = nnn; - break; - case 0x3000: - state->PC += (state->V[x] == kk) ? 4 : 2; - break; - case 0x4000: - state->PC += (state->V[x] != kk) ? 4 : 2; - break; - case 0x5000: - state->PC += (state->V[x] == state->V[y]) ? 4 : 2; - break; - case 0x6000: - state->V[x] = kk; - state->PC += 2; - break; - case 0x7000: - state->V[x] += kk; - state->PC += 2; - break; - case 0x8000: - switch(n) { - case 0x0: - state->V[x] = state->V[y]; - break; - case 0x1: - state->V[x] |= state->V[y]; - break; - case 0x2: - state->V[x] &= state->V[y]; - break; - case 0x3: - state->V[x] ^= state->V[y]; - break; - case 0x4: - state->V[0xF] = (int)state->V[x] + (int)state->V[y] ? 1 : 0; - state->V[x] += state->V[y]; - break; - case 0x5: - state->V[0xF] = state->V[x] > state->V[y] ? 1 : 0; - state->V[x] -= state->V[y]; - break; - case 0x6: - state->V[0xF] = state->V[x] & 0x1; - state->V[x] >>= 1; - break; - case 0x7: - state->V[0xF] = state->V[y] > state->V[x] ? 1 : 0; - state->V[x] = state->V[y] - state->V[x]; - break; - case 0xE: - state->V[0xF] = (state->V[x] >> 7) & 0x1; - state->V[x] <<= 1; - break; - default: - error_stop(state, opcode); - } - state->PC += 2; - break; - case 0x9000: - switch(n) { - case 0x0: - state->PC += state->V[x] != state->V[y] ? 4 : 2; - break; - default: - error_stop(state, opcode); - } - break; - case 0xA000: - state->I = nnn; - state->PC += 2; - break; - case 0xB000: - state->PC = nnn + state->V[0]; - break; - case 0xC000: - state->V[x] = randbyte() & kk; - state->PC += 2; - break; - case 0xD000: - draw_sprite(state, state->V[x], state->V[y], n); - state->go_render = true; - state->PC += 2; - break; - case 0xE000: - switch(kk) { - case 0x9E: - state->PC += state->key[state->V[x]] ? 4 : 2; - break; - case 0xA1: - state->PC += !state->key[state->V[x]] ? 4 : 2; - break; - default: - error_stop(state, opcode); - } - break; - case 0xF000: - switch(kk) { - case 0x07: - state->V[x] = state->delay_timer; - state->PC += 2; - break; - case 0x0A: - for(int i = 0; i < KEYS_NUMBER; i++) { - if(state->key[i]) { - state->V[x] = i; - isWaitInput = false; - goto exit_input_wait; - } - isWaitInput = true; - register_number = x; - } - exit_input_wait: - state->PC += 2; - break; - case 0x15: - state->delay_timer = state->V[x]; - state->PC += 2; - break; - case 0x18: - state->sound_timer = state->V[x]; - state->PC += 2; - break; - case 0x1E: - state->V[0xF] = state->I + state->V[x] > 0xFFF ? 1 : 0; - state->I += state->V[x]; - state->PC += 2; - break; - case 0x29: - state->I = FONT_BYTES_PER_CHAR * state->V[x]; - state->PC += 2; - break; - case 0x33: - state->memory[state->I] = (state->V[x] % 1000) / 100; - state->memory[state->I + 1] = (state->V[x] % 100) / 10; - state->memory[state->I + 2] = state->V[x] % 10; - state->PC += 2; - break; - case 0x55: - memcpy(state->memory, state->V, x); - state->I += x + 1; - state->PC += 2; - break; - case 0x65: - for(int i = 0; i <= x; i++) { - state->V[i] = state->memory[state->I + i]; - } - state->I += x + 1; - state->PC += 2; - break; - default: - error_stop(state, opcode); - } - break; - default: - error_stop(state, opcode); - } - - state->next_opcode = state->memory[state->PC] << 8 | state->memory[state->PC + 1]; - state->next_opcode &= 0xf000; -} - -void t_chip8_tick(t_chip8_state* state) { - if(state->delay_timer > 0) { - --state->delay_timer; - } - if(state->sound_timer > 0) { - --state->sound_timer; - } -} - -uint8_t** t_chip8_get_screen(t_chip8_state* state) { - return (uint8_t**)state->screen; -} - -void t_chip8_set_input(t_chip8_state* state, t_keys key) { - state->key[key] = 1; -} - -void t_chip8_release_input(t_chip8_state* state) { - for(int i = 0; i < KEYS_NUMBER; i++) { - state->key[i] = 0; - } -} - -static uint8_t randbyte() { - return rand() % 256; -} - -static void draw_sprite(t_chip8_state* state, uint8_t x, uint8_t y, uint8_t n) { - unsigned row = y, col = x; - unsigned byte_index; - unsigned bit_index; - - state->V[0xF] = 0; - for(byte_index = 0; byte_index < n; byte_index++) { - uint8_t byte = state->memory[state->I + byte_index]; - - for(bit_index = 0; bit_index < 8; bit_index++) { - uint8_t bit = (byte >> bit_index) & 0x1; - - uint8_t* pixel_pointer = &state->screen[(row + byte_index) % SCREEN_HEIGHT] - [(col + (7 - bit_index)) % SCREEN_WIDTH]; - - if(bit == 1 && *pixel_pointer == 1) state->V[0xF] = 1; - *pixel_pointer = *pixel_pointer ^ bit; - } - } -} - -static void error_stop(t_chip8_state* state, uint16_t opcode) { - exit(100); -} diff --git a/applications/plugins/chip8/emulator_core/flipper_chip.h b/applications/plugins/chip8/emulator_core/flipper_chip.h deleted file mode 100644 index 09c2ed298..000000000 --- a/applications/plugins/chip8/emulator_core/flipper_chip.h +++ /dev/null @@ -1,74 +0,0 @@ -// -// Created by dwdraugr on 24.11.2021. -// - -#ifndef FLIPPER_CHIP_FLIPPER_CHIP_H -#define FLIPPER_CHIP_FLIPPER_CHIP_H - -#include -#include -#include - -#define CPU_REGISTER_NUMBER 0x10 -#define CPU_STACK_DEPTH 0x10 - -#define MEMORY_SIZE 0x1000 -#define MEMORY_START_POSITION 0x200 -#define MEMORY_ROM_SIZE (MEMORY_SIZE - MEMORY_START_POSITION) - -#define SCREEN_WIDTH 64 -#define SCREEN_HEIGHT 32 -#define SCREEN_SIZE (SCREEN_WIDTH * SCREEN_HEIGHT) - -#define KEYS_NUMBER 0x10 - -typedef struct s_flipper_state { - uint16_t I; - uint16_t PC; - uint8_t SP; - uint8_t* V; // CPU_REGISTER_NUMBER - uint16_t* stack; // CPU_STACK_DEPTH - uint8_t* memory; // MEMORY_SIZE - uint8_t delay_timer; - uint8_t sound_timer; - uint8_t** screen; // SCREEN_HEIGHT * SCREEN_WIDTH - uint8_t* key; // KEYS_NUMBER - bool go_render; - int current_opcode; - int next_opcode; -} t_chip8_state; - -// keyboard layout -// 1 2 3 C -// 4 5 6 D -// 7 8 9 E -// A 0 B F -typedef enum e_keys { - k_x, - k_1, - k_2, - k_3, - k_q, - k_w, - k_e, - k_a, - k_s, - k_d, - k_z, - k_c, - k_4, - k_r, - k_f, - k_v, -} t_keys; - -t_chip8_state* t_chip8_init(void* (*system_malloc)(size_t)); -bool t_chip8_load_game(t_chip8_state* state, const uint8_t* rom, int rom_size); -void t_chip8_execute_next_opcode(t_chip8_state* state); -void t_chip8_tick(t_chip8_state* state); -uint8_t** t_chip8_get_screen(t_chip8_state* state); -void t_chip8_free_memory(t_chip8_state* state, void (*system_free)(void*)); -void t_chip8_set_input(t_chip8_state* state, t_keys key); -void t_chip8_release_input(t_chip8_state* state); - -#endif //FLIPPER_CHIP_FLIPPER_CHIP_H diff --git a/applications/plugins/chip8/emulator_core/flipper_fonts.h b/applications/plugins/chip8/emulator_core/flipper_fonts.h deleted file mode 100644 index f1bcec1b9..000000000 --- a/applications/plugins/chip8/emulator_core/flipper_fonts.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// Created by dwdraugr on 24.11.2021. -// - -#ifndef FLIPPER_CHIP_FLIPPER_FONTS_H -#define FLIPPER_CHIP_FLIPPER_FONTS_H - -#define FONT_BYTES_PER_CHAR 5 -#define FONT_SMALL (16 * 5) - -unsigned char font_small[FONT_SMALL] = { - 0xF0, 0x90, 0x90, 0x90, 0xF0, // 0 - 0x20, 0x60, 0x20, 0x20, 0x70, // 1 - 0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2 - 0xF0, 0x10, 0xF0, 0x10, 0xF0, // 3 - 0x90, 0x90, 0xF0, 0x10, 0x10, // 4 - 0xF0, 0x80, 0xF0, 0x10, 0xF0, // 5 - 0xF0, 0x80, 0xF0, 0x90, 0xF0, // 6 - 0xF0, 0x10, 0x20, 0x40, 0x40, // 7 - 0xF0, 0x90, 0xF0, 0x90, 0xF0, // 8 - 0xF0, 0x90, 0xF0, 0x10, 0xF0, // 9 - 0xF0, 0x90, 0xF0, 0x90, 0x90, // A - 0xE0, 0x90, 0xE0, 0x90, 0xE0, // B - 0xF0, 0x80, 0x80, 0x80, 0xF0, // C - 0xE0, 0x90, 0x90, 0x90, 0xE0, // D - 0xF0, 0x80, 0xF0, 0x80, 0xF0, // E - 0xF0, 0x80, 0xF0, 0x80, 0x80 // F -}; - -#endif //FLIPPER_CHIP_FLIPPER_FONTS_H diff --git a/applications/plugins/chip8/scenes/chip8_scene.c b/applications/plugins/chip8/scenes/chip8_scene.c deleted file mode 100644 index 34488c888..000000000 --- a/applications/plugins/chip8/scenes/chip8_scene.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "chip8_scene.h" - -#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_enter, -void (*const chip8_scene_on_enter_handlers[])(void*) = { -#include "chip8_scene_config.h" -}; -#undef ADD_SCENE - -#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_event, -bool (*const chip8_scene_on_event_handlers[])(void* context, SceneManagerEvent event) = { -#include "chip8_scene_config.h" -}; -#undef ADD_SCENE - -#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_exit, -void (*const chip8_scene_on_exit_handlers[])(void* context) = { -#include "chip8_scene_config.h" -}; -#undef ADD_SCENE - -const SceneManagerHandlers chip8_scene_handlers = { - .on_enter_handlers = chip8_scene_on_enter_handlers, - .on_event_handlers = chip8_scene_on_event_handlers, - .on_exit_handlers = chip8_scene_on_exit_handlers, - .scene_num = Chip8SceneNum, -}; diff --git a/applications/plugins/chip8/scenes/chip8_scene.h b/applications/plugins/chip8/scenes/chip8_scene.h deleted file mode 100644 index 19fd40c62..000000000 --- a/applications/plugins/chip8/scenes/chip8_scene.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include - -#define ADD_SCENE(prefix, name, id) Chip8Scene##id, -typedef enum { -#include "chip8_scene_config.h" - Chip8SceneNum, -} Chip8Scene; -#undef ADD_SCENE - -extern const SceneManagerHandlers chip8_scene_handlers; - -#define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_enter(void*); -#include "chip8_scene_config.h" -#undef ADD_SCENE - -#define ADD_SCENE(prefix, name, id) \ - bool prefix##_scene_##name##_on_event(void* context, SceneManagerEvent event); -#include "chip8_scene_config.h" -#undef ADD_SCENE - -#define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_exit(void* context); -#include "chip8_scene_config.h" -#undef ADD_SCENE diff --git a/applications/plugins/chip8/scenes/chip8_scene_config.h b/applications/plugins/chip8/scenes/chip8_scene_config.h deleted file mode 100644 index 593249a87..000000000 --- a/applications/plugins/chip8/scenes/chip8_scene_config.h +++ /dev/null @@ -1,2 +0,0 @@ -ADD_SCENE(chip8, file_select, FileSelect) -ADD_SCENE(chip8, work, Work) \ No newline at end of file diff --git a/applications/plugins/chip8/scenes/chip8_scene_file_select.c b/applications/plugins/chip8/scenes/chip8_scene_file_select.c deleted file mode 100644 index 246e62170..000000000 --- a/applications/plugins/chip8/scenes/chip8_scene_file_select.c +++ /dev/null @@ -1,45 +0,0 @@ -#include "../chip8_app_i.h" -#include "furi_hal_power.h" - -static bool chip8_file_select(Chip8App* chip8) { - furi_assert(chip8); - chip8->file_name = furi_string_alloc(); - furi_string_set(chip8->file_name, CHIP8_APP_PATH_FOLDER); - // furi_string_set(file_path, chip8->file_name); - - bool res = dialog_file_browser_show( - chip8->dialogs, - chip8->file_name, - chip8->file_name, - CHIP8_APP_EXTENSION, - true, - &I_unknown_10px, - false); - - FURI_LOG_I( - "Chip8_file_browser_show", "chip8->file_name: %s", furi_string_get_cstr(chip8->file_name)); - FURI_LOG_I("Chip8_file_browser_show", "res: %d", res); - return res; -} - -void chip8_scene_file_select_on_enter(void* context) { - Chip8App* chip8 = context; - - if(chip8_file_select(chip8)) { - FURI_LOG_I( - "Chip8", "chip8_file_select, file_name = %s", furi_string_get_cstr(chip8->file_name)); - scene_manager_next_scene(chip8->scene_manager, Chip8WorkView); - } else { - view_dispatcher_stop(chip8->view_dispatcher); - } -} - -bool chip8_scene_file_select_on_event(void* context, SceneManagerEvent event) { - UNUSED(context); - UNUSED(event); - return false; -} - -void chip8_scene_file_select_on_exit(void* context) { - UNUSED(context); -} diff --git a/applications/plugins/chip8/scenes/chip8_scene_work.c b/applications/plugins/chip8/scenes/chip8_scene_work.c deleted file mode 100644 index 4cb6bce32..000000000 --- a/applications/plugins/chip8/scenes/chip8_scene_work.c +++ /dev/null @@ -1,90 +0,0 @@ -#include "../chip8_app_i.h" -#include "../views/chip8_view.h" -#include "furi_hal.h" - -void chip8_scene_ok_callback(InputType type, void* context) { - furi_assert(context); - Chip8App* app = context; - view_dispatcher_send_custom_event(app->view_dispatcher, type); -} - -void chip8_scene_back_callback(Chip8View* view, InputType type, void* context) { - furi_assert(context); - Chip8App* app = context; - chip8_set_back_pressed(app->chip8); - chip8_set_state(view, chip8_get_state(app->chip8)); - // view_dispatcher_send_custom_event(app->view_dispatcher, type); - view_dispatcher_stop(app->view_dispatcher); -} - -void chip8_scene_up_callback(InputType type, void* context) { - furi_assert(context); - Chip8App* app = context; - chip8_set_up_pressed(app->chip8); - // view_dispatcher_send_custom_event(app->view_dispatcher, type); -} - -void chip8_scene_down_callback(InputType type, void* context) { - furi_assert(context); - Chip8App* app = context; - chip8_set_down_pressed(app->chip8); - // view_dispatcher_send_custom_event(app->view_dispatcher, type); -} - -void chip8_scene_release_callback(InputType type, void* context) { - furi_assert(context); - Chip8App* app = context; - chip8_release_keyboard(app->chip8); - // view_dispatcher_send_custom_event(app->view_dispatcher, type); -} - -bool chip8_scene_work_on_event(void* context, SceneManagerEvent event) { - Chip8App* app = context; - bool consumed = false; - - if(event.type == SceneManagerEventTypeCustom) { - chip8_toggle(app->chip8); - consumed = true; - } else if(event.type == SceneManagerEventTypeTick) { - Chip8State* state = chip8_get_state(app->chip8); - - chip8_set_state(app->chip8_view, state); - } - return consumed; -} - -void chip8_scene_work_on_enter(void* context) { - Chip8App* app = context; - - chip8_set_file_name(app->chip8_view, app->file_name); - - FuriString* file_tmp; - file_tmp = furi_string_alloc(); - - furi_string_printf(file_tmp, "%s", furi_string_get_cstr(app->file_name)); - - FURI_LOG_I("chip8_scene_work_on_enter", "file_name: %s", furi_string_get_cstr(file_tmp)); - - FURI_LOG_I("chip8_scene_work_on_enter", "START SET BACKUP SCREEN"); - chip8_set_backup_screen(app->chip8_view, app->backup_screen); - FURI_LOG_I("chip8_scene_work_on_enter", "END SET BACKUP SCREEN"); - - app->chip8 = chip8_make_emulator(file_tmp); - - furi_string_free(file_tmp); - - chip8_set_state(app->chip8_view, chip8_get_state(app->chip8)); - - chip8_set_ok_callback(app->chip8_view, chip8_scene_ok_callback, app); - chip8_set_back_callback(app->chip8_view, chip8_scene_back_callback, app); - chip8_set_up_callback(app->chip8_view, chip8_scene_up_callback, app); - chip8_set_down_callback(app->chip8_view, chip8_scene_down_callback, app); - chip8_set_release_callback(app->chip8_view, chip8_scene_release_callback, app); - - view_dispatcher_switch_to_view(app->view_dispatcher, Chip8WorkView); -} - -void chip8_scene_work_on_exit(void* context) { - Chip8App* app = context; - chip8_close_emulator(app->chip8); -} diff --git a/applications/plugins/chip8/views/chip8_view.c b/applications/plugins/chip8/views/chip8_view.c deleted file mode 100644 index ca741cde2..000000000 --- a/applications/plugins/chip8/views/chip8_view.c +++ /dev/null @@ -1,207 +0,0 @@ -#include -#include "chip8_view.h" -#include "../chip8.h" -#include "../emulator_core/flipper_chip.h" - -struct Chip8View { - View* view; - Chip8ViewCallback callback; - void* context; - Chip8ViewKeyBackCallback backCallback; - Chip8ViewKeyUpCallback upCallback; - Chip8ViewKeyDownCallback downCallback; - Chip8ViewReleaseCallback releaseCallback; -}; - -typedef struct { - FuriString* file_name; - Chip8State state; - uint8_t** backup_screen; -} Chip8Model; - -static void chip8_draw_callback(Canvas* canvas, void* _model) { - Chip8Model* model = _model; - - if(model->state.worker_state == WorkerStateLoadingRom) { - canvas_draw_icon(canvas, 4, 22, &I_Clock_18x18); - } - - if(model->state.worker_state == WorkerStateRomLoaded) { - while(!model->state.t_chip8_state->go_render) { - for(int y = 0; y < CHIP8_SCREEN_H; y++) { - for(int x = 0; x < CHIP8_SCREEN_W; x++) { - if(model->backup_screen[y][x] == 0) { - canvas_set_color(canvas, ColorWhite); - } else { - canvas_set_color(canvas, ColorBlack); - } - canvas_draw_box(canvas, x * 2, y * 2, 2, 2); - //canvas_draw_dot(canvas, x, y); - } - } - return; - } - - uint8_t** screen = t_chip8_get_screen(model->state.t_chip8_state); - - for(int y = 0; y < CHIP8_SCREEN_H; y++) { - for(int x = 0; x < CHIP8_SCREEN_W; x++) { - if(screen[y][x] == 0) { - canvas_set_color(canvas, ColorWhite); - } else { - canvas_set_color(canvas, ColorBlack); - } - canvas_draw_box(canvas, x * 2, y * 2, 2, 2); - model->backup_screen[y][x] = screen[y][x]; - //canvas_draw_dot(canvas, x, y); - } - } - model->state.t_chip8_state->go_render = false; - } - - if(model->state.worker_state == WorkerStateRomLoadError) { - canvas_draw_icon(canvas, 4, 22, &I_Error_18x18); - } -} - -static bool chip8_input_callback(InputEvent* event, void* context) { - FURI_LOG_I("Chip8", "received input"); - furi_assert(context); - Chip8View* chip8 = context; - bool consumed = false; - - if(event->type == InputTypeShort) { - if(event->key == InputKeyOk) { - consumed = true; - furi_assert(chip8->callback); - chip8->callback(InputTypeShort, chip8->context); - } - - if(event->key == InputKeyBack) { - consumed = true; - furi_assert(chip8->callback); - chip8->backCallback(chip8, InputTypeShort, chip8->context); - } - - if(event->key == InputKeyUp) { - consumed = true; - furi_assert(chip8->upCallback); - chip8->upCallback(InputTypeShort, chip8->context); - } - if(event->key == InputKeyDown) { - consumed = true; - furi_assert(chip8->downCallback); - chip8->downCallback(InputTypeShort, chip8->context); - } - } - if(event->type == InputTypeRelease) { - chip8->releaseCallback(InputTypeShort, chip8->context); - } - - return consumed; -} - -Chip8View* chip8_alloc() { - Chip8View* chip8 = malloc(sizeof(Chip8View)); - - chip8->view = view_alloc(); - view_allocate_model(chip8->view, ViewModelTypeLocking, sizeof(Chip8Model)); - view_set_context(chip8->view, chip8); - view_set_draw_callback(chip8->view, chip8_draw_callback); - view_set_input_callback(chip8->view, chip8_input_callback); - - return chip8; -} - -void chip8_free(Chip8View* chip8) { - furi_assert(chip8); - view_free(chip8->view); - free(chip8); -} - -View* chip8_get_view(Chip8View* chip8) { - furi_assert(chip8); - return chip8->view; -} - -void chip8_set_ok_callback(Chip8View* chip8, Chip8ViewCallback callback, void* context) { - furi_assert(chip8); - furi_assert(callback); - with_view_model( - chip8->view, (Chip8Model * model) { - chip8->callback = callback; - chip8->context = context; - return false; - }); -} - -void chip8_set_back_callback(Chip8View* chip8, Chip8ViewKeyBackCallback callback, void* context) { - furi_assert(chip8); - furi_assert(callback); - with_view_model( - chip8->view, (Chip8Model * model) { - chip8->backCallback = callback; - chip8->context = context; - return true; - }); -} - -void chip8_set_up_callback(Chip8View* chip8, Chip8ViewKeyUpCallback callback, void* context) { - furi_assert(chip8); - furi_assert(callback); - with_view_model( - chip8->view, (Chip8Model * model) { - chip8->upCallback = callback; - chip8->context = context; - return true; - }); -} - -void chip8_set_down_callback(Chip8View* chip8, Chip8ViewKeyDownCallback callback, void* context) { - furi_assert(chip8); - furi_assert(callback); - with_view_model( - chip8->view, (Chip8Model * model) { - chip8->downCallback = callback; - chip8->context = context; - return true; - }); -} - -void chip8_set_file_name(Chip8View* chip8, FuriString* name) { - furi_assert(name); - with_view_model( - chip8->view, (Chip8Model * model) { - *model->file_name = *name; - return false; - }); -} - -void chip8_set_backup_screen(Chip8View* chip8, uint8_t** screen) { - furi_assert(screen); - with_view_model( - chip8->view, (Chip8Model * model) { - model->backup_screen = screen; - return false; - }); -} - -void chip8_set_state(Chip8View* chip8, Chip8State* st) { - furi_assert(st); - with_view_model( - chip8->view, (Chip8Model * model) { - memcpy(&(model->state), st, sizeof(Chip8State)); - return true; - }); -} - -void chip8_set_release_callback(Chip8View* chip8, Chip8ViewReleaseCallback callback, void* context) { - furi_assert(chip8); - furi_assert(callback); - with_view_model( - chip8->view, (Chip8Model * model) { - chip8->releaseCallback = callback; - chip8->context = context; - return true; - }); -} diff --git a/applications/plugins/chip8/views/chip8_view.h b/applications/plugins/chip8/views/chip8_view.h deleted file mode 100644 index 7550c0326..000000000 --- a/applications/plugins/chip8/views/chip8_view.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include -#include "../chip8.h" - -typedef struct Chip8View Chip8View; -typedef void (*Chip8ViewCallback)(InputType type, void* context); -typedef void (*Chip8ViewKeyBackCallback)(Chip8View* view, InputType type, void* context); -typedef void (*Chip8ViewKeyUpCallback)(InputType type, void* context); -typedef void (*Chip8ViewKeyDownCallback)(InputType type, void* context); -typedef void (*Chip8ViewReleaseCallback)(InputType type, void* context); - -Chip8View* chip8_alloc(); - -void chip8_free(Chip8View* chip8); - -View* chip8_get_view(Chip8View* chip8); - -void chip8_set_ok_callback(Chip8View* chip8, Chip8ViewCallback callback, void* context); -void chip8_set_back_callback(Chip8View* chip8, Chip8ViewKeyBackCallback callback, void* context); -void chip8_set_up_callback(Chip8View* chip8, Chip8ViewKeyUpCallback callback, void* context); -void chip8_set_down_callback(Chip8View* chip8, Chip8ViewKeyDownCallback callback, void* context); -void chip8_set_release_callback(Chip8View* chip8, Chip8ViewReleaseCallback callback, void* context); - -void chip8_set_backup_screen(Chip8View* chip8, uint8_t** screen); - -void chip8_set_file_name(Chip8View* chip8, FuriString* name); - -void chip8_set_state(Chip8View* chip8, Chip8State* st); From 700ac598a996ee5cdc7c175c5bd46bb1f5eebe8d Mon Sep 17 00:00:00 2001 From: RogueMaster Date: Thu, 13 Oct 2022 23:04:17 -0400 Subject: [PATCH 4/4] Update application.fam --- applications/plugins/Tuning Fork/application.fam | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/plugins/Tuning Fork/application.fam b/applications/plugins/Tuning Fork/application.fam index e11930e54..47cef5364 100644 --- a/applications/plugins/Tuning Fork/application.fam +++ b/applications/plugins/Tuning Fork/application.fam @@ -1,7 +1,7 @@ App( - appid="tuning_fork", + appid="Tuning_Fork", name="Tuning Fork", - apptype=FlipperAppType.PLUGIN, + apptype=FlipperAppType.EXTERNAL, entry_point="tuning_fork_app", cdefines=["APP_TUNING_FORM"], requires=[