FourShades
Game Boy emulator · C++20 · 2026 – present
A Game Boy emulator written in C++20, spec-first and test-first, and measured against the public Game Boy test ROMs. It plays games, with sound, in a browser. The pass rate is the scoreboard, and every number gets published — up or down.
The point is not another emulator; there are hundreds, and better ones. The point is a fixed, respected yardstick that decides whether the work is right, instead of my own opinion of it.
Finished at 155 of 165. The ten still failing are recorded with their evidence — several of them deliberately, because passing would have meant contradicting a hardware-verified test or fitting a constant to one reference.
Posts about FourShades
Done is where the evidence runs out
FourShades finished at 155 of 165 test ROMs. The ten that are left cannot be fixed without evidence that does not exist, and saying so is the interesting part.
The screen works. The scoreboard barely moved.
The emulator can draw now, and you can play it. Fixing one systematic error corrected 44,000 wrong pixels and flipped exactly one test.
Two ways a scoreboard can lie
The emulator went from 0 to 85 passing test ROMs. The interesting part is the two ways it nearly claimed more than it had earned.
499 out of 500, on purpose
The CPU passes every SingleStepTests instruction but one. The one it fails, it fails deliberately.
Starting the scoreboard at zero
Why I am building a Game Boy emulator in C++, and publishing every number it scores.