Nintendo Gameboy emulator written in C++ (11).
The project was mainly done for educational reasons, to increase my knowledge over C++, software design and computer architecture.
Also for fun and nostalgic factors, as the gameboy was my first gaming console from my childhood.
This project does not aim for total emulation accuracy and features, I'm leaning more towards clean code and good software design.
That being said, it can still play most of the gameboy games.
SGBE is dependent on SDL2 library that handles the window, graphics, sound and input.
SGBE has been tested on Ubuntu:
SDL2 dependency
apt-get install libsdl2-dev
Fetch and build
git clone https://github.com/Dedis23/SGBE.git
cd SGBE
make all
usage:
SGBE --game <rom_file>
optional:
--logfile <file_name> Enable printing logs into a file
--silent Disable logs
Movement: ←, ↑, ↓, →
Controls: Z, X, Enter, RShift
Change palettes: F1
- Cycle accurate Gameboy CPU instructions emulation
- GPU, Timer and Joypad emulation
- ROM only and MBC1 cartridge types
- Color palettes swap
- MBC2, MBC3, MBC4, MBC5 cartridge types
- Audio support
- Emulator Save states
- Support for Gameboy Color games
- Tetris with DMG GB color palette
- Super Mario Land with a custom color palette
- The Ultimate GameBoy talk - video explains every component of the gameboy
- GameBoy CPU Manual - most of the cpu instructions taken from here
- GameBoy Programming Manual - correct cpu instructions timings taken from here
- Codeslinger - blog with guidelines about how to emulate the various components of the gameboy
- Pandocs - helped with info related to MMU, GPU and MBC cartridges
- BGB emulator - helped alot with debugging
- Blargg's Test ROMs - test roms