Skip to content
Emux

Emux

GAME BOY COLOR EMULATOR

Emux

Emux is an open-source Game Boy / Game Boy Color emulator written in C# with a desktop frontend and debugging tools.

game boy colorPRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why Emux exists

Emux appears to be a hobby/independent effort to implement Game Boy hardware in C#, with an emphasis on being a learning/debugging platform and providing a simple desktop player for Game Boy and Game Boy Color ROMs.

BEST FOR

Notable capabilities

Runs Game Boy and Game Boy Color ROM dumps; supports several common MBC (memory bank controller) types and battery-backed save RAM; audio output (via NAudio); an integrated debugger (disassembly, stepping, breakpoints, memory/register inspection); keyboard control mapping and frame limiter toggle.

The people behind Emux

Project history & status

Emux is hosted on GitHub (Washi1337/Emux). The repository contains source folders for the emulator core, a MonoGame frontend, an NAudio audio backend, and test projects. The README describes the project as GPLv3-licensed and notes the emulator is not complete and will contain glitches. The repository shows ongoing development activity (many commits and active issues), indicating the project is an active hobby/opensource project rather than an abandoned archived release. The author credits published Game Boy technical documents (including Pan Docs and the GBCPU manual) as implementation references.

What Emux supports

  • Game Boy (DMG)
  • Game Boy Color (CGB)
  • MBC1, MBC2, MBC3, MBC5 cartridge controllers (as stated in README)
  • Battery-backed save RAM (cartridge external memory)

Download and availability

OFFICIAL DOWNLOADS

Get Emux

Official releases and binaries (where provided) are published on the project's GitHub releases page. Source code and build instructions are available in the repository.

Get Emux ↗

DOCUMENTATION

Official documentation

Read the official configuration, compatibility, and troubleshooting material before changing advanced options.

Read official documentation ↗
Broken or missing download? Emulator projects move and official links sometimes change. Please contact Retro Replay so the source can be verified and updated.

Emux setup guide

Setup note: This guide covers obtaining Emux, its prerequisites, building/running from source, and practical tips specific to this repository. Emux is a C# project and expects you to build/run it with standard .NET tooling and the libraries referenced by the repo.

  1. 1) Get the source or release: Visit the project's GitHub page and either download the latest release archive from the Releases page or clone the repository to obtain the source. Do not expect commercial game ROMs or BIOS files to be included; provide your own legally obtained ROM dumps.
  2. 2) Install prerequisites: You'll need a current .NET development toolchain compatible with the project's target (the repository is C#). The README lists NAudio as an external library and includes a MonoGame frontend project, so install the .NET SDK (or Visual Studio with .NET desktop workload) and MonoGame if you plan to build the MonoGame frontend. Ensure NuGet package restore is enabled so referenced packages (for example NAudio) are fetched automatically.
  3. 3) Build the project: Open the solution file (Emux.sln) in Visual Studio (Windows) or use dotnet CLI to build. Allow NuGet to restore packages. If a MonoGame front-end project is present, you may need the MonoGame SDK/extension installed so that the MonoGame project can compile. Build the solution in Release or Debug depending on whether you want symbols and debugging support.
  4. 4) Run and load a ROM: Run the built frontend executable. Use the UI to open a Game Boy (.gb) or Game Boy Color (.gbc) ROM dump. Emux supports cartridges with MBC1/2/3/5 and battery-backed saves; place/save external save files in the location the frontend expects (the UI or command-line will indicate save file location).
  5. 5) Using the debugger: Emux includes debugging features (break/continue, step, disassembly viewer, memory/register editor, virtual keypad). To debug, pause or set breakpoints, then step through instructions; use the virtual keypad for injecting input while paused. Consult the README and repository test projects for examples of using the debug features.
  6. 6) Audio and controls: Audio is provided via NAudio according to the repository. If audio fails, ensure the NAudio package is restored and your system audio device is available. Default keyboard bindings are described in the README (e.g., A = X, B = Z, Start = Enter, Select = Left Shift), and can be changed if the frontend supports remapping.
  7. 7) Troubleshooting and contribution: If games run with glitches, file a detailed issue in the project's GitHub issue tracker including the ROM (if it is homebrew or you have permission) or a reproduction case and relevant emulator logs. To contribute fixes or features, fork the repo, implement changes, run the test projects, and open a pull request. Follow the project's license (GPLv3) when contributing.

Software reminder: Emux is GPLv3-licensed open-source software. You must supply your own ROM dumps and any system BIOS/boot ROMs required; the project README explicitly states it does not include licensed ROMs.

Sources and further reading

Detailed guides and tutorials

Explore step-by-step guides for Emux as they are published.