A Game Boy Color and emulator with fast Link Cable and IR sensor support over TCP.
You can compile and run it on your linux machine or use it in your browser here (Note: the browser version does not have link cable support).
Game Boy Advance is also in early development: only some test roms can run.
- GameBoy and GameBoy Color emulator
- PPU implements FIFO rendering
- Audio with dynamic rate control
- Fast TCP Link Cable and IR sensor
- Support for MBC1, MBC1M, MBC2, MBC3, MBC30, MBC5, MBC7 and HuC1 cartridges
- Battery saves and savestates
- Game Boy Printer
- Game Boy Camera
- Supports keyboard and gamepad controllers
Various dependencies are needed to build the desktop app:
- libadwaita
- libmanette
- opengl
- openal
- zlib (compressed savestates)
- gstreamer (camera input for Game Boy Camera)
In addition to these dependencies, the following tools are needed to build the desktop app:
- make
- gcc
- rgbds
- imagemagick
# 1. Clone this repository
git clone https://github.com/mpostaire/gbmulator.git
# 2. cd into the cloned repository
cd gbmulator
# 3. Compile gbmulator
make
# 4. Install gbmulator
sudo make install
# To uninstall gbmulator, run the following command
sudo make uninstallAfter installation, GBmulator should be available from the app launcher of your desktop environment. You can also call it from the command line with the (optional) path of a rom as the first argument.
gbmulator path/to/rom.gbThe following table show the default keybindings (they can be changed in GBmulator's menus except those marked with a '*').
| Action | Key |
|---|---|
| UP | Up |
| DOWN | Down |
| LEFT | Left |
| RIGHT | Right |
| A | Numpad 0 |
| B | Numpad period |
| START | Numpad 1 |
| SELECT | Numpad 2 |
| *Load savesate 1 → 8 | F1 → F8 |
| *Create savesate 1 → 8 | Shift + F1 → F8 |
There is also support for gamepad controllers.
- Find out what are the accurate timings for the GB/GBC ppu pixel FIFO/fetcher (especially for corner cases)
- Early WIP GBA
- rewrite android port without SDL, also current android project doesn't build anymore
GB/GBC:
- https://gbdev.io/pandocs/
- http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf
- https://gekkio.fi/files/gb-docs/gbctr.pdf
- https://izik1.github.io/gbops/
- https://gbdev.gg8.se/wiki/
- https://www.youtube.com/watch?v=HyzD8pNlpwI
- https://github.com/AntonioND/giibiiadvance/blob/master/docs/TCAGBD.pdf
- https://pixelbits.16-b.it/GBEDG/ppu/
- https://shonumi.github.io/articles/art2.html
GBA:
- https://emudev.org/system_resources
- https://mgba.io/2015/06/27/cycle-counting-prefetch/
- https://problemkaputt.de/gbatek.htm#armcpureference
- https://github.com/nba-emu/NanoBoyAdvance/blob/master/src/nba/src/arm/handlers/arithmetic.inl#L84
- https://vision.gel.ulaval.ca/~jflalonde/cours/1001/h17/docs/arm-instructionset.pdf
- https://github.com/Normmatt/gba_bios/blob/master/asm/bios.s



