Running an old game tends to mean installing a separate emulator per system, learning its config, then wiring a frontend across the lot. EmuRust collapses that into one binary and a games/ directory. The launcher reads the file extension, picks the core and hands over.
Cores that ship in the binary
Game Boy, Game Boy Color, NES, SNES, ZX Spectrum and Nintendo DS run on cores compiled into the launcher. No BIOS dumps, no ROM-specific patches, no second install. Drop a .gb or a .nds in the folder and it boots.
The two that need help
PlayStation runs on trapezoid-core with Vulkan 1.1 doing the rendering, and it wants a BIOS image at bios/ps1/. Nintendo 64 embeds Mupen64Plus and loads the shared libraries already on the system, scanning the usual install locations plus anything pointed at by M64P_ROOT. On Linux, if it finds no core at all, the launcher fetches the official bundle itself rather than failing with a path error.
GameCube is the one system that hands off. Dolphin already does it at full speed, so EmuRust launches Dolphin when it finds it instead of pretending to compete.
| System | How it runs |
|---|---|
| Game Boy / GBC / NES / SNES | In-tree core |
| ZX Spectrum / Nintendo DS | In-tree core |
| PlayStation | trapezoid-core, Vulkan, needs a BIOS |
| Nintendo 64 | Embedded Mupen64Plus, auto-fetched on Linux |
| GameCube | Hands off to Dolphin |
Getting it going
Build with cargo build --release, then put ROMs under games/. The launcher accepts the extensions you would expect for each system, so nothing needs renaming to match a scheme.