v0.1pre5 + some virtual fireworks for today

This commit is contained in:
dranke committed 2021-12-31 11:08:31 +01:00
1 parent 6ca63b87e5
commit 32345876b9
4 files changed
+38 -1

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
import "env.time" fn time() -> f32;
import "env.circle" fn circle(f32, f32, f32, i32);
import "env.cls" fn cls(i32);
import "env.randomSeed" fn seed(i32);
import "env.randomf" fn randomf() -> f32;
import "env.sin" fn sin(f32) -> f32;
import "env.cos" fn cos(f32) -> f32;
import "env.fmod" fn fmod(f32, f32) -> f32;
export fn upd() {
cls(0);
let i: i32;
loop pixels {
let inline rocket = i #>> 9;
let lazy local_time = fmod(time() + rocket as f32 / 5 as f32, 2 as f32);
let lazy rocket = rocket + nearest(time() - local_time) as i32 * 10;
seed(rocket);
let inline x = randomf() * 645 as f32;
let y = randomf() * 133 as f32;
let lazy angle = { seed(i); randomf() } * 44 as f32;
let inline dx = sin(angle);
let inline dy = cos(angle);
let lazy dist = local_time * (randomf() * 44 as f32);
circle(
x + dx * dist,
y + dy * dist + local_time * local_time * 24 as f32,
1 as f32, (rocket % 11 + 1) * 16 - (local_time * 7 as f32) as i32 - (i % 4)
);
branch_if (i := i + 1) < 5120: pixels;
}
}
+4
View File
@@ -7,6 +7,7 @@
* [v0.1pre2](v0.1pre2)
* [v0.1pre3](v0.1pre3)
* [v0.1pre4](v0.1pre4)
* [v0.1pre5](v0.1pre5)
## Spec
@@ -41,6 +42,8 @@ Other imports provided by the platform, also all in module `env`:
* `fn hline(left: i32, right: i32, y: i32, color: i32)`
* `fn rectangle(x1: f32, y1: f32, x2: f32, y2: f32, color: i32)`
* `fn circle(cx: f32, cy: f32, radius: f32, color: i32)`
* `fn rectangle_outline(x1: f32, y1: f32, x2: f32, y2: f32, color: i32)`
* `fn circle_outline(cx: f32, cy: f32, radius: f32, color: i32)`
* `fn line(x1: f32, y1: f32, x2: f32, y2: f32, color: i32)`
* `fn time() -> f32`
@@ -116,6 +119,7 @@ Writing code for MicroW8 in C, Rust, AssemblyScript etc. should absolutely
possible but no examples are provided, yet.
## Examples
* [Fireworks](v0.1pre5#AgwvgP+M59snqjl4CMKw5sqm1Zw9yJCbSviMjeLUdHus2a3yl/a99+uiBeqZgP/2jqSjrLjRk73COMM6OSLpsxK8ugT1kuk/q4hQUqqPpGozHoa0laulzGGcahzdfdJsYaK1sIdeIYS9M5PnJx/Wk9H+PvWEPy2Zvv7I6IW7Fg==) (127 bytes): Some fireworks to welcome 2022.
* [Skip Ahead](v0.1pre4#AiP94km33q5hBFbBcKl2W1ZMY67wHByUz15/qRHIr71Dvq8bTVux/DXZzSTKU5MufRXxnGEn6mOul4dil/5WLT1Y+Y/4TGd1E3U4rQaxlpcKObxc5YLdr4xo6jyBND96a569LoECv6Q4EIqxJi+3QPE21r/++js41XsBLr44X/O2XpP3kHQva3B8o6duD5WkLCf7PhsxjTBeND1ADIaJe05JCrBim18RPY9VYFmltqQ9gVzbxE/ZpojR/GJ4aCbx0hRn73RPhpA7Cd4jk0AVSOeRx+7kuHrLzpaeqeYWK5pYd/4Rv+8=) (230 bytes): A port of my [TIC-80 256byte game](http://tic80.com/play?cart=1735) from LoveByte'21
* [OhNoAnotherTunnel](v0.1pre4#Ag95rdCB5Ww5NofyQaKF4P1mrNRso4azgiem4hK99Gh8OMzSpFq3NsNDo7O7pqln10D11l9uXr/ritw7OEzKwbEfCdvaRnS2Z0Kz0iDEZt/gIqOdvFmxsL1MjPQ4XInPbUJpQUonhQq29oP2omFabnQxn0bzoK7mZjcwc5GetHG+hGajkJcRr8oOnjfCol8RD+ha33GYtPnut+GLe4ktzf5UxZwGs6oT9qqC61lRDakN) (177 bytes): A port of my [entry](http://tic80.com/play?cart=1871) in the Outline'21 bytebattle final
* [Technotunnel](v0.1pre4#AqL8HeK1M9dn2nWNIF5vaq/Vh64pMt5nJIFoFKpBMPUsGtDtpqjo1JbT9LzPhAxCqJ7Yh4TA6oTGd4xhLowf+cWZMY73+7AZmfXJJsBi4cej/hH+4wlAgxFIrnOYnr/18IpnZbsHf0eGm1BhahX74+cVR0TRmNQmYC7GhCNS3mv/3MJn74lCj7t28aBJPjEZhP9fGXdG2u5Egh/Tjdg=) (158 bytes): A port of my [entry](https://tic80.com/play?cart=1873) in the Outline'21 bytebattle quater final
+1
View File
@@ -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("<","&lt;")}</span>`),document.getElementById("message").innerHTML=t}let t,a,B=document.getElementById("screen"),n=B.getContext("2d"),s=n.createImageData(320,240),r=A=>new Uint8Array(A),g=A=>new Uint32Array(A),i=0,o=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&&Q(a)}t?i|=e:i&=~e};async function Q(o,I){t&&(t(),t=null);let E=o.byteLength;if(e(E),0==E)return;a=o;let f=window.location.pathname;if(E<=1024&&!I){let A="";for(let e of r(o))A+=String.fromCharCode(e);f+="#"+btoa(A),f!=window.location.pathname+window.location.hash&&history.pushState(null,null,f)}B.width=B.width;try{let B,I=new WebAssembly.Memory({initial:4,maximum:4}),f=r(I.buffer),l={env:{memory:I}},c=A=>{if(0!=r(A)[0]){f.set(r(A));let e=B.exports.load_uw8(A.byteLength);A=new ArrayBuffer(e),r(A).set(f.slice(0,e))}return A},w=async A=>(await WebAssembly.instantiate(A,l)).instance,C=async A=>w(c(await(await fetch(A)).arrayBuffer()));B=await C(A("data:application/wasm;base64,AGFzbQEAAAABFQRgAX8Bf2ACf38Bf2ADf39%2FAGAAAAIPAQNlbnYGbWVtb3J5AgAEAwkIAAABAgEAAAMGEAN%2FAUEAC38BQQALfwFBAAsHGQIIbG9hZF91dzgAAAp1bmNvbXByZXNzAAQIAQcKngUIxwEBB39BAC0AAEEBayIBQQBIBEAgAA8LQYDAByAAaiECIAFBAXEEQEEBQYHABxAEIQIFQYDAB0EAIAAQAwtBAEGAhA9BCBADQYiEDyEDQQghBEGBwAchBQNAIAUgAkggAyMATiAFLQAAIAMtAABMcnEEQCAEIAQgBRACIgZqIQQgAyMASCAFLQAAIAMtAABGcQRAIAMgAxABaiEDCyAFIAZqIQUMAQsgAyMASARAIAQgBCADEAIiB2ohBCADIAdqIQMMAQsLIAQLPAEEfyAAIQEDQCACIAFBAWoiAS0AACIEQf8AcSADdHIhAiADQQdqIQMgBEEHdQ0ACyABQQFqIABrIAJqCxIBAX8gACABIAEQASICEAMgAgskAANAIAJBAEoEQCAAIAJBAWsiAmogASACai0AADoAAAwBCwsLqQEBBn8gACQBQQAkAgNAIANBgAE6AICADyADQQFqIgNBgQNIDQALAkADQEEAEAYiBQRAIAQEf0EBBUGAAhAGCwRAQYECEAVBAWsiAkUNAwtBwQIQBSEGA0AgASABIAJrLQAAOgAAIAFBAWohASAGQQFrIgYNAAsFQQEhBwNAIAdBAXQgBxAGciIHQYACSA0ACyABIAc6AAAgAUEBaiEBCyAFIQQMAAsLIAELNAECfwNAIAAgAmoQBgRAIAEgACACakEgahAGIAJ0ciEBIAJBAWohAgwBCwsgAUEBIAJ0cgtxAQR%2FA0AjAkGAIEgEQCMCQQh0IwEtAAByJAIjAUEBaiQBDAELCyMCQf8BcSICIAAtAICADyIBIwJBCHUiA2xBgAIgAWsgA2wgAWsgAiABSCIEG2okAiAAIAFBByAEQYECbGogAWtBBHVqOgCAgA8gBAsMAEEAQYCEDxAEJAALC9IDAQBBAAvLA6eP%2Fw9olPgPXPcNZ6GH4sK0YVAeGZhY8FzSxDxK%2Fvv32QOMdeZ4QLHNI9NAW9hr%2B1lpXqgkXw%2FZJ2xueSKrTWbsgq9bIaIhjByG5VC2EE%2Bp0mUsRwQzi7oRDC02b4ywHappXJZHhDLuZKhnjylLE4X%2F9%2FZ66bwxYl1h%2BNAL%2BQh0zt3iSqNerI7l0QMOySt%2FPOFO3hXwdaMgxln646dVGVLPhHQbMoREgNzLIYMv4gBUU6Cr%2BR0QYi3tDAXJ4SoSxKCyLsv7cfb5Cl%2BYC5Jus5xElZgiDlIIHBqFDldTRQ5nBJl5es0ZDmEl3WiHmM1UA8QeePxqNrYic7ifdP3EBFW5S6xR2jJ3ck%2BXX1DdwcNjNkIkxbPKNFOeqWZ%2FJ72Bz14fhYzfrX%2FfCvJQ2mBNrPbSIjF%2B6V1RUKuyzvSVyFXaomCpe3Y3V7yP5iFDf7QCB30gL0F9spf8BoPYv9hjE6Q3ZkqKBvEmZicrDv16JtFEfFeGz74RiGn3in3LRJfDC6flml3%2F7XqPZEDOkp7EYlesgbP3QvOHwrGA75RCRmGCkYt5vQiaDM%2F6Ya1SMp%2B0hSKoL1CaVam1YNyC2eUiph32Ag6cicueJ5xp%2Bg%3D%3D"));for(let A of["acos","asin","atan","atan2","cos","exp","log","sin","tan","pow"])l.env[A]=Math[A];for(let A=9;A<64;++A)l.env["reserved"+A]=()=>{};for(let A=0;A<16;++A)l.env["g_reserved"+A]=0;o=c(o);let F=await C(A("data:;base64,AgFf66NqjQm1RVA7%2FWfb4C0%2BTA8LutuPaAHz4fa5oCzbkHhWsZUVePi8p20pjRHxmDqBeUOdUnmHX83Xxgm9rht1GyuBT3N4l%2BgGrbeXBp70xTvMpXc8lgT%2FVKybwLspVjaUPL%2BpZdeFBlaL5aubw7XIK26IrZLLKYfvEi6NGr7whGnp0IVuNcEOqNgM8EAxp5O6ADjHuESbFE6vurZab%2FlfpAspg6l9o4kGHKaKaqfMnBP4a%2Bl0BCDLUb3GO6Pw7x1Lip6pfVMGv7%2BVJtQCHbZ9cmjISnoIGulDmsO1OieU7OJakcZU2rR%2FVWqITAAFdxA2A%2FvpYZyLbzHnyPhQR64Mj%2FzRbxt0pfAnakTQCff31vGt2ZCAOJDwFGhasayLine truncated
+1 -1
View File
@@ -4,7 +4,7 @@
<section>
<h1 class="text-center heading-text">A WebAssembly based sizecoding platform</h1>
</section>
<a href="v0.1pre4">
<a href="v0.1pre5">
<div class="demonstration-gif" style="width:640px;height:512px;background-color:black"></div>
</a>
</div>