Go to file
Lior Halphon b4335e5934 Make the portaudio frontend sync to audio 2020-04-28 19:43:36 +03:00
.github Make failed builds easier to read 2020-04-27 23:29:26 +03:00
BootROMs Fixing inconsistent style 2020-04-24 20:37:57 +03:00
Cocoa Allow loading .RAM files 2020-04-25 23:09:08 +03:00
Core Even better hueristics 2020-04-25 23:26:17 +03:00
HexFiend Fix #243 2020-03-26 22:18:31 +02:00
Misc Use official register names 2020-04-09 02:36:27 +03:00
OpenDialog Add support to the ISX format, including symbols 2020-04-25 22:48:48 +03:00
QuickLook Add support to the ISX format, including symbols 2020-04-25 22:48:48 +03:00
SDL Make the portaudio frontend sync to audio 2020-04-28 19:43:36 +03:00
Shaders Fix CRT shader on OpenGL 2020-04-11 18:03:21 +03:00
Tester Fixing another duh 2020-04-25 17:22:43 +03:00
Windows Fixing inconsistent style 2020-04-24 20:37:57 +03:00
libretro Fix libretro build 2020-04-25 15:12:10 +03:00
.gitattributes Update .gitattributes 2019-04-19 14:49:09 +03:00
.gitignore Initial public commit 2016-04-01 21:27:01 +03:00
CHANGES.md Updated documents to refer to the new website 2017-02-05 21:50:46 +02:00
LICENSE Update version, update copyright year 2020-01-01 23:43:36 +02:00
Makefile Bye pkg-config 2020-04-27 23:36:02 +03:00
README.md Make portaudio the default driver for non-Windows system, update deps 2020-04-27 23:18:36 +03:00
build-faq.md Update docs 2020-04-25 14:45:52 +03:00

README.md

SameBoy

SameBoy is an open source Game Boy (DMG) and Game Boy Color (CGB) emulator, written in portable C. It has a native Cocoa frontend for macOS, an SDL frontend for other operating systems, and a libretro core. It also includes a text-based debugger with an expression evaluator. Visit the website.

Features

Features common to both Cocoa and SDL versions:

  • Supports Game Boy (DMG) and Game Boy Color (CGB) emulation
  • Lets you choose the model you want to emulate regardless of ROM
  • High quality 96KHz audio
  • Battery save support
  • Save states
  • Includes open source DMG and CGB boot ROMs:
    • Complete support for (and documentation of) all game-specific palettes in the CGB boot ROM, for accurate emulation of Game Boy games on a Game Boy Color
    • Supports manual palette selection with key combinations, with 4 additional new palettes (A + B + direction)
    • Supports palette selection in a CGB game, forcing it to run in 'paletted' DMG mode, if ROM allows doing so.
    • Support for games with a non-Nintendo logo in the header
    • No long animation in the DMG boot
  • Advanced text-based debugger with an expression evaluator, disassembler, conditional breakpoints, conditional watchpoints, backtracing and other features
  • Extremely high accuracy
  • Emulates PCM_12 and PCM_34 registers
  • T-cycle accurate emulation of LCD timing effects, supporting the Demotronic trick, Prehistorik Man, GBVideoPlayer and other tech demos
  • Real time clock emulation
  • Retina/High DPI display support, allowing a wider range of scaling factors without artifacts
  • Optional frame blending (Requires OpenGL 3.2 or later)
  • Several scaling algorithms (Including exclusive algorithms like OmniScale and Anti-aliased Scale2x; Requires OpenGL 3.2 or later or Metal)

Features currently supported only with the Cocoa version:

  • Native Cocoa interface, with support for all system-wide features, such as drag-and-drop and smart titlebars
  • Game Boy Camera support

Read more.

Compatibility

SameBoy passes all of blargg's test ROMs, all of mooneye-gb's tests (Some tests require the original boot ROMs), and all of Wilbert Pol's tests. SameBoy should work with most games and demos, please report any broken ROM. The latest results for SameBoy's automatic tester are available here.

Compilation

SameBoy requires the following tools and libraries to build:

  • clang
  • make
  • Cocoa frontend: OS X SDK and Xcode command line tools
  • SDL frontend: libsdl2, portaudio (Optional but recommended, set SDL_AUDIO_DRIVER to sdl to avoid)
  • rgbds, for boot ROM compilation

On Windows, SameBoy also requires:

  • Visual Studio (For headers, etc.)
  • GnuWin
  • Running vcvars32 before running make. Make sure all required tools and libraries are in %PATH% and %lib%, respectively.

To compile, simply run make. The targets are cocoa (Default for macOS), sdl (Default for everything else), libretro, bootroms and tester. You may also specify CONF=debug (default), CONF=release or CONF=native_release to control optimization and symbols. native_release is faster than release, but is optimized to the host's CPU and therefore is not portable. You may set BOOTROMS_DIR=... to a directory containing precompiled dmg_boot.bin and cgb_boot.bin files, otherwise the build system will compile and use SameBoy's own boot ROMs. When compiling the SDL frontend, SDL_AUDIO_DRIVER can be set to either sdl or portaudio; the default driver is sdl for Windows and portaudio for every other platform.

By default, the SDL frontend will look for resource files with a path relative to executable. If you are packaging SameBoy, you may wish to override this by setting the DATA_DIR variable during compilation to the target path of the directory containing all files (apart from the executable, that's not necessary) from the build/bin/SDL directory in the source tree. Make sure the variable ends with a / character.

SameBoy was compiled and tested on macOS, Ubuntu and 32-bit Windows 7.