Files
microw8/v0.1pre3/index.html
2021-12-18 23:13:25 +00:00

1 line
7.6 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,a,B=document.getElementById("screen"),n=B.getContext("2d"),o=n.createImageData(320,240),s=A=>new Uint8Array(A),r=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&&c(a)}t?i|=e:i&=~e};async function c(Q){t&&(t(),t=null);let w=Q.byteLength;if(e(w),0==w)return;a=Q;let I=window.location.pathname;if(w<=1024){let A="";for(let e of s(Q))A+=String.fromCharCode(e);I+="#"+btoa(A)}I!=window.location.pathname+window.location.hash&&history.pushState(null,null,I),B.width=B.width;try{let B,I=new WebAssembly.Memory({initial:4,maximum:4}),E=s(I.buffer),g={env:{memory:I}},l=A=>{if(0!=s(A)[0]){E.set(s(A));let e=B.exports.load_uw8(A.byteLength);A=new ArrayBuffer(e),s(A).set(E.slice(0,e))}return A},y=async A=>new WebAssembly.Instance(await WebAssembly.compile(A),g),f=async A=>y(l(await(await fetch(A)).arrayBuffer()));B=await f(A("data:application/wasm;base64,AGFzbQEAAAABFQRgAX8Bf2ACf38Bf2ADf39%2FAGAAAAIPAQNlbnYGbWVtb3J5AgAEAwkIAAABAgEAAAMGEAN%2FAUEAC38BQQALfwFBAAsHGQIIbG9hZF91dzgAAAp1bmNvbXByZXNzAAQIAQcKxwUIxwEBB39BAC0AAEEBayIBQQBIBEAgAA8LQYDAByAAaiECIAFBAXEEQEEBQYHABxAEIQIFQYDAB0EAIAAQAwtBAEGAkA9BCBADQYiQDyEDQQghBEGBwAchBQNAIAUgAkggAyMATiAFLQAAIAMtAABMcnEEQCAEIAQgBRACIgZqIQQgAyMASCAFLQAAIAMtAABGcQRAIAMgAxABaiEDCyAFIAZqIQUMAQsgAyMASARAIAQgBCADEAIiB2ohBCADIAdqIQMMAQsLIAQLRwEEfyAAQQFqIQFBACECQQAhAwNAIAIgAS0AACIEQf8AcSADdHIhAiADQQdqIQMgAUEBaiEBIARBgAFxDQALIAEgAGsgAmoLEgEBfyAAIAEgARABIgIQAyACCyYAIAJBAEoEQANAIAAgAkEBayICaiABIAJqLQAAOgAAIAINAAsLC6cBAQR%2FIAAkAUEAJAIDQCAEQYAQNgKAgA8gBEEEaiIEQYQMSA0ACwJAA0BBABAGBEBBgAIQBgRAQYECEAVBAWshAiACRQ0DC0HBAhAFIQUDQCABIAEgAmstAAA6AAAgAUEBaiEBIAVBAWsiBQ0ACwVBACEEQQEhAwNAIANBAXQgAxAGciEDIARBAWoiBEEISA0ACyABIAM6AAAgAUEBaiEBCwwACwsgAQs1AQJ%2FA0AgABAGBEAgASAAQQFqEAYgAnRyIQEgAEECaiEAIAJBAWohAgwBCwsgAUEBIAJ0cguNAQEDfyAAQQRsKAKAgA8hAQNAIwJBgIAESARAIwJBCHQjAS0AAHIkAiMBQQFqJAEMAQsLIwJB%2Fx9xIgIgAUghAyADBEAgASMCQQx1bCACaiQCIAFBgCAgAWtBBHVqIQEFQYAgIAFrIwJBDHVsIAJqIAFrJAIgASABQQR1ayEBCyAAQQRsIAE2AoCADyADCwwAQQBBgJAPEAQkAAsLowMBAEEAC5wDB3v59FcZoAI7mCitTJSZSOWtKzoBW6JIrDZYF1%2FesWuNYDvyk9d%2F8%2BETEuIqpGSjTPa14Ux09aUDW0ipoTypDKubKn1EsOc9qfp80AozM6iwVO6lNxiLdB8GLSCRDa9OxEyyvUrTQ6Jw3vm7Stv8Q0PC4uLr%2BOZltzh59ubzeQBw%2BaUBKmTURiM8Mz8s1QWzrPWIPgy6UL4xD4YGClEY7%2B8HPyAWsyMuqFzyMQq0JZ7KiZ1ka%2Bz5tK2EjmMS2JAK%2BMp1DV6UOoZX3SD6IjmLPq5CtVvvxHbcGN9bzKTxTOHoValxjTO6KCanYHMbHa%2FKh6IN54GXufzOqPr8CAK8mS2rbaAg4oZ3G%2Bx8fKWQULcD3jK7t9GuNEXbVvjPcaAhrFcdhwmhLHNDrpyfwdZCMl0Y6jHYYJ7jsrC3NWfnAQp5pjO9uB8EcCaib%2FQ0069RwJJGVXEpuskBKVDcH%2BcuWp%2FVG6qFOF8FawL%2BkbkeWggQ97XARmHYeW2DEUtsUc6LqsvIlvOLmtHMyIX6pHRym%2B%2Bj5ZiOzZV8MdYnwA%3D%3D"));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=l(Q);let h=await f(A("data:;base64,Ahn%2Bv8r9pWTLs%2BBkc6gWAmI81dApfo5qs1VuM3H1BjjcuP%2B3C1zurwgMKGzjUBUcg2j3RaMu0JOyGisd6YxMnyvTjSmpujQoQ2RctRsxWmdqiH8fDlwSYtbCyZdkOrk9iWPCJ4apdA7KcO%2FmtTLOJPAbZvNTQ%2BvKK2lyfRIxtOmP%2BH%2Fo36EhPESIugZr%2BP3RAtUurxtqTLe%2FlO2WSkV5K%2B3o%2B%2BH52Pn5hdF3DNjdLq7JXdYBFRtzKExqMbXVS5i4dzxy38faxjRgNpdmzui37Hr5sqQ%2FfJ4Q0UwFY6QwAjskqBVIHIGwcrA8YeytCCwIezmxi1jMxXK5P6VwrsTw7pUVRt1yYjNNh0akkvJOUY1NtdaOFPtZ0foHwEk7ml8GQ7XBayZOU3MjTyBrpvNe8sCuEBG%2BUSnLicz9iqr8kuqYpI6bwocKAoAx1AWrrt2E4iyZzrSekmaBVnh9otYZp3hlkB8LLnXcmXUDVQYow8lAduYdt7RDf67Xo8FKAW8ovECKUfhMRvU12gbKf9AAtp8V9X9UqZWUgstyxQoAKlSeZ3USaTL7iYbLI8weIu7LlDFA58EtYIXUN4tTjP%2BNIvWwvU%2F2%2F58MZanSSaXV1YwQmMA3v57zpn5mQ3lP0sjg%2B%2FvBc0HoxH4%2FXmetsU7Wi03czgihHeVTJveTuSQXNQ8%2BcNnsZIni2aMqMHI565AlhyTFpqaXV7YEw2W8xE%2FcxO27ztDR8GzkuRbxIo05Cygrh4xJkXkoZbF8uiXhAkbo1hwIstheJ1sUOoR%2B%2FTiESI0UF919ncmwPkh8z3jA1CpR73dKREd0g9YrcFNqiT%2FjumfrYn019cQQDIw9N0jU8wkO%2FRdGqzhXhzQhPVfwnrULkXUkc5GARoVe66VS9dUznTlSB1mKgyFi5N5Ga3tLoQrrFs9HnRi4WAsu7z3y01N3iXodfL92cI4MCwszOzNsu%2FSDTIuwm8B05FkhVdzDkCSwtQJZclOhvm7xQi6vR3LiZ1KGLM7rqExXheXQKUdoU%2BTNXmAn5onMY5hp39RU4hS7WoJyJEQOPET6S6GNPfyPxdbc3AwTrH3dkTF%2Fq1CpCRHhj0mfs0o4TI6hOn9dOXi2usVoVfoFUzt3OWBOZv7vUAcFAyO83ITJpklTl26pkQ%2FJAQVVy9z1hWZoaf2%2BGiuj8V1ZJuklujI2kIwsG1JAP08tezH1s%2FmdecbbCWVhCQDsoCcXvUWow1mgB43RugMt6t%2BdGFkcmtbwtCoLZPOjwbcoyD4ufvZ0kCo5jXWH1fZmXbzqNsKv4xeaOhkwGVz7yOpmjJjjgIcg2glwh33sagKq3ybbG21mp%2FU1IbjMsORT5QkE6lphrnCt2frDbt09szFpbgDeYp6JAcdH2b1%2F%2Bfh6No%2F7rbiAiLRj85xVOgz6Riw3d4c2aqHOD5zK%2Bvhp7wK89jPRpApbt3haYcp9AwiQIoFKGrgQnn%2BQZju0Fd9zi21Yp95wOlkKPCflpHljGEEAsIi4Bm7LYYETfroiVri%2BS9gsq8cYUmvtxuAnuuxecVHL4QkL6bFBthO1CzjyjVT6AFyH%2FsLy52J8brnCcqch0Kp6EURcZpg98avOD5Fj2TLbymyWCo%2FeeLjyymeC%2B8umwch61UNJq4tm5e6c2s4hrCgpVHEKtYf5FGmWsw%2BtDBI5%2BkAv02dsm%2B2yU5Fn1llmUES92KJv%2Bkl3PzzlibmCKWfC4babpgmcom1bwsxwVH7YOOduMvluvPFEaclUK8gRoe3As5cmjl6QyHPShAuTZ4KGJPUsk5O8CcAG5P68%2B36J4XWsMWrD3Dg1j1rdi0DqbphHm0Gg7je7ULq4xROLt8Iq8qJSC2RqH4lj8CbgRAA%3D"));for(let A in h.exports)g.env[A]=h.exports[A];let u=await y(Q),m=r(o.data.buffer),C=Date.now(),F=!0;t=()=>F=!1;const b=1e3/60;let d=C;!function A(){if(F)try{let e=Date.now(),t=!1;if(e>=d){let A=navigator.getGamepads(),a=0;for(let e=0;e<4;++e){let B=A[e];if(B){for(let A=0;A<8;++A){let t=(A+12)%16;B.buttons.length>t&&B.buttons[t].pressed&&(a|=1<<8*e+A)}if(B.axes.length>1)for(let A=0;A<4;++A){let t=B.axes[1-(A>>1)];(1&A?t:-t)>.5&&(a|=1<<8*e+A)}B.buttons.length>9&&B.buttons[9].pressed&&(t=!0)}}let B=r(I.buffer);B[16]=e-C,B[17]=i|a,u.exports.upd();let s=r(I.buffer.slice(77824,78848));for(let A=0;A<76800;++A)m[A]=4278190080|s[E[A+120]];n.putImageData(o,0,0),d=Math.max(d+b,e)}t?c(a):window.requestAnimationFrame(A)}catch(A){e(w,A.toString())}}()}catch(A){e(w,A.toString())}}async function w(A){c(await(await fetch(A)).arrayBuffer())}function I(){let A=window.location.hash.slice(1);A.length>0?w("data:;base64,"+A):c(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&&w(URL.createObjectURL(A.files[0]))},A.click()};</script></html>