Skip to content

Latest commit

 

History

History
80 lines (62 loc) · 2.08 KB

File metadata and controls

80 lines (62 loc) · 2.08 KB

Gemu

Gemu is a neat little Game Boy emulator written in C as a personal exercise to learn the language.

Name idea blatantly stolen inspired by QEMU.

Building

If you have Nix, you already know what to do.

Otherwise, you'll need the following dependencies:

If you don't explicitly disable testing (via setting BUILD_TESTING=OFF), you'll also need these:

You can clone, compile and run the project with these commands:

git clone https://github.com/Grazen0/gemu.git
cd gemu
cmake . -B build
cmake --build build
build/gemu path/to/rom.gb

You can install Gemu on your system by choosing the install CMake target.

Progress

Note

Gemu does not support any mappers as of now, so only games with no mapper (like Tetris) will work.

  • CPU emulation
  • Custom boot ROM support
  • Graphics
    • Background tiles
    • Objects
    • Window drawing
    • Scrolling (still needs support for wrapping)
    • Proper OAM transfer timing
  • Timers
  • Mappers
    • MBC1
    • MBC2
    • MBC3
    • MBC4
    • MBC5
    • MBC6
    • MBC7
    • MMM01
    • M161
    • HuC1
    • HuC-3
    • Other (?)
  • Interrupts
    • VBlank
    • STAT
    • Timer
    • Serial
    • Joypad
  • Serial transfer
  • Audio
  • CGB support
  • Gamepad support (via SDL)

Some other notes:

  • The graphics system right now is very, very fragile. A rewrite would be well-suited.
  • Also, a major rework of the timing system should be coming soon™.

Credits