Write Lua, see the frame
Flat globals, no namespace: mode, bg[n], m7, cgram[], obj[], hdma(). Change a line and the output answers.
ppu.toys is a playground for the SNES graphics chip, the picture processing unit. Write a little Lua that pokes its memory and registers each frame, each scanline, and the picture updates as you type. What you publish is a toy: playable, forkable, one link to share.
The chip’s face is a real QR code to the site. Hover it.
Toy · Mode 7The affine ground plane, one matrix per scanline.
Toy · PlayableAbduct five cows, reach the ship. Enter to start, arrows to move, X to switch view, Z for the beam.
Toy · WindowsWindow masking as a moving spotlight iris.
Where toys get madeA multi-file Lua editor beside the live 256×224 output, with inspectors for backgrounds, VRAM, CGRAM, sprites, windows, scanlines and every register. The last program that ran keeps running while you type.
Toy · Offset-per-tileThere is no text mode. A tile font and sine waves, per column and per scanline.
Toy · SpritesAn arcade shooter built from OAM sprites.
Toy · ScrollingLayered scrolling, colour cycling, a first sprite.
Toy · OAMAnimation and the real per-line sprite limits.
The wallEverything published, newest first. Open one, press Fork, change a number.
Flat globals, no namespace: mode, bg[n], m7, cgram[], obj[], hdma(). Change a line and the output answers.
Edit a register or a colour in an inspector and it is written down as Lua in ppuglobals.lua. The script always wins.
A published toy is a live, playable permalink. Anyone can fork it into their own studio. Signing in is with Discord.
I’ve wanted to poke around the SNES graphics chip for as long as I’ve watched people explain it. ppu.toys is the playground I wanted: the real register semantics, nothing hidden, and a picture that answers the moment you change something.
Playing, forking and publishing toys is free and stays free. It’s built with a lot of AI assistance, and I’m glad to say so.
Jams, help, and a place to show what you made.
SourceThe open-source ppu CLI renders and checks toys on your own machine.
Liora LabsCook, Git Mosaic, Canopy, and what's next.