/fynegameboy

🕹️ A basic gameboy emulator for desktop and mobile

Primary LanguageGoMIT LicenseMIT

FyneGameboy

🕹️ FyneGameboy is a Gameboy emulator GUI based on the GameBoy.Live project by HFO4. With this project you can play your favourite GameBoy games on desktop, mobile and beyond.

Installation

You can build the app using Go Version 1.12 or higher as shown below. On Debian based systems, the packages libasound2-dev and libgl1-mesa-dev must be installed.

git clone https://github.com/andydotxyz/fynegameboy.git
cd fynegameboy
go build main.go

Usage

Usage of gbdotlive:
  -d    Use Debugger in GUI mode
  -f FPS
        Set the FPS (default 60)
  -h    This help
  -m    Turn on sound (default true)

Running

Play a specified ROM file in GUI mode:

$ fynegameboy "Tetris.gb" 

Alternatively you can just run the application and play Dino's Offline Adventure. Many thanks to Brian Norman for permission to embed the game.

Mobile

This app also supports a touchscreen configuration for mobile devices. To build for a mobile device you need to use the fyne tool's package function:

$ go get fyne.io/fyne/v2/cmd/fyne
$ fyne package -os android -appID xyz.andy.fynegameboy
$ adb install fynegameboy

The Tetris game is not associated with this repository

Keyboard instruction

Keyboard Gameboy
Enter Start
Backspace Select
Up
Down
Left
Right
X A
Z B

Features & TODOs

  • CPU instruction emulation
  • Timer and interrupt
  • Support for ROM-only, MBC1, MBC2, MBC3 cartridge
  • Sound emulation
  • Graphics emulation
  • Cloud gaming
  • ROM debugger
  • Game saving & restore in cartridge level

There are still many TODOs:

  • Support save and load of emulator state

And we'd love to help upstream project with:

  • Support Gameboy Color emulation
  • Support for MBC4, MBC5, HuC1 cartridge
  • Sound simulation is incomplete, still got differences compared to the Gameboy real machine
  • Sprite priority issue (see Wario Land II and Metroid II: Return of Samus)