Skip to content
A pure OCaml Gameboy emulator
Branch: master
Clone or download
Latest commit 2e9abc2 Jun 4, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
debugger initial import Jun 4, 2019
lib initial import Jun 4, 2019
pretty_opcodes initial import Jun 4, 2019
sdl initial import Jun 4, 2019
void initial import Jun 4, 2019
.gitignore initial import Jun 4, 2019 Update Jun 4, 2019
dune-project initial import Jun 4, 2019


A pure OCaml Gameboy emulator

This project is a work in progress Gameboy emulator written in pure OCaml. The goal is to provide a full Gameboy + Gameboy Color emulator with support for most cartridges kind out there, and experiment with a few different frontends.

Current progress

Currently most of the core logic is implemented, minus a few bugs, and simple games can be played. (Tetris and Tobu Tobu Girl are good examples) I'm currently working on fixing more core logic bugs causing some games to fail and will then proceed to more complicated games.

Currently implemented:

  • Gameboy CPU (cpu_instrs running successfully minus test 02)
  • Timers
  • GPU (Window, Background, Sprites)
  • MBC1 and MBC0 type cartridges
  • SDL and Notty frontends

On my todo list:

  • Audio processing unit
  • GBC and SGB modes
  • Javascript frontend

The codebase is as of now a bit of a mess, everything is slightly more complicated than it needs to be and the overall performances are not optimal. The interfaces will change dramatically in the future, I have never written an emulator, and the patterns to use were slightly blurry to me.


Debugger Notty debugger interface

Notty frontend (running Tetris) Notty frontend

SDL frontend (running Tobu Tobu Girl) SDL frontend

You can’t perform that action at this time.