This is a another Gameboy emulator written in C++. Try Live Demo!
All the core components are implemented, including the CPU, PPU, APU, and MBCs, with cycle-accurate timing(not highly accurate though).
Tested on Linux, but should work on other platforms.
- CMake
- GLFW
- Emscripten (WASM Build)
git clone --recursive https://github.com/flylai/gameboy.git
cd gameboy
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
# If you want to build to WASM, use the following command
# emcmake cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --parallel $(nproc)
./gameboy path/to/rom
Python3 is Required.
# Copy the `simple_server.py` to your build folder
cp tools/simple_server.py ./build
python3 simple_server.py
Open your browser and visit http://127.0.0.1:8000, enjoy it!
Key | Action |
---|---|
A | Left |
W | Up |
D | Right |
S | Down |
J | A |
K | B |
Enter | Start |
Space | Select |
The test report is generated by CI and can be found on test_report branch.
- https://gbdev.io/pandocs/
- https://gbdev.gg8.se/wiki/articles/Pan_Docs
- https://gbdev.io/gb-opcodes/optables/
- https://rgbds.gbdev.io/docs/v0.8.0/gbz80.7
- https://gb-archive.github.io/salvage/decoding_gbz80_opcodes/Decoding%20Gamboy%20Z80%20Opcodes.html
- https://gekkio.fi/files/gb-docs/gbctr.pdf
- https://nightshade256.github.io/2021/03/27/gb-sound-emulation.html
- https://www.reddit.com/r/EmuDev/comments/5gkwi5/comment/dat3zni/
- https://hacktix.github.io/GBEDG/