PROJECT 64
A set of tools, skills, and an MCP that let AI agents write and debug Commodore 64 software — BASIC and 6502 assembly — on the VICE emulator.
── WHAT IS IT ──
The Commodore 64 is the best-selling home computer ever made — where a generation learned to program, and to play. Project 64 brings it back — not just for nostalgia, but as a place an AI agent can actually build, run, and debug real 8-bit software end to end: BASIC, 6502 assembly, sprites, and three-voice SID sound.
It drives the open-source VICE emulator through a clean command line (every command speaks JSON) and an MCP server, and includes the machine knowledge — skills, memory maps, a tested cookbook — that an agent needs to get it right.
── CAPABILITIES ──
Boot a C64 (NTSC or PAL) headless, in warp, with a disk attached.
Assemble 6502 with cc65 or tokenize BASIC; load and RUN in one step, and link a segment at a fixed address when the VIC has to see it there.
Symbolic breakpoints and watchpoints, single-step, memory and register inspection.
Block until screen text appears, memory hits a value, or a checkpoint fires.
Build a whole game disk from a manifest, copy files in and out, rename and scratch, read and write raw sectors, validate, attach and boot — via c1541.
Build 8K/16K/Ultimax and bank-switched EasyFlash carts, wrap a .prg, verify, boot, and debug banks live.
Identify the ROM set and disassemble live memory with symbol annotations.
Boot, load, feed input, assert on screen / memory / registers. CI-ready.
A 75-command CLI, 74 MCP tools, five skills, memory maps, and a live-tested recipe cookbook — sprites and SID included.
── QUICK START ──
Needs Python 3.11+, VICE 3.5+, and the cc65 suite.
# macOS brew install vice cc65 python3 -m venv .venv .venv/bin/pip install -e . # Debian / Ubuntu (vice is in contrib / multiverse) sudo apt install vice cc65 python3 -m venv .venv .venv/bin/pip install -e .
A venv is not optional on Debian 12+ / Ubuntu 23.04+ — the system Python is externally managed (PEP 668). And Debian’s vice package ships without the Commodore ROM images, so x64sc will not boot until you install them from an upstream VICE release; the paths are in /usr/share/doc/vice/README.Debian.
Then drive an emulated C64:
c64 session start # boot a C64 (NTSC) c64 run game.s # assemble + load + RUN c64 screen # read the screen as text c64 break add start # symbolic breakpoint c64 wait --break # block until it fires c64 step 5 && c64 reg # single-step, inspect
Every command takes --json — the interface an agent uses.
── USE WITH AN AI AGENT ──
Any agent with a shell needs zero setup — the CLI plus
--json is the whole integration, and MCP-native clients can add
c64-tools-mcp, which shares the same sessions. Step-by-step setup for
Claude Code, OpenAI Codex, Cursor, Gemini CLI, Google Antigravity and Crush is in
the guide.
── DEMOS: TRY IT! ──
▶ Play the finished demos in your browser
Ready-to-run prompts in three sets: graded test demos that walk the toolset from a first BASIC program to a full debugger hunt, game demos — complete builds with sprites, custom charsets, and three-voice SID sound — and miscellaneous cool stuff that isn't a game.
Test demos — graded; start at 01 if you're new:
| # | Demo | Language | Description |
|---|---|---|---|
| 01 | Guess the number | BASIC | A number game played to a win — the write→run→verify loop |
| 02 | Bouncing ball (sprite) | BASIC | A multicolor sprite bounced off all four borders, proved from the VIC-II registers |
| 03 | Sieve benchmark | BASIC + asm | The sieve written twice and timed off the jiffy clock — the asm speedup, then optimized |
| 04 | Debug hunt | BASIC + debugger | A dashboard broken in three layers, found with breakpoints and stepping |
| 05 | Bach's Invention No. 13 | BASIC | A two-part invention on voices 1 and 2, noise percussion on voice 3 — proved by audio capture, a reference score, and a piano roll |
Game demos:
| Demo | Language | Description | Screens |
|---|---|---|---|
| Snake▶ PLAY | 6502 assembly | Arcade Snake on a custom hires charset — held-key steering read off the keyboard matrix, SID sound, nine speeding-up levels | |
| Invaders▶ PLAY | 6502 assembly | The 1978 arcade original — sprites and custom charset, the one-invader-per-tick march, three-voice SID | |
| Ms. Muncher▶ PLAY | 6502 assembly | A maze chase — four rotating mazes, per-ghost targeting AI, six sprites, animated cut scenes | |
| La Galaxia▶ PLAY | 6502 assembly | An old school shooter in Spanish with a deliberately off-kilter sound track — a 40-enemy formation in character RAM and raster-IRQ sprite multiplexing |
Miscellaneous cool stuff:
| Demo | Language | Description | Screens |
|---|---|---|---|
| 1812▶ PLAY | 6502 assembly | Shapes painted to Tchaikovsky's 1812 Overture — bitmap mode, a rotating polygon rasterizer, three-voice SID | |
| Fugue No. 2 in C Minor▶ PLAY | 6502 assembly | Bach's BWV 847 on three SID voices while its score scrolls past — custom charset staves, pitch-class note colors, a sprite backlighting the sounding note | |
| Amiga Ball▶ PLAY | 6502 assembly | The Amiga's 1984 Boing Ball on four multicolor sprites — a precomputed sphere texture, a custom-charset grid room, and a SID impact thump |
Every demo outside the test tier (the game demos and the miscellaneous builds) ships its whole solution beside its prompt once it has been built — sources, plan, fidelity audit, regression test, evidence frames, and a runnable .d64 for stock VICE.