Back to the showcase

Game Boy Core

Madru.GameBoy

Plugin v1.13.0 Gaming Desktop Command line Web Worker

A complete Game Boy and Game Boy Color emulator core in one small portable package: CPU, graphics, sound, save states, cheats and memory access for any Objo project.

by @madru

A complete Game Boy (DMG) and Game Boy Color emulator core, packaged as an Objo plugin by @madru. One small portable assembly contains the CPU, memory banking (including the MBC3 real-time clock), graphics, timer and sound hardware, with no native binaries to install: the same package runs identically on macOS, Windows and Linux, in desktop, command line, web and worker projects.

Highlights

  • The whole console, one class. Everything is exposed through Madru.GameBoy.GameBoyCore: load a ROM, run a frame, read the screen as a Picture, stream the frame's sound, save and load states, and read or write emulated memory live.
  • Game Boy Color support. Colour games run in full colour; original cartridges can be colourised with the Game Boy Color's twelve built-in palettes, chosen automatically by title or by hand.
  • Sound on every platform. TakeSamples() returns each frame's audio in the exact format of Objo's AudioOutput API, so a few lines of code give you sound on macOS, Windows and Linux. On macOS the core can also play directly through the system.
  • Tools welcome. Game Genie style ROM patches, GameShark style RAM writes, a full 64 KB memory snapshot you can search, and battery-backed cartridge RAM for in-game saves.
  • Sharp scaling built in. SetPixelScale() renders each Game Boy pixel as a crisp NxN block with no smoothing filter, so the screen stays pixel-perfect at any window size.

Using it in code

Var core As New Madru.GameBoy.GameBoyCore()
core.LoadRom(romData)
core.RunFrame()
Var screen As Picture = core.FramePicture()

For a complete reference implementation, see the Game Boy app in this showcase: its entire front end is ordinary Objo source talking to this plugin.

Requirements

  • Objo Studio 26.10.1 or newer, which covers both plugin support and the AudioOutput sound API.
  • The plugin is MIT licensed; the licence file ships inside the package.

Getting started

Download the .objopackage below, import it into Studio's Plugin Library, then select it in a project and call the API from ordinary Objo code. The Using Plugins guide covers installation, side-by-side versions and updating projects.

Adding Game Boy Core to a project

  1. Download the .objopackage file.
  2. Import it into Studio’s Plugin Library.
  3. Select the plugin in your project and use its API in code.
The Using Plugins guide covers installation, side-by-side versions and updating projects.

← Back to the showcase