A Game Boy (Color) emulator written in Kotlin.
All currently available releases can be found here.
Or you can build the emulator yourself using Maven.
mvn clean package
The jar ends up in the ./target
directory.
The jar file can be run with the following command.
java -jar kotboy-{verson}.jar
A GUI will pop-up which is quite self-explanatory. Open a ROM using the Ctrl+O
shortcut.
By default the following key bindings are defined:
- Left - ←
- Right - →
- Up - ↑
- Down - ↓
- B - A
- A - S
- Start - Enter
- Select - Shift
- Game Boy CPU emulation
- Compatible with most Blargg's tests (sound not supported)
- Graphics using Swing frame
- Screen sizes: 1x1, 2x2, 3x3, 4x4, 5x5, 6x6 and full screen
- Joypad (from keyboard input)
- MBC1, MBC2, MBC3 and MBC5
- Battery saves
- Real time clock (for MBC3)
- Supports .zip, .gb, .gbc and .rom files
- Build with Travis CLI (including testing)
- Supports GBC and SGB
- Interrupt handling
- Bitmap border
- Support boot ROM
- Custom color palettes in DMG mode
The test ROMs from Blargg and Mooneye can be run inside the emulator.
They can be found in the src/test/resources/roms
directory.
The tests can also be ran from Maven.
mvn clean test -Pblargg-test
mvn clean test -Pmooneye-test
Any contributions you make are greatly appreciated. Contributions can be made using the following procedure.
- Fork the project
- Create a feature branch (git checkout -b feature/{feature-name})
- Commit your changes (git commit -m)
- Push commit to the branch (git push origin feature/{feature-name})
- Open a pull request
Distributed under the MIT License. See LICENSE for more information.
- Gameboy CPU (LR35902) instruction set
- Game Boy CPU Manual
- Pandocs
- BGB emulator for testing and debugging
- Coffee GB as inspiration