All Projects → trekawek → Coffee Gb

trekawek / Coffee Gb

Licence: mit
Gameboy emulator in Java 8.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Coffee Gb

Pyboy
Game Boy emulator written in Python
Stars: ✭ 3,326 (+249%)
Mutual labels:  gameboy, gameboy-emulator, emulator
Vba M Nx
WIP full featured port of VBA-M for Nintendo Switch
Stars: ✭ 11 (-98.85%)
Mutual labels:  gameboy, gameboy-emulator, emulator
goboy
Playing GameBoy Emulation in GoLang (ported from https://github.com/racerxdl/GameBoyEmulator)
Stars: ✭ 37 (-96.12%)
Mutual labels:  emulator, gameboy, gameboy-emulator
gameboi
An Original GameBoy emulator?
Stars: ✭ 20 (-97.9%)
Mutual labels:  emulator, gameboy, gameboy-emulator
Gearboy
Game Boy / Gameboy Color emulator for iOS, macOS, Raspberry Pi, Windows, Linux and RetroArch.
Stars: ✭ 528 (-44.6%)
Mutual labels:  gameboy, gameboy-emulator, emulator
dashboy
Gameboy Emulator implemented by pure Dart
Stars: ✭ 130 (-86.36%)
Mutual labels:  emulator, gameboy, gameboy-emulator
khedgb
Experiments in Game Boy emulation
Stars: ✭ 15 (-98.43%)
Mutual labels:  emulator, gameboy, gameboy-emulator
Binjgb
Gameboy emulator implemented in C
Stars: ✭ 222 (-76.71%)
Mutual labels:  gameboy, gameboy-emulator, emulator
Hades
🔥 A Nintendo Game Boy Advance emulator
Stars: ✭ 44 (-95.38%)
Mutual labels:  emulator, gameboy, gameboy-emulator
SkyEmu
Game Boy, Game Boy Color, and Game Boy Advanced Emulator
Stars: ✭ 59 (-93.81%)
Mutual labels:  emulator, gameboy, gameboy-emulator
Gameboy
🎮 Game Boy emulator written in Rust
Stars: ✭ 17 (-98.22%)
Mutual labels:  gameboy, gameboy-emulator, emulator
rusty-boy
Gameboy emulator in Rust
Stars: ✭ 20 (-97.9%)
Mutual labels:  emulator, gameboy, gameboy-emulator
jsGBC-core
jsGBC Core Emulator
Stars: ✭ 14 (-98.53%)
Mutual labels:  emulator, gameboy, gameboy-emulator
Elmboy
A Nintendo™ Game Boy™ Emulator written in Elm.
Stars: ✭ 285 (-70.09%)
Mutual labels:  gameboy, gameboy-emulator, emulator
Rustyboy
A Gameboy emulator written in Rust.
Stars: ✭ 224 (-76.5%)
Mutual labels:  gameboy, gameboy-emulator, emulator
worldwide
A toy GameBoy Color emulator written in golang.
Stars: ✭ 563 (-40.92%)
Mutual labels:  emulator, gameboy, gameboy-emulator
Gopher Boy
🎮 A Game Boy emulator written in Go
Stars: ✭ 206 (-78.38%)
Mutual labels:  gameboy, gameboy-emulator, emulator
Goboy
Multi-platform Nintendo Game Boy Color emulator written in Go
Stars: ✭ 2,403 (+152.15%)
Mutual labels:  gameboy, gameboy-emulator, emulator
awesome-emu-resources
A curated list of emulator development resources
Stars: ✭ 26 (-97.27%)
Mutual labels:  emulator, gameboy, gameboy-emulator
gameboyGO
Gameboy emulator in go
Stars: ✭ 24 (-97.48%)
Mutual labels:  emulator, gameboy, gameboy-emulator

Coffee GB

Build Status

Coffee GB is a Gameboy Color emulator written in Java 8. It's meant to be a development exercise. More info can be found in the blog post Why did I spend 1.5 months creating a Gameboy emulator?

Coffee GB running game

Building

The emulator can be build with Maven:

mvn clean package

The jar file will be available in the ./target directory.

Usage

Usage:
java -jar coffee-gb.jar [OPTIONS] ROM_FILE

Available options:
  -d  --force-dmg                Emulate classic GB (DMG) for universal ROMs
  -c  --force-cgb                Emulate color GB (CGB) for all ROMs
  -b  --use-bootstrap            Start with the GB bootstrap
  -db --disable-battery-saves    Disable battery saves
      --debug                    Enable debug console
      --headless                 Start in the headless mode

Play with , , , , Z, X, Enter, Backspace.

Features

  • Cycle-exact Gameboy CPU emulation. Each opcode is split into a few micro-operations (load value from memory, store it to register, etc.) and each micro-operation is run in a separate CPU cycle.
  • Quite compatible (all the Blargg's tests are passed, although some game still doesn't work)
  • GPU
  • Joypad
  • Timer
  • Sound
  • MBC1-5 support
  • Battery saves
  • Support for zipped ROMs
  • ROM-based compatibility tests run from Maven

Running Blargg's tests

The Blargg's test ROMs are used for testing the compatibility. Tests can be launched from Maven using appropriate profile:

mvn clean test -Ptest-blargg
mvn clean test -Ptest-blargg-individual # for running "single" tests providing more diagnostic info

They are also part of the Travis-based CI.

The tests output (normally displayed on the Gameboy screen) is redirected to the stdout:

cpu_instrs

01:ok  02:ok  03:ok  04:ok  05:ok  06:ok  07:ok  08:ok  09:ok  10:ok  11:ok

Passed all tests

Coffee GB passes all the tests:

  • cgb_sound
  • cpu_instrs
  • dmg_sound-2
  • halt_bug
  • instr_timing
  • interrupt_time
  • mem_timing-2
  • oam_bug-2

Mooneye tests

The Mooneye GB emulator comes with a great set of test ROMs. They can be used to test the Coffee GB as well. Use -Ptest-mooneye profile:

mvn clean test -Ptest-mooneye

Screenshots

Coffee GB running game Coffee GB running game Coffee GB running game Coffee GB running game Coffee GB running game Coffee GB running game Coffee GB running game Coffee GB running game Coffee GB running game Coffee GB running game

Key bindings

The default key bindings can be changed with the ~/.coffeegb.properties file. The file has following format:

btn_up=VK_UP
btn_down=VK_DOWN
btn_left=VK_LEFT
btn_right=VK_RIGHT
btn_a=VK_Z
btn_b=VK_X
btn_start=VK_ENTER
btn_select=VK_BACK_SPACE

The key list can be found in the KeyEvent JavaDoc.

Resources

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].