Skip to content

ArcticXWolf/AXWGameboy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AXWGameboy

You can try the emulator in your browser here: https://arcticxwolf.github.io/AXWGameboy/

This is a work-in-progress gameboy emulator written in golang. So far most of the regular gameboy features are implemented. CGB support is mostly done with a few bugs still existing.

It should be compatible (with some additional work) to macOS, FreeBSD, iOS, WebAssembly and Nintendo Switch™ thanks to cross plattform support by Ebiten and GoMobile. For compilation support please refer to those projects first. Main target plattform is webassembly.

Features

  • CPU emulation
    • z80 specifications
    • All opcodes with instruction timing
    • CGB double speed mode
  • Memory emulation
    • MBC1, MBC3, MBC5 mappers
    • Multiple ROM banks and RAM banks
    • CGB HDMA and GDMA transfers
  • PPU
    • Background layer
    • Window layer
    • Sprites
    • CGB Palettes
    • CGB TileAttributes
  • APU
    • All 4 channels with all features
    • Big parts are adapted from Goboy Emulator
    • Changed audio backend to the ebiten native one
  • Cheat support with GameShark & Gamegenie
  • Open-Source bootroms adapted from Sameboy Emulator

Try it online

A copy of the emulator running in your browser is available here.

Compilation

You might need to install some build dependencies. These are required by ebiten as our game engine. For further instructions (and install help for each OS) please refer to the ebiten documentation.

Afterwards you can build the bootroms with make bootroms and then use make all to build the emulator + start a webserver serving it on localhost:8008.

Keyboard bindings

Keyboard button Gameboy button
A A button
S B button
Space Start button
LeftAlt Select button
Arrow buttons
Keyboard button Misc
LeftShift Speedboost (3x Speed)
P Pause game
+ Increase volume
- Decrease volume
1 Toggle sound channel 1
2 Toggle sound channel 2
3 Toggle sound channel 3
4 Toggle sound channel 4
d Show debug view

Learning resources