mirror of
https://github.com/exoticorn/microw8.git
synced 2026-01-20 11:16:42 +01:00
Added some more documentation.
This commit is contained in:
@@ -1,3 +0,0 @@
|
|||||||
import "env.memory" memory(2);
|
|
||||||
|
|
||||||
export fn tic(time: i32) {}
|
|
||||||
@@ -1,7 +1,4 @@
|
|||||||
all: loader.wasm base.wasm
|
all: loader.wasm
|
||||||
|
|
||||||
loader.wasm: loader.cwa
|
loader.wasm: loader.cwa
|
||||||
curlywas loader.cwa
|
curlywas loader.cwa
|
||||||
|
|
||||||
base.wasm: base.cwa
|
|
||||||
curlywas base.cwa
|
|
||||||
|
|||||||
@@ -5,6 +5,70 @@
|
|||||||
|
|
||||||
* [v0.1pre1](v0.1pre1)
|
* [v0.1pre1](v0.1pre1)
|
||||||
|
|
||||||
|
## Spec
|
||||||
|
|
||||||
|
MicroW8 loads WebAssembly modules with a maximum size of 256kb. You module needs to export
|
||||||
|
a function `fn tic(time: i32)` which will be called once per frame.
|
||||||
|
After calling `tic` MicroW8 will display the 320x256 8bpp framebuffer located
|
||||||
|
at offset 120 in memory.
|
||||||
|
|
||||||
|
The memory has to be imported as `"env" "memory"` and has a maximum size of 256kb (4 pages).
|
||||||
|
|
||||||
|
Other imports provided by the platform:
|
||||||
|
|
||||||
|
* in module `math`:
|
||||||
|
* * `fn acos(f32) -> f32`
|
||||||
|
* * `fn asin(f32) -> f32`
|
||||||
|
* * `fn atan(f32) -> f32`
|
||||||
|
* * `fn atan2(f32, f32) -> f32`
|
||||||
|
* * `fn cos(f32) -> f32`
|
||||||
|
* * `fn exp(f32, f32) -> f32`
|
||||||
|
* * `fn log(f32) -> f32`
|
||||||
|
* * `fn sin(f32) -> f32`
|
||||||
|
* * `fn tan(f32) -> f32`
|
||||||
|
* * `fn pow(f32) -> f32`
|
||||||
|
|
||||||
|
## `.uw8` format
|
||||||
|
|
||||||
|
The first byte of the file specifies the format version:
|
||||||
|
|
||||||
|
#### Format version `00`:
|
||||||
|
|
||||||
|
This file is simply a standard WebAssembly module
|
||||||
|
|
||||||
|
#### Format version `01`:
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
You can generate this base module yourself using
|
||||||
|
`uw8-tool`. As a quick summary, it provides all function
|
||||||
|
types with up to 5 parameters (i32 or f32) where the
|
||||||
|
`f32` parameters always preceed the `i32` parameters.
|
||||||
|
Then it includes all imports that MicroW8 provides,
|
||||||
|
a function section with a single function of type
|
||||||
|
`(i32) -> void` and an export section that exports
|
||||||
|
the first function in the file under the name `tic`.
|
||||||
|
|
||||||
|
## Tooling
|
||||||
|
|
||||||
|
The [Web Assembly Binary Toolkit](https://github.com/WebAssembly/wabt) includes
|
||||||
|
a few useful tools, eg. `wat2wasm` to compile the WebAssemby text format to binary
|
||||||
|
wasm and `wasm2wat` to disassemble wasm binaries.
|
||||||
|
|
||||||
|
If you don't like the look of the `.wat` text format, you might want to take a
|
||||||
|
look at [CurlyWas](https://github.com/exoticorn/curlywas), a curly-braces infix
|
||||||
|
syntax for WebAssembly.
|
||||||
|
|
||||||
|
Once you have a size-efficient `.wasm` file, you can use [uw8-tool](https://github.com/exoticorn/microw8/tree/master/uw8-tool)
|
||||||
|
(currently included in the MicroW8 repository) to strip off sections of the
|
||||||
|
WebAssembly module that are provided by the MicroW8 platform.
|
||||||
|
|
||||||
|
Writing code for MicroW8 in C, Rust, AssemblyScript etc. should absolutely
|
||||||
|
possible but no examples are provided, yet.
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
* [Technotunnel](v0.1pre1#AQrDAQHAAQIBfwp9A0AgAUEAsiABQcACb7JDmhkgQ5MiBCAEIASUIAFBwAJtQYABa7IiBSAFlJKRIgaVIgcgByAAskHQD7KVIgIQAEPNzEw/lCIDlCAHIAeUIAOUIAOUQQGykiADIAOUk5GSIgiUIAOTQQqylCACkiIJqCAFIAaVIAiUQQqylCACkiIKqHMgCEEyspQgBpUiCyACkkEUspSocUEFcbJBArIgC5OUQRaylJeoOgB4IAFBAWoiAUGAgAVIDQALCw==) (199 bytes): A port of my [entry](https://tic80.com/play?cart=1873) in the Outline'21 bytebattle quater final
|
* [Technotunnel](v0.1pre1#AQrDAQHAAQIBfwp9A0AgAUEAsiABQcACb7JDmhkgQ5MiBCAEIASUIAFBwAJtQYABa7IiBSAFlJKRIgaVIgcgByAAskHQD7KVIgIQAEPNzEw/lCIDlCAHIAeUIAOUIAOUQQGykiADIAOUk5GSIgiUIAOTQQqylCACkiIJqCAFIAaVIAiUQQqylCACkiIKqHMgCEEyspQgBpUiCyACkkEUspSocUEFcbJBArIgC5OUQRaylJeoOgB4IAFBAWoiAUGAgAVIDQALCw==) (199 bytes): A port of my [entry](https://tic80.com/play?cart=1873) in the Outline'21 bytebattle quater final
|
||||||
|
|||||||
Reference in New Issue
Block a user