Skip to content
Screenshot published by the UnityGB project
Screenshot published in the UnityGB project's official README. Image source: UnityGB project on GitHub.

UnityGB

GAME BOY COLOR EMULATOR

UnityGB

UnityGB is a C# Game Boy emulator implemented as a Unity package/library that runs Game Boy ROMs inside a Unity project (alpha state). It provides a self-contained emulator backend and example Unity scripts showing how to wire video, audio, input and save storage into a Unity scene.

game boy colorPRIMARY SYSTEM
History documentedPROJECT BEGAN
Open sourcePROJECT MODEL

WHY IT MATTERS

Why this project exists

UnityGB is intended to let Unity developers embed a Game Boy-compatible emulator inside Unity games or demos, using Mono/C# so the emulator can be exported to platforms supported by Unity. The README also cites interest in demos (Oculus Rift, Leap Motion) and notes it was an active alpha project with further planned features.

BEST FOR

What it does well

Provides an embeddable Game Boy emulation backend with example implementations for video, audio, input and save handling so developers can integrate ROM playback into Unity projects. Saves are stated as compatible with other emulators (e.g., VisualBoyAdvance) and the code aims for portability via Unity/Mono.

Wario Land 3 gameplay on Game Boy Color
Gameplay from Wario Land 3 on Game Boy Color.

The people behind UnityGB

History and status

The source repository (KonsomeJona/UnityGB) describes the project as alpha and notes multiple demonstration projects and ports (including a BlackBerry 10 build and web/demo links). The README lists supported features (Game Boy cartridges up to MBC5, input, sound, save files) and planned features including Game Boy Color compatibility, link cable, and Oculus Rift support. The repository shows a small commit history and is published under an MIT license; the README warns the emulator is not fully stable and needs optimization. Exact initial release year and commit dates were not determinable from the repository summary view consulted here.

What UnityGB supports

  • Game Boy (DMG) ROMs – cartridges up to MBC5
  • Audio output (via Unity audio plumbing)
  • Video output (texture/pixel array; 160×144)
  • Save file storage (custom ISaveMemory implementation; compatible with some other emulators per README)
  • Any platform Unity/Mono can export to (Windows, macOS, Linux, Android, iOS, WebGL) — README states portability via Unity/Mono
  • BlackBerry 10 (a UnityGB4BB10 build/demonstration is referenced)

Download and availability

OFFICIAL DOWNLOADS

Get UnityGB

Official source and releases are hosted on GitHub. Use the repository to clone or grab the published release assets from the Releases page; the README and included example Unity scene show how to integrate the package into your Unity project.

Get UnityGB ↗

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.

UnityGB setup guide

Setup note: Practical setup notes (based on the project's README and example files). UnityGB is a library intended to be embedded in a Unity project — you must import the package into a Unity project, provide implementations for video/audio/input/save interfaces, and load ROM bytes at runtime. The project is alpha: expect to debug integration and fix platform-specific issues.

  1. 1) Get the code or release: Clone the GitHub repository or download the package from the repository's Releases page. The repo includes an example Unity scene and example scripts (DefaultVideoOutput.cs, DefaultAudioOutput.cs, DefaultEmulatorManager.cs, DefaultSaveMemory.cs).
  2. 2) Open or create a Unity project: Create or open a Unity project that targets a platform you want to support and uses the Mono scripting backend (the README states UnityGB uses Mono/C#). Ensure your Unity editor version is compatible with the package's Unity project files; if you encounter ProjectSettings mismatch warnings, create a new project and import the Assets folder from the package.
  3. 3) Import UnityGB assets: Copy the Assets folder (and any ProjectSettings required) from the repository into your Unity project's Assets directory or use the package-import workflow you prefer. Add the provided example scene to your Scenes list so you can start from the demo wiring.
  4. 4) Implement or reuse video, audio, input and save interfaces: UnityGB exposes simple interfaces you must implement: IVideoOutput (SetSize, SetPixels), IAudioOutput (GetOutputSampleRate, GetSamplesAvailable, Play), and ISaveMemory (Save, Load). The repository includes DefaultVideoOutput, DefaultAudioOutput, DefaultEmulatorManager and DefaultSaveMemory as working examples — review these and adapt them to your project's UI, audio routing and storage backend (filesystem, PlayerPrefs, platform-specific storage).
  5. 5) Load ROM data: Load ROM binary data into a byte[] from disk, a streaming asset, or a web request, then call Emulator.LoadRom(bytes) (example in README and DefaultEmulatorManager.cs). The project does not include or distribute commercial ROMs or BIOS files — use only legally obtained ROMs you are permitted to run.
  6. 6) Run the emulator loop and feed input: Call Emulator.RunNextStep() from a MonoBehaviour (commonly the Update method) to advance emulation. Use Emulator.SetInput(EmulatorBase.Button, bool) to feed controller presses (example shows Button enum: Up, Down, Left, Right, A, B, Start, Select).
  7. 7) Audio integration: The example uses OnAudioFilterRead to output audio from Unity. If you use DefaultAudioOutput attach the provided component and add an AudioSource. Ensure the sample rate matches what DefaultAudioOutput reports (e.g., 44100 Hz) and handle latency/synchronization testing on your target platform.
  8. 8) Save and compatibility: Implement ISaveMemory.Save/Load to persist battery-backed saves. The README claims saves are compatible with VisualBoyAdvance and other emulators; validate on your own files. For cross-emulator compatibility, compare file formats and test with the specific titles you plan to use.

Software reminder: UnityGB is distributed as source under MIT (see repository). It is described as alpha and may have bugs, missing features, and performance issues. The project does not include ROMs, BIOS or other proprietary files — provide your own legal ROM dumps. Test on your target Unity version and platform.

Sources and further reading

Detailed guides and tutorials

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