mirror of
https://github.com/exoticorn/microw8.git
synced 2026-11-14 07:17:19 +01:00
Deploy exoticorn/microw8 to exoticorn/microw8:gh-pages
This commit is contained in:
commit
d9967475db
11 files changed
+710
No files matched your search
@@ -0,0 +1,3 @@
|
||||
<!doctype html>
|
||||
<title>404 Not Found</title>
|
||||
<h1>404 Not Found</h1>
|
||||
+341
@@ -0,0 +1,341 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title></title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<link rel="icon" type="image/png" href="/favicon.ico">
|
||||
|
||||
<style>
|
||||
:root {
|
||||
/* Primary theme color */
|
||||
--primary-color: #202024;
|
||||
/* Primary theme text color */
|
||||
--primary-text-color: #808070;
|
||||
/* Primary theme link color */
|
||||
--primary-link-color: #8080a0;
|
||||
/* Secondary color: the background body color */
|
||||
--secondary-color: #e0e0e8;
|
||||
--secondary-text-color: #1a1818;
|
||||
/* Highlight text color of table of content */
|
||||
--toc-highlight-text-color: #d46e13;
|
||||
}
|
||||
</style>
|
||||
<link href="https://fonts.googleapis.com/css?family=Alfa+Slab+One&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Fira+Sans:400,500,600&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="/normalize.css">
|
||||
<link rel="stylesheet" href="https://exoticorn.github.io/microw8/juice.css">
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
<header class="pos-absolute" style="background-color: transparent">
|
||||
|
||||
|
||||
<a href="https://exoticorn.github.io/microw8/">
|
||||
<div class="logo">
|
||||
<img src="https://exoticorn.github.io/microw8/microw8.svg" alt="logo">
|
||||
MicroW8
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<nav>
|
||||
|
||||
|
||||
|
||||
<a class="nav-item subtitle-text" href="https://github.com/exoticorn/microw8">Github</a>
|
||||
|
||||
|
||||
</nav>
|
||||
|
||||
</header>
|
||||
|
||||
<div class="hero">
|
||||
|
||||
<div>
|
||||
<section>
|
||||
<h1 class="text-center heading-text">A WebAssembly based sizecoding platform</h1>
|
||||
</section>
|
||||
<a href="v0.1pre4">
|
||||
<div class="demonstration-gif" style="width:640px;height:512px;background-color:black"></div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<main>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="toc">
|
||||
<div class="toc-sticky">
|
||||
|
||||
<div class="toc-item">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#versions">Versions</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="toc-item">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#spec">Spec</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="toc-item-child">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#memory-map"><small>- Memory map</small></a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="toc-item">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#uw8-format">.uw8 format</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="toc-item-child">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#format-version-00"><small>- Format version 00:</small></a>
|
||||
</div>
|
||||
|
||||
<div class="toc-item-child">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#format-version-01"><small>- Format version 01:</small></a>
|
||||
</div>
|
||||
|
||||
<div class="toc-item-child">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#format-version-02"><small>- Format version 02:</small></a>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="toc-item">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#tooling">Tooling</a>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="toc-item">
|
||||
<a class="subtext" href="https://exoticorn.github.io/microw8/#examples">Examples</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="content text">
|
||||
|
||||
<div id="features" class="heading-text">Overview</div>
|
||||
<h2 id="versions">Versions</h2>
|
||||
<ul>
|
||||
<li><a href="https://exoticorn.github.io/microw8/v0.1pre1">v0.1pre1</a></li>
|
||||
<li><a href="https://exoticorn.github.io/microw8/v0.1pre2">v0.1pre2</a></li>
|
||||
<li><a href="https://exoticorn.github.io/microw8/v0.1pre3">v0.1pre3</a></li>
|
||||
<li><a href="https://exoticorn.github.io/microw8/v0.1pre4">v0.1pre4</a></li>
|
||||
</ul>
|
||||
<h2 id="spec">Spec</h2>
|
||||
<p>MicroW8 loads WebAssembly modules with a maximum size of 256kb. You module needs to export
|
||||
a function <code>fn upd()</code> which will be called once per frame.
|
||||
After calling <code>upd</code> MicroW8 will display the 320x240 8bpp framebuffer located
|
||||
at offset 120 in memory with the 32bpp palette located at 0x13000.</p>
|
||||
<p>The memory has to be imported as <code>"env" "memory"</code> and has a maximum size of 256kb (4 pages).</p>
|
||||
<p>Other imports provided by the platform, also all in module <code>env</code>:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p><code>fn acos(f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn asin(f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn atan(f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn atan2(f32, f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn cos(f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn exp(f32, f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn log(f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn sin(f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn tan(f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn pow(f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn fmod(f32, f32) -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn random() -> i32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn randomf() -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn randomSeed(i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn cls(color: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn setPixel(x: i32, y: i32, color: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn getPixel(x: i32, y: i32) -> i32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn hline(left: i32, right: i32, y: i32, color: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn rectangle(x1: f32, y1: f32, x2: f32, y2: f32, color: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn circle(cx: f32, cy: f32, radius: f32, color: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn line(x1: f32, y1: f32, x2: f32, y2: f32, color: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn time() -> f32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn isButtonPressed(btn: i32) -> i32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn isButtonTriggered(btn: i32) -> i32</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn printChar(char: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn printString(ptr: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn printInt(num: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn setTextColor(color: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn setBackgroundColor(color: i32)</code></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><code>fn setCursorPosition(x: i32, y: i32)</code></p>
|
||||
</li>
|
||||
</ul>
|
||||
<h3 id="memory-map">Memory map</h3>
|
||||
<pre style="background-color:#ffffff;color:#202020;"><code><span>00000-00040: user memory
|
||||
</span><span>00040-00044: time since module start in ms
|
||||
</span><span>00044-0004c: gamepad state
|
||||
</span><span>0004c-00078: reserved
|
||||
</span><span>00078-12c78: frame buffer
|
||||
</span><span>12c78-13000: reserved
|
||||
</span><span>13000-13400: palette
|
||||
</span><span>13400-13c00: font
|
||||
</span><span>13c00-14000: reserved
|
||||
</span><span>14000-40000: user memory
|
||||
</span></code></pre>
|
||||
<h2 id="uw8-format"><code>.uw8</code> format</h2>
|
||||
<p>The first byte of the file specifies the format version:</p>
|
||||
<h4 id="format-version-00">Format version <code>00</code>:</h4>
|
||||
<p>This file is simply a standard WebAssembly module</p>
|
||||
<h4 id="format-version-01">Format version <code>01</code>:</h4>
|
||||
<p>The rest of this file is the same as a WebAssembly
|
||||
module with the 8 byte header removed. This module
|
||||
can leave out sections which are then taken from
|
||||
a base module provided by MicroW8.</p>
|
||||
<p>You can generate this base module yourself using
|
||||
<code>uw8-tool</code>. As a quick summary, it provides all function
|
||||
types with up to 5 parameters (i32 or f32) where the
|
||||
<code>f32</code> parameters always preceed the <code>i32</code> parameters.
|
||||
Then it includes all imports that MicroW8 provides,
|
||||
a function section with a single function of type
|
||||
<code>() -> void</code> and an export section that exports
|
||||
the first function in the file under the name <code>upd</code>.</p>
|
||||
<h4 id="format-version-02">Format version <code>02</code>:</h4>
|
||||
<p>Same as version <code>01</code> except everything after the first byte is compressed
|
||||
using a <a href="https://github.com/exoticorn/upkr">custom LZ compression scheme</a>.</p>
|
||||
<h2 id="tooling">Tooling</h2>
|
||||
<p>The <a href="https://github.com/WebAssembly/wabt">Web Assembly Binary Toolkit</a> includes
|
||||
a few useful tools, eg. <code>wat2wasm</code> to compile the WebAssemby text format to binary
|
||||
wasm and <code>wasm2wat</code> to disassemble wasm binaries.</p>
|
||||
<p>If you don't like the look of the <code>.wat</code> text format, you might want to take a
|
||||
look at <a href="https://github.com/exoticorn/curlywas">CurlyWas</a>, a curly-braces infix
|
||||
syntax for WebAssembly.</p>
|
||||
<p>Once you have a size-efficient <code>.wasm</code> file, you can use <a href="https://github.com/exoticorn/microw8/tree/master/uw8-tool">uw8-tool</a>
|
||||
(currently included in the MicroW8 repository) to strip off sections of the
|
||||
WebAssembly module that are provided by the MicroW8 platform.</p>
|
||||
<p>Writing code for MicroW8 in C, Rust, AssemblyScript etc. should absolutely
|
||||
possible but no examples are provided, yet.</p>
|
||||
<h2 id="examples">Examples</h2>
|
||||
<ul>
|
||||
<li><a href="v0.1pre4#AiP94km33q5hBFbBcKl2W1ZMY67wHByUz15/qRHIr71Dvq8bTVux/DXZzSTKU5MufRXxnGEn6mOul4dil/5WLT1Y+Y/4TGd1E3U4rQaxlpcKObxc5YLdr4xo6jyBND96a569LoECv6Q4EIqxJi+3QPE21r/++js41XsBLr44X/O2XpP3kHQva3B8o6duD5WkLCf7PhsxjTBeND1ADIaJe05JCrBim18RPY9VYFmltqQ9gVzbxE/ZpojR/GJ4aCbx0hRn73RPhpA7Cd4jk0AVSOeRx+7kuHrLzpaeqeYWK5pYd/4Rv+8=">Skip Ahead</a> (230 bytes): A port of my <a href="http://tic80.com/play?cart=1735">TIC-80 256byte game</a> from LoveByte'21</li>
|
||||
<li><a href="v0.1pre4#Ag95rdCB5Ww5NofyQaKF4P1mrNRso4azgiem4hK99Gh8OMzSpFq3NsNDo7O7pqln10D11l9uXr/ritw7OEzKwbEfCdvaRnS2Z0Kz0iDEZt/gIqOdvFmxsL1MjPQ4XInPbUJpQUonhQq29oP2omFabnQxn0bzoK7mZjcwc5GetHG+hGajkJcRr8oOnjfCol8RD+ha33GYtPnut+GLe4ktzf5UxZwGs6oT9qqC61lRDakN">OhNoAnotherTunnel</a> (177 bytes): A port of my <a href="http://tic80.com/play?cart=1871">entry</a> in the Outline'21 bytebattle final</li>
|
||||
<li><a href="v0.1pre4#AqL8HeK1M9dn2nWNIF5vaq/Vh64pMt5nJIFoFKpBMPUsGtDtpqjo1JbT9LzPhAxCqJ7Yh4TA6oTGd4xhLowf+cWZMY73+7AZmfXJJsBi4cej/hH+4wlAgxFIrnOYnr/18IpnZbsHf0eGm1BhahX74+cVR0TRmNQmYC7GhCNS3mv/3MJn74lCj7t28aBJPjEZhP9fGXdG2u5Egh/Tjdg=">Technotunnel</a> (158 bytes): A port of my <a href="https://tic80.com/play?cart=1873">entry</a> in the Outline'21 bytebattle quater final</li>
|
||||
<li><a href="v0.1pre4#AgKaeeOuwg5gCKvFIeiitEwMpUI2rymEcu+DDB1vMu9uBoufvUxIr4Y5p4Jj2ukoNO4PE7QS5cN1ZyDMCRfSzYIGZxKlN2J6NKEWK7KVPk9wVUgn1Ip+hsMinWgEO8ETKfPuHoIa4kjI+ULFOMad7vd3rt/lh1Vy9w+R2MXG/7T61d3c7C6KY+eQNS0eW3ys4iU8R6SycuWZuuZ2Sg3Qxp826s+Kt+2qBojpzNOSoyFqyrVyYMTKEkSl0BZOj59Cs1hPm5bq0F1MmVhGAzMhW9V4YeAe">Font & Palette</a>: Just a simple viewer for the default font and palette.</li>
|
||||
<li><a href="v0.1pre2#AQrDAQHAAQIBfwp9A0AgAUEAsiABQcACb7JDmhkgQ5MiBCAEIASUIAFBwAJtQfgAa7IiBSAFlJKRIgaVIgcgByAAskHQD7KVIgIQAEPNzEw/lCIDlCAHIAeUIAOUIAOUQQGykiADIAOUk5GSIgiUIAOTQQqylCACkiIJqCAFIAaVIAiUQQqylCACkiIKqHMgCEEyspQgBpUiCyACkkEUspSocUEFcbJBArIgC5OUQRaylJeoOgB4IAFBAWoiAUGA2ARIDQALCw==">Technotunnel B/W</a> (199 bytes uncompressed): A port of my <a href="https://tic80.com/play?cart=1873">entry</a> in the Outline'21 bytebattle quater final (older MicroW8 version with monochrome palette)</li>
|
||||
<li><a href="https://exoticorn.github.io/microw8/v0.1pre2#AQovAS0BAX8DQCABIAFBwAJvIABBCm1qIAFBwAJtczoAeCABQQFqIgFBgNgESA0ACws=">XorScroll</a> (50 bytes uncompressed): A simple scrolling XOR pattern. Fun fact: This is the pre-loaded effect when entering a bytebattle.</li>
|
||||
<li><a href="https://exoticorn.github.io/microw8/v0.1pre2#AQp7AXkCAX8CfUEgEA0DQCABskEEspUiAkECspUgALJBiCeylSIDQQWylJIQAEEBspJBoAGylCACQQOylSADQQSylJIQAEEBspJB+ACylCADQRGylCACQQKylJIQAEECspJBELKUIAFBAmxBP2oQEiABQQFqIgFBP0gNAAsL">CircleWorm</a> (126 bytes uncompressed): Just a test for the circle fill function.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</main>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script>
|
||||
function highlightNav(heading) {
|
||||
let pathname = location.pathname;
|
||||
document.querySelectorAll(".toc a").forEach((item) => {
|
||||
item.classList.remove("active");
|
||||
});
|
||||
document.querySelector(".toc a[href$='" + pathname + "#" + heading + "']").classList.add("active");
|
||||
}
|
||||
|
||||
let currentHeading = "";
|
||||
window.onscroll = function () {
|
||||
let h = document.querySelectorAll("h1,h2,h3,h4,h5,h6");
|
||||
let elementArr = [];
|
||||
|
||||
h.forEach(item => {
|
||||
if (item.id !== "") {
|
||||
elementArr[item.id] = item.getBoundingClientRect().top;
|
||||
}
|
||||
});
|
||||
elementArr.sort();
|
||||
for (let key in elementArr) {
|
||||
if (!elementArr.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
if (elementArr[key] > 0 && elementArr[key] < 300) {
|
||||
if (currentHeading !== key) {
|
||||
highlightNav(key);
|
||||
currentHeading = key;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
.text-center{text-align:center}.pos-absolute{right:0;left:0;position:absolute}.box-shadow{box-shadow:0 2px 10px 2px #ddd}.heading-text{font-family:"Fira Sans", sans-serif;font-size:32px;font-weight:600;padding:10px 0 25px 0;color:var(--primary-text-color)}h1,.title-text{font-family:"Fira Sans", sans-serif;font-size:25px;font-weight:500;color:var(--primary-text-color);border-left:var(--primary-color) 8px solid;padding-left:10px}h2,.subtitle-text{font-family:"Fira Sans", sans-serif;font-size:20px;font-weight:500;color:var(--primary-text-color)}.text{font-family:"Fira Sans", sans-serif;font-size:18px;font-weight:400;line-height:26px;letter-spacing:0.2px;color:var(--primary-text-color)}.subtext{font-family:"Fira Sans", sans-serif;font-size:16px;font-weight:400;letter-spacing:0.1px}.content{padding:0 40px;display:flex;flex-direction:column;overflow-x:auto}.content pre{overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal;background-color:white;color:#4a4a4a;font-size:.875em;font-family:monospace}.content code{background-color:white;color:#4a4a4a;font-size:.875em;font-weight:normal;padding:0.25em 0.5em;font-family:monospace}.content pre code{padding:0}.content a{color:var(--primary-link-color)}.content a:hover{text-decoration:underline}.content blockquote{border-left:#e2dede 8px solid;margin:0;background-color:#f2f1f0;padding:0 20px}body{padding:0;margin:0;box-sizing:border-box;background-color:var(--secondary-color);display:flex;flex-direction:column;min-height:100vh}a{text-decoration:none}ul{margin-top:0.5rem}ul>li{padding:0.3rem 0}p>img{width:100%;height:auto}header{background-color:var(--primary-color);color:black;padding:20px 50px;display:flex;align-items:center;justify-content:space-between}.logo{font-family:"Alfa Slab One", serif;font-size:32px;color:var(--primary-text-color);display:flex;align-items:center;margin:0 40px}.logo img{width:60px;margin:0 25px}.nav-item{margin:0 10px;text-decoration:none;font-size:18px;font-weight:bold}.nav-item:hover{color:#000;text-decoration:underline}.hero{display:flex;align-items:center;justify-content:space-evenly;height:100vh;background-color:var(--primary-color);overflow-x:hidden;padding:0 40px}.hero .explore-more{position:absolute;bottom:20px;cursor:pointer}main{display:flex;padding:50px 100px;flex-grow:1}main .toc{max-width:260px;min-width:240px}main .toc-item{padding:10px 20px;color:#424242}main .toc-item a,main .toc-item-child a{color:var(--secondary-text-color)}main .toc-item a:hover,main .toc-item-child a:hover{cursor:pointer;text-decoration:underline}main .toc-item a.active,main .toc-item-child a.active{color:var(--toc-highlight-text-color)}main .toc-item-child{padding:0 30px 5px;color:#424242}.toc-sticky{border-radius:3px;border-top:5px solid var(--primary-color);background-color:white;position:sticky;position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;top:10px;padding:10px 0 20px;max-height:100vh;overflow:auto}footer{padding:50px;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#202020;color:#fcfcfc}footer a{color:#fcfcfc;text-decoration:underline}@media screen and (min-width: 1280px){.content{max-width:60%;min-width:800px}}@media screen and (max-width: 768px){header{padding:10px 30px;flex-direction:column;align-items:center;justify-content:center}.logo{font-size:28px;margin:10px}.logo img{width:45px;margin:0 10px 0 0}.nav-item{margin:0 5px;font-size:14px}.hero{padding:40px 30px}main{padding:30px}.content{padding:0}.explore-more,.toc{display:none}}
|
||||
Vendored
+349
@@ -0,0 +1,349 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/* Document
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Correct the line height in all browsers.
|
||||
* 2. Prevent adjustments of font size after orientation changes in iOS.
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.15; /* 1 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/* Sections
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the margin in all browsers.
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the `main` element consistently in IE.
|
||||
*/
|
||||
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the font size and margin on `h1` elements within `section` and
|
||||
* `article` contexts in Chrome, Firefox, and Safari.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in Firefox.
|
||||
* 2. Show the overflow in Edge and IE.
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box; /* 1 */
|
||||
height: 0; /* 1 */
|
||||
overflow: visible; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the gray background on active links in IE 10.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Remove the bottom border in Chrome 57-
|
||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none; /* 1 */
|
||||
text-decoration: underline; /* 2 */
|
||||
text-decoration: underline dotted; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font weight in Chrome, Edge, and Safari.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` elements from affecting the line height in
|
||||
* all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the border on images inside links in IE 10.
|
||||
*/
|
||||
|
||||
img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Change the font styles in all browsers.
|
||||
* 2. Remove the margin in Firefox and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit; /* 1 */
|
||||
font-size: 100%; /* 1 */
|
||||
line-height: 1.15; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the overflow in IE.
|
||||
* 1. Show the overflow in Edge.
|
||||
*/
|
||||
|
||||
button,
|
||||
input { /* 1 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||
* 1. Remove the inheritance of text transform in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select { /* 1 */
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the inability to style clickable types in iOS and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
[type="button"],
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner border and padding in Firefox.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the focus styles unset by the previous rule.
|
||||
*/
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the padding in Firefox.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the text wrapping in Edge and IE.
|
||||
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||
* 3. Remove the padding so developers are not caught out when they zero out
|
||||
* `fieldset` elements in all browsers.
|
||||
*/
|
||||
|
||||
legend {
|
||||
box-sizing: border-box; /* 1 */
|
||||
color: inherit; /* 2 */
|
||||
display: table; /* 1 */
|
||||
max-width: 100%; /* 1 */
|
||||
padding: 0; /* 3 */
|
||||
white-space: normal; /* 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the default vertical scrollbar in IE 10+.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in IE 10.
|
||||
* 2. Remove the padding in IE 10.
|
||||
*/
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||
*/
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the odd appearance in Chrome and Safari.
|
||||
* 2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
outline-offset: -2px; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner padding in Chrome and Safari on macOS.
|
||||
*/
|
||||
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||
* 2. Change font properties to `inherit` in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
}
|
||||
|
||||
/* Interactive
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Add the correct display in Edge, IE 10+, and Firefox.
|
||||
*/
|
||||
|
||||
details {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the correct display in all browsers.
|
||||
*/
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
/* Misc
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10+.
|
||||
*/
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
Sitemap: https://exoticorn.github.io/microw8/sitemap.xml
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://exoticorn.github.io/microw8/</loc>
|
||||
</url>
|
||||
</urlset>
|
||||
@@ -0,0 +1,3 @@
|
||||
#ýâI·Þ®aVÁp©v[VLc®ð”Ï^©È¯½C¾¯M[±ü5ÙÍ$ÊS“.}ñœa'êc®—‡b—þV-=Xù�øLguu8±–—
|
||||
9¼\å‚ݯŒhê<�4?zkž½.�¿¤8б&/·@ñ6Ö¿þú;8Õ{.¾8_ó¶^“÷�t/kp|£§n•¤,'û>1�0^4=@†‰{NI
|
||||
°b›_=�U`Y¥¶¤=�\ÛÄOÙ¦ˆÑübxh&ñÒgïtO†�; Þ#“@Hç‘Çîä¸zËΖž©æ+šXwþ¿ï
|
||||
@@ -0,0 +1 @@
|
||||
<!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}canvas{background-color:#202428;border:4px solid #303040;box-shadow:5px 5px 20px #000}#message,canvas{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}</style></head><body> <div id="centered"> <canvas id="screen" width="640" height="512"></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 n(A,n){let e=A?`${A} bytes`:"Insert cart";n&&(e+=` - <span class="error">${n.replaceAll("<","<")}</span>`),document.getElementById("message").innerHTML=e}let e=document.createElement("canvas");e.width=320,e.height=256;let t,l=e.getContext("2d"),f=l.createImageData(320,256),a=document.getElementById("screen"),c=a.getContext("2d");async function Z(Z){t&&(t(),t=null);let g=Z.byteLength;if(n(g),0==g)return;let X=new Uint8Array(Z),y=window.location.pathname;if(g<=1024){let A="";for(let n of X)A+=String.fromCharCode(n);y+="#"+btoa(A)}y!=window.location.pathname+window.location.hash&&history.pushState(null,null,y),a.width=a.width;try{let a={env:{memory:new WebAssembly.Memory({initial:8})}},y=a.env.memory.buffer,i=await async function(A,n){let e=await(await fetch(A)).arrayBuffer(),t=await WebAssembly.compile(e);return new WebAssembly.Instance(t,n)}(A("data:application/wasm;base64,AGFzbQEAAAABGgRgBH9%2Ff38Bf2ABfwF%2FYAJ%2FfwF%2FYAN%2Ff38AAg8BA2VudgZtZW1vcnkCAAgDBQQAAQIDBwwBCGxvYWRfdXc4AAAKtAIErwEBBX8gAC0AAEEARgRAIAMgACABIABrIgQQAyADIARqDwsgAyACQQgQAyACQQhqIQIgA0EIaiEFIABBAWohBgNAIAYgAUggAiADTiAGLQAAIAItAABMcnEEQCAFIAUgBhACIgdqIQUgAiADSCAGLQAAIAItAABGcQRAIAIgAhABaiECCyAGIAdqIQYMAQsgAiADSARAIAUgBSACEAIiCGohBSACIAhqIQIMAQsLIAULRwEEfyAAQQFqIQFBACECQQAhAwNAIAIgAS0AACIEQf8AcSADdHIhAiADQQdqIQMgAUEBaiEBIARBgAFxDQALIAEgAGsgAmoLEgEBfyAAIAEgARABIgIQAyACCyYAIAJBAEoEQANAIAAgAkEBayICaiABIAJqLQAAOgAAIAINAAsLCw%3D%3D"),a),m=await(await fetch(A("data:application/wasm;base64,AGFzbQEAAAABugM%2FYAAAYAABf2AAAX1gAX8AYAF%2FAX9gAX8BfWABfQBgAX0Bf2ABfQF9YAJ%2FfwBgAn9%2FAX9gAn9%2FAX1gAn1%2FAGACfX8Bf2ACfX8BfWACfX0AYAJ9fQF%2FYAJ9fQF9YAN%2Ff38AYAN%2Ff38Bf2ADf39%2FAX1gA31%2FfwBgA31%2FfwF%2FYAN9f38BfWADfX1%2FAGADfX1%2FAX9gA319fwF9YAN9fX0AYAN9fX0Bf2ADfX19AX1gBH9%2Ff38AYAR%2Ff39%2FAX9gBH9%2Ff38BfWAEfX9%2FfwBgBH1%2Ff38Bf2AEfX9%2FfwF9YAR9fX9%2FAGAEfX1%2FfwF%2FYAR9fX9%2FAX1gBH19fX8AYAR9fX1%2FAX9gBH19fX8BfWAEfX19fQBgBH19fX0Bf2AEfX19fQF9YAV%2Ff39%2FfwBgBX9%2Ff39%2FAX9gBX9%2Ff39%2FAX1gBX1%2Ff39%2FAGAFfX9%2Ff38Bf2AFfX9%2Ff38BfWAFfX1%2Ff38AYAV9fX9%2FfwF%2FYAV9fX9%2FfwF9YAV9fX1%2FfwBgBX19fX9%2FAX9gBX19fX9%2FAX1gBX19fX1%2FAGAFfX19fX8Bf2AFfX19fX8BfWAFfX19fX0AYAV9fX19fQF%2FYAV9fX19fQF9ApQIQQNlbnYDc2luAAgDZW52A2NvcwAIA2VudgN0YW4ACANlbnYEYXNpbgAIA2VudgRhY29zAAgDZW52BGF0YW4ACANlbnYFYXRhbjIAEQNlbnYDcG93ABEDZW52A2xvZwAIA2VudglyZXNlcnZlZDkAAANlbnYKcmVzZXJ2ZWQxMAAAA2VudgpyZXNlcnZlZDExAAADZW52CnJlc2VydmVkMTIAAANlbnYKcmVzZXJ2ZWQxMwAAA2VudgpyZXNlcnZlZDE0AAADZW52CnJlc2VydmVkMTUAAANlbnYKcmVzZXJ2ZWQxNgAAA2VudgpyZXNlcnZlZDE3AAADZW52CnJlc2VydmVkMTgAAANlbnYKcmVzZXJ2ZWQxOQAAA2VudgpyZXNlcnZlZDIwAAADZW52CnJlc2VydmVkMjEAAANlbnYKcmVzZXJ2ZWQyMgAAA2VudgpyZXNlcnZlZDIzAAADZW52CnJlc2VydmVkMjQAAANlbnYKcmVzZXJ2ZWQyNQAAA2VudgpyZXNlcnZlZDI2AAADZW52CnJlc2VydmVkMjcAAANlbnYKcmVzZXJ2ZWQyOAAAA2VudgpyZXNlcnZlZDI5AAADZW52CnJlc2VydmVkMzAAAANlbnYKcmVzZXJ2ZWQzMQAAA2VudgpyZXNlcnZlZDMyAAADZW52CnJlc2VydmVkMzMAAANlbnYKcmVzZXJ2ZWQzNAAAA2VudgpyZXNlcnZlZDM1AAADZW52CnJlc2VydmVkMzYAAANlbnYKcmVzZXJ2ZWQzNwAAA2VudgpyZXNlcnZlZDM4AAADZW52CnJlc2VydmVkMzkAAANlbnYKcmVzZXJ2ZWQ0MAAAA2VudgpyZXNlcnZlZDQxAAADZW52CnJlc2VydmVkNDIAAANlbnYKcmVzZXJ2ZWQ0MwAAA2VudgpyZXNlcnZlZDQ0AAADZW52CnJlc2VydmVkNDUAAANlbnYKcmVzZXJ2ZWQ0NgAAA2VudgpyZXNlcnZlZDQ3AAADZW52CnJlc2VydmVkNDgAAANlbnYKcmVzZXJ2ZWQ0OQAAA2VudgpyZXNlcnZlZDUwAAADZW52CnJlc2VydmVkNTEAAANlbnYKcmVzZXJ2ZWQ1MgAAA2VudgpyZXNlcnZlZDUzAAADZW52CnJlc2VydmVkNTQAAANlbnYKcmVzZXJ2ZWQ1NQAAA2VudgpyZXNlcnZlZDU2AAADZW52CnJlc2VydmVkNTcAAANlbnYKcmVzZXJ2ZWQ1OAAAA2VudgpyZXNlcnZlZDU5AAADZW52CnJlc2VydmVkNjAAAANlbnYKcmVzZXJ2ZWQ2MQAAA2VudgpyZXNlcnZlZDYyAAADZW52CnJlc2VydmVkNjMAAANlbnYGbWVtb3J5AgAEAwIBAwcHAQN0aWMAQAoEAQIACw%3D%3D"))).arrayBuffer();if(0!=X[0]){new Uint8Array(y).set(X),new Uint8Array(y).set(new Uint8Array(m),Z.byteLength);let A=Z.byteLength+m.byteLength,n=i.exports.load_uw8(0,Z.byteLength,Z.byteLength,A);Z=new ArrayBuffer(n-A),neLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
<!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}canvas{background-color:#202428;border:4px solid #303040;box-shadow:5px 5px 20px #000}#message,canvas{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}</style></head><body> <div id="centered"> <canvas id="screen" width="640" height="480"></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}async function n(A,n){let e=await(await fetch(A)).arrayBuffer(),g=await WebAssembly.compile(e);return new WebAssembly.Instance(g,n)}function e(A,n){let e=A?`${A} bytes`:"Insert cart";n&&(e+=` - <span class="error">${n.replaceAll("<","<")}</span>`),document.getElementById("message").innerHTML=e}let g=document.createElement("canvas");g.width=320,g.height=240;let l,f=g.getContext("2d"),t=f.createImageData(320,240),B=document.getElementById("screen"),Z=B.getContext("2d");async function Q(Q){l&&(l(),l=null);let a=Q.byteLength;if(e(a),0==a)return;let c=new Uint8Array(Q),X=window.location.pathname;if(a<=1024){let A="";for(let n of c)A+=String.fromCharCode(n);X+="#"+btoa(A)}X!=window.location.pathname+window.location.hash&&history.pushState(null,null,X),B.width=B.width;try{let B={env:{memory:new WebAssembly.Memory({initial:9})}},X=B.env.memory.buffer,C=await n(A("data:application/wasm;base64,AGFzbQEAAAABGgRgBH9%2Ff38Bf2ABfwF%2FYAJ%2FfwF%2FYAN%2Ff38AAg8BA2VudgZtZW1vcnkCAAgDBQQAAQIDBwwBCGxvYWRfdXc4AAAKtAIErwEBBX8gAC0AAEEARgRAIAMgACABIABrIgQQAyADIARqDwsgAyACQQgQAyACQQhqIQIgA0EIaiEFIABBAWohBgNAIAYgAUggAiADTiAGLQAAIAItAABMcnEEQCAFIAUgBhACIgdqIQUgAiADSCAGLQAAIAItAABGcQRAIAIgAhABaiECCyAGIAdqIQYMAQsgAiADSARAIAUgBSACEAIiCGohBSACIAhqIQIMAQsLIAULRwEEfyAAQQFqIQFBACECQQAhAwNAIAIgAS0AACIEQf8AcSADdHIhAiADQQdqIQMgAUEBaiEBIARBgAFxDQALIAEgAGsgAmoLEgEBfyAAIAEgARABIgIQAyACCyYAIAJBAEoEQANAIAAgAkEBayICaiABIAJqLQAAOgAAIAINAAsLCw%3D%3D"),B),F=await(await fetch(A("data:application/wasm;base64,AGFzbQEAAAABugM%2FYAAAYAABf2AAAX1gAX8AYAF%2FAX9gAX8BfWABfQBgAX0Bf2ABfQF9YAJ%2FfwBgAn9%2FAX9gAn9%2FAX1gAn1%2FAGACfX8Bf2ACfX8BfWACfX0AYAJ9fQF%2FYAJ9fQF9YAN%2Ff38AYAN%2Ff38Bf2ADf39%2FAX1gA31%2FfwBgA31%2FfwF%2FYAN9f38BfWADfX1%2FAGADfX1%2FAX9gA319fwF9YAN9fX0AYAN9fX0Bf2ADfX19AX1gBH9%2Ff38AYAR%2Ff39%2FAX9gBH9%2Ff38BfWAEfX9%2FfwBgBH1%2Ff38Bf2AEfX9%2FfwF9YAR9fX9%2FAGAEfX1%2FfwF%2FYAR9fX9%2FAX1gBH19fX8AYAR9fX1%2FAX9gBH19fX8BfWAEfX19fQBgBH19fX0Bf2AEfX19fQF9YAV%2Ff39%2FfwBgBX9%2Ff39%2FAX9gBX9%2Ff39%2FAX1gBX1%2Ff39%2FAGAFfX9%2Ff38Bf2AFfX9%2Ff38BfWAFfX1%2Ff38AYAV9fX9%2FfwF%2FYAV9fX9%2FfwF9YAV9fX1%2FfwBgBX19fX9%2FAX9gBX19fX9%2FAX1gBX19fX1%2FAGAFfX19fX8Bf2AFfX19fX8BfWAFfX19fX0AYAV9fX19fQF%2FYAV9fX19fQF9AqkKUQNlbnYDc2luAAgDZW52A2NvcwAIA2VudgN0YW4ACANlbnYEYXNpbgAIA2VudgRhY29zAAgDZW52BGF0YW4ACANlbnYFYXRhbjIAEQNlbnYDcG93ABEDZW52A2xvZwAIA2VudgRmbW9kABEDZW52BnJhbmRvbQABA2VudgdyYW5kb21mAAIDZW52CnJhbmRvbVNlZWQAAwNlbnYDY2xzAAMDZW52CHNldFBpeGVsABIDZW52CGdldFBpeGVsAAoDZW52BWhsaW5lAB4DZW52CXJlY3RhbmdsZQA5A2VudgZjaXJjbGUAJwNlbnYKcmVzZXJ2ZWQxOQAAA2VudgpyZXNlcnZlZDIwAAADZW52CnJlc2VydmVkMjEAAANlbnYKcmVzZXJ2ZWQyMgAAA2VudgpyZXNlcnZlZDIzAAADZW52CnJlc2VydmVkMjQAAANlbnYKcmVzZXJ2ZWQyNQAAA2VudgpyZXNlcnZlZDI2AAADZW52CnJlc2VydmVkMjcAAANlbnYKcmVzZXJ2ZWQyOAAAA2VudgpyZXNlcnZlZDI5AAADZW52CnJlc2VydmVkMzAAAANlbnYKcmVzZXJ2ZWQzMQAAA2VudgpyZXNlcnZlZDMyAAADZW52CnJlc2VydmVkMzMAAANlbnYKcmVzZXJ2ZWQzNAAAA2VudgpyZXNlcnZlZDM1AAADZW52CnJlc2VydmVkMzYAAANlbnYKcmVzZXJ2ZWQzNwAAA2VudgpyZXNlcnZlZDM4AAADZW52CnJlc2VydmVkMzkAAANlbnYKcmVzZXJ2ZWQ0MAAAA2VudgpyZXNlcnZlZDQxAAADZW52CnJlc2VydmVkNDIAAANlbnYKcmVzZXJ2ZWQ0MwAAA2VudgpyZXNlcnZlZDQ0AAADZW52CnJlc2VydmVkNDUAAANlbnYKcmVzZXJ2ZWQ0NgAAA2VudgpyZXNlcnZlZDQ3AAADZW52CnJlc2VydmVkNDgAAANlbnYKcmVzZXJ2ZWQ0OQAAA2VudgpyZXNlcnZlZDUwAAADZW52CnJlc2VydmVkNTEAAANlbnYKcmVzZXJ2ZWQ1MgAAA2VudgpyZXNlcnZlZDUzAAADZW52CnJlc2VydmVkNTQAAANlbnYKcmVzZXJ2ZWQ1NQAAA2VudgpyZXNlcnZlZDU2AAADZW52CnJlc2VydmVkNTcAAANlbnYKcmVzZXJ2ZWQ1OAAAA2VudgpyZXNlcnZlZDU5AAADZW52CnJlc2VydmVkNjAAAANlbnYKcmVzZXJ2ZWQ2MQAAA2VudgpyZXNlcnZlZDYyAAADZW52CnJlc2VydmVkNjMAAANlbnYLZ19yZXNlcnZlZDADfwADZW52C2dfcmVzZXJ2ZWQxA38AA2VudgtnX3Jlc2VydmVkMgN%2FAANlbnYLZ19yZXNlcnZlZDMDfwADZW52C2dfcmVzZXJ2ZWQ0A38AA2VudgtnX3Jlc2VydmVkNQN%2FAANlbnYLZ19yZXNlcnZlZDYDfwADZW52C2dfcmVzZXJ2ZWQ3A38AA2VudgtnX3Jlc2VydmVkOAN%2FAANlbnYLZ19yZXNlcnZlZDkDfwADZW52DGdfcmVzZXJ2ZWQxMAN%2FAANlbnYMZ19yZXNlcnZlZDExLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
<!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("<","<")}</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%2FfJ4Q0UwFY6QwAjskqBVIHIGwcrA8YeytCCwIezmxi1jMxXK5P6VwrsTw7pUVRt1yYjNNh0akkvJOUY1NtdaOFPtZ0foHwEk7ml8GQ7Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
<!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("<","<")}</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%2Bl3ewl9ANsRrU93nh4V3MSD6j60rEsza8Line truncated
|
||||
Reference in new issue
Block a user