From 05182fac63e4a063859ee3a0e3b126376ff92722 Mon Sep 17 00:00:00 2001 From: belen-albeza Date: Fri, 19 Jul 2024 09:51:12 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20PIWEEK/c?= =?UTF-8?q?oco-8@dd6740bf018acce123578f1a871836c1e81203f5=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- roms/pacman.rom | Bin 0 -> 249 bytes roms/pacman.tal | 85 +++++++++++++++++++++++++++++++++++++++++ roms/sprite.rom | Bin 54 -> 150 bytes roms/sprite.tal | 32 +++++++++++++++- roms/sprite_move.rom | Bin 89 -> 0 bytes roms/sprite_move.tal | 38 ------------------ vendor/coco_ui.js | 49 ++++++++++++++---------- vendor/coco_ui_bg.wasm | Bin 47963 -> 48987 bytes 9 files changed, 144 insertions(+), 62 deletions(-) create mode 100644 roms/pacman.rom create mode 100644 roms/pacman.tal delete mode 100644 roms/sprite_move.rom delete mode 100644 roms/sprite_move.tal diff --git a/index.html b/index.html index f82ec9b..bbe7d15 100644 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@

👻-8

- +
diff --git a/roms/pacman.rom b/roms/pacman.rom new file mode 100644 index 0000000000000000000000000000000000000000..9c4a3a682cabe444f03913192072df5adceefed6 GIT binary patch literal 249 zcmXwyJr2S!3`U(IwG@Gx08+}&!h#sf)C+JI*1}Macthd_=@eGqfQ@T#5>{*qk^JdP zUh)#nnrt1-gOWV~87BdbHZ=EAXzC?qo+{ZBSVPb4YPm@DiXdZ6s!xg`4JNc1_kyGn z-A+&PaWpR#r&7K@98{K6RMuo^>7xl+!BSE7YSk(MK!gmjIr>w3L42cgi03QnYP04D f%rLs&V#g7>2oQ9n=Ncivmop15xnt(=n?L^mYB5fC literal 0 HcmV?d00001 diff --git a/roms/pacman.tal b/roms/pacman.tal new file mode 100644 index 0000000..4ef9d06 --- /dev/null +++ b/roms/pacman.tal @@ -0,0 +1,85 @@ +( sprite animation ) +|10 @Screen &vector $2 &x $1 &y $1 &pixel $1 &pad $3 &address $2 &sprite $1 + +%MOD { DUP2 DIV MUL SUB } ( a b -- a%b ) + +|0000 +@x $1 +@t $1 +@pacman-spr $2 + +|0100 ( -> ) + ;on-frame .Screen/vector DEO2 + + ( init vars ) + ;pacman00 .pacman-spr STZ2 + #00 .t STZ + #00 .x STZ + + ( draw bg ) + #21 .Screen/pixel DEO +BRK + +@on-frame ( -> ) + ( clear foreground ) + #00 .Screen/x DEO + #00 .Screen/y DEO + #30 .Screen/pixel DEO + + ( move party ) + .x LDZ INC #c0 MOD DUP + + .x STZ .Screen/x DEO + +( handle animation time ) + .t LDZ INC DUP .t STZ #0f EQU ,&update-frame JCN ,&draw-pacman JMP + &update-frame + #00 .t STZ + .pacman-spr LDZ2 ;pacman00 EQU2 ,&change-to-01 JCN ,&change-to-00 JMP + &change-to-01 + ;pacman01 .pacman-spr STZ2 ,&draw-pacman JMP + &change-to-00 + ;pacman00 .pacman-spr STZ2 + + ( draw pacman ) + &draw-pacman + #44 .Screen/y DEO + .pacman-spr LDZ2 .Screen/address DEO2 + #10 .Screen/sprite DEO + + ( draw ghost ) + &draw-ghost + ;coco .Screen/address DEO2 + .x LDZ #0f ADD #c0 MOD .Screen/x DEO + #10 .Screen/sprite DEO +BRK + +@coco +0077 7700 +0777 7770 +6717 7176 +7f77 77f7 +7711 1177 +7772 8777 +7777 7777 +7607 7067 + +@pacman00 +00aa aa00 +0aa1 8aa0 +9aaa a000 +9aa0 0000 +99a0 0000 +99aa a000 +0999 aaa0 +0099 9900 + +@pacman01 +00aa aa00 +0aaa aaa0 +9aaa 18aa +9aaa aaaa +99aa aaaa +99aa aaaa +0999 aaa0 +0099 9900 \ No newline at end of file diff --git a/roms/sprite.rom b/roms/sprite.rom index 7259b1a7d4456997c29dcbc33f09fc4e13134b75..443310381fd415cec3e7fb1ab2ebd63fd9a00131 100644 GIT binary patch literal 150 zcmZp0X%H4~2x|}$U%+VAAYtCX&>$t=5C`Um!THHxei@9 ) - #5c .Screen/x DEO #44 .Screen/y DEO + + #56 .Screen/x DEO ;coco .Screen/address DEO2 #00 .Screen/sprite DEO + + #5e .Screen/x DEO + ;hyphen .Screen/address DEO2 + #00 .Screen/sprite DEO + + #63 .Screen/x DEO + ;eight .Screen/address DEO2 + #00 .Screen/sprite DEO BRK @coco @@ -18,3 +27,22 @@ BRK 7777 7777 7607 7067 +@hyphen +0000 0000 +0000 0000 +0000 0000 +0000 0000 +0777 0000 +0666 0000 +0000 0000 +0000 0000 + +@eight +0000 0000 +0777 7000 +7600 6700 +7600 6700 +0777 7000 +7600 6700 +7600 6700 +0777 7000 diff --git a/roms/sprite_move.rom b/roms/sprite_move.rom deleted file mode 100644 index a9bc92639e014e64e4b6a880babb9a0869bb450b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89 zcmZ3$DAXWezJSrPLBhO2u|Y(fp+QKj0Z51g31RUD1E3IN!vQsEDM^r+3rI|$K}wu~ ip}d@dy}Z02UA(ZYzP$W ) - ;on-frame .Screen/vector DEO2 - ;coco .Screen/address DEO2 - - ( draw bg ) - #21 .Screen/pixel DEO -BRK - -@on-frame ( -> ) - ( clear foreground ) - .Screen/x DEI - #00 .Screen/x DEO - #00 .Screen/y DEO - #30 .Screen/pixel DEO - - ( move ghost ) - INC #c0 MOD .Screen/x DEO - #44 .Screen/y DEO - - ( draw ghost ) - #10 .Screen/sprite DEO -BRK - -@coco -0077 7700 -0777 7770 -6717 7176 -7f77 77f7 -7711 1177 -7772 8777 -7777 7777 -7607 7067 - diff --git a/vendor/coco_ui.js b/vendor/coco_ui.js index dba6796..248b2bd 100644 --- a/vendor/coco_ui.js +++ b/vendor/coco_ui.js @@ -20,6 +20,24 @@ function takeObject(idx) { return ret; } +const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); + +if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; + +let cachedUint8Memory0 = null; + +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + function addHeapObject(obj) { if (heap_next === heap.length) heap.push(heap.length + 1); const idx = heap_next; @@ -96,15 +114,6 @@ function debugString(val) { let WASM_VECTOR_LEN = 0; -let cachedUint8Memory0 = null; - -function getUint8Memory0() { - if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { - cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8Memory0; -} - const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' @@ -168,15 +177,6 @@ function getInt32Memory0() { return cachedInt32Memory0; } -const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); - -if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; - -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} - const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined') ? { register: () => {}, unregister: () => {} } : new FinalizationRegistry(state => { @@ -207,7 +207,7 @@ function makeMutClosure(arg0, arg1, dtor, f) { CLOSURE_DTORS.register(real, state, state); return real; } -function __wbg_adapter_14(arg0, arg1) { +function __wbg_adapter_16(arg0, arg1) { wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hbe6b0b61f022bb4f(arg0, arg1); } @@ -366,6 +366,10 @@ function __wbg_get_imports() { const ret = false; return ret; }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; imports.wbg.__wbg_instanceof_Window_f401953a2cf86220 = function(arg0) { let result; try { @@ -405,6 +409,9 @@ function __wbg_get_imports() { const ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0); return addHeapObject(ret); }, arguments) }; + imports.wbg.__wbg_log_5bb5f88f245d7762 = function(arg0) { + console.log(getObject(arg0)); + }; imports.wbg.__wbg_instanceof_HtmlCanvasElement_46bdbf323b0b18d1 = function(arg0) { let result; try { @@ -461,8 +468,8 @@ function __wbg_get_imports() { imports.wbg.__wbindgen_throw = function(arg0, arg1) { throw new Error(getStringFromWasm0(arg0, arg1)); }; - imports.wbg.__wbindgen_closure_wrapper25 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_14); + imports.wbg.__wbindgen_closure_wrapper27 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_16); return addHeapObject(ret); }; diff --git a/vendor/coco_ui_bg.wasm b/vendor/coco_ui_bg.wasm index ff821a68f5747ed0399f46eeb19d2745732ed523..d433b40e571199245dcada083c8a477202ee89cd 100644 GIT binary patch delta 6958 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 I#MnFk3xAY&Q~&?~ delta 5909 zcma)A2~?Ct3Y;(_5yy=k!UR>DIaLFAz++dj?Lu`tE)2 z-gn=9_uY5vJ$%d_{)z3orTR~8VBcu2dm6k1?p^Ey2+9z2syE>RsI*#*x6X%Ybvm_1 z&9F(`hfHJ1`gdl~)>qXxwsbJT=y0s7sBtv5wKlc2I;vZ$s)Ut+9$rmV>o~u%s-mq% zn1!n}rnIHnmbQi$8tVmEs4uUpYjg^)PUW&=yp}2ta}A!;?1wI#r8WDX z0>4Qkl=*gJvo@#;!Mm9WGUx?CX8L(u4c(A@2BJsd4XCc%4)PtS`VQ=b+8waEHE->@ z=1m*h+tzoqoP+!s`(YTCY=IZ!--HA37950^4#8_F^X@`Fybdp4g-h@@T!tao3wvN6 z9EN)^0Pldb{2ENT`aAN|CsEAX?XBCSgL3x{-%mA=gw_840@E=!K!zlDcfj|VHp#&B z62s;>L2jq%Ghc73EX)voe=t7;%VtDlL#z(^ust?D{05jcl1hH>k=7+PjgOI!?$F3; zu@CRYTHpr$oZ5xR;$lfAAua;yaZy|pY{vSyEZBf&iE|XcAD0O$@Nrxs9KnS6WN_mv z@sThSJK`g!-GGp%n)f}@Dw;3Gr|F0<>BQ6cMSL9$;tL5yq3WBiH$Vo{_8{s z$)C`dLjQr&G4jARPGeqDG|b1!q?jr5X>9*?VxGkQr0Mybyt;$PWy(BcyGQ--IB(xL z=;q)B8uiS~_~)cpMWJL<4!6Dl@+N=ec1z>jX$<#xrSrYv8vJl5U8qAlp zE{jfrA|IVzQi*}+w#SFjCV?b~;S%`Krb^ruD*jm%D&D}a?Wyy^iA@^*bvG?5S>CaS zj438#1_%)S-Z=da``ry$p8*8B7w1GU2*$eEpF;&cpPQw$0XUR9i_pW|PpKWvdq@j7 zke@;AkMm0?=Hlc}Kz&II8cdlHhD&B7cX2D_Cr?z(t{H-0(fQh$3g}PGn@N9Ko%a;I zVS=HVfF9%}=p~)p4fB0`=zEyH4SGqK3Ee$vGZ=jI2pr>dGkKCN9Pkz?4K;^r623G(E6xb8JI2b<@z<7bu6F%OXy6A zT}6AKY?n?SrYDCU>b)Cq%ghid$}`1qysrq)f*N2^uDg zFkFzD1y1Zqje}0Sm>L4b?#FZHYbcTm7G_erabYRtv!5+|h^LCOArL<+a)TN7Ki5Ww z#cOdC(9us?5)&6$;KStMeH7nmlotG4@<$y1g&L7gtyo9VPX|Q2f}KmIt9w-xm~SnT z!mPCv7a#54SmHNBHQr_j|qa~$+ycHHv$`V8Y6N%mK*6%P*Ef z2Ku~YqO|}1%3pw8;n+MJcg#yA0AcPeFUt%f@q4dsq$EAJILeD0CQ&uw-lR+ z{YG&uwSFZWTT4t(fQ2Qk;J|w&>EOcuE}7#?+e9{t^7}kV7vj8C5+&iPRZF#zA>>aJ zmeu>?hpS2reP96}fzrHzb~CH=Il5Z5m1cF_0EE%Z5bUkCO_Co zYgp`F?V$8^3>(VYAqu}JOSY$Tw|JSy+#>-c3yF=HMc0|j#=Imok3C8_p1>n(Q(V#b zVZ~<1#%0bhxPlE%3)Cr`+;4Gmp5gR4yC4^hm0T*hl1p(;&SZ|;Smg))ePCAe0znnW zD8JB2Vd5@)TrJVzimb`Q{^}S1@sM^{ga>Qp`3-`B)}|Ow`E?h5Srh4Zft(^<?TQ@mU|;_s1E(d0b6u~rMWAj%ap+)uAtk zshSR|xX5$d1&gPgpn#>V;}u1DV?HJ}2K>K9uFIf+R8jU(cAm7-<*Z!Ed@luw*+?th z1vW-k`dAtwF980c$%?s6cCv}1b7QDhp%bvJIgilI<}zvnTNawb|F7E|yIRu73GNoN z*5h#ex0WIje%KO>d26kNn%9=X6nwC@CVUWR;gd@!pj%TM+b8_8)f|-JiBpy57)vVh z7LQZh-I_9S{=8^Q-fNu`WcxdV&25nohjLp!_+U@lOkaL*3w$U(sA>^!;k~v3vP#oF zkJ`d^2~OggcC-IY+U^2?E}lEdd(?<(9B!Av%l&!#%K)=6XML{H#^CUJ6QR-d3t<)J zb_8Q+2dC3Ja;RE}BIqO6}n zl43M{k`+k2ZM4-~zh}f;y*FWE`}0}kH+PY)P>~;S()nwR1A{u z_l{A%#FTFnC2Pc0y})PUjyg+P`1~Z1AbS=ecjK50btp$t3>_OoKFOMZv3eazigN_L zRuD%>kxJkngw6gqb@L}siND^wV5LJ4gemm7M3?wf`liZD$oK{wHHpq5Y??&d2`7Go zHsJQ2bD;&dZ_T92 z>E6~N40&BNc6>wEY)pLpr<$J-HwabRYK+_h1AXE(qTo;8iSF07nY1B4s!%tS*H;NX z24|zQ(a~0$ysmt0J-93G_0-v0ohMR7+;K2U*l$3tHzl%yN2QCK#x^W@% znT1z(OBmiC#(bSP+&>dt{pnP*9PeMv#3qGdKOo~!zZEYWu(PRl8Xk;)JrK#Jd0^(j zNak-;E#zDg#U4Hk+*5=DIge252YJJd>oFJ$~wo`&;HOP z{K=tUynARGT{jO7*;u%p#LXB#5CjouI}}TIi#!kw5>^kaU}jnA{B%H~A9N{)XVZn> za5x?RI*-)O@N{$>T>@6Td^DD>zK@UE zAr1YG6|wXsxOXTTyN@NX3=e!j(B^^CPy&^AdxosIVMwI1ZqJYmS!7rk{(2~oN{xHR zBaIa{tJRinbvm6{<+k$F)Ev%DuvOctoaO1Z>QrZCT195&tiSWzGJ7uhFA)2V&!8IQ z-tn1`hhH7fCvT(-7lMqh4bOu)c%Rz2s5z0Rn%6kKmNYzmB9IEiTPI?v0{ra6Ojv-v zC*$eK!G1EHEn0xP1|{5bGL{wEaM}4F{O-v}Rx}S6k0j&NQ-SQce1akPmk|+HoC<`+ zxaQRJums;aWfz|x+u=&j!_HEA4+^4l7JAyoUYLzxr$ey*bQCPdzSAq&ied`o!kE?N z6QpE+UiCaMv4ws+XEQtN7846#VlWq3q@Ht{^NsV+nZm z+fPo#@wA9QymV$7l;FE(QUg{QTiVvPIx4DaY8xDF4eRJJs&tuhtRl~5Ge?;MBl_%k z;jEFBW#Hx`LHNxf;W-hi6y$SWgla;( zE?9a#8CGN0`Pr)4m9rG(AD^GiTy+Y3d@~hGFGK~b`5W(Ib$IYX20hWde<2DQ@V_o> zfJUspIFl07v5V2rOuHS2zq)9m6!q2d6w#WIVNJ7TTC3CTcDpm(itk>G$EHhO*!rdj zt$YaHB-Ey$KM`tIQ065O)+uN`q4f$HCDcL4ivM%Tk9B%n5Oq0%y;h|hkdn*Ku?^2F z_KUr-_{+;i*hs_U&~n8Dn-o-e#l*Tg@%IZ(b#nWAzcyG_Byt48R- z%~x%(1wXqMiZRzh@V8g}{I-JLlP;7u!q><8;tkuti}>^+*;v1wnDbx<4quxM-{Dxb zlitK0k%GMI+0nbemj?2!9!og8zxA}Z2ajD}0DJL^>xIyZDeiQ(50w4e?iQ!^fniKu zv0y))m|cU@@dLL6ly0?w(2vHO(U@?<4-P1(l+Zy!QT`RF<<^vx%rs}JHKQ^$wfYd$ zjfd@g7@#3(TB@aI#jL=4?ntb?DN=bpZtU3EIRgJgiTpa|-7?Z^-?Cd*eUHHuWi?IZ z4Ykf8^c%^cV!dc&E(~Mu$Wl0gk4EyS$dhiTz$sjI+pIcGXY<;XAl!Z1#@_I(>x z>I@xp<46ofj9TC<%A;X$4ogSvR4N@BO@a&f&!cH@5x*Wyhc~hGj)aTvh;WHe3S7qC zJNfie=fRx}b`_MQdW{bWD$mSHwWU{-S5&4~q*SD*UWc?r2-!4$S wMWMzyEpJz