Writing a "clear room" Z80 and Spectrum emulator with Claude Code

Clean room or clone room? Retro emulator sparks a copycat brawl

TLDR: A dev used Claude Code to build a no‑internet “clean‑room” ZX Spectrum emulator and shared it on GitHub. Commenters split: some call it impressive, others say training data makes it a clone-in-disguise, raising licensing worries and urging harder tests like emulating a never‑documented system—typo jokes included.

A developer used Anthropic’s Claude Code to build a retro computer emulator for the old-school Z80 chip and ZX Spectrum, calling it a clean-room (no internet) project and posting it on GitHub. The crowd didn’t just clap—they argued. Loudly. The biggest fight: is “clean room” even possible if the AI was trained on tons of public emulator code? One skeptic warned it could “parrot someone else’s emulator,” while another pushed the nuclear option: try emulating a system nobody’s ever emulated before.

There was philosophy and spice too. One commenter declared automatic programming is already super‑human at mixing languages and tricks, while another raised the red flag on licenses, saying the secret sauce isn’t just docs—it’s the hard-won patterns from emulator authors, sometimes under restrictive terms. Meanwhile, the nitpick brigade showed up with a banger: the title says “clear room” instead of “clean room”, and the thread did not let that slide.

Fans praised the hustle—“no Carmack or Stallman needed”—but the vibe quickly turned CSI: Codebase. Is this pioneering, remixing, or copying with extra steps? Between nostalgia talk (cassette loading! scanlines!) and legal side-eyes, the community turned a coding demo into a full-blown clone vs. clean showdown.

Key Points

  • The article critiques Anthropic’s clean-room experiment using Opus 4.6 to write a C compiler in Rust, questioning missing inputs like ISA documentation and foundational compiler research.
  • The author argues clean-room setups can include curated specifications and test vectors without accessing external source code or the internet.
  • A self-run experiment builds Z80 and ZX Spectrum emulators (and CP/M) with an instruction-at-a-time execution model, cycle accounting, memory callbacks, and full opcode coverage.
  • The ZX Spectrum emulator design includes optional RGB buffer rendering for embedded devices (e.g., ST77xx), cycle-based ULA contention modeling, and authentic cassette loading via the EAR bit.
  • The process enforces strict rules: no internet beyond local specs/tests, simple clean code, incremental commits, comprehensive testing, extensive comments, and a continuously updated work log; code is published on GitHub.

Hottest takes

"parrot someone else’s emulator verbatim just from training" — ralferoo
"automatic programming to be already super-human" — dist-epoch
"it’s also the “known techniques and patterns” of emulator code—often provided under restrictive licenses" — avadodin
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.