Raw WebAssembly Demos
Quine
A little WebAssembly quine. Without a way to do output, I decided that a WebAssembly quine should export a memory object with a copy its bytes. [148 bytes]
Doomfire
An implementation of the Doom fire effect described in Fabien Sanglard's blog, using hand-written WebAssembly. [398 bytes]
JIT
A very simple expression compiler using the Shunting Yard algorithm. It parses an infix expression, compiles it to WebAssembly, then copies the generated function into the original WebAssembly module. [449 bytes]
Metaball
An implementation of the metaball effect described in Jamie Wong's blog, using hand-written WebAssembly. Unlike the implementation described there, this just updates every pixel. [452 bytes]
Inflate
An implementation of the INFLATE algorithm, as specified in RFC1951. It uses some tricks from Piotr Fusik's 6502 implementation, such as storing the literal and distance huffman trees in the same array, and programmatically calculating the length/distance encoding rather than using tables. [991 bytes]
Chip-8
A CHIP-8 interpreter, with support for the original chip-8 instruction set. It starts up with a simple demo I wrote (thanks, Octo!). You can also try some of the public domain games and demos at dmatlack/chip8 and the CHIP-8 archive. [1020 bytes]
Raytrace
A simple raytracer, using techniques from tinyraytracer, in hand-written WebAssembly. 4 spheres, 1 light, reflections, and shadows. [1486 bytes]
Snake
A snake-eats-the-dots game, but with 360° rotation. Use left and right arrow keys, or tap on the left or right side of the screen to turn. [1976 bytes]
Dino
A dinosaur endlessly running through the desert, jumping over cacti and pterodactyls. Graphics are compressed using a LZ77-like algorithm. [2020 bytes]
Maze
A Wolfenstein-style 3d maze race. Each ray is tested against all walls, brute-force style. Walls, floors and ceilings are textured. Palettes are made up of 120-levels of brightness, which fade into black in the distance. [2047 bytes]
Match3
An implementation of a match 3-style game, with an 8x8 grid and 8 different emojis. [2662 bytes]
Mod
A mod music player, based on code from micromod. Supports most effects. [2833 bytes]
BadGB
A very simple gameboy emulator that only plays a few games. [3072 bytes]