#1 emulators in the world
on nine systems drawn in
Liquid Crystal.
- Movies
- Shows
Game & Watch
Mario Bros.
Legend of Zelda
Tetris Jr.
Game Boy
Game Boy Color
Pokémon mini
NES
Famicom
Disk System
Atari 2600
Atari 5200
Atari 7800
Atari Lynx
Writing a Game Boy emulator from nothing, with the picture unit modelled dot by dot, is hard. Ours passes all 24 mealybug tests: pictures that must match photographs of the real hardware, pixel for pixel. It passes Mooneye, 97 of 97, and Blargg, 51 of 51, and ranks #1 on the public Game Boy accuracy board, level with DocBoy. On the two newer Color suites, cgb-acid-hell and the AGE tests, it scores ahead of every other emulator we measured. It runs many licensed and unlicensed cartridge chips, the Super Game Boy, the Pocket Camera, and nearly every Game Boy and Color game we tested.
Then we ran the hardest test there is: deterministic synthesis from documentation alone. A builder who had never seen our code was given our pages and nothing else, and built a Game Boy emulator from them. Its output was identical to ours on 170 of 170 tests, every mealybug and AGE test among them. When documentation is precise enough that the machine can be rebuilt from the words alone, the documentation is the blueprint.
We then did the same on many more systems. Every result, dated, with the fingerprint of the exact file this site serves, is below under Checked by rebuilding.
The little game tiles scattered through your library are not screenshots or GIFs. They are the actual games, running live, with the demo loops attracting you in exactly like they did on a shop shelf in 1991. Walk past them in your movie collection and they are playing.
11 emulators, one home server
Every emulator here is fed by one small server that is yours, running on your own computer. Point it at your game library and that is the whole setup: no emulator cores to install, no paths, no launch commands, no scraper accounts. It recognises every cartridge by its fingerprint and picks the right start-up firmware for it. Box art, logos and manuals arrive on their own, with no scraping and no daily limits. Plug in a controller and it just works, with A where your controller says A. At home it serves the whole collection to every screen in the house, and your games keep playing even locally with no internet. Away from home, your vault code brings the same collection to you anywhere online.
Secure. Versatile. Simple.
We build these ourselves. From nothing.
Most emulators are handed down. Someone reverse-engineers a machine once, and everyone else spends twenty years patching, porting, and inheriting every shortcut from that original code.
That is not what we do here.
We do not research these machines to build them. We build them to research them.
This is a preservation project first and foremost. Reconstructing a system from nothing is the ultimate form of hardware study because every chip must be fully understood before it can be rebuilt, with no prior work to fall back on. When you build from scratch, you truly understand the machine instead of trusting decades-old assumptions.
That philosophy produced the world's first emulator for the modern ARM Game & Watch, covering the Zelda and Mario twins running on the STM32H7. With no existing code to copy or core to fork, we reverse-engineered the hardware and built it from the silicon up, executing the real internal firmware directly in the browser.
We are bringing that same standard to how retro media is experienced. Emulation today remains fragmented, tied to legacy builds, complex setups, and fragile workarounds. We are creating a single home for games and media together that simply works on any modern device with zero setup. Achieving that seamless experience requires hand-rolled, clean emulators rather than decades of stitched-together patches.
What we learn along the way does not stay buried in code. We write documentation precise enough that someone can build a working emulator from our words alone. We proved this approach by writing a complete Game Boy specification covering all 24 mealybug edge-case tests, then building an emulator solely from those words with no source code or external references. It compiled and passed every test on the first attempt. We have done the same for many more systems since, each one listed in the table below.
The emulator itself serves as the ultimate test of accuracy, where any flaw in our hardware understanding or documentation is immediately exposed by the software.
Why it matters
Every one of these machines belongs to all of us. A Game & Watch went into pockets in Osaka and in Manchester in the same few years. A Game Boy ate a fortune in AA batteries under the covers in bedrooms on every continent. A prototype almost nobody ever saw still shaped the machine that came after it. These games, and the films and shows sitting beside them, are how most of the world actually spent its evenings for forty years. That is shared culture, not private nostalgia. And it is disappearing, into landfill, into dead hard drives, into knowledge that leaves with the people who held it.
Preserving it properly means more than making it run. It means writing down exactly how these machines think, so precisely that anyone can rebuild them perfectly, forever. Not a copy of a copy of someone's old code, but a true tested blueprint. That is the difference between hoping it survives and making sure it does.
Nearly fifty years of play, on a single thread.
Every console on this site, handheld and home, laid out in the order it really arrived, from the Atari VCS in 1977 onwards: the four Ataris, the Game & Watch series, the Famicom, the NES and the Disk System, the Game Boy, the Game Boy Color and the Pokémon mini. The families overlap and cut across one another, because that is how the hardware actually happened. Tap any entry to drop into its catalogue.
The machines, in our words
CrystalWorlds.Media is a love letter to the machines that taught the world to play. It began as a home for one family, the small, strange Game & Watch handhelds Nintendo built between 1980 and 1991, and it has grown into a shelf of handhelds and home consoles, your own films and shows. Every emulator here was written from scratch by us, standing proudly on the shoulders of the community, researchers, and pioneer engineers who painfully mapped these systems before us. It is all brought to life right inside your browser.
It began with the first Game & Watch, Ball, which slipped out of Japan on April 9th, 1980. It cost a few thousand yen, ran on watch batteries, and let you keep a juggler from dropping two stiff little balls. It sold a million copies. By the time the line ended in 1991, Nintendo had shipped fifty-nine different models across ten distinct hardware series, and posted somewhere north of forty-three million units sold worldwide.
The man behind the magic.
Gunpei Yokoi joined Nintendo in 1965 as a maintenance engineer. He went on to lead the R&D1 group responsible for the Game & Watch, the Game Boy, and Metroid. The story goes that he watched a bored salaryman on a Shinkansen passing time by tapping the buttons of a calculator, and wondered if you could put a tiny game in the same pocket-sized shell. The Game & Watch is what came out the other side.
Yokoi left Nintendo in 1996 and his fingerprints are still on every handheld Nintendo ships, and on most of the machines on this page.
One client. Every screen.
All of it is fed by one small server that sits on your own computer. Point it at your library, and that is the whole setup: it recognises every cartridge by its fingerprint, picks the right start-up firmware, and maps your controller the instant it is plugged in. At home, it serves your entire collection to every screen in the house. Away from home, your vault code brings that same collection to you anywhere.
Built from nothing.
Most emulators are handed down: someone reverse-engineers a machine once, and everyone else inherits every shortcut and quirk from that original code. That is not what we do here. We do not research these machines to build them. We build them to research them.
Every core on this site was written from the chip makers' own documentation and from direct measurement of real hardware, with nothing copied from an existing emulator. The documentation we write along the way is precise enough that a second core, built solely from our words with no source code, passed every test on the first attempt. Where a public test exists, we publish our score beside everyone else's, complete with the date it was measured; where none exists, we write our own test cartridges, run them on real hardware, and show the results.
Suggestions and submissions.
Suggestions and submissions are welcome from anyone, on the project's GitHub page: a bug report, a fix, a correction to a Hardware or Emulation page, a measurement from real hardware, a game that does not play right, or an idea. Every submission is read and considered.
Games and firmware are never accepted. A submission that contains a game, a BIOS, a boot program or any other console firmware, or a link to one, is always rejected, whatever else it contains. This site plays only the files you already own, and it never ships, hosts or shares them.
Acknowledgements.
This site is built on the work of a lot of people, and it owes them thanks.
Many thanks to everyone who came before us
The machines
Consoles and handhelds
Nintendo
The late Gunpei Yokoi and the R&D1 team
who made the machines that started this, and most of the ones that followed
Consoles and handhelds
Atari, with Epyx on the Lynx
who made the others
Chip manuals
Epson, Sharp and STMicroelectronics
for the chip manuals our cores were written from
Atari 7800 design
General Computer Corporation
for designing the 7800 and writing its first software guide
Everything here is a tribute to them.
Game & Watch emulation
Our own core for the Sharp SM5A, SM510, SM511 and SM512, built from
Sharp's original SM-series data books
Chip decapping and die photography
Sean Riddle
Chip decapping, die photography and the firmware dumps these emulators run; die-level pinouts that confirmed much of the detail in our Hardware tabs, and corrected our supply-rail labels
Documenting these chips
hap
Henrik Algestam
The game firmware, recovered from real silicon
The hardware preservationists
Igor, Lee Robson and Milan Galcik
for their part in documenting these chips
And the earlier open-source device work on these chips that the Hardware tabs draw on.
Game & Watch artwork
Vector LCD layouts, refined across the whole line
hydef
Colour backgrounds and Crystal Screen button art
DarthMarino
Unit art and printed backgrounds
The Game & Watch artwork community
Unit art, printed backgrounds, and everyone who contributed on the community artwork thread
Background scans
Henrik Algestam and Sean Riddle
for background scans
Pinball scan alignment
ICEknight
for the scan alignment on Pinball
Device photographs
Madrigal Design
for the device photographs
The 35th-anniversary units
The Mario and Zelda colour handhelds, on a hand-built ARM digital twin, from
Community notes on this board
ST's own notes on how the STM32 decrypts its code as it runs
The tests every emulator is measured against
Game Boy
Test suites
mealybug tearoom
Mooneye
Blargg
Mooneye Test Suite
Joonas Javanainen (Gekkio)
for the Mooneye Test Suite
Mealybug Tearoom tests
Matt Currie
for the Mealybug Tearoom tests, dmg-acid2, cgb-acid2 and cgb-acid-hell
Test cartridges
Docheinstein
for the docboy test cartridges
Test programs
aappleby
for gbmicrotest
Test programs
Christoph Sprenger
for his Game Boy and Game Boy Color test programs
Test suite
Lior Halphon (LIJI32)
for SameSuite
Test shootout and tests
daid
for the Game Boy test shootout and his own tests
Test programs
Ashiepaws
for Bully and Strikethrough
Cartridge clock and Super Game Boy tests
CasualPokePlayer
for the cartridge clock and Super Game Boy tests
Cartridge clock test
ax6
for rtc3test
Test tool
Rob Heaton
for Gameboy Doctor
Test programs
magen, little-things-gb and zoomten
for their test programs
NES
Test suite
AccuracyCoin
AccuracyCoin
Chris Siebert (100thCoin)
for AccuracyCoin
Processor, picture, sound and mapper tests
Blargg (Shay Green)
for most of the NES processor, picture, sound and mapper tests
Processor test and log
Kevin Horton (kevtris)
for nestest and its log
Test collection
Christopher Pow
for gathering the NES test collection
Test programs
Damian Yerrick (tepples)
for Holy Mapperel, Zap Ruder, the 240p Test Suite on NES and Game Boy, and many more
Processor tests
Joel Yliluoma (Bisqwit)
for his processor tests
Test programs
Aaron Bottegal, Mathew Brenaman, Tennessee Carmel-Veilleux, Michael Martin, Chris Covell, loopy, Bregalad, Myask and thefox
for test programs shared on the NESdev forum, with everyone else who shared one there
Atari Lynx
Test suite
The Lynx test suite, its answers recorded on real consoles
Lynx test suite
Ignacio Sanchez Gines (drhelius)
for the Lynx test suite
Atari 2600, 5200 and 7800
Test program
Avery Lee (phaeron)
for Acid5200
Processor tests
Klaus Dormann
for the 6502 and 65C02 functional tests
Processor tests
Tom Harte and contributors
for the cycle-by-cycle 6502 and 65C02 tests
Example programs
Steven Hugg, with Daniel Boris
for the 2600 and 5200 example programs
7800 samples and BIOS
Mike Saarna (RevEng) and the 7800-devtools authors
for the 7800basic samples and 7800OpenBIOS
Demo program
Darrell Spice Jr. (SpiceWare)
for the DPC+ demo
Documentation
Game Boy reference
Pan Docs, the gbdev wiki and their contributors
for the Game Boy reference
Technical reference and hardware database
Joonas Javanainen (Gekkio)
for Game Boy: Complete Technical Reference and the Game Boy hardware database
Game Boy timing reference
Antonio Nino Diaz
for the Cycle-Accurate Game Boy Docs
Opcode table
izik1
for the gbops opcode table
Cycle timing and bankswitching
Kevin Horton (kevtris)
for Nitty Gritty Gameboy Cycle Timing and the 2600 bankswitching list
Game Boy window measurements
nitro2k01, tbsp and alyosha-tas
for their Game Boy window measurements
Game Boy processor logs
wheremyfoodat
for the Game Boy processor logs
NES and Famicom reference
The NESdev wiki and forum community
for the NES and Famicom reference
Transistor-level chip research
Quietust, and the Visual 6502 and Visual 2C02 teams
for transistor-level research into the NES chips
Measurements and research
lidnariq, rainwarrior, loopy, AWJ, Persune, plgDavid, furrtek, krzysiobal, FirebrandX, NewRisingSun, CaH4e3 and Disch
for their measurements and research on the NESdev forum
Study Box hardware notes
The author of the 2019 Study Box notes
for the hardware notes behind our Study Box support
Atari 2600 programmer's guide
Steve Wright
for Atari's 1979 programmer's guide to the 2600
2600 specifications
Martin Korth (nocash)
for his 2600 specifications
TIA hardware notes
Andrew Towers
for his TIA hardware notes
Atari hardware reference
Avery Lee (phaeron)
for his Atari hardware reference manual
Atari notes, guides and forums
A.N.A.L.O.G. Computing, De Re Atari, the 7800 homebrew community, ConsoleMods, the cc65 team, Ian Farquhar and AtariAge
for Atari notes, guides, archives and forums
Prototype histories
AtariProtos and Atarimania
for prototype and test-cartridge histories
Pokémon mini documentation
pokemon-mini.net, Team Pokeme, logicplace, shonumi, RetroReversing and Data Crystal
for the Pokémon mini documentation
Architecture and history
Rodrigo Copetti, Wikipedia and Chromagi
for architecture write-ups, history and power ratings
Data
Game names
No-Intro
for the game names
Game details and cheat codes
The libretro-database contributors
for game details and cheat codes, under CC BY-SA 4.0
Descriptions and release dates
OpenVGDB
for descriptions and release dates
Players' ratings and descriptions
LaunchBox Games Database
for players' ratings and game descriptions
Critics' scores
Wikidata
for critics' scores
NES cartridge databases
NewRisingSun and BootGod
for the NES 2.0 header database and NesCartDB, with the other NES cartridge database compilers
Boot colour tables
Tauwasser
for the Game Boy Color boot colour tables
Palette chip dumps
The arcade preservation community
for the VS System palette chip dumps
Controller layouts
mdqinc and the SDL_GameControllerDB contributors
for controller layouts
Artwork and photographs
R.O.B. 3D model
Wrld_Bld
for the R.O.B. 3D model, under CC BY 4.0
R.O.B. part measurements
archonik
for the R.O.B. part measurements
Reference photographs
Evan-Amos, Sintegrity, Chapuisat, Phil Bond and Solomon203
for reference photographs of R.O.B. and the Game Boy Color
Box-art scans
The libretro-thumbnails contributors
for box-art scans
Software
Video playback and conversion
The FFmpeg developers, and Yahweasel
for FFmpeg and libav.js, which play and convert video
Video container library
Vanilagy
for mediabunny
MP2 audio decoder
Dominic Szablewski, after Martin J. Fiedler
for the MP2 audio decoder
3D viewer
The three.js authors
for the 3D viewer
Manual page turner
Nodlik (Oleg Litovski)
for StPageFlip, the manual page turner
PDF viewer
Mozilla
for pdf.js
Streaming playback
The hls.js authors
for streaming playback
Special thanks
To everyone who sponsors this project.
Your support made it possible.
Decades of unpaid, meticulous preservation and emulation work sit underneath every device on this site.
Thank you to everyone who did it.
If your work is represented here and you would like it credited differently, do reach out and it will be put right.
Licences.
Click here to expand
This site's own code, writing and interface art are under a single licence, the CrystalWorlds.Media Project Licence 1.1. In short: you may change it, you may not sever it. Use it, modify it and share it freely for non-commercial purposes, as a whole and with credit; taking a piece out on its own (an emulator core, a device page, the interface) or using any of it commercially needs permission first. The research and documentation, including the Hardware and Emulation pages and the test write-ups, may be read, cited and quoted in reasonable excerpts with credit, in paid work too, and its facts may be used, with credit, to improve your own projects; it may not be copied in its entirety or in substantial parts, presented as anyone else's own work, or used as the source to build an emulator or a front end (§3A of the licence). The source code is provided so that anyone can check our results, and neither it nor the emulator cores may be used to develop other front-end software (§3B). No AI or other automated system may build software from our documentation or source, or be trained on them, and text and data mining is reserved; repeating our clean-room proof, an AI included, to check our results is allowed (§3C to §3E). The Emulation pages ask you to agree to these terms the first time you open one in a browser. Everything is “please ask” unless the licence says otherwise, and the answer is often yes.
Parts of this site are not ours and are exempt: the FFmpeg video pipeline stays LGPL-2.1-or-later, mediabunny stays MPL-2.0, and the Game & Watch artwork belongs to the people named above. Those licences permit things ours does not, including commercial use, and nothing in our licence restricts them; see §6 of the licence. None of it covers anything Nintendo, Atari, Sharp or any other rights holder owns; see the NOTICE. Every third-party component and its licence is listed in THIRD-PARTY-NOTICES.
The per-device screen and button geometry of the Game & Watch units was read from the fifty-three community layout files that ship as external artwork, the work of Lee Robson (hydef), credited on fifty-two of the fifty-three, with DarthMarino on three and Henrik Algestam and ICEknight alongside them on Pinball. One, Ball, carries no credit line at all. None of the fifty-three carries a licence line of any kind, and there is no licence document anywhere to find: this is free public material, put out openly in a public forum thread. What this site owes the people who made it is credit, and that is what is given: by name, above and here. This site asserts no licence over their work on their behalf.
The Media page decodes and re-encodes with FFmpeg, compiled to WebAssembly by libav.js at version 6.9.9.0 and shipped here as two binaries. FFmpeg's libraries are under the GNU Lesser General Public License, version 2.1 or later, which asks that its text travel with the work, so it does: the full licence text ships in this distribution, next to the binaries it covers. The corresponding source is the FFmpeg 6.9.9.0 release plus the libav.js build scripts at the matching tag, at github.com/Yahweasel/libav.js. The container muxing alongside it is mediabunny (MPL-2.0), redistributed unmodified with its own header intact. See THIRD-PARTY-NOTICES, sections 3 and 4.