From 86030866940e9dfb0b6545f8a6fec01c94583aef Mon Sep 17 00:00:00 2001 From: Alula Date: Mon, 21 Dec 2020 12:57:31 +0100 Subject: [PATCH] Replace Organya wavetable with one based on actual Cave Story samples --- src/builtin/organya-wavetable-doukutsu.bin | Bin 0 -> 92600 bytes .../{pixtone.pcm => organya-wavetable-org.bin} | Bin src/builtin_fs.rs | 2 +- src/sound/mod.rs | 4 ++-- src/sound/playback.rs | 5 +++-- 5 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 src/builtin/organya-wavetable-doukutsu.bin rename src/builtin/{pixtone.pcm => organya-wavetable-org.bin} (100%) diff --git a/src/builtin/organya-wavetable-doukutsu.bin b/src/builtin/organya-wavetable-doukutsu.bin new file mode 100644 index 0000000000000000000000000000000000000000..4ab3a9fc42fdf4ff9dae67c6b9cb69de2d421546 GIT binary patch literal 92600 zcmeFa2bf&dk@r2yIY)#52}H&OgN^OQ#sLSgjZIDhgyLv4IZyX=PxplGo*XsG0+F*Z z4%lA%wf9}`dTlT!2oOO+2uUdC9KYYc&h4HVX=K2Q_uc1vRG`~8oO@24I#qS*RMokY zbmY*%{rh(B+_rh+`gLnpfB3=574N-Re`OklO@kPr1_2rlU#+$Fc`ugijm%j1VTg%>l=e_q< zy#K+6tJkhuzhTqnE!%eN+P!c8!9z!qlDhZk)w^&1L4$`4A31u=*wfA!cjj3W&OZ0N z^DnsQqR(A?>7}2){E92S@Wm^y{L+`c{FQ&X>Z+^0`qi&}?dq$q{`!gF>Z`x@)vK=h zm#=*JOJBP33tzb6^2;v0^x}&yy5PKX&zUe`{P=O>P9J;9=n=yP5A5H&N4KP;q@z$k z1lY83-Rciky!XzsH+|<-o1PE?9rop_wL=gcIna{nIne}?ccL&+opA^KV11fL(j;+rI8oB4!mZd zL0tOAo6DBHtv;?~6zSzAdbwj4-Q1^+9y|mb296v#a`f0Pw{J0VE;4lOror#iZ{Xk| z!$yui1rnSk3S4~YWtU&^1$F+*U-`QylPJIj{6rEYsYrrXB2%iei!`N~ym zHf-H}u>D(~)p@V}gNKiR=}(90C!7t_!}S-!_8s7&^Xccfu_K4}?fzM{`}gWO$_T<1 zhYlXtzi;oJUE8-xHHbanj%CZ)+J~Rvz3xbZ6I>lV3acDEux~FKbjv1YkkzX`So!|)_uv&xA|2rEciw%^ zQy*(TTDKAXv18ZX{fCZr>Dgxh-5-7GSd)Tt&OQJ9w&A}l4iMs!i!Y|D=bk;`tZ`?Y zcB(Yokii4{^|d1eLFfZ$74!u_xWs`8RcB_UjCMmQ5V>#PZavzQ2BlaV9hFnsusKAH)c z2o0dAW`9P?N%p#rKKe-J$(C)~wtKK`%f_`IEPv-Mn+`P@+C&H|FJJNg`zt*V4a{f~ zzrSt3bb@YJ`kEO~SVFJAvFzOyAFSK3W&5t(d-m+zyO(M6z@ft!KRtUn=-qqZ$kUhw z&T()yeWnLzju)IY;oJ)@`TUpu<*QeJ{Tl{fzxwL0Ud43COn4~@zyXACmV>7&uDIe- z=m8InIc0Q57&W55qy~j3@s*z6&EW6Q5N+MEd9wy-{W_?z#>q1R%?L9;qU-*~=%e`m zgkAK1|LqUJzy04oVhc&rqv)mXFon$AgF-7mShecI)vMPa@9Poxt!6Roq3;I{9r6q# zvjKYcmKii~(BPrNhL4aUgcX<#L=C2c3o!#PyUgssFPIUCHT3mweCwKTfA4$W`|fwY zea$uB`sO#j{&lQA2qN3yGS~u(@BH(iBs63i776rC$mX4?Aa4!8$bo*s>`_C`F^y15}yoO9Lm91Eb9fUc%anq))+jgMP z>DPWbc1RQGC$oWQ-ZO(_2lejPe*l)y(BUXUrh+q=2*mZ5TzdHznBlPQ=$7ff@#w#? zr=Bu;K`4Bgc*fVCR!bZOJQmo+RFA%r5xi`v+5CTf<<&Qqz4!hHnz8BOuHAbX zwCJo+p%@y+Lg=SeoIFG-(FL9*R0>NZO^_#pU8;))a|(!H0TCNUAy;?{fqfK=JfIB zTyV+dS6=Zssj+dVpE7#b;C{Wuq5qG-cmq=qTkybveX<32?c9NeKs{_gIjmW2i^XM7 z?r$&sS^D6Q|M92)dJ!eC^o?cjEMLh=PYXR{o~dQGgahd~z>-Mo1mr_tJre_HDFhRE z(5G)d1Oa6*0##ruLS}>WFZvw%A02qrl~?b{mz z&lWmumHn?c^Nd1oVqL%bgLjv{{Gxdd{_@frD^{=Dw2fKNR{!FFE_A;qMzD;)Q^#F! z*%!ZT7XDYRyzHX0$BjK@6!!aoeqL9*{;%lYr$qvKXp+UcTJ`=rZ!UfHZ}?KMpq4IM zy?yV2quu)s9y#{R^Dn;aiZ5Kw^5y(G4Ij?i>QCUo~{%)QEJf85u;8SGiHp<42V8Oj~vh4TW3+Z)SP ztX{u;-{H=Ccg)>GhcSQg{+So#{Z9gMo43>7Pg21O1M`$^+_w9`k?y^5g0TKM<1>SC z9|u}JGOjGEj^g{5v!xW3pmIyo`w$W+v5b9bI+FbYqdr@@yK}uk=90H z+s#`i>eHvY->s*O|7qhUocnPgbN$MKYcLeXo;b7cQ z>FoVadC#n#w!`^0fVRH173(pFv(G*Um*9DyvW?HG_?|5v!52Gnqp}8j^z7ZIulYfo zD~RZbImO2(+K$bA3Ft+eO1p!>( z58D;DN#_AEIlow@$#=i{effP}en|^8!nmwY%+KW}LW>CVly$8OhqBav>94OYeGA|4 z^5xDGim%Uu4?Ba^&JSpgK%7Yy{=qKp-EZ*lQ^%ci0n48+e(5WU=@8Y?8baCKL7}My^Yh;!CPyU%Rj~L@aXF9%9Zi) z<(JXKxgQ74*RET)Y4dgstD;(;9QqC)OXTBxqFtY3v^AWj67hInnCSN9mtDfLc!CC* zVLqKf?$CKH3UP*x)KZY4h4IZ%$mo77A}mQsf587wl#@|i>%qEpL@W*^bs;*5Cu$H9 zrAT_ezCF7op(3`kT*B3pFq(;XtlPYgFea-zTQdq5))z^G2lVYjlEKjf`*v+*g|YfW zrb2<_q7nw{)@|6lzu(YNr+5ov ze(3k8BqBs0r*wuR2liOdNvjzRj|~`1i~Aj0tIrU;t6D#r7~n$c-?L*xS%#^c*HY#C z_Yv^iDqpzrLWFpyrl6*EVgql!@%n2P8hGi&IJm$sBK3-k7$mOP z*OisFE&s+(Amu|bPe7cY#SJMS#572TP%6ZgR}$hyEAZ?*`TiU?h$A|Jv_PCi5P6YR zUIG^cHiwy8V1IHJZCCQBR`$63hz4uX?5G@n-8?<+FA^z~O>c3{Epx8By0LLn5w z=V%!s2=BcA(QcMg7{7ytk3MbO+2>uT_zeMU!q*CTne1O^sSpzU%Pu9NajsNdJ3v%O zXpsxlt!Ml8QBdQ*(Z6(;DdF{PPA@n1MecHr_=A8p#P`*4@; zeVGGKKg&hESl^v-#(2g41dOt!>&Oq|z=qP?Jo)Y2(j6{~~2K0hgXX?$qJ^ zdv?VKwQKv9jq5*JvudRRjxG_2Q1h#=zDm5AaO%6uKVXKj$<-o^?W_std2s*U-SSE9 zwp6VB`{ik7x>0y0zUCrUxpLL&j|k)8b+xRtb}Zlxi3Kue-`9(t&*&*AV#Mx&u%D z;qE<1^C6z2=$=dSIp>_S&l-Pv&utr4zx6t!_}bF9-d#yOTX*cTzyK_VX{vA$EQqN@ zj8MTL)LWM%6wF@quLYvyO2*7mY;r%r*TZtOA5an+s2@2%F9|YrF#}j^+@*&tm~{`n zZtt02dca*jy043195jPv(Q1TC&k1R55 zM;86e#Jk~e3_lm|>eJWxzDJPqV5?wdKVA4a&3f3wN_RB4>MBwml;lJv)RzTc@GN5Y z^vhRbA$tCI^5cjTU7&o&Gi`RjQ{d)6B?QL9#V%efHh__dKq&?VMj$h2$neo)P9I0` zSxJ~6BTycO0`Zuq1fj`J;Tf|O>iRVN5JNCEwb&r#C=T+&Ys3;D;XuRm6`*KrqLTlb z{6q3j9N<_dR%k#hUO?0t;BNc@A^I)YYRcMUqD5K^-j?tyc@erJGH;*&BtDWLFCXDu z1+pz9sZjP_)Qm}yGkFdx^r6Am@Ehm5?6=*tZb8p&%8d{!i1UGs23Thwt?@wSmgneT zg=j|6vNzunxO_?zXT#=gOzBl?u>N-MBLT#gybzw4r&hg001*;Qv{O$#l{F!ea3uxG zDU4;L{0VC zt;u`9*wng4%Nwj)nU6|<&~(L2#l)@Ux`E4lv)k{nfH#QShj97Y^&7PKQ3}cW^_%x4 zb;ZFuh{!&Qe6S)U*n3KO1lpErSn$qJQ(UuOAM9V&5Cle)79gTXd%7dZ5hIi-YDxsf zd``k?3^!sNnXZ<)K8qv?*+tmaW8!fnA}6CX7Y)S57XLwjt~~%HAz223(F<%xDHo{? zJNcE_4DAY;iu#yckFFsyx(sxC(l#sO|pNDbJd9HVt>K0s55YmGC|4A?=^ z3~o)i5v7WbB{2?dPP`2k^=zB2sK0)!^byUmXN*^Zprr>9|Aurd9Y%UNEhIT69r7Yn z_#=|Kb$2s+Ka6b4f};0YA8GtQ#!$qLb8&x?gCu}E<3j5F+H|m0LSgF^EqXy8u%Wk! z!L6p&5Lwa8_9l4(wme`3@a8-3ui3iyXzw8-i0?bv(vRVT`=fVJyR65yN~;q|5&s|? zF2jZ1G2fY%Msm7XpbfokiN~PponW{y1HjttCb<)y5`F8-GHm!Lc#7o9@#Kyv1q=Ol z-Z8-yX+Vt969WO6j|WyY0v^s)Mq3a z4@`bcSErw%#I$ZnW>*m!6U)m41O^XKa8$!+Im4#a`t?zG6ekKSg6L@hjBSb!5+2;L zV;8xlbmD{~Zx3WA7|X%msCcP&%vuznb79(~VyS#`kgyNpuYY}MsSFi@VS5PyyZmKa z#Y@e&<-ytXfE72pO`rla}8m>r~rbd_&At7 zi#4UGMma`puzkDIjW7rIDcuMi>M^-lIpQl^p$^RagJTbP2|QY;V#~&DyOmm=?qfPu zhs=P|#33=jrG^oT+Xz#6e^MW`2T^%9`7*y~c3`eEh3q+CAtG~vW&tEeqSZ~a4(!b2 zi;Zh`NBp2td-v|yV@g+Z1~$e=parn$V%s6&rG2zGQjQ=T*PhBEHzGf3_@Dt8UjXyG z$%WzTrXgosYrq9gIF#NFwODvzDVx!ToyHW=J+5p?R3}jF5>=Tul8)G_;LwpSOwi7t zvs5Hg&NlO*A0(8tu8Jg>N403&N>+&($Fhp?r+&C@^NxKi8t4z!2^`ngxhv&?lG!e6 zRMrbFJsg?hR!=iYHIOc9ThB=)JarUTTgDk}cM}onTJ>(_H!~*v3 z-oB2dAU1_a|Et{K$wQ@HKU_vB7EP%yhfHW#8+7=!*F>GVe zV42&ME_@qvh+Nc}O6-{&pz?A2Xtm7dRvaNGCkr;hkNLaq7j3(1r zKp2hK`h;`N89$u-BKmunLD0SnbsSrs_#6%f<>T1uNa>oEoS)daW-f+(*kqg5ulZm( zSw=Wkmc57fZmWpjHpL&=#pJmeK}h&^_H9AAuUeHzM{;C8O3u-)Eo22^6WSgTk|Wn_ z+I^(&P~4ysSnOPQ?zj=;LiKW~V@i)A%WUMRQ6vEm=tB>bJjp$JHi$XQ)OcbLKjlex zbdQ!JSo;beo#6xs2{I?E6GIG>bK=Vi?CwtpZU)xsq}}A)?liG(`K(W55VUK@J7tA< zI+-&`+tz&WmJ<7xzO!omw!MTnSo)i$_Ew*8i_-61%#~;)wy@QpTH`jT%$ol}klo|J z?4HEobM37mOZRt1@2R7Q4d~eg>vZeJbt`bhD~^Sm5T*6r2WvLSO-WLoIk;d{=B3@+ zrSb7&X=@g?EU9zddkv685i(?V;jqD)Vwg=~m62o4^S0<+tkrlNWTUlFBtf1w1hr5< zAD0&xjvqH>SpUO`@X^W-R&O}i>ooQ{h}H>a5xFmj6Wr|mM8A(eq4x96oiO1HC630I z$s-99F(F{{jU7F#fA`&6u_IWA2|gtChRnMTaXO4>n}k@X%ZNkTJQ&SdT`oHWg4O1! zW(&CkOKDQ*w7N)Qa^K_W%J}L~%R*67F#Yb8Q2&caDFgiY|4L(8(LJZ z1+@cBYU5x-111Kgf4W7tB0JjdhF`gt?0%dWta}q{R5RtZkpq1UU|5oj9=8*>?;wGb z%?!*BC^y@^Mh+kzSacHWbJpbS?ZCv}xrY^WuU^C_EJFv67$DbzT)_kT_3DZtv|D?p zJ-gBQM{qN3+_vjbQm=k4aOj5Q_@g}H-IEUO*{+tI-RUY=sS(<^Rk7p4U3&E!I(jV8 zAuRp#lm;-CK_1i(+r~N558ytNM-0_#uvxxPIf)M+?a~e9CL`&1(ENc>C6nr?CV!!@ z4ja>aIauQg7;coan0W#_tXJPb!?ZqTc?_ExqZ%Ph-ehu0GZTQs_kbb6JfV$%ZD4jf zTfTQ{MaYZ?qiJ1-qH&2&&ftN)FmK$TDw>Hksnmpyfd=P6HPrST5NggvB(E7}I@}^X zu31n(b#W$P<>9LH+={Fba2VShNXQcdNYlNx|FFYTPCeTRzXAh}$x+UlH`~Foq_^Le z-{yU+9HvYKK9tsvry6wn$bE_j4?Iky<)CWQ#^+k9-&yMEX=BD{Len;M$VOa4JJ5+L zJFh+M+SEwnaZsB|Ot6d@wy3c=WjEDxL)O1wO2guL3VQ=vHSkr+cti*3MTVPrh0jwJxkWI+>9dz z!4aP8UprCELu`9WOpBQ_U5;m=OqY(zkh2BV0rq3bmnb)D9K`gttA$6H3oI#I?z=gb z)Kk%7Z<0Kv7I5$!WwH(_!W+&O!(P+lxG8SdV-gmbR@!bErVI@9BWoI?qwOKK0$Zq`+YJAmN8+-D|2A_q;6;Wcw=E z>lW*#hH#H>!2c_UvOu$|Tf>?`=<=*(B0JZg)~#_k)fBv?_uDiRpNGh4A=}?vuV&W{ z@$#Gom|-mQSzRS;#q(B*Tfm{jD=))}*@3A=ybKkn^Ff*ZQ6JCrROiXUC zlzA>Z_pjnJV&C`{DLSc8BfO?{GwUY6Vx{1wsawc0eU4$ybG~@I%5u{&?K%UA&YT$N%D6 zQ3QGrnPh=&+4diAYmpOqn_TH;?J*&mxnpQ*uc>_L_^U=H_#i21H0S%h>rM7MTDOpQJ94mZ zKn&+(tlin|?!T3EraQU9{Ujyr`eOWyq9l1H4US)Laup{fotm^PX>a1LPFzl-_xuuW zY}4Iyb#SoCwX-MQe3F$Nhq7;{dlIgg_ugdntu4t+pNh387mDd$i3So>={*2xfJ1S|d8*Ica5m9M z-$~;EvM=Lm51p5=yQJ#qal_^vdk!Xb>kV0kv8zwuQX#Z+&uL;)Nv4hr z4TnHn@uD_h;Y}NqYKE*}Z>;`k^R7d9#hg_qpF9Nhq|0VBQ#fXb#OvO(5dra_&e%wsy=;Tcg(wNNt78W%EFtwTITz(IWb3uDsfxWD+2E3%rkV^g9 zi0?q3|8SpvkbmMlvK%kJ;){U$x{H!O&2Twqf+hap6OtXFIGZAyxIg-9Qk0r^Tckcw z7dkKGErR<%SS**(?8V_TG#6cb+2w3Ezv^pOf8(3q`qnpquYdKbFMZ+jmt1i6xYI`C zh|_NDbsRB7kw>B2 z?mIk3l^;mj9>Kwt%auXkS(|c^q8rWerYGJ5?XCTg1r?rhrJ6F+I>TR!D^17J@~C+^ z!SVB$AKaqaQum6BS!B$dKO%;w5S2ze#6CeHMrmh5%Z`p~fKGn(SSgvOnahr;+tTd_ zJ}c6zXlRF?szF)XxPrB4lB@_=0)NE1eAk|XSeWG8XcxG7wi$74mBYznGpao2GC}25 zc5^Lul}+E6EG#VKUb4gHY9BAMZ&{WKxD?T_03 z$P}(bP170igXGu2DMQqpmzbccnd5M4;zu7me2f=Ob%vG8l#LGy#*@AmfWf4pX-f=N z>b_P$cxF9=PV#IkLc-PJJ3in=&sBp)_uY4w zd$D*o&>J@GIM9t0W%LtCnZzfZA*drCU+9~($0CM^;8sao9L&ASvYG9%eAdbe%V-n~ zRf0asi{OI`ir_ww{K_rmfz~xdTwo2d;3Sn!82FNjfk#4o=9=HS5{A_VPG!VsQNfl9 zrD97r$o7NytdqMCNF}obP}8#c+CGNF;1l`K;Jbmql!s_2qYss;pxqlJ*AcqdZ>vA- zFt(t|1Y-$n(Pg(xBGQEUtu+RY2~04vevu~)lgT+bH557fQh@ zt!|J~2U1H&1{SZAc8^UeXOX@X@T#M62_V1N+fXLPA74N+H+RHD$^6Hx_Htg;(V8m#}+J+I7 z##q_1cGYr%+ONL4^zD^vHf-ZtVcq);9zE8ktdT=M`<-X;uK&OIb<0Vaa68dFZrLZ! z((YxKQgbX;@B&L;7y(OWr2^`BHtah`7o2+rMw-RxaN{5QTDxm)awa9jTVk4(2p20t znP8Z9r9b7Vg%tnZ!KPPH!WvLc;vB?GGs@PX}e`Bmls+pzv4*6<(NS2q!+#5dAjd4n6rRoH;uyK zHcTHckd4V=x+f_iy}VsZ!k6)v5$Y^YD>zS=2duRl_Avt&2JfT)BF~CVd0a#>ztvZWKV>p0HyAXQ>70Y^5FW=E~E= zsL+mb20U=CHraq=!cZe%CM};1({3j|Vq!y!l<-B z%FEmyOkiz-Ws%t}>EP}yQf(|FSVQ8~aO2BtNX$ojCO5!07B~}QkmaEzumkg{%TvM{ ziF7JYr+6zibBB9NeJMg&H>6%kSWOgkuz<_{-FQ_L+Q-Mffq3fPq#mX%Sh2?qM|g?3 z57}q?Gn;_Dk6XSdV51@ls!QJ_Ic6met8KgYdz<9tKD9#<^1*#r8SB@s5s;7?)zVXUS zfBDN_UVP=Z&Vmr3&g^`oG9N3K-CVaMu%PxO!Y4nM4`wR-k zCsQU@#1APu6Z|i}>_7kOrI+>1Kjg%s>K3~C87RTvfG6o3eFQkW$q^PpcM zDknuYL{Yi6pqw0M5*V$q_@=AbjG6f^X^whQYuWr9p_xpXqj&v}!GfT#m$^nFMB z&gr@5o@*&MYxL~`8PVqEr<9AYBF(s%6m6GPYWlr%oIks}JCd+lv;t6=M{zq&6_i`= zB6A-lC9wntDW@C>#d?YJ%C>RNwxPJ(-d~~B-fBxiTGOx3M`kT==q@K-TV$Iv7u(*{ zWn|Y)UA6t8`}*#ilt0yOeYIjaP2s+?Txr5-%nrSJz4!im%e${s?(M4XtBo}4U0`;n z0kO!W-AP(7>BF>#T@rJEzU>ysj(c#n;fdeeb8*_XVN~!ybo;Jv~S;5Rx8^{yWg>U_f9;ayLOF| z*$V8$W#O2LldfHn-_v&Q+OuibCjS56gN+~T+O=`x3VJtMieEuVZC=>0VPDT42N(|G zGn>YY*>Ys`s2xc=le+Bgx^C~j?%nsFx&O@VJ+}2aYulkMgAboMsPDkx2m2q~G`QdR zewzmN>o?$V7ycVGP9if{mZQPhu40ad2OsV|Xvn&C{fDkw_x|CY1BMSc@;-+_@Anu) zAap>Fo&$P*(6i^@9;-oXc>iJj`wwvh;;3}6(byQ0qHehBZoKw8-+7vl@NM6?_1n|a za>pr9&5|YQ%v+P}UzeobNmK93y)Qs&fAfo9zVO_0Km85x!V53(cS3&myWjr)|NQPZzy8(p&prF_gZJORXyH?jFPzs} z6^)dIf;E-V($ca}Np5z=%o($0&X_j!rW<}V`M!H5-u0bpuK&RguDka7AO7HnKlsX* zufP8KAO4U(^l|NV-~8r{H{E>8t=C-h^>2RXd)NN($G6;e*WFX5-Zy1hUct2K#U;fh zrKPdzrsg@#t#jw!zoemQ;o?Ugd+?Dbo_ylTpZ(&Ar=I@9zy0Cgp8M&)|M8c<{OxaF zc;P?)^Y_318^3+ckFLM&dpF&1(~aN1?rUHD%2%$w`upF%{`zlS z!(Sx%#*H`MaMLy4zUJGv-TtE=|M-SG@4oAvd+wVyBP}yCClK-n!r^dfxU9Z$&fIwm zn_C}z=#hsXed_5ao_yxnpZxUcXP$fhcfbGr3%~j;@UMb@|M%bh_7A`3;+Ma8{<&Yj z@XMb)|I?p5^3a11KQw>d+&L|cb&Ykkk&5!tP^biYW@V(#O3qB5GU?talkdIv?ptrU z>Bb-b=(=maf8Dj$e($^A{x%=T{wCkb<~y?A_{KMhNq+waKfLz3AN=q~KfeA)H{5dj z9e3S3dCHWjGp0^Yo|T%BRp<)@!{M@uibz#$0~DRRV9|pQKl=DX4?p(!b3gsr&tG7y z_3tdjEd*q47A9;Amg1K{Mw=~t))iL7b z73Jk+MTL1enOW&+DKlqGoigd}JMXyd_FHde@PGJ&@BaXFzxN%m{q{A00`H{({B# zKk)D)Fy@m_J@f2yzxW0C8p6L3VMXEJ!kxnT*S~tam!uj)BXE!(0*H*=%<)vYGqu5`RpPQ5E(R=c} z_e{L=j@xg6;6H}q$l0~u{qA>&P&?$U2jH%#wP=3b55yzTT-Z;%=U&jCJ~L%jdS+Hm zeqm9u;a^@6jn$wOjP45;KOp=cPjuktzkJ~ZNBZ_1@MsV5fBB1_dtG?y@y8y0_`xL) zELu2!j_X5BELvfG2p0Pb6P=hoW%8tZC*F1E9kPhRo`3n~#VSPhN+QF~Xr(gcU#N)Z=e)5xN zpQc}rKZXukf{-knFUf9hYOJfNuJlGKRD!4!7Ubn3Ep%>X^7Ls_C*ODPJ#_Dm+g-gp)InqbMo>FihRX3sOoZg zBwATjU0YX=;(%Z0G8Hdeh|*iK+%jVj}+PCsR1`&gpi zix)1?JTqtZY<0c9wzeAnjg*&3AnAOd*jH4TPw%s`GSbsE)*9?-5a7N^_uOsl3cHf=5TdtdPW9R$jwLZ_=*Do zsUGN1RvwAOVwEURDACx|+|t^L8l8{yE;3?>)gO8EvBw^NT$}(aJpGK|Ss0=NJPQp3 zPa7eg6q`Tx*rO0bT(IPU2NuHzjvlSX^9>D54>eVlu?SPJqlpp4?<*`U5LvP_Gcz;N z(q^Tkq$DTLn1+xWZ`^y2BhH<7qJ?i0eT+ai1JFQZXoFh}L==QTbh#7On0WWy_rM)S z8yLi>19{TYGct`!^70Dc6Q92r3ON!%ql!p0T3K0LT`MXzG&MD~%$_}a4%%Qova)dT zVk4CV=HZ7Qc|_!bUi$Zh0dzYC-2Eq1$f)#)==6|L>i+vhDrhx-9^3=5Omd)BZB0!z z^n!;VSR2Ixk|Imp5G>&CiNIZu0s`IvSxx|V z7`cpKkW4Q^vo@m5NQS9WW+7W5Tvk?gc5bd%tFW-h@An4+C60C&L0Ca3&{(Xhss=48 z^1)?D9C~IBLN^anW8p&d4K$SSEfEz(M?j=JA@E!UA9@ggzaDtN2nXdvy7_YvJR@F9 zQ&S_-S63(9Bl<-h{mQT;C5I&?fk1JBgn4;6IU-_422_NMaG%Hs9j6%wLdpA(&q?HP`OP*;IOifKoqd91pm6Ma3hn9l>JO*?e z7?ROjR&GoP7oxSGB#bChik2-fBSJe@)Px_6oQn`&2+IFZRUpcq2&{lgG6>>5NVvfG zZyt3*#o1!Q=B6fO7DB>@Fk)4llo+I?j+P=OYE9HcwV4>_A;=;qI?gC6k{V5CBGV$P z=n99zqksrx0F93W?~%$)(M!Bb4Up032rDAPFe6$HITk~r>+&2q3q?;!bRg(aGz3jc zOUoqK5kxy0gQ`{4&=moPuuxW{Wtk@G8hPPXQP?;ZDhnVIAab<_yXgub!GOIbcAV2H zQaWNXB{b5AW6WBKwviO^M!q8zGV_sf2n&x2N`k>)K#b}aaiK0;lAkY`j}sWlH@0Oi z0nh*fs3Llci{k*nj)(X|v82SB=|Z)Lo}wruO%N3(HM-{K7f9M2Y5gKD)J>4rcvcjK z#4Ljxk)bkVhR)T-!L=f`s4a4f;6`#II&?S6Lwvxf7C*RK-qFf&V5k7q;E`1VUq=J* zDx?){t7zQFivkdZMPpc3G>#KlbcTgRX=7s}Hq;g~dj!virC@4^?kJxFp9$bNKxA?N z%}xwPOZSHO)BrI7sMM&N$Jj~{sA17q{Obc9=nObgLu<`XagdS#L~#T4kd7MVVQ_&c zAWFC)&@dQ?Msa{-9}g6cziX7WDpk3_T0*1%kIqJE5!*mWistQzt}f6SQQl~8^wRt~@rrJ&tXt)!HpdI5_pZM2x((CN;KaLnDJ|6!@ zr*}@={y*`Fe0GyaDLd9@cg@pDNwM3z@VUIf=Civho_6-x`NU7wbdmxmDR7bkCn<1} z0w*bOk^(0waFPNiDR7bkCn<1}0w*bOk^=v~qJaD?SMdFfWBn}0=0**s3{K&?hKk74 z>1i3W=Mbn}bbobCk*}$_s_GAa_yaMXr=BF9NH~X>aX!fm1j`l&@y^|I_nmj%e%meK zP>@h+LEc?=-FefEL=;j|ltp4byZ|XAM1V6g%cC{5BrYskw16y&KuLJf{SV;zx7hs) zzfvdwFChLboWcZ(>T0W7ni@mF0QnSC?z^`(9F8{D&m{$?`sSMm$!BIvyo(UfEjQ0h z{_b~+it_Tl^PM8!O*c=ScGtwRio&8;RY`bOYJQQA06{2sw5YMKzJw=AYNXbo1LkY210v8KqrHmyn(s7H{EpI z_iwvB5Ui@6HOu0ev**lhXu5C8-S-fiOwXK|QeNRNE+``MM#h3-`s7^@*(F{^YzKch zA!|~0$g_Z&OCBIPJ$H`J7Yz8-+6_Ox{nlF)Yb2v$`t*Bmx%sx+Dk|;`1hR8(zvD-d zXeeA&J@Iaz|2DFSQc}~W%}6FPO2{-4tE{bi_PL*uSK#xLA%H9TnP;B<`OlXunOj}8 zVE)4o&7ITO@Qa@}l>{0ao_Zn{rFTRqAh3_5fIKBIO)JR1J7s2OH2Q<@mz0-Jnlv>O zO1tZ>iDWb2%4U2BamOm}nVC{kw_wqXncR!Us>oy@b)h^me?k4?`^$<04XtzP?!W)> z%F3TFTo`)zp|ZvX#YP`|@Btc8P?@w55=rEzju3u_ac<_HB7UTf5H?Xzlw1m8cSO_a zf#SmQ!2A4!ImsxPkxYafU+|1%x}MQGcOI8y4G@yUvp#>p1EG)t;bmou7c20i0JstY z0>zI#`p|=ArL8T&;)M$A&Y6`=LI=5RcTb!$dFm8$AMU)PApg7HO-q|LEhQz#?^h_H z@cQfTNllwHY1*Xwa&qsQ7>P!rlWS@-vjTy#eD&*I$3f9XH&Vno7)m`izv6a%Fc!@3}WrT3J;bEc9h&heEMR zB1|N(JpAZm#Fk6TDhPy+2s|wCK@C?_XS3*W3(!8VSiYL@UabxIqYAF9=!fA?o zS5$<|(cOMDOEA-u{-EK10awwbqx;1OOU7zd_` z(-Cb}$R}GGP)HCY+9#Q(h50;+I5+YibIss>-V>10_L!Mn+CmRY86+Q+aM)Wo1!CMJO+i zsi-s($S=Zsz|SZMSPg^G&8;abdy zFop(Yzyvmd=Pa06MA@n;4&Yc-#XtpvO)V|aShNXU5cGoER2hKJVW=P_6|!w?3=|W~ zE-ou8i9|v&4G3R?ol2IJ_`~7yvckexEEvoUhx2lMSy`n%Uv_q0uBr$k8R_IYGIBPa zV4X+InztFIT+p+bfQmrSBGch;QIX=+B_)KQ=~oe{T8NXnNYGl1M$)f;RQ)^zHP|x%GHKe{kfbMI2F$VG}O8;T|97c~G=c+0S*&7uoBa+9e zsu)8r+km3nqr7fgN!kQMs^cwV2@M3jDlDX|l6?>a<0yu=pn#&78txq-nV*j;%gYPV zT|bj6{h=m1!28N)^HYn+V+>MK0uAVTJ`KUBI-?~>kAkvWTlmUbI zyepNbkpw}`$lrx}JeMxfP3fA-O2`ukpfIIn#PfR7b<}kata*n{iwQZ>x}nDvsvhB2 z)h5LhqX~x1aQ9or3U3SHBB5j}MG@Z^-bY=WK?-|WwNRo6rhtH)zz|3kj38AcE)B7D z2e4ASMf;*-04f#vc-QBH-zW)&YD@#?AtQbW(l0T5DU*|rNihPAMJldQhnQK>7+3V3 zt}>&*5H7cdS|GYobSMg01TY>cxDj5bcf}eP>gPfo<1rV8rYkgziO=v9!T zN{*rrMvafL^w>?ag`uaKjb8(F(}a=o#%kgtc+g5xaakD@gUIL+p$TI!hTx=e6&q>r zR2EBx$4ZA|xW#r%Jw6|msuyA`fHT(-uX7cCKLw273>o+fIZD7-uG93Hp716|aN((` zj}l!wwo&c8QCwUKePL{I5d+9`2*W_DI_lCjmFfMG68M{!#UebRT5zBVgaWYlG<|TN zr`%UHls4MvMN?&>t!kuo@d@pS3er->L~2ESrXJT2ZE=nWi!!vy4{dQ5-ZE`Qd73jB z;D%wwEhal^0l?AJK0K!3l6IATwowIrm4bXcld^zI#m`JbXi^b~-hdxUiuHX!bC>8W zHA6wLr)3`VhNdM=;g${N2&2~lV=76ub&Fw!Ie9}IX}rhFR14-tHPd9mj&Whs#Gn)~ zT+}jiK{4#f4Q^Xo_DCfh$wAb{8S<+q^vbZZTEGr`TrI|1dX2_SKqND+d+Hg3i)OY# zbi+F`R(T8`8WFO$;kT z9ZUd~;2!KC@q~FaU16X~S(sMT3%o}yw8qF;!}>vzxoM1N#HWyJLT#v8YF7a}b1idJ zo4o9fT&pk_Y6alhhD)ytadDIrMRlC_5N?rPg!W!@f+E4d5h9Q+vJd!O~kkj zxNd^JyQH9rkGrk+bYHTiv7-W5J#B66tQl&8)DA)SoZfNCO-}R*7h(cqE-F@? z@jBr(z=wnAD(tgjrl{xP*eDKeW+gl^A`auvOEhgF#0?Q>w?~NS*0jsaPf<4iM3` zqz9f9BW#r8U78T)-gxpFl%h`Fp_|gm-XN&jkOme+sM}r^={>G8_7K^3-)v z-8VvtL_AfG#U~UntSRmgaD!%D)v4DxhZId)dDSbu$AxRg&{S_69js{^2Vt%*Afqso zx&(7kTJ@-Ey}@II-m20)`o(k2w8F^Bs8Q~Lgs~M@kki=9c*{{4v5)hV!-7}!0^O!6 zaD`<2QUhZ}3308e6gK=&TGXOK%Bbm3nX!iTN%ioqirQF+Jo?8QFgR87OP~001TvBe zEmcItVg|0PE{`eIo~z8Asco;U2npB=cILfqqv0^&Xir2IF_`PIZmDO08t2ND=9)&h z!zD*9U1!{V&N;E_c&Hw#AtRMnAwOK2?xI%FiMl-vCCc9^LeZrTX*HaB&L zGegcRsscc}9;pT%QZ9~*suRM1SBb;V!^Iv@v)bm|=uv5LD5^9?Vj?Q{+%x-T8DITfSxaQ3Ly(OyXMD@6_cW=iDzymeUD7*VQw^!_KUKHg#HnWDP&MT{; zD%JL~t5gkAhH7+eSE}2}#v5_jyiF^;@SackaaZSPnCtBr$R@@nM1Cr551 z)o`5i)B=}QTKDah_+aURdlaDxz|M8kn$ro*h~w-vy{)lsKz*+C7f35SGLsTKgQd}4U5mc&h(6dK+& zKbooRhLzI;L0ge_XYmfWTU@z++91IT@h~-y)y2(Nbg>2 z|FYf!+TEgNt6cY7E6`hI+8Wdu&va9->QOs%+RAwqsFZud9(B0X1<>}6J9D+`eOIyf zqlb1g{z9kCS{29F>1tM2+?oBvE9!8!U2EP;$5X(oC0<#g94CgMFjLPuDbU%ycJIeg zir?zAj`+jQfAtE$Lot^-@k)Z6d!lP=Do$hFNc22$vt8l#T}co=QBbebJ&H*u;Uoo4Qs5*7PEz0`1x`}nBn3`V;3Nf3Qs5*7 zPEz0`1x`}nBn3Vb3VfP9iqV-x(VWbZteOWa^QsFTdc3Y8()ifIpFUFh%mLX-&Te?DIaK@Xa}WOXndcTYE~;;RaCT9kIlnk>eqCN;dRcBb zR$MwWE2CoK%#5P!^rGB*C*FQ@M)vfA!fCj3-XBr=RvS#*UkI%0O&o8f9RFxlXot<0XoKuz>tV}8KPcBH$nKCP9YHIeh+waZ0 z`Myb+nR)kS&zv?rm3@}}{AesaI~r&zZ1Gnvs)#jKEh(>=UAyqf`xx9;=Bg znp--zwaTC83uV@3kP^=>ncQ%0`ozrQ^xLzhC*PNL=N*$LX3Z*0o}S@L2}P^Z{IO6h zFBtX5>MCj$l!hxGxW97A;wNW6GXL@FnxT8GNffc~Z(fS?K{^R>7=L zI42s&^##e)kJkB1{IRlzx{6p`#)%PuJ` zBK0qWFK-s6<)tU*OrAO^{od4BlXKE?igR-EX8DVS> zRoBw`(BgSbb81@~nqsYWjTKFGY>N$*Me;+W36dsWSj;Ey3-Yp3Q)gsm-8XAS%Cwxk z?Bx8^wCuFpP+n<%alW!jO3A=%h}E<-&1tA>X>4h%Z=Jhn-n`j-Z@9LxvZ1oJp|U1a zU0PM-3;IKWa3H&o@4Kg_rDkQO&YF=rDIPSO` zD(Wg*n-(mZT|f7M2b&i!Zf&iuYi+EEvW=;sG88Be6c&-#TAGuen?_1@7WHJ!N}H8D zed>Lwlc#0O%19}gl@rLx4d<8Vmlj$cSygRqePwA&Rc%ef?ArN@=d~=R9$o|&GLnw+EUM6_6%7xqPc zZ)35t1Cm5kzh4x)sYH+MS!n&X6I%X6!CfNtQqOECQqGt-?Uj7$ul!% zX6I(+r~3J>6-B}F(pXh>Rk)(6p}MlUI#%5 z(yCyjJXR9*k*AsOFDg*g**WRi$r-8BrrkF+C2e}v^z5v(oPzYcqU=C%m~D+EfkHCM zD}&KUth|=b?Kdfw^g>R4TUtf_W3n9r|Y&^o7) zPq5CLU02&$UD?RC(O9&m(q9_#7yERT5y&TDCyQ&q!vqHDBcuBN)8 zj2xk0wA{}&EVf7$1k!!%?@Uc*M`G4AsFF4_BPTm0H?trs(^nMmv%RONq$pfo94?QQ zu}QhAu0B#Vd-mMc+UB{93tAV}x3WWic70V-v?dm=i}RTu zl!W=}JsTB#?A*-BFDlOW=M)uW7P8MYbNVc#K6wWF2UBu#)8W(HU~X}+C|Jmb2!FJq zvMNYUHan;IY%G5|p|NI8V^bsaZ)&ZnZ>p+nj74Lm(VA$iq&yZWC+Rm7$}eQob51sY zGaxG`GlLz^nKRPpLt0)=R(@K3es-p>usEN@4qp))(nEX@pWLEwRaqojQ&&@4(^%ci zp46t+4)&BXQrp7%uGwm zPRY(pP0P>BWpvnO><^a|@i!%?or$}mELK`qkJQ#Mb=A+QYnazKzpho^AZ~%T_+uQE z;hIP}yP8WP6@hSh*jF6(=N6Ilo1MisXw$P(Qj=$~TW~MXdnJGDWXkRwO(+$KNhUE{?MCeH{60VGek*6qI*{UmR>Y&t| zIc&&os-E49T5F1Nmm!H%SCz%Wk>Ws^U;8==ef*V$!os|QtgPI$EOsNNW~9ta&Cbk4 zcjgvm<`p4uzP$XRKvA$PNLqa{+1!^seTO}W0dp{fpUV~c2| zwtAIOs5Des9M)zOP%X|c&PFfgW#nh)q~)@iQ-At|amqtaW#<;M=aIdM?3DNWi1hP* zNm*rCWoe8Jd(mqCI!9%FLrX&wf5xDezXVZPU0=fvzDT7KdMhJkkw95E5H9rxeawr6 zXjV4Su?v&03b4O8Gh1Iz&d5#A=kxpAWm{a3O=je%mzDZM6(!LSdpFsM0?VQ^pdVsb z*U-|$=FaK{_NZ1yu^VdmLcji!3bSaqth9`js&EloviS0Qac&X&QL_sQa+% zGx9R>vU0QX*d)$$&&I8y5DK@Hzwc81PzGZ!UxuLPXv9hYR zia)Z!{qnLHNu?;o00XQ)nNR}K!2&<~-q?E1oS%=PL9ygzu?;etU0%6p2w1PAh`lMH zpr2G5awa0|h~-bpM9U*ktBRQv-r&&O2!Ges^2Zn0_{T1`-}_oU&j!e~QKz z4zS&mELK&{ z_ckIZ;#xi_(pXd1L~Cp=rEAquy2szS0WD>f^AhQD0shziW$G$q6KoNk%o9`OW@KgN z(mDO*2<;0*Lm(LBvyom*&Lvbqo0dl4Hq=;zsgXbJRKspfK5WrYQ(sjZtA<4oiOMpR z34gPRJ&5FKx->pE7clD}0Wf&J55x|4$Tz#7irG3A2$Jnjt{wvt z4poHU?Jyl>r)ZQG?bG^9IJK44khq4KLE8(ZGx$GTp+se}VHgd*^T0%>y;sb1Si$U0 zgO&ws8qepCLgW>4Nn5nYh9RFnV1ND~SgLlR6zO&ljm;4ijQS?M+mJ`c z+1pC1YF0wRSLnUp_(@t9-4m_1HGfR|$2Q+t`=Hd;ybX9; z`<7znx-a6l_1_5K+V9YPBY=n>&#<7bcH|ccJRFP&j{N%6_a{Q(V{vd}@b{4L#-Vd0 zI>925B&SYwq=fN;m_fwQkM`fS8wwkXxCq3#LBwd|Mn?_f3DE=A5G@Q1aif^l%8QC| ziVBf9Pntw{qhgqViZC%$Jf4Ip9a|oUis7O*+7abAT-wtl&YdSfrrq$k&)j=-Nnq1% zc$|oKV3Q8$7^i5IBrhJcCymkOc;dtv)+E*`43R-n>(M7po%lf67Vd=HwlS_HRVD^Y z6lz1saI(?rFkHtB*zqGKHF6A64y(kNb%IrgVS@=giE>P2Lw77@hE#%y9HrVwl|V}j z73U>~nX!{exe?66EzZ>%J&#&#teqG^)h5*182ppq_OZwrr+*xFMz#ModSWkuR1u&N zKMuX)i04GHJ%WyYj({SaL(Zm$BVmU@*4!(I*QQ^|2p}`yAHmT>vVD!N4R565Sel9fBgcK6VdzZ; zo#B{3vptqh)j&2=ff!~69mwd-44n~@Djl9S+@ebOczTG&$320nM^cZLHpNP{JL-FL8$5GN=Z_ipV-f8f zQ;+;7LNv~vp9E8(D2SsOANFJM1npx{O^kn>O^dxjkBd)Y*yCc}QHUHROpp??Bs3gC zZFG%O^f;3KlW{$E{5xTR%7i zH%{CHC$u3PSE_OC*?|c@2HgZJ#FZ+zn9 zmoHJFjdew?xbU>c86qd}Z^yN5e9L>Trelu@3V+5Jw~@F5#%*No9OVQ*oDgB_Ks&5E z;N6ZrI?%TRg^$x=9ca=XgLb5D#~@I;!-Mv3oPf%%h4xst8~hGPx95s~5NpGy1BS<4 zbU>Ml4iq@4<6D)v@Kc zKCZ6LZXAm|*B$YOFR@rg)I>G8#+S7$jN*z~Ir#Cu5>oY{YO?P*KU}s2Mu}%>^ z@y$-UV7C&M#jyoWTvew}IzioTeOCCl*ODDjJ+=d#V)yB8o~SS0{ZCg}r=>ge;P{J9 z-}!VmKc)|#OlUt{lOLlSKV4-fDE-gC``D)bC;D-0nOdCuh%{9bA}_pWHmPI<+oqS|~r1Qy)ss&Tma=%&aKRnO`27l`+*WWHZS^5NfZAE!jNkL9dUAQ_k zoK3b)c1c!6NqxGnsw7J2vVcz`H`bSy=29`7CC!Kbjw_;^UiT1^ML!m&ukPrcgzUzRE|Dl0v>PSrOoyg@I5s zP{iksi$i`w-jPs*54BbX{Dc6bVPD8s5i1VyZD0a>WuYi9mHGI{dr2sYNx}Eb{1pUP z^%=x)QALPkGry8r!WChEsJKFTOBDpP`K%&QW`9{AL{b9zaC}}TSWfVlZz_`WrVmt+ z*g@`@KG#^TuYJ)}AXv^82N1lVD)B_oVwhop1%KKmPbsH(1cTwU|r zT|Io$K9Yq6*kFh-1{5ZMfFQWw!Vl$NR)60<`^Y8?5xU@_kEFA=y1J_VnJY8b>Xo_v z`F}e{{Xf;yR_||D#m(lWZ&%0owyh2IVY*BD<=OY2wD(I}jqg-(ZZSG)cf~dZL0F){rO|09&2~;biO;S?CIrY znP)gy8CL5XFSgPa7rHIo_rX16ws%?K_?u@$(T+6WK$d*kZIj*d^d-Q9K{pYBUS)W`c>Qby1H(tcLP%i=5j)>y%- zS(t~jey9%0f4_J(RbYRNPMx)Uem3fRbBSorcXyA=@tDtYy&%^!eG)X}`s%B{EZ1>u z@1IwBwo06^(r%He)n=i->VkW%N^NdRp$)^I`~Bai|`RO8Ltt6__tkYd;+} zwY4OC-QO<b$nFLvAt_wZXOrq$xf%2g%TZ~o;uUn zKPl_^u>3IGg`2gL#wQ|(^>{L-Y6_MAVfkbM*LjYPt-X4ho;LNuT7miL{{CS#9P)T0 zX7r?tCsFpOZf?AqAojdCJx9PlI8XW74K>ehROxntU32}XPMbi!$pJp1NdJ5`7Hh{- z!-op+U9-DSQGUAY7vm=0m%GY2BqGE8ef#`;`>@bO4AH9^lLdl2cIL|2Jt}MSG%as# z2IKxSVWx*~q0_^K-?UtqP$7!Rh z`<2%PdYRm0T5<0`=1pu&_lt%|m+zL_ZaDb;nc7cZ^*5?NG!#MmDP?rARSJBky>FlH z&dcH`$e)&DvMeHMmMv%ZpltJTf7^qas>t*xF?@eMZuaFq3~p8rwhAogDLS<4hy8f2nkl_XeI9{F&r0Zkd8~!-i^+r z4vXe)Svb2Vl@!NzJt}j5YlK>Q%1Sq|QFUdQ@AUetL7-f>ugcA5gP z-mNqjptsTy6ntQe%)_0poPnoiJ zC$o%#+cV}LHQMf6*=2HGYI|lKAwx9!JKru=kLu{1mink?Nl`9*)(4YX&Oilc0#H5o zmVtH7TCi?*^n;*g$+NO?+v@xFc(1cwQd7M|lWh;%y_>kr^5IlC;{(N-XB$lCwLqG3 z`(*Ca-C5ZWle4qdNVq!EQc0c7^sEfk6FFqOAJ$W(j+M7Qt@egHp7l&mydn~G>4v$x z2{+|^W_ZDg(cUfV(o)NQ+w}V&INYyY)!mgU-#7KJWcIdGje0mMb~xqX#(VVE(Ej9M zaom7#J*-j9pw3z+02QUPQJ^{Y!(IblnVeQ#W|e32RQA|gF+~S|+PP;@)zYc=E5G4O zS-!Fx7C!N61@AwhZaMU8%9eY5zYE&na4_%Jy33Ss53EjbtyW$-BkSAs1zIrxZU?x1 zvsyLh#qqe_6wH^SIopw)vh%BAe%s$GMGamQWSd0)^-)l!l zg(yAV*Y0sVS|xSKg`243dVSD$S!_{!7M-m0sLGA%)FL2e6lbxDL+NYB{cgicjLZ;? z7n>k<(|WUC6`FsK+97>kc|E2X@v}@n($I>#Fo@MS~h`+jPcm*9OyMY7CBQS!d?$ zuBrMphZgKq?^~_2dq?M_w^Vng``kHL#i$lXWuJDg zKH3Ok6!hac95ih*+A)hU6-@ca>4bwSO@yIUN#NwC{fUC-!+!L7BQ?Cdpbnmu?ppU7 z%`BGMCSN;;SM-$}fXG%C@MG9adus`Hr(FOYf5AlH^2<{J8K0}4VoDHd(q!{5-PO0d@J6#SCIB z>&QYh-OLaSxlAk3bXI;U>smdjH{+bY6aq~{BWz@8bv3#yotb4QFW$uJG zg@$`ks-tf_g*^<3Q$z>4fY6leqSd1+0D}!|QZeu~BW2Cj{ie@1b#l}onJpU|m@T`T zEqffWY%y$JAcj5Lz-$5+3rPCT<43$!P1bI!^iGc_M+W~D=G)j43dDSe2`!5Cs&A}! z)*;5LT2bM}cExlrmWwrDw*_{K*@_{|W_z()v4Sb9Utx2SO&oGIUK~J-x%gm(8h(a!!WS~>tdJeZ-`me2`!=u@g$5=Z1S&l zc`w1UykB%JiD{p?7QI&_tXZO8JPXG{!D?x+Ux7V{IfylgF-Roi(w5n5#V!n1JA04- z4Yrob192dZE=~2tMhU;KgH8Co47P;dPq;7PmpDb3LXQ%DFOi^P>bitqqCoy?0lyfj zm@mAEfft`5P5}&;LYd;^Z_!nTT^~$OV(VLI1*x&r@pOPzCYwi2CK_$_M5czbUyQ5K zIBtgnd`o+8k%{^ATly3A$)q5WN#=xsIYFj`x4?99sc!eqH;$~4sPW&N?5lq=rdGY`#yh^gosznRpVldsnjiw?$kxJ;z` zQ3ku4%q%r!xC=}Be0EyZk%3;s&-3)HVCeY?EZv+67 zSrcF~X}$vM8S!5PMg-dL?6qOy`fjtjtY9vay}LEq`faYqbiukdfC>@y|G@aC7p_+&)Lq z>2+B}5EXO4^S^BmpBco(9%N;uv{~sFYnZ*v6)!XG&jfojhKpR^mg;qZ^(ND0f%RFu zIIQ=Em5(eS4~A+JgBVtWoh2l;Zmb(yo4sz7g-k!%ebK8>#Kr2x>3T$!kSk_CuVJFu z=4GOoMVuv+>34sz_u1TM=`QO=#>`4|T#*T^*I0dNtt@2rw&AJSs9Aco#*F#`S{7f2 z_2-cDcm(n*;&r2md&`1D7=dQN%UqcKo)US&K8WnEm97-k7=Aj;y(66E|4K z&a2poMQkh1C>A~r-jwm1MoVS`=SzB~xmjg@=5rUrCK$Zg^~LG%xs1gthiqmX7ejsv z3KGs(S6$3F;zu%2L|H^r&`3BlF1l*wHQ;nv1Agvz=I4HA6>H{ww@z&E$-3#{YZpkD zFz{IvkQKkXWm9{eN{O>?t7@@DOtEL@f`}{QdigPPvBbzRUsu!|CBqQke#^|J$Zwh1 z?{GX>4_;Q)pB6B)>%A^u{z~8b#aPUq!zG-|QZd3OXnYc=0CJK?ZRq5drIT#XM(UVsnVlF-ML|;JCoQ%p&re;B6AQ1dVTE#^+PW zw`LIec_R}DhWa{zgs(9Jqj`?m3MexZ*ovwBq*s za^dITr(lKO|6;6q)h-LePr+(d@EolK?B`bUxtm=;GLhuQVfHdJO)hIgiAVxbciG4g zYX;!#+B@6uFENQja~oVcXIo;>5BuEfm}SS>-@Et|C-^Upy>Z>cu<7?iNPg`nYHzSu zZhBc#%b+^jy((5`DqACvqtTnT-ZXCFb$Q_@bi(zA%BUu7x3TlV z+cM*BaJNk!4|_Iw{dP}^Zr^RR+BRa>@;M-xdEL;Ff6#VbJWPTubfJ}WQB1PV|smvzv+LoL-jsA4A7i-OSUaMTQHY`F& z=j5@rQ+`a-(85ChJ2J6W-K8Wea~1CxfZb&PbUkDQvTSemyI2i*Xpa4+v;AgAi%&ZV zNH99a4BY9}Cd*8=aq?u7ZM-URk}_vMZ(GsVb})SfMM~9h=((wrwn@4~1zow>lsjWE zovbGtt9HbX#LQxN96XEcvhqC^ZT!;U9BMnbc^on6d%MoJTFQdhU>kU_3)Ei1 zG44E|1#-}tW;t?zJ?rRPOnSMtvbY;OJ7@;q8(Yi3C}Phhr$wtGza2W4-oP>8W$>9T zf-&w&pQOK+`*t3v!892pnp2=-}#MIL&oS(67SomQmiKp4R1L2{Rram{)EXlt`i?InJb)j`tI;jJ*u0!iGg z3z}C+5)M<_H9v3N*rBy)?={Ny0?cGm^3PExXsCRi?@2 zbT+gzR0lEKx_7o0s5COnv17+9Y>d=~x4{=}*3vlIPc3v=xlI|h9+x8JmnJE1z*Tm* z1?tuTUj;yN5t(%63mba4_Eu+mZLqC-TUBhkRVMy|O$7Gk9qu<*mrP(|USZQkkr_K4BjRi!jj`jP zr4wFGD`ln$hZEZ{n9yUjVrN~Ebf9x{5x0%c0dWx}D0x9jci~rIIA>3LUxy~3Nsx*# zwF>K;cC@sT_tGZZR-L103!Fk85P*iZhLv47Ec4hU3n;{>l9(~)OnV)+6;w}%z$xLH z8UT*{w@TbN;{i0YX8h95#X*}aa@*ReDdd1-!iykEaH1sK`n7UkjL2O&JQ8xe)Iqkb zNR~LxmhuLtBp!JP)HI9>S!);?XqyYC14I~fFs(?4(WcS%={K%im{7{FwK<*5@qUh& z#;ywZtj#<)e;RsPdquT{*Mnv*2(WDw^B1{7JEr?_+M>9&jv6;=1tINfeb=*LXK;O5 zl~Ie~vJ>P`mH}&y@5Vuv<|P;Sy~jCymAfs&h7qPsP*UDez}Jz$Yf@K1iN7;^jf%sl zsc_w<3^LB>Uog#(1QF4vQG&;r;doV()LG=!ZskWM&5>!q>8gxWT#lMJU|&PC;!^3s zhE!4Ib>PKp6jzzcYrNbGRavBr0v}|YmakMvcXE%mu3<#=NaH!Vn{a5Kd4V2m98?eJ z0xKvfA^~MmMSfkv%@z7E#i-izpdl*xrU0!~K-3Z%3VI*M@F=8>2v>ViEp4u1mKTsf z1Z126Yt8us?0Hf}`_=AJRID8W=A_Mf_~VMl-*TYCnhQgqM;Gq#}h= z^da;UU~{=B;A)63Ku46LOX(cC0T|YluF$p_gG!n5E=WA09#9gWmWIlM%4Qq0H&IDX z$ABC$F>Xs?grc5?QW)BG6SK0U3gH!?_9YVHjGWHX%zhC+xcxk1o{b9W%^hW)j4R!l zS-Q|~xQb8@6+KkD$oVzpRw}A83W|7+4{cJKgjL9}5usIF7BP$|@MEaZ4+zloA$$b~ zyAj}oS*W1zGbJ`8RkyUJl~&LJ*l2=GBU_bu?A>IdPyCTtfkGc9K$aPq4`Bp169h3x zC}YYDiXxyC0d5Y(h75M`s?Wp=N&rW3l@wGJ;Y}$V57IPPx&sGUf$||HC>3=|(#a8; z4ir+dQ3IC*LIio3m-O*daA9l-Kr|-?Hl23;ED8ABr!Hw52T>^!Nf-)f(x-gvAtU!h zyHg(xL`aD!kbguJGi6A^gu`IOG#5?j5*ux$duz!(kb^+e!JI>H*fPg*A)9~)MM3Z) zZA$%uJd6G1+#&QTi^ht#aite8*2ZhH3VhL2v z|AQGPL?#-ELdAh#KupoyJY>8XRJ=WBq-V+EA`Iw9iaJCMG%({x6h4HtFv7Hk%z&0j z+hT&Pfai&PONzOWQt?7)FQ7z;GPrW&BYMp78GlBMzetHxSOkHJ_tAS%s3#COlu|cZ z*wG9SIdbBZ+y-c|Xhf#A4qgou%}uuB2~tf877(oCwH;~4RU&+0u(+N zI&yOXtlU3~h8;_5(|JIUgWKkNgy065;2x2_j4}NOF1T-lIC|QA2K)yFQX0sIJ$T}MR5!W z;IS$0m+LH_IhTRfcp_WS{8zk>+BqzYccYh>x5?k;QaSz~|C!6`D464Jo-fFF4-Xa% z5k&aAToAXCkEHHS*6Cb>JcS$h7q66%DxH}5nBfq4DajKU{71frOxKqD*@ zxN6|4fvX0t8n|lUs)4Hpt{S*%;HrVE2Cf>oYT&AYzajf9|Lbr5_2-s<%6IznPd`#d z_8)fbziB@FuJ*h8ui)VS&iDTAKN_E+uXO+CfAVL4_B?)k+5OH`M!)jUe(QU8=HLJI z(?`Gf}MaV-}r}rXQ|ZRPRrl?VbT9l`TPIkzx?cH|5KfZ zr`Z0j^$&iRE%?p%|LG4mU;peseLS4@|Kq>?d(ZfC{Ni_h?e~7?H-7ckzpv@;$E^GM z<4+F%@jw6k-$mv_8f?FO_r>@B-aq&*C5M^NBOm|k%fr9@$)kJs<&gO5JKtG-_qRWM zRgdZZ^z!qc!^ixG=Bn$8)%!2L_x{FM+wRLxhrIdtr+@nNlV^5_TTA=yKmPR}tc@=W zH~;Y;1pn%f{sc1lKl<6eb#K08>+ySD@Ow9l_VH`~@bLItJsg^;=Y;B4-~a6|zx?p! zSEee=hmSjze*Bnsl=U{A`Q^JGQINa*y&rKX)Q^wdkYz)ey};OUp>s1`Sd-uaHA_avt zTjXRF+Gf{P`@x3>S=VlFqoinhm!o@!)5{A4!)2^37PniDu<4tP4g2}_<;VTUkLOd7 zdiGGWp%~xX*zVmD4(Dhmtl{JEbhbCzB2Pbj#b*=)upz(gIlH|Z+v+r_P+OWtLe)VK zk)JOQ=W)m0WSDa@8M1K0ve*f}U$_17vF^s**B>Wp+$^JJhyMM0cKla{ACA-W*F`by z`!;~&-h=$x9Uf18&yIQQV^4u)81LSF zK!2nFyRm806h7`G92%j5cO7?Q>!uUL$8$dn?4kw@$Gs^+7iRdCO9rU)BN~Q0oVRgF zihysgz46j{8K8CB@+D)&2d#hWVTX#TLF)IJnD<|9Q3v z6FaZ8y_$o7$K&Y)U;NnBvN0ZSup^foo8^*TPS5944iUTxIW|E%1cNLdd2m`w(08CD zn-X;`IXJehsmftn9E=dFXPnb&$h44ZgvXk#ZKR?kd)&jQw;SPCXU|<4f9RYt^5A6O z!kk^5PN$|Wpw*A5#vrxqa3Y?RE?2Nw3ihe$U@ROPj!fx}L4u*Gr^6xL?x>!i=La0c z4w-P01DsJ8KJaPUjXgx-sLG(@fn}4Qshf^d>~Mm^XwN11zGZv^kAfiL#=Oa10-wwa zSzuRGXE|P3HK1Vs9TdV4?z_6Cp;Vu&7h0F+0e}ty3Zpy()4P zJ2O;~NF+fr-_-Xo^jFcWC(B}d(Jje{lmueQ!;p)cuuLIoMSWRbHZ2hZP4L1jrQHN9 z&!B*A9%TsmA)iBbPZ9-+H~7~*o&}T~UWJT$+aj0DNsM2i39@>$bfDkD{4A0vWMhO< z9Tc#IMj%H?5GFAc z1+$@0NdujiLBfnwp*)F^B4@*!NZnA_=%E4{8Dh zZ`(?w;M+LXw#&=5Axrg`OMQZ4W(LInbh)UiewPeeS|992i2XTp$Qj^UkG3POQ$)5G@R>8WY<6jg0BfZm16wUu{$KqG>@@2jEYB!#2V zCt-~bYFU{$R5{cQr(dDSphCxY@9*y{VjSIVsM$Nx*kp&hMRghK>m>qv7IoUBf@yX_ z(4;9u?K!v{eHTm=2a&&@PzY7ia;Eoel5LD$g!&T0in20;ufFfLV_&;=Mn45D3|*KW zNPhOxMx)&CT7p5U^7Sg2r_!Q|@@m(#r<97AcI#S^YoqLdW<*X{x4XK*z$RSLu~W5K z(+k4bfIw}BT}AVof^H)n#lp055OcvB9X}j)^zNXuL`o5!uwPiFE`wK+SSF8HWNnMm z$?}>6C2Ie00WQ;%gfM(Ji&R0|wP;RjegGC`udcp{~)__h8RzlSj{#!uC-Zb=qB1x$n8puR+kwW(weJ|7&_w8_d%Av`3S~Qg) z@&w|)WXjt%iKSYBj3Cx8MoaY)1p6{ zI5#0l&b6BA{G_SLr3chOBogMLl)Q7(0-Y`tbf=+Pi%cxI2?C72$jN)8xq##X^bB(TA?Q1Qk8hTWI|^LzJyJBNeIOUzy3BHF8X+{{PMwdKh4daDbzxgz_T3N2p-BlC&^L1T`e^ z%$CF@VwLoG$>||P2A2>>phZ8x5U3EZV0&De^UH*=8HbFdWOn6}sFsffyJUK0hLC85 z#FyvI52Pr84_=uYfbWSlR}_ocjJ4x0Qaz%c{?$IIr4Ljdsh`I<1jNd8@* z@P`n-$sgd57xCvzPRK`Gns1T>xm*GqHzVHd)tR%Vg`W`VSzRTleK<31^ zToUX&>GBU3c@aP^-<7w%LgBjTN(A5^ZkxZy_b;FFo{OB^DX-z%^Ubr4MDcRh{FV73 z^S>@%c)d?#|I3#IpO_0*UoU=o>ijgh>-Ey*!u;=7B%gh9{pTsL&C8n|lU zs)4Hpt{S*%;HrVE2Cf>oYT&AYs|KzbxN6|4fnSaWuKO&%96es2a@D|916K`PHE`9y zRRdQITs3gjz*PfR4O}&F)xcE)R}EbES*|v4)xcE)R}EY>aMi$716K`PHE`9yRRdQI RTs3gjz*PfR4g7L6@E4n0`cD7= literal 0 HcmV?d00001 diff --git a/src/builtin/pixtone.pcm b/src/builtin/organya-wavetable-org.bin similarity index 100% rename from src/builtin/pixtone.pcm rename to src/builtin/organya-wavetable-org.bin diff --git a/src/builtin_fs.rs b/src/builtin_fs.rs index 11df145..23fe7d1 100644 --- a/src/builtin_fs.rs +++ b/src/builtin_fs.rs @@ -110,7 +110,7 @@ impl BuiltinFS { FSNode::File("builtin_font.fnt", include_bytes!("builtin/builtin_font.fnt")), FSNode::File("builtin_font_0.png", include_bytes!("builtin/builtin_font_0.png")), FSNode::File("builtin_font_1.png", include_bytes!("builtin/builtin_font_1.png")), - FSNode::File("pixtone.pcm", include_bytes!("builtin/pixtone.pcm")), + FSNode::File("organya-wavetable-doukutsu.bin", include_bytes!("builtin/organya-wavetable-doukutsu.bin")), FSNode::File("touch.png", include_bytes!("builtin/touch.png")), FSNode::Directory("shaders", vec![ FSNode::File("basic_150.vert.glsl", include_bytes!("builtin/shaders/basic_150.vert.glsl")), diff --git a/src/sound/mod.rs b/src/sound/mod.rs index e4cb4e1..efdb5c2 100644 --- a/src/sound/mod.rs +++ b/src/sound/mod.rs @@ -83,7 +83,7 @@ impl SoundManager { let device = host.default_output_device().ok_or_else(|| AudioError(str!("Error initializing audio device.")))?; let config = device.default_output_config()?; - let bnk = wave_bank::SoundBank::load_from(filesystem::open(ctx, "/builtin/pixtone.pcm")?)?; + let bnk = wave_bank::SoundBank::load_from(filesystem::open(ctx, "/builtin/organya-wavetable-doukutsu.bin")?)?; std::thread::spawn(move || { if let Err(err) = match config.sample_format() { @@ -197,7 +197,7 @@ fn run(rx: Receiver, bank: SoundBank, org_engine.set_sample_rate(sample_rate as usize); org_engine.loops = usize::MAX; - let buf_size = sample_rate as usize * 30 / 1000; + let buf_size = sample_rate as usize * 15 / 1000; let mut bgm_buf = vec![0x8080; buf_size]; let mut pxt_buf = vec![0x8000; buf_size]; let mut bgm_index = 0; diff --git a/src/sound/playback.rs b/src/sound/playback.rs index 8a3e056..d9a9c8a 100644 --- a/src/sound/playback.rs +++ b/src/sound/playback.rs @@ -73,12 +73,13 @@ impl PlaybackEngine { } } - for (inst, buf) in song.tracks[8..].iter().zip(buffers[128..].iter_mut()) { + for (idx, (track, buf)) in song.tracks[8..].iter().zip(buffers[128..].iter_mut()).enumerate() { *buf = MaybeUninit::new( RenderBuffer::new( // FIXME: *frustrated screaming* - samples.samples[inst.inst.inst as usize].clone() + //samples.samples[track.inst.inst as usize].clone() + samples.samples[idx].clone() ) ); }