GAME BOY COLOR EMULATOR
rubyboy
Rubyboy is an open-source Game Boy emulator implementation written in Ruby that runs Game Boy and Game Boy Color ROMs. It can be used as a command-line Ruby gem on desktop platforms and also has a WebAssembly demo that runs in the browser.

WHY IT MATTERS
Why Rubyboy exists
Rubyboy is an educational/experimental emulator project implemented in Ruby to explore Game Boy hardware in a high-level language, demonstrate portability (including a WASM/browser demo), and provide a usable command-line emulator/gem for developers and learners.
BEST FOR
Notable strengths
Readable Ruby implementation suitable for study; available as a Ruby gem for easy installation; explicit requirement/recommendation for modern Ruby (3.2+ and performance gain with Ruby 3.3 YJIT); SDL2-backed desktop runtime and a WebAssembly browser demo for quick testing.
The people behind rubyboy
History & current status
The project is hosted at the official GitHub repository (sacckey/rubyboy) and has an active commit history and issue tracker. The repository and project pages document ongoing development and a working WebAssembly demo. The codebase and README show the emulator is implemented in Ruby, packaged as a gem, and intended for learning and experimentation rather than being presented as a high-accuracy, production emulator. The repository indicates recent activity and lists installation and usage instructions in its README. The author also published writeups describing implementation details and plans (including CGB/color support and WASM/browser builds).
What rubyboy supports
- Game Boy (DMG) ROMs
- Game Boy Color (CGB) ROMs
- Keyboard input mapping via SDL2
- Browser demo via WebAssembly
Download and availability
OFFICIAL DOWNLOADS
Get rubyboy
Official releases and gem packaging are published from the project's GitHub repository. Prebuilt releases are available on the project's GitHub releases page; the emulator is also published as a Ruby gem (installable via gem install).
Get rubyboy ↗DOCUMENTATION
Official documentation
Read the official configuration, compatibility, and troubleshooting material before changing advanced options.
Read official documentation ↗rubyboy setup guide
Setup note: The following setup steps are drawn from the project's README and demo documentation. They describe how to run Rubyboy on a desktop (Ruby + SDL2) and how to try the browser demo. This guide assumes you will supply your own legally obtained ROM files; no commercial games, BIOS, or firmware are included with the project.
- 1) Verify requirements: Install Ruby 3.2.0 or newer. The README recommends Ruby 3.3.x with YJIT for better performance. Desktop usage requires SDL2 and the FFI Ruby gem (the project links to SDL2). Ensure you have a C compiler and development headers for SDL2 if your platform needs them (for example, libsdl2-dev on many Linux distributions).
- 2) Install dependencies and the rubyboy gem: If you use Bundler in a Ruby project: bundle add rubyboy. Otherwise install the runtime dependencies and gem directly: gem install ffi rubyboy. Installing ffi lets the gem bind to SDL2 for graphics and input. If the gem build needs native extensions, ensure your system has a working build toolchain (gcc/clang and make on Linux/macOS; MSYS2 or DevKit on Windows when using RubyInstaller).
- 3) Install SDL2 (platform specifics): Linux: use your package manager (for example on Debian/Ubuntu: sudo apt install libsdl2-2.0-0 libsdl2-dev). macOS: use Homebrew (brew install sdl2). Windows: install SDL2 development/runtime libraries appropriate for your Ruby environment (for RubyInstaller, use MSYS2 pacman to install mingw-w64-x86_64-SDL2). Confirm sdl2 is discoverable by native build tools.
- 4) Running from the command line: Run the emulator with: RUBYOPT=–yjit rubyboy <path-to-rom>. Using RUBYOPT=–yjit is optional but recommended on Ruby 3.3.x to use YJIT. The README shows default key mappings (W/A/S/D for directions, J/K for A/B, U/I for Select/Start).
- 5) Using the WebAssembly/browser demo: The project hosts a WASM-based demo on its GitHub Pages site. The demo allows trying a few included test ROMs in the browser; consult the project's demo page to upload a ROM or use the sample ROM selector. The demo demonstrates portability but may differ in performance and feature set from the desktop gem.
- 6) Practical notes and limitations: Rubyboy is an implementation-focused project meant for learning and experimentation. Expect performance limitations compared with native C/C++ emulators; the README recommends using newer Ruby with YJIT. The project does not include commercial ROMs, BIOS, or firmware; you must provide your own legally obtained ROM files. If you encounter build or runtime issues, consult the repository issues and the project's documentation for troubleshooting steps.
Software reminder: Do not distribute or request commercial ROMs, BIOS, or other copyrighted firmware. The emulator requires you to provide your own ROMs and any platform-specific runtime libraries (like SDL2).
Sources and further reading
Detailed guides and tutorials
Explore step-by-step guides for rubyboy as they are published.
Retro Replay Retro Gaming History, Reviews & Emulation