Chips › Processors › Fantasy & virtual CPUs › PICO-8 virtual machine
PICO-8 virtual machine
2015
Lexaloffle's fantasy console, a self-imposed-limits virtual machine for making, sharing and playing tiny Lua games.
PICO-8 virtual machine Online Emulator
Play PICO-8 virtual machine using WebAssembly directly in your browser.
Controls
Click the screen, then play with the keyboard. The arrow keys are the D-pad, Z is O and X is X, and P or Enter opens the PICO-8 menu. On a phone use PICO-8’s own on-screen buttons. The pad in the Keyboard panel shows the same buttons. Reboot reloads the console. Note: PICO-8 Education Edition is proprietary and runs in its own frame hosted by Lexaloffle, so it is play-only. There is no memory or CPU debugger for it, and the on-screen pad here is a guide only. Real input reaches the player through the physical keyboard once you click the screen, or through PICO-8’s own touch buttons on mobile.
Configurations
| Configuration | Emulator | Machine | OS | Legal | |
|---|---|---|---|---|---|
| PICO-8 Education Edition (editor) | PICO-8 Education Edition | PICO-8 | closed | Open ⛶ |
Machines
Emulators
| Emulator | Type | License | Site |
|---|---|---|---|
| FAKE-08 | downloadable | MIT | Website ↗ |
| PICO-8 | both | Commercial | Website ↗ |
| PICO-8 Education Edition | online | Freeware | Website ↗ |
| PICOLOVE | downloadable | MIT | Website ↗ |
| tac08 | downloadable | MIT | Website ↗ |
Reference & documentation
External technical references for programming PICO-8 virtual machine and for writing emulators.
| Resource | Type | Notes |
|---|---|---|
| picotool: .p8 and .p8.png format support ↗ | Format | Reads/writes text .p8 and PNG-encoded .p8.png carts |
| PICO-8 API Cheatsheet (RAM layout) ↗ | Memory map | RAM layout: gfx, map, sfx, screen addresses |
| PICO-8 Manual: Lua programming & lifecycle ↗ | Programming | Official Lua, _update/_draw callbacks, program structure |
| PICO-8 language grammar (zepto8 doc) ↗ | Programming | EBNF grammar of PICO-8 Lua dialect |
| PICO-8 User Manual (Lexaloffle, official) ↗ | Reference | Official API reference, memory, GPIO, callbacks |
| PICO-8 API Cheatsheet (all functions) ↗ | Reference | Compact all-function API reference with ranges |
| FAKE-08 PICO-8 runtime (C++) ↗ | Source | Open-source C++ PICO-8 emulator implementation |
| zepto8 emulator (samhocevar) ↗ | Source | Reverse-engineered PICO-8 emulator with technical docs |
| z8lua: PICO-8 Lua dialect fork ↗ | Source | Lua fork with fixed-point, syntax extensions for emulators |
| picotool cartridge library (dansanderson) ↗ | Tool | Python tools to parse/build/minify cartridges |