Skip to content

StefanScods/gb-gbc_emu

Repository files navigation

Red Panda GB/GBC Emulator

This is a Nintendo GameBoy / GameBoy Color emulator written in C++.

Features

  • Emulates Gameboy / Gameboy Color within a WxWidgets / SDL2 based application.
  • Uses the PortAudio API to play audio.
  • Support for memory controllers (a large portion of all games only use the following):
    • No Controller
    • MBC1
    • MBC3
    • MBC5
  • Supports emulated battery saves along with save states.
  • Support for MBC3's real-time battery-backed clock.
  • Visualizer for:
    • Cartridge Specifications
    • CPU State
    • Memory
    • Palettes
    • Tile Set
    • Background / Window Maps
  • Basic debugger with support for adding breakpoints within GB/GBC ROMs and stepping the emulated hardware for either a cycle or for a frame.

Controls

Start e
Select q
A enter
B rShift
Up w
Down s
Left a
Right d

Dependencies

To compile, you will need:

  • Visual Studio Community 2022
  • Within the VS Community installer, select and install Desktop development with C++
    • Ensure MSVC v143 - VS 2022 C++ x86/x64 build tools is selected. Note other versions may work but are untested.
  • Add C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin to the PATH environment variable.

Build and Run Instructions

VSCode

Simply run the run (release) task via the command palette.

CMD

Run the following commands:

msbuild gb-gbc_emu.sln /property:Configuration=Release /property:Platform=x64
./dlls/copyDLLs.bat Release 
./x64/Release/gb-gbc_emu.exe

Future Work / Known Issues

  • Fix minor graphics / audio bugs
    • The first scanline is slightly offset during some instances
  • Add some high pass audio filtering to the APU for cleaner audio
  • Overall optimizations / improvements
  • Add additional visualization windows
  • Add support for the more obscure memory controllers.
  • Kirby's Dream Land crashes after loading the first level.

Resources

About

Nintendo GameBoy / GameBoy Color emulator written in C++.

Resources

Stars

Watchers

Forks

Languages