CrescentHandbook
Emulator card
Cards

The Emulator card

Emulate an old console like the NES or GameBoy, a CPU, OS, or maybe make a simulation of an entire game world!

Make your computer pretend to be a different one! Emulate an old console like the NES or Game Boy, a CPU, an operating system… or simulate a little world that runs by its own rules.

What counts

There’s two kinds of project that fit here:

  • An emulator pretends to be a machine well enough to run software that was written for it. The machine can be real (a Game Boy, an old calculator, a 6502 CPU) or made up (CHIP-8, or a CPU you designed yourself!).
  • A simulation is a world with rules that you set going and then watch: falling sand, an ecosystem, a city, an ant colony…

For a simulation, the fun part should be how your rules play off each other. A plain Conway’s Game of Life is a lovely afternoon, but it’s a bit small for a whole card, so give it a twist of your own!

The easiest thing that counts

CHIP-8! It’s not even real hardware. It’s a tiny virtual machine from the 1970s, made so people could write games for hobbyist computers more easily. It has 35 instructions, 4 KB of memory, 16 registers and a 64×32 black and white screen, which is small enough to emulate in a weekend. There’s lots of public domain games for it too, like Pong, Breakout and Tetris clones.

Tobias V. Langhoff’s Guide to making a CHIP-8 emulator explains how every part works without handing you the code, and Timendus’s chip8-test-suite tells you exactly which instructions you got wrong.

The heart of pretty much every emulator looks like this:

while (running) {
  const opcode = (memory[pc] << 8) | memory[pc + 1]; // fetch
  pc += 2;
  execute(opcode); // decode, then do the thing
}

Fetch an instruction, figure out what it means, do it, repeat. The rest is filling in what each instruction does and drawing the screen. (There’s a lot of filling in. But still!)

Going further

  • Space Invaders. The original arcade machine runs on an Intel 8080, and emulator101.com walks you through emulating the whole thing.
  • The Game Boy. Probably the most popular real console to emulate, and its docs are amazing. The Pan Docs cover nearly everything, and Blargg’s test ROMs check your CPU instruction by instruction. The first time a game boots on something you wrote is a magical moment!
  • The NES. Its CPU (a 6502) is friendly, but the graphics chip is famously tricky. The NESdev wiki is the place to learn, and the nestest ROM comes with a log of exactly what a working CPU should do, line by line.
  • A CPU of your own. Invent an instruction set, write an emulator for it, then write programs for it in your own assembly language. Nand2Tetris builds a whole computer up from logic gates, and, fittingly, that computer is called Hack.
  • An operating system. A simulated OS with processes taking turns, a filesystem and a shell to poke at it all is a great project. It should actually run things, though! A pretty desktop where the windows only open and close is more of a website.

The original grey Nintendo Game Boy

The original Game Boy, from 1989. Inside, a Sharp CPU that’s a close cousin of the Zilog Z80 runs at about 4 MHz. Photo by Evan-Amos, public domain, via Wikimedia Commons.

Simulating a world

  • Falling sand. Every pixel is a material (sand, water, fire, plants…) with a couple of rules about its neighbours, and the magic is in how they react to each other. Look up Sandspiel to see how far this can go!
  • Boids. Craig Reynolds showed back in 1986 that a few simple rules (don’t bump into anyone, fly the same way as your neighbours, stay close to them) give you something that looks just like a flock of birds. Add a predator and it gets really fun to watch.
  • Ecosystems. Rabbits eat grass, foxes eat rabbits, and every baby is slightly different from its parents. Leave it running overnight and see who’s left!
  • A tiny world. Dwarf Fortress simulates centuries of history before you even start playing. You don’t need to go that far, but a village where everyone has a job, a home and opinions about their neighbours is a lovely thing to build.

About ROMs

Please don’t put commercial game ROMs in your repo or your demo. Test with homebrew instead: there’s loads of free Game Boy and NES homebrew on itch.io, and plenty of CHIP-8 games are public domain. If your emulator runs in the browser, let people load their own files!

Shipping one

  • Demo: an emulator that runs in the browser (in JavaScript, or compiled to WebAssembly) is ideal, with a free game already loaded. Otherwise, link a release with a binary and tell us where to get something to run on it.
  • Screenshot: a game running in your emulator, or your world in the middle of something chaotic.
  • README: what it emulates, how accurate it is (which test ROMs pass?) and what’s still missing. For a simulation, explain your rules! A GIF of it running goes a long way.
Last updated 5 Oct 2026