Skip to content

cbott/GoEmulate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoEmulate

Game Boy Emulator in Go

GoEmulate is an emulator for the original Game Boy (DMG) written entirely in Go, utilizing the pixel library for graphics and Oto for sound. The goal of the project is to reach basic emulator functionality with minimal code complexity, and very little focus on UI or useability.

Currently no support is planned for GBC/GBA emulation

Note: this is a learning project, and the first emulator I have written. The code was heavily influenced by all the projects listed below as development resources and I encourage you to use them directly.

Features

  • Run most ROM only, MBC1, MBC3, and MBC5 cartridge types that I have tried, though Donky Kong has issues
  • Save RAM to a ".ram" file
  • Optionally skip Boot ROM (default)
  • Save and recall CPU state
  • Speed Up / Fast-Forward

Sample Screenshots:

Pokemon Yellow Tetris

Emulator Controls

Key Action
X Game Boy "A" button
Z Game Boy "B" button
S Game Boy "Select" button
Enter Game Boy "Start" button
Arrow keys Game Boy Joypad directions
P Write contents of RAM to file
+ Increase emulation speed (Up to 10x)
- Decrease emulation speed
1,2,3 Save CPU state 1-3
Shift+1,2,3 Recall CPU state 1-3

Setup

Per pixel requirements https://github.com/gopxl/pixel#requirements

sudo apt install libgl1-mesa-dev
sudo apt install xorg-dev

To Do List

  • other cartridge types
  • more unit tests
  • better error handling
  • allow loading files from GUI or similar
  • implement serial

Completed Tasks

  • CPU save states
  • longer compare with goboy
  • access registers by enum
  • window scaling
  • MBC3 cartridge type
  • code cleanup/resolve todos
  • implement sound
  • RAM saving
  • reorganize into packages
  • fix display bug with window over background
  • Speed up
  • allow loading files from cmd line argument

Development Resources

Other emulators used for comparison

Game Boy docs:

About

Game Boy Emulator in GO

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages