Skip to content
GameBoy/GameBoy Color emulator written in C++. A web version powered by emscripten is also available at
C++ C HTML CMake Makefile Objective-C Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

SenBoy Build Status

GameBoy (Color) emulator.

Emulation still has a few quirks (see issues), but compatibility is pretty good. This was developed as a side project and is by no means finished or polished.

A web version compiled to javascript via emscripten is available at



You will need a fairly recent compiler, meaning with C++14 and std::experimental::filesystem support. Compilation is manually being tested on Windows (MinGW) with g++ 6.1.0, but Linux with g++5 or more should be fine (see Travis CI). I have no way to test OSX, so if you know how to setup a OSX compiler fulfilling these constraints on Travis, please tell me!

You will need CMake and a copy of SFML 2.X (see Dependencies). On Windows, or if you used a non standard install path, you may want to set the CMake variables CMAKE_PREFIX_PATH to where are stored the SFML libraries and SFML_INCLUDE_DIR to the folder containing the SFML headers (using cmake-gui or the command line). Once this done, this should be enough:

cmake .


SenBoy now have a basic GUI! Yay! Bring it up (or hide it) by pressing Escape or Enter.

You can also pass a rom path via the command line to run it :

./SenBoy path/to/the/rom [options]
Option Effect
-d Start in debug mode
-b Skip Boot ROM
-s Disable sound
--dmg Force execution in original GameBoy mode
--cgb Force execution in GameBoy Color mode

Controls uses any connected Joystick, or the keyboard. There is no way to configure it ! Values are hard coded to match a Xbox360/XboxOne controller and the keyboard uses the following mapping:

Gameboy Button Keyboard Key
Select H
Start J
Up Up Arrow
Down Down Arrow
Left Left Arrow
Right Right Arrow
Turbo A V, X on Gamepad
Turbo B B, Y on Gamepad

When SenBoy is running, the following shortcuts are available:

Key Action
Escape/Enter Show/Hide GUI
Backspace Reset
Space Advance one instruction (in debug)
M Toggle Real Speed
RB (Joystick) Unlock framerate (hold)
D Toggle Debugging (Halt Execution)
L Advance one frame
N Clear all breakpoints
P Toggle Post-process (nothing)
NumPad + Volume Up
NumPad - Volume Down
Alt+Enter Toggle Fullscreen
Ctrl+S Save (saves RAM to disk)
Ctrl+Q Quit


  • Joypad interrupts: These are rarely used so I pretty much forgot to fix my implementation. What games uses them?
  • Gameboy Color Mode
    • DMG Games in CGB mode (Correct compatibility mode; some sprites disappears)
  • Application debugging (See Issues)
  • (Other Mappers? What popular games uses other mappers than MBC1/3/5?)
  • (Constant coding style...)


Blargg's cpu_instrs individual tests:

Test Status
01-special PASS
02-interrupts PASS
03-op sp,hl PASS
04-op r,imm PASS
05-op rp PASS
06-ld r,r PASS
07-jr,jp,call,ret,rst PASS
08-misc instrs PASS
09-op r,r PASS
10-bit ops PASS
11-op a,(hl) PASS
instr_timing PASS
01-read_timing FAIL
02-write_timing FAIL
03-modify_timing FAIL
interrupt_time PASS
halt_bug FAIL

SenBoy is NOT sub-instruction accurate.



  • for their awesome wiki.
  • Shay 'Blargg' Green for his tests roms, his Gb_Snd_Emu library and all his contributions to the emulation scene!
You can’t perform that action at this time.