From 6e76b90ca00d6066e12643e2b27e8e2d86334f68 Mon Sep 17 00:00:00 2001 From: Penncilk Date: Fri, 31 May 2024 22:12:47 -0600 Subject: [PATCH] Added my project Followed the instructions on the website :D --- site/static/carts/wasm4GBVGMPlayer.md | 18 ++++++++++++++++++ site/static/carts/wasm4GBVGMPlayer.png | Bin 0 -> 2669 bytes site/static/carts/wasm4GBVGMPlayer.wasm | Bin 0 -> 44155 bytes 3 files changed, 18 insertions(+) create mode 100644 site/static/carts/wasm4GBVGMPlayer.md create mode 100644 site/static/carts/wasm4GBVGMPlayer.png create mode 100644 site/static/carts/wasm4GBVGMPlayer.wasm diff --git a/site/static/carts/wasm4GBVGMPlayer.md b/site/static/carts/wasm4GBVGMPlayer.md new file mode 100644 index 00000000..05baba35 --- /dev/null +++ b/site/static/carts/wasm4GBVGMPlayer.md @@ -0,0 +1,18 @@ +--- +author: Sine System +github: Penncilk +date: 2024-05-31 +--- + +# Wasm4 Gameboy VGM Player + +I wrote an engine that allows Wasm4 to emulate the APU of the Gameboy at just a high level enough so that it doesn't tax on the runtime, + +it does this by recording all of the writes to each register in a space in memory, and whenever it's NOT writing to the registers, it either just waits for the next command, or, if a control register is written to, it will send a signal that tells Wasm4 to decrypt the register data and make a funky tune out of it, + +I kind of rushed the actual song as I was very tired after working on this, however if you liked it! the .vgm can be found in the .wasm with a hex editor, and the original song can be found here! https://youtu.be/XeMwf9YFT6s?si=KNNpsogCnXPY6P7h + +This is just a proof of concept, so there's not much to it unfortunately, and it is likely riddled with bugs. But if you would like to use this in your own projects, here's the VGM driver code! ^^ +https://gist.github.com/Penncilk/23d4f76abdd73d2364ba075744c191db + +I hope you enjoy! diff --git a/site/static/carts/wasm4GBVGMPlayer.png b/site/static/carts/wasm4GBVGMPlayer.png new file mode 100644 index 0000000000000000000000000000000000000000..71ddd499ad5cec72f36b8479c652a3fb232a99e6 GIT binary patch literal 2669 zcmds(`#;kQ1INGH3_~5aTn}@}J5&*K!1jgHHvkv*N?p8w!^y`CRFpU>;_!~2)dPoKizK>vLz1}Xpm z>^pe^efE3O{+6=hcQ59~+XH}#%Sp6PC@Dr<<#W%%N)0`0^~=gOHio=hPn>Vsz9tEE zw>>>taN4@jv2gRsOt6U!Tr;?TC+pjml$w<}mQ}>cH~SI>*`8jLN31Wx<(Q8${sdY6 zYBkF{f-&daG-NODPjB7YND6FX>iWlVD-CE<%*(|GCXH3=GlE>I6zMLdd5qN|uSqaj zn>E%W1Xz(%L{2n!;7xp3P133j@RR=8`0SYQ#?D7TRPnNv3-jodqDhDY#$wEN;$}t7 zdjnCj@{NSCkE%H~Qac%99?^(gKsd#@GOr3$OaxZQK_o8CjkR4v%4O2iLF-m|v?n}Lsa0tCPtG87o0j`yP9dmbxl@(J zD=!>-Ab?2bAOCCsef8*oA2uF{x|=;(=i~N-gt(5EiNIxrrh=jhisHz2loDO?8b9Fr(`0O{*#y9LipCR?8va3ig{DGAApW^l5iv!kn^(* zVc{!`1_Dd-jzfM0wtV2CB*fDSGhpM4G@M7ieD|~$yeXkEN#`~Yf2IB&Z|Q~mbu6Z@ z^y{Vc)y4jY*znU^8;03@+rMB`g?X#GzUv=Oe2KoGPBFYdie2I{z($!udU4e;pyTe@ zetV4*Fq7n|OGX4UT&cZFI(GB{P~PDGdEcoQ8RJUse7AaFS3eT;vc%Dy4k!S;PcyQQ zsyo8TUft%o+Q@ITx`BTvv$ECP$slj?5lnxcyQy=7QrYl9&)P9pC5Xj%Ll<#hIp--S z;0KfBjxGQV*P+wes}pQ)osvFyo^7m2snUF9fO?@9Xx+0VP^ZAbW%eW4_xKN<*?`bi zlgP7;j>!nDLm!{{$5lgidB_!ybZZMrP3cBq{SCLz;6%5i!Q>p`AsRUGP|O_p$?vkn z?M-zrm!vicpN{Wr3`4<%_ctL?Y#H6v^}ZZ+#^l?=$JgQBZ6R#@k*7YTN#no(8l44v1V3ST?jrs7~IHdOY5Lh2} z^nNz`Z86~(-Fzq5qm!cX#uHwawY7@@nyqY%3}EWhH&b@Y^)7wro?gk@zOmN;AUDnr zLoX*yJ290GIfG=(qO=YHeP@yP-2VfkI=;q7pMEXgYnij1FPfe;Rz%^slpGvr@agjG zLZ?1mB=sv4Jw$11g?f$EwM~!waiMDhhCit&0u=zhVy5O*arlh!qa z6BFN-eO2AhT*QAv4>vk=Q-Qd%o8w-DGW;UnbFVo%q8g)rJ{lcgYt{${BN`JUI69Pw z2Wo%j18TNWI-O9gjzzA_6v$P1^p*hn<@hiyQ<+73jdQ{P_%q1=N8}p#T-E_CSu27& z(AdAa8Gzxh<)w{V5|c9^W#1UbiKQ<@K68YgX(dpBxf)0W!!T-z`LATWImx-qrhm`& z`MPXgty&t9M4o3v38=3Hm2iGaNr~v#hX0j@Q*r)|5QgBn1ss6;^s^5oOBrB-f`Z}QqgYs?H`9(%^AkBGZxzcK#Qh} zIiR}Hnz6>&ZJL(?y0O0{!tfGn>w-q6Tl$NvHib5N4NOE(j1$E!Qb(z_14NIc-z|5= zQ{+mn1x1*1FimnC1*{gg_*t5vjC>2O_eSHTi9w51shMwhcl(?fzkay`G>7Vhu3aR8 z&sC1~>e=tmBzF_EHyHr)*^<%4srIzJNvjE22N_>#r7K)B>r8R8h14}8$U#%d**zXB z%#)W(JTJnX<(@+)=7i1(7A39%Z3^>%m-#7uRgM|N@hi)csQGAoUOSujr<(iYiL$KId06Q$ zeCch6HBef9!5PxZp0coEp^fB~Q)0LKYA_KtZ@cJHDpyuU$qnimWdca%6?jLdc5Ty- zAFCf1=~m@7%vY(Kc;Dof4El@TWp*tnqkxux^fm2C4>V0HF4aCeu&6vuWU2_dEx>G; z%fq8)MFo!J`(bh~Zu8z&awzOtbUW?5@8hffKbesNGS-}usL~sI39ajoTFCOgMFWu0 z)^SQ!9kW6IXJwlbywRnA$l`1T)PV6Y<&&B3Mu#|DaRx>UGmY%OKDC}Zv33%C!EO`> z56i&-kv4ihxnQ~(WP+Z`rr0s`c#Ot9*U64K3`N4QX!%WaPm=(Rvjl=baSC|pWoAa8 z;|>yclNZF32;W25!5m{P+zGdoP+0Xo9w$?LD_$K4x=67dz2AQGsE6A8esh=4JsRqi z#Vc#CH>hCuB$MkJEg*9?(qqRG_Aun57j|{1SA|tlo2Bw@eDQEEgRrz5f=FX88;xLM zX(81=vyFz492@RB@nFJ}l^UKsD7mO@2ho2Yxo#P&AN>Y3E~VIcF-MAyBx#hU`z6PS zn;h=()o!D@badB0mA++f*KU_G@}cxk*7u<;YH1}mbGr>umLrcM0)ah_NN!hZyDm45Adr`gU;m>{&-r|Lq7A>TZwH0q)CI75u27dJrqy>>fP%7kOH97p<_*x zEwZcd`dWYFw_~z##3y65**DTtFQ7|BKOFwmG{V8Ldj?W>%&%3QU1_B;1)kT+-4sQ9 rUp#(U`~d@63cS~;run}s(^;UL{p&IxP4k1_ZzOQ?cp$pf7n}1RomTsz literal 0 HcmV?d00001 diff --git a/site/static/carts/wasm4GBVGMPlayer.wasm b/site/static/carts/wasm4GBVGMPlayer.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5b2fd8e31a00187b16327e0cb5c30a459b88ebc7 GIT binary patch literal 44155 zcmeHQZ)_aLb)UUE{*jKPs5o@2D2Y#W6Wgtokd~r9iRx$-MFQ%g4v@A;><=MDQ8F!& z6sfZ+%0NU%brJ!J)wEw^1PCId&6gNO;4S(gA8N~SWd~4<#x{&1bqXn{t-`5Y$!;6L z3GBX^xt;gs&CK53@kmoLX_>dTH}mGb-~8q`Z{~KnV))>AB!q}QTpAK$sCe|~Q8CmG zzturWy%YvZ#nFjFrCs~Ss-mC{tD}djBGQMG6QiOi58KB_$0w&}3Q-gl+e*@CN2OT) z>e$3sb!>S5*byk!cCb1;T@|JF`w#3Mu8xYf<&lGPdh|*S3mWOe)p&-h) zinuF2dF71~yor0`lmGhn>ZmjR(bH#Sfw&Z(ytGA@Jk=JJj>doWR52Ft-}j^Vqp|1} z@w;b>Q0A82DE=F;S&Dxl;PA9M{118fqWb&|dH9Apydn?(QyqRig2ShkSN%~O?TcS~ zu5edrt2`BdryyJZPGL<{j$eJIxK@ZYqPVpZ#ovER+z0Ra3vm+dD9JOY&6$6Brg$Hm zcvPSGj1YybvU1^Q990T&X-BvCFuY#36RH*B9{sXxXLm6!bQQ{RsSDcbELX&Izks@B z=?7RV-q$aYfDg+BS?_|_*)8H{mD{oSBYj+R<5NP!Z?sKFyecA&rXU!J)&M|TiC%O1O>DA!L6(o=HeSA>%J)0vOHXZ9cUI$<^}FJsxN9o@5g-PnK;H_7z&-G#SdA-F({W+Cw@~x3tpbpA zN*6CE3u{DtULQp9uhaqbNyk)wQ90FHDFRl|$j7Ft6JV_^mb4Rq(~VR6;`VAhdxvc1 zQZyBp4#n;J<69^5N(DY=2RC(;44TDMDzgWrgQ!6_i(S8eY4=(@J3)peUCg`*~qC z(Elw_UjFBM$19~D2r(6j_#fcJhaUbrA-+2DEm68oh}pIyVhaq8Zqpc!-S-x%uga0eaKm2K-OBWGpU|%PmoJ|TMDa|GwB3U+@bcv*AHd!f> z>t+)nlIu?RiJp-E;JEmkr1XuX@9ku{NGk6nYhF(Jf1KQOD*3%b z$;baR`NZwX&ArJjQF7}|$?tz5`GdX5ZO4ADr*}Ub5^P#Ky6t=P%I&skYs&b{wjC%Y9Eqf3Imt;SsT% z?a=EX1AV_GHZCgseoGquZU_tneX||Xw2j1{SV(w1pKdtT>?WTJ#`_E$JcjBH-8QbvqDJ50N-%_xeS<*KNKM)IHU_<{2k~^v&x~7>T!ucSJwx zi2*izm2n~nWgSi|DZ#E?geq5AuZQ`ct^e;YCFppI^so|x_M-{>gY%uQC(9nH>lP zYnU-FIH-cmV-2xUo*OwQb7$VQBywy~7Zf?h{k{y5dtA*5VUhC=A*O1| z22KWStm6pPt8OzwFNQ{Fv#V}nnc-v)NfMDeQQ{a>TM5>5X~#v(V1!B<5Q$8!@*2n# zCvOebWH{Ehla*&kHj^u_O8Sl@y`Pg6Kk#R;>q8tspyn|55%cS9^9X4xvM$n&2_sqA zNrLi~P|*^^80(qt%Xx%YVeuebd;)!dw4gSAZ~}dRQlnl;!$Lo)_y9`hI-Yi>NC;gCjoO5_;; zSdDp%2m~?Cm;q$AM_6f`&W)};1LW{BTk_F>ab?a7W*V>ZIBX{fXK>^(%08}=-Q1K_ z$kyrc)MPD7VlFa{A^|RjW>b~>V#pzAJtgWmnu#Te6u#u^hJoBhsP-W%H^Z{NqqN$Z z`Fu2?jH!J2cqXpFsw) z8B(=?3j{rd8S|O!L9|H#Y{!wA*SVN6Z@g#Yw3g(%@gaR#7#~cQeUqR>b6>E+!a$VP zKs6EukQiIgUwYE9DOc_(bsXP_8MMLVgLx@8DT%$Hml8y;c{Y#JOqcq{(bZEfEupNF z*qPriNg5(asPH@J5=S91MJT+=7s_QF--uN-sW^ac(QMUmi+CbuXRkfaGC$20sY4u2 zot4rO98N}7wUS4_X;$j`jbvpKU5BhR8FhT~hR+u6j7^N4*b6Ml%S%?8n^FHby7kG* z9AJZtW|W1s1Tmn&qt=dsU%XfR5s7SMbnGMvZ-0~0cggy}JB zXWsO9dvkicd13XKp^;aQCBq1F5bTB0W2pp$jIGdPHBp0LBM0f;0v(_jxh6Y?KQDTW zV~NS8=B_KgTtM6sUca#&#)?dNMlj?=j!?MCLz8-pZZTbJM4pM4=prL)i}e_J)CvLC z>}*DWm-66r57?Rf$X8ix`lv(Y?=I!R>Wa`-=&oL_FGAhL0X%O)%LF}BXbD-D@?iSC z7Yh1P9=wzXugsUJvGqO6c$V_uMX1M^2r}86H+g2P$dqT2Vb)0==9~xLWiKtS?L7Fn zy7Pi2zF$_!S77IXbOX){FF7`@R~wJUhP}1pwNaKfkb>>953CK5S8S7W*x7a6eT-bm z;AFAHU5j~-+aBu`1l`Tm>)XKg60wRvs$C&y1XCj&wXu-{$ZfV;>9;j#a)f-VM#Y>j zYfYmDYUMLogR)Jm^!pZUiY@tq-dp>)?eYc>YokE3DX`4;0{Iokh6d8uuw7xq^O|Jc zEjN;EFEy^F1%n#L)h)qsRo>%RP%>!&GEFWs$jw)^97n5qgi)?F&Q~?dTYP2WYr~ue zS9ch-j<2q}xd}@5ZWpO!%3J!bF3Egac|11?&VyvmCk0)1b5oFh*QGQP$Fi#sO-d%3 zboDJ$LBm7a60R0&q-DE#QM457Jyb!x83973fjZflkVwS0(UJA0Mx0~L! zj*+grxha^DN2<%PEV;`onH}^-8@>9zQ_eDQzEjK4ozAYto$9WFto1AIjHuOjAGM*e zG&X|EZMTH#JF<;Y*Ilie#!zrk+jkGKs+QYurUrtRxO)f)nxprmAeaD%&7iw0-y}fZl$5@n0Fbz?q<1J^P{_T> zFHuGK92+kX8=BblZNMG)DA9U+P%~O2jG2$87XYId8Wpsm#fsX{yN||(L7dl=eT8;O zbU#f>4<>!oq~=z@WKJ6_H0BmGCoceZ;J5wIWHLoVmsJyp^*EuiXwn!PwjbVDzMPbf z5tEwZ)MVby$6=#PS`cT#L)@||F+75Fu_|f#X#@a82&A0e8KMBRf*)FY0&Ynf`1yfu z>HT8r7K0~97Ym-o`JogA{czz~NP$5=^vZzZ!8jJA3);{*2epw`U1V<%+9LHAmAYW0 zu8y{zJw!yL^n2l9V&m#prr3}cWSSIi!J<6lMNks0N(`PLnXF2Awa3c;QpP}MVg5%s z`5wv-L|1cbAqeE{Po2;hKiuhQA?3%)Z}ff~?J35ze5A>g94{nn!qO`S>PM4|LAh|p zB@4|SL}Xm1{o|j`tkJ@TSaAMAw_Fl7KAkZIO8v!rIa7hW{n327gQ2<88G|QCCbZ!a zA+I2@`3p_D@XQ0Zj;ZadPznT`nHMs-p*2n>mK(Vy7gC(8!NtaFkUdtVIZKf{K%1nC zJ0?w&loZRBNAps#~{gKOt9f5 z^#=T?nRF+fRuHIpfvLIW4s3>2YYEi%y#2R$j;l+?o+leJT37B?$_TeP+e3o%FbccA zj_Yn>LvzpA2<|U+(ETNK2j^~ux> zdfYcd%;?R~nbcz~Q8UD2&9E8AV}y}=ruUPn4IQmrbwuZIaSw1^tz(pIUuXiYWhVu*nq#R=dl zlpX@cMzF^b$W%}f$i=RpE`1tjcBy8bn_^iI>J zAblE79M`COmFVKNaRp7+E;YCG-|?p=TbDR0cjceV1C#J4^UT-_E)1-1nB=AaW^8yQ z7s1kbc;1EmJt!9O9p$J-ipZ@vpB3LZQcX|nI?y%NAJ)_7V$Zo@&$$OZ=T3Xho$;Kz z;5i3Z&TUAqH%ba0NuqZX*v5k2a9muOlpZ26=uLwyWNV`wdPGzGo*;JRH-Vq}sY9tyPZSuiFg7ugUmi`8S zf;9(bH3=3$!iEU#ks=ET7Q3z4WtLn!qL+9S^cRcxj&f8ZMd}YFY=cw_4Js^*M@p5< zK+B~{a$w4Yj^3P%2GtR9M)oGD5uAo_q)LjA8fI6FZ$k&XAXVqkSd#&f!0pZ>UNsyL zLZhcT6L>Jb#?{m3Uy~SMHJ{PEy@)~QWl)Hgq)%-1As=M6LCP(fPR*tAKK!wF)Dej- z69cT~Gdh2riZlqx0(#a^KqT-*)2X>;BOm@vVu00rMi-(}CG@_w(KFqtIJSeDhfHBA z*|6T`Xv`8=->iw7pL!i@G~0NCAEL4wt{E0AW;uo_Egt3Lc$ z-`ggA6}0PEPVak|sEx1a4i8rOga%}m8f-|{l>tDpc5aEm#w;0E6l}iwij=k|=(efl zb1n!Q^TCk7SmQA$4%8r;bZ3zJj^&xN3BpJcZ&50j3Z00G07Z3(CJ#@o(}k3?nktf3}}0i#ET@>roYN2#m!o%JoU?deH2 zxi-_2p`J)Xu}1`kl79Y`MtY^z6QMTIIv)9Yl5IB5XHPalI&?bwC@FL%MaoPyAZ2z8 zk&xZPI##Zhp-6^bc0`STnv!r{#vAV?HQ1W%r4Z%Q2;TEyR_mpZa5vsJSR;*be#X*e zIj`fLI{Ioxdcmc^F0hi1BZy>8Q&Ac#ol2O$|E zv!^B6eMnIERP&l=oCwl4uR~!Z=xsF(hygZym2n~n<&qMJWVyb7XGsZCB;H?20N38* zxK?5SX^zZvV6#-;P!LWOWI0mQt7=**OgVMKBTjra*2EK)G{`3q%L-n@>=d45b3onWZz(9XBEVr1ljAKn(?JE)eVT5on8=2G7a%sVl#`44KeUa zvWz4yq&IZ(5$Z%c`5^Wq#A*<*><(SLRI?{)5-G>e$y@zYW0Be* zdkLaa6c5!HQ&1?_Ga-Xd!)4414yqvYSVL@-=SI%Scx+JQ9W?Jp<^}tsN#7R<_6+6YS z7#E|WBDRT1F(cwjaQ5|Rhqzx%iwXE}M16P*yxuFu!~s!-PbSp4DwL3)?}K;K;#MJl zx|fT!89%pwdi}t_;K0TW>u=w%VQ~Gx`puixt=q6+VEy2xjhi=jFaP}HM0Iqcx_0~6 z!2^>A$EstK6Q8NL!;AGXf~tCwb^a1T?;P9 zuRU2TpN>}csu;w^+XfDATL-@e*2Aw&8_ZjIv~fr1t*o{~R?~Gi!O`X~+_t<@sidbi z!zna3_-S~%QJ&KkVmKNYu-t|_`CgLU`5YQE?l~DRt%n60p|uT{O+6> zh)%vb_{a%;u6ysL!N<;tbtk{QN1uD-XG1Gq9aweZ9WnUGxA$Jw<<1TDyt;1Hi7t6= zPbAN+zCpKJJE!XQz`4#(3|>C*F>&L==SHC2uZhx%b3-D2`zOV6)Gp$OpN7{i5kD$l zuZZ|5crA9EKMyRGN5ugs`|0myd%wGDhuidc)JUXjAdsM!HXa6W)uZZ|X zcpdxF0bprmc>n&&_)G<;IyrGr>>r*PofeZ5mFm5tmC^D0_YX_@iZ8