Skip to content
/ KotBoy Public

A Game Boy (Color) emulator written in Kotlin.

License

Notifications You must be signed in to change notification settings

coenvk/KotBoy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KotBoy

A Game Boy (Color) emulator written in Kotlin.

Build Status GitHub Maintenance GitHub last commit GitHub release (latest by date including pre-releases)

Installation

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.

Usage

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

Features

  • 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

Running tests

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

Contributing

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

License

Distributed under the MIT License. See LICENSE for more information.

Acknowledgements