Files
microw8/v0.1pre4/index.html
2022-07-25 06:47:36 +00:00

1 line
9.1 KiB
HTML

<!doctype html><html><head><meta charset="utf8"><title>MicroW8</title><link href="https://fonts.googleapis.com/css2?family=Josefin+Sans:wght@500&display=swap" rel="stylesheet"><style>body,canvas,html{margin:0;padding:0}html{background-color:#202024;color:#808070;font-family:Josefin Sans,Verdana,Arial Black,sans-serif}body,html{height:100%}body{display:grid;grid-template-rows:1fr 0fr}#centered{align-self:center;justify-self:center}.footer{color:#202420}a{color:#303630}a:hover{color:#405040}#screen{background-color:#202428;border:4px solid #303040;box-shadow:5px 5px 20px #000;cursor:none;height:240px;image-rendering:pixelated;width:320px}#message,#screen{margin-bottom:8px}.error{color:#e04030}button{background-color:#303440;border:1px solid #404040;border-radius:4px;color:#808070;font-family:inherit;padding:4px}button:hover{background-color:#202010}button:active{background-color:#504450}@media (min-width:680px) and (min-height:560px){#screen{height:480px;width:640px}}@media (min-width:1000px) and (min-height:800px){#screen{height:720px;width:960px}}</style></head><body> <div id="centered"> <canvas id="screen" width="320" height="240"></canvas> <div id="message"></div> <button id="cartButton">Load cart...</button> </div> <div id="footer"> <a href="http://unlicense.org/" ref="license">Unlicense</a> </div> </body><script type="module">function A(A){return A&&A.__esModule?A.default:A}function e(A,e){let t=A?`${A} bytes`:"Insert cart";e&&(t+=` - <span class="error">${e.replaceAll("<","&lt;")}</span>`),document.getElementById("message").innerHTML=t}let t,B,a=document.getElementById("screen"),n=a.getContext("2d"),r=n.createImageData(320,240),o=A=>new Uint8Array(A),s=A=>new Uint32Array(A),i=0,Q=A=>{let e,t="keydown"==A.type;switch(A.code){case"ArrowUp":e=1;break;case"ArrowDown":e=2;break;case"ArrowLeft":e=4;break;case"ArrowRight":e=8;break;case"KeyZ":e=16;break;case"KeyX":e=32;break;case"KeyA":e=64;break;case"KeyS":e=128;break;case"KeyR":t&&F(B)}t?i|=e:i&=~e};async function F(Q,E){t&&(t(),t=null);let I=Q.byteLength;if(e(I),0==I)return;B=Q;let w=window.location.pathname;if(I<=1024&&!E){let A="";for(let e of o(Q))A+=String.fromCharCode(e);w+="#"+btoa(A),w!=window.location.pathname+window.location.hash&&history.pushState(null,null,w)}a.width=a.width;try{let a,E=new WebAssembly.Memory({initial:4,maximum:4}),w=o(E.buffer),g={env:{memory:E}},c=A=>{if(0!=o(A)[0]){w.set(o(A));let e=a.exports.load_uw8(A.byteLength);A=new ArrayBuffer(e),o(A).set(w.slice(0,e))}return A},l=async A=>(await WebAssembly.instantiate(A,g)).instance,f=async A=>l(c(await(await fetch(A)).arrayBuffer()));a=await f(A("data:application/wasm;base64,AGFzbQEAAAABFQRgAX8Bf2ACf38Bf2ADf39%2FAGAAAAIPAQNlbnYGbWVtb3J5AgAEAwkIAAABAgEAAAMGEAN%2FAUEAC38BQQALfwFBAAsHGQIIbG9hZF91dzgAAAp1bmNvbXByZXNzAAQIAQcKxwUIxwEBB39BAC0AAEEBayIBQQBIBEAgAA8LQYDAByAAaiECIAFBAXEEQEEBQYHABxAEIQIFQYDAB0EAIAAQAwtBAEGAkA9BCBADQYiQDyEDQQghBEGBwAchBQNAIAUgAkggAyMATiAFLQAAIAMtAABMcnEEQCAEIAQgBRACIgZqIQQgAyMASCAFLQAAIAMtAABGcQRAIAMgAxABaiEDCyAFIAZqIQUMAQsgAyMASARAIAQgBCADEAIiB2ohBCADIAdqIQMMAQsLIAQLRwEEfyAAQQFqIQFBACECQQAhAwNAIAIgAS0AACIEQf8AcSADdHIhAiADQQdqIQMgAUEBaiEBIARBgAFxDQALIAEgAGsgAmoLEgEBfyAAIAEgARABIgIQAyACCyYAIAJBAEoEQANAIAAgAkEBayICaiABIAJqLQAAOgAAIAINAAsLC6cBAQR%2FIAAkAUEAJAIDQCAEQYAQNgKAgA8gBEEEaiIEQYQMSA0ACwJAA0BBABAGBEBBgAIQBgRAQYECEAVBAWshAiACRQ0DC0HBAhAFIQUDQCABIAEgAmstAAA6AAAgAUEBaiEBIAVBAWsiBQ0ACwVBACEEQQEhAwNAIANBAXQgAxAGciEDIARBAWoiBEEISA0ACyABIAM6AAAgAUEBaiEBCwwACwsgAQs1AQJ%2FA0AgABAGBEAgASAAQQFqEAYgAnRyIQEgAEECaiEAIAJBAWohAgwBCwsgAUEBIAJ0cguNAQEDfyAAQQRsKAKAgA8hAQNAIwJBgIAESARAIwJBCHQjAS0AAHIkAiMBQQFqJAEMAQsLIwJB%2Fx9xIgIgAUghAyADBEAgASMCQQx1bCACaiQCIAFBgCAgAWtBBHVqIQEFQYAgIAFrIwJBDHVsIAJqIAFrJAIgASABQQR1ayEBCyAAQQRsIAE2AoCADyADCwwAQQBBgJAPEAQkAAsLyQMBAEEAC8IDDHv5cfxDkQZPMZ0qYoDDwomVtSyGbGyuB%2FKWoshno8d0Cmh2T47oGnqa5kocJi625HViLA33CV08eLEanmEBSANK1E2c%2B%2B77Ps4ym0%2B7RYcaTUUBO6xo%2BZM%2FWf63IrO3%2F%2Bwvx0QmFo8WfZDwu3yZ1pVEakQ%2F1ciIawB85zOzqABr8W%2FL%2BoCsX0ntIPWERoF9Bx9XcNiNYSPx3zo5APCdyMwL%2FCQ2T4H6S%2BxRHH1z9hZny24zsMlUCG4Wiq4IXW8HsLBj%2Ffp6Ul9afiYz75R00uyK0jz3f5QhS5uU2tvBzNIptZOl5gDEkl6rNiDJaw%2FvwEloV%2By5TrhG2OeGaH%2B0B8DmaUTTRCtqE%2BUR14QxTogZ2hVf1CpWAgSKDfgTVkcR7CTk8jkVZe%2BHdo779JzS81sNtgBDZ9pRrEztp8y9XcPKF24oPS9iodaLB5wqoPS8QO7oG91NBJHLgps824gfyhdoECWKDb1zu011MQKUmDvcRPMXFNryQyJFLjZKc9YsixF7YRxjth0bhydNfEXbLeNxEttYaumHmvTDZET1kIKd1YuXOS48ajeQQsYPqRtCpP2W46wXR%2B6rzJHrCNj6cire"));for(let A of["acos","asin","atan","atan2","cos","exp","log","sin","tan","pow"])g.env[A]=Math[A];for(let A=9;A<64;++A)g.env["reserved"+A]=()=>{};for(let A=0;A<16;++A)g.env["g_reserved"+A]=0;Q=c(Q);let C=await f(A("data:;base64,Ao%2F%2Bdbd8plwjoXZbwwA7nh6GHRI%2B422eTxmDJFti%2BI5UDTvwu5kCvc4xQ9Jb%2FwOW3z1vJ%2FTGakG8XecB0dCEqpx6dlihCpvqcP4jrQLQGjLXkt74PfO2PxPzFvYoljy%2F1NjAI1YUClK%2FagQ%2FPwUEBfBX8ZsE5k2EKr4E%2Fovvk845eqBuSZJKnBO3Ke6YZpX%2BKhSh8sZ%2F3YsIKD7SVl0%2Fh60U%2B2mzhrSyV1tEsB%2FMY9Cr25ei1R4nHIvjmjp59Suh9ewrL%2ByOntXfRJuk7SjbwZIqotkf8JFOt%2Fwk2VNL%2Bl3ewl9ANsRrU93nh4V3MSD6j60rEsza8i7CEBQ%2BtVwhfS0zrg1RrKSmSnA%2FCzCf47BmMsmVZRz%2FcRCdR4%2BkM%2F92sC3br7FLZWNjV10YthZfRWLpJHirK3ihWcPvIFxlIj0F8w2O1jkDUil1%2F9VMNJFX3U2G3GOKmu3QO313OZslCSYdX6ES9QPUZEY92FhD05b5%2Fhj4OOb5YTrWw5kt8n2Oo2K%2BzDyWcGm4kQf%2Fpjx0N0cKwOz2JwHQFgx%2BPqrxQIhdLg3%2BqUyCVmO5o2e2K3TbsFnPeDiJvbk9g47KH7uimldXD6u4gwW0Bl6nLGac7MuiSZ0Yy3%2FDqZenTS0jZffB%2BxYYA6C7xJT7aMHci1%2FcE9O36%2FLtZI2Nr7naQNCIYSEsD812Q2C1L7akOYFQOq51iQAoPwtXrrZXbLtAbRXdyAAMqmrIHaceUtesji0HtAl1E27O7QmUOixlsKmRzaZmTNfhccvskspgYw2IbymgG1RjXmISdkGbY%2B65V7LcUYeqVG2lc3G7A1LngO1KkZP0VQZKl1RTKUMldTJd0mbqFAX1ZXiy65sYPoHGYpc0mWq901vadaeOx7wEsPNqXCaFEF%2Fb7wvE8MKcmCodXGbi08YzZvOasYbA%2FurxmJPxADC5yTDiOpyiGjUcCbRH87iq%2BBrrzpjxd0LzvL%2BXjl0qKz7mLL112ZMyr5Ow2DKLQX1qqMoHZK2MfHw3vnAMk8is%2F5anHbaW856JaKe0DR6hIQ%2FTQ%2BgnHcRmxdtS65IVhSxk5UyopljN18RrsEorm1T5YH%2BdyeXK6%2B1frptPEOv6UUR1%2FJ2OiYb%2FsyHePfMTEAMSFhO9Y13AtSkfG%2BpxbcoUuoxYrjZpbXq1njMGzLJfYKETWRRU3BKOF%2BR5fMqlXRtYcX77izpmdvXTDfQvBLUcaPqI0KElPazG827jvB0Rpt40Z%2FPbtJwukhP5wi8vY4zv4TZ95vb6o4inOs6U9uv2MdrfRvesuJ%2F8SH7JrVc6dkgADDsP%2Bq1L8qXRq%2FSwgzNMX9KZmbQzP1vAe1OwelgVnJ6nVdcN0WUnP%2FPIMpg3Li%2BYR%2FhEptphOqedAXs%2Bh1Lrua9Hf0jRnMdADqqmHQMGZ8Xl8%2F%2BJesKSHcVMDEzIRvhqzr8kUIElR%2FY1z1B78a4yfsRstzRCziTGa5iF8ZzS18DjAtRnOIgCVO8jQFdH386gIuzn9prI3Zafgx7dcR7AYl4o7hFnS96DW8hruaaQSo5sBB%2FJaivV%2BiqsVitTyYp2FDcKPY0%2BnTDLtGQEb%2BIwFgu5tVGIppjhlsuwRaUsrDJgqSwH%2FVM3I1ZgAutQX1SPCc2kwKjL%2FwpDka9FB1JivGBFCQIXtn4XCbozkH2DkljN4xft8Msa%2BYgNZ4exXt0E8Os%2FfwrqvWatAeiqYjnxNsVD7DPBHOxVphxPu8OfVo9gW3DWOuZUpZ5jeMxsrMHOCS63pM63t2VAOuxjI9dkRONwpj9IvtS36GgxQx%2BGSrR10FgEVaVDCFxD4brGAzKqzi5HlN2lwzfE963rkfOpJv2ZkaXXjCB2Vu%2FG0oqKFcBSRmNPfETw9zezMVetj0BakPeo3wwK8IsrJ5%2BVKJJMsf32GrWGIPRCjqIuTrzbv5mG4nNZf3BLrohhg%2B3ESt2Vpzi%2F5%2F8NrV9C%2FwfD05%2BZoc5WrysQKUsLnWhMQwKGw%2FT8YiOXzSau%2B8GvbIRG5VGhwGkLtkj9Vxx%2B7zjnIKgPALS42WOfgNzx%2FfY2qoeok%2B6TTeTvD3ottoPIqxZzZjI2BogoOeAlFUNZxpjU53yLTQY6cbm7HmmQKpszXdw42RXTsJGJlyAiKuOXDtjVk%2FZfjF9NgN1OSMN%2BPc8ozFE5l3EWdnnvIufzcazc%2Bs7BJ0kvOjcvqYGeKl9C5LVLImEE4E2%2FpLdl7AA60d8l3uJ5XZZBBJY7BusfO%2FPfd9Jkimkk4Rmj2e9tAtLFJPuP%2BqfVvUZaxplg4dU3PtU7NIAeZlJLgG63ZfW%2FW1gwEOVynABh%2F1yPCXqjc8t7LNLtVbGo757g%2FvLpJg2By7O6HCI6RHazFrRJm64nFj08TcgtgV%2B5t1WpMmNtly3ZQt%2FfUWa%2BR45t%2FjuGPuc9zShD13DwZYoLquVvCT8POtrjNoKpdsJZc1jCrzzvBAqjKqb8bnNHDJrkl7P5oK8iQ2tr6b92h4aWlVi02U2rQbyfDNac5sK9rnbjGnJ%2F1pfhGYgL24kSSC8n520Qhd90WWA79pfxeWukm5ZDcQ5ADC4LlwMSCfhK3wXPcHJgmVabxy8kYEek2eV5Oz%2F5aqe%2BRnnho%2BbK785AS%2Fz9lYZw2iClVuLrka%2BZuK2midc75jn8J1f2Kr74jclmoVqDXEL8II88LJ6PlCq3S7htPJl3HTVc6%2BvWiPBF9keubsHbXZ7LaIOvgoBeOgjzvNpz9pshCPK7gh4XL7fqJF1tBR%2BxcYXrMUQK8YBhaADG4stoyoFZGsOdV4Zvwpt9pMZfuM4IoQA7ySywXNgVb9YGnG4zpM0jJGlmDINbk4RNKIGp%2BWyJlEenJUaWsbD4IFkh2ZFWffbqmMwen86vKXwNhHtCnT0CxHQA16j%2B%2F27THM754tay4z7fQ3g8erX45r0wwAtOQoy2IQNY%2FvQEQj9EPSygpovut0jWo%2BeICG0ZemthCEzdRIHgoKn7%2FnXjKi6eLhuO3baRZzrwtYExni%2Fw9hxlg5endf%2FWtuzCRxMaGGY%2BDPEu9vJiw7g%2FzcXwrB%2F8lNsWjCyqbe7nqihxiMii29mQ5BCRto0i3%2Bo%2BKzG9Emha3x8EA3B%2Fjq50F6mgEnHIZzwb3NsL7rvvb1V5hmRxEYerVNH%2BJ0DyCVZZC6g1JdrTF75UH91v657IvTNbfMm9ABzOxLDYiN3iKjTqFd4%2FxpK5xEcA"));for(let A in C.exports)g.env[A]=C.exports[A];let h=await l(Q),y=s(r.data.buffer),u=Date.now(),b=!0;t=()=>b=!1;const m=1e3/60;let D=u;!function A(){if(b)try{let e=Date.now(),t=!1;if(e>=D){let A=navigator.getGamepads(),B=0;for(let e=0;e<4;++e){let a=A[e];if(a){for(let A=0;A<8;++A){let t=(A+12)%16;a.buttons.length>t&&a.buttons[t].pressed&&(B|=1<<8*e+A)}if(a.axes.length>1)for(let A=0;A<4;++A){let t=a.axes[1-(A>>1)];(1&A?t:-t)>.5&&(B|=1<<8*e+A)}a.buttons.length>9&&a.buttons[9].pressed&&(t=!0)}}let a=s(E.buffer);a[16]=e-u,a[17]=i|B,h.exports.upd(),C.exports.endFrame();let o=s(E.buffer.slice(77824,78848));for(let A=0;A<76800;++A)y[A]=4278190080|o[w[A+120]];n.putImageData(r,0,0),D=Math.max(D+m,e)}t?F(B):window.requestAnimationFrame(A)}catch(A){e(I,A.toString())}}()}catch(A){e(I,A.toString())}}async function E(A,e){F(await(await fetch(A)).arrayBuffer(),e)}function I(){let A=window.location.hash.slice(1);A.length>0?A.startsWith("url=")?E(A.slice(4),!0):E("data:;base64,"+A):F(new ArrayBuffer(0))}window.onkeydown=Q,window.onkeyup=Q,window.onhashchange=I,I(),document.getElementById("cartButton").onclick=()=>{let A=document.createElement("input");A.type="file",A.accept=".wasm,.uw8,application/wasm",A.onchange=()=>{A.files.length>0&&E(URL.createObjectURL(A.files[0]))},A.click()};</script></html>