Sandopolis is a multi-system Sega emulator written in Zig, MIT licensed and in alpha. It runs Genesis and Mega Drive games, Sega CD, Master System, Game Gear and SG-1000, and it can be built and run on anything Zig supports.
What it does that matters here
The usual route is desktop binaries or the browser build at the project’s GitHub Pages site. The homelab route is one line:
docker run -d -p 8085:80 --rm ghcr.io/pixel-clover/sandopolis-web:latest
That serves the WebAssembly build with keyboard and gamepad input, save states held in IndexedDB, a settings panel with audio modes, a three-band equaliser, aspect-ratio options and a CRT effect. The browser build also has a WebXR theatre mode: an immersive session with a procedural game room and a CRT shader, which is a strange and delightful thing to find in an emulator project from a solo developer.
There is also a Libretro core, so RetroArch can drive it, and the three frontends all sit on the same internal facade. The desktop side has debugger tooling that reads like a lab notebook: single stepping, memory dumps, VDP state, tile and palette visualisers, breakpoints. Save states, GIF and WAV capture, four-player adapter support and the Sega Mouse are all there.
What is not there yet
The README says it plainly: early development, compatibility is not perfect, breaking changes are expected. Sega CD needs your own BIOS images, which is standard for that system and worth knowing before you start. The roadmap lists what has been validated, and it is unusually candid, including outstanding items like 32X and Sega Pico support, cheat codes and light guns, and current failures such as one Mortal Kombat romhack that loads in the browser build but not on desktop.
My read
This is the kind of project I like pointing at because the engineering is visible. Audio is validated against the Nuked-OPN2 reference across 26 scenarios, video against community test ROMs with golden framebuffer hashes, and the notes explain why a save-state format was hardened against untrusted input. That is a lot of care for a Sega emulator, and it is the reason a browser build in a container is credible rather than a novelty.
An emulator on a LAN address means any device with a browser, a tablet or a TV included, can play a Mega Drive game without installing anything. It is one container, it is MIT licensed, and it is early enough that I would not keep an only copy of a save file in it.
Source: the project repository and its roadmap