Skip to content

allkern/Geebly

Repository files navigation

Geebly

A Game Boy/Color Emulator and Emulation API written in C++


Geebly running Dangan GBGeebly running the Gejmbåj demoGeebly running Super Mario Bros. DeluxeGeebly running Donkey Kong Country

Usage

Linux

geebly <settings> <file>

Windows

./geebly <settings> <file> or geebly <settings> <file>

Settings

There are different settings for every part of the emulation engine, Boot ROM/BIOS related settings are prefixed with a B, general emulation settings are prefixed with a E, etc. Common settings' shorthands usually are just one letter long though.

Here's all the settings currently present in the CLI:

Setting Shorthand Description Default
--master-volume -v Set the master volume (float or int)
  • 0.0 = Silence
  • 1.0 = Max
  • > 1.0 = Clipping
1.0
--mono -m Disable stereo sound No
--debug -d Launch with debugger Disabled
--boot -b Specify a boot ROM "dmg_boot.bin"
--scale -s Set the display scale 1
--no-patch-bios-checks/--patch-bios-checks -checks/-no-checks Patch Boot ROM checks No patches
--skip-bootrom -no-boot Skip the Boot ROM Don't skip
--vram-access-emulation/--no-vram-access-emulation vram-access/-no-vram-access Enable/Disable VRAM/OAM mode 2 & 3 inaccessibility emulation Enabled
--cgb-mode -cgb Change model to Game Boy Color Disabled
--enable-joyp-irq-delay/--disable-joyp-irq-delay -joyp-irq-delay/-no-joyp-irq-delay Enable/disable JOYP IRQ delay Enabled
--gui -g Launch GUI Enabled
--ntsc-codec -ntsc Enable NTSC codec Disabled
--sgb-mode -sgb Change model to Super Game Boy Disabled
--no-logs -n Disable logging Disabled
--blend-frames -i Enable frame blending/interpolation Enabled

Tests

Geebly passes 77 tests on Daid's shootout

Building

I've improved both Windows and Linux build systems a lot, and tested them in various systems. I made sure to cover all possible scenarios.

Linux

Building in Linux hosts with apt is really simple:

git clone https://github.com/Lycoder/Geebly
cd Geebly
make environment
make

make environment will set up the build environment, this includes cloning the various repositories the emulator depends on, these are ocornut/imgui, skaslev/gl3w, Lycoder/lgw and Lycoder/sdl_shader. It also installs sdl2-dev and sdl2-ttf-dev

Windows

Building in Windows hosts is a little bit more involved, and usually requires actions after the build is completed, its also really simple nonetheless.

Keep in mind the scripts provided require Powershell and script execution enabled (See this)

git clone https://github.com/Lycoder/Geebly
cd Geebly
./prepare-build
./build-win

Assuming you have a C++20-compatible compiler, it should build no problems. It might complain about -m64, in that case, your compiler doesn't support 64-bit builds, just remove the flag.

The emulator should compile fine, but you might run into some problems after its built.

Troubleshooting

Common issues:

  • The UI system requires the font Ubuntu Mono to be in the current directory to work, just download the font here, then copy the file UbuntuMono-Regular.ttf to Geebly's folder and rename it to "ubuntu-mono.ttf"
  • The program might not start, in that case, you're probably lacking DLLs inside the folder you're running the emulator from, just copy SDL2.dll and SDL2_ttf.dll to your folder. Keep in mind the prepare-build script already copies those two DLLs to the root Geebly folder, if its still complaining, you might be lacking some compiler DLLs, such as: libstdc++-7.dll, and similar.

Please open an issue or just PM me on Discord (Lycoder#8480) if you find any more issues