Go to file
Lothar Serra Mari ca571c6fa5 SDL2: Update to SDL_OpenAudioDevice()
Instead of the legacy SDL_OpenAudio() method, we now use the newer
SDL_OpenAudioDevice() functions. This fixes audio in Windows if the SDL
version is 2.0.6 or higher.

It also allows us to use 48kHz audio for Windows (96kHz somewhat works
too, but since we don't get absolutely smooth audio with it, I'd stick
with 48kHz for now until we find a solution. 44.1Khz is available as
fallback for SDL 2.0.5 and lower. Yes, the 2.0.5 to 2.0.6 transition was
quite harsh in terms of Windows audio support...
2018-04-22 15:22:10 +02:00
BootROMs Fixed boot_hwio-C (for SameBoy’s boot). Closes #59 2018-04-03 20:10:11 +03:00
Cocoa Fixed a bug where 0:$dxxx reads/writes from the wrong bank in CGB mode. Made sure symbols are reset after reloading a sym file. 2018-04-02 19:57:39 +03:00
Core Added mechanism to handle MMIO read/write conflicts. Fixes #65 2018-04-14 17:57:00 +03:00
HexFiend Fixed several memory leaks (mostly in Cocoa port debugging utils) 2017-09-27 22:09:26 +03:00
libretro Refactor android jni makefiles (#17) 2018-04-10 21:42:04 -05:00
Misc Added built-in IO-Register symbols 2017-02-20 14:37:15 +02:00
QuickLook Updated Cocoa copyright 2018-03-30 17:06:39 +03:00
SDL SDL2: Update to SDL_OpenAudioDevice() 2018-04-22 15:22:10 +02:00
Shaders Fix shaders that break with specific pixel factors 2018-03-14 20:06:37 +01:00
Tester Got rid of -ICore 2017-10-13 00:02:02 +03:00
Windows Updated Windows copyright 2018-03-29 22:22:50 +03:00
.gitattributes Make Github not count HexFiend into the language stats. 2016-09-30 13:51:59 +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 to 0.10.1, update copyright to 2018 2018-02-03 00:50:38 +02:00
Makefile Maybe now? Affects #55 2018-03-29 23:11:53 +03:00
README.md Update README.md 2017-12-29 13:32:12 +02:00

SameBoy

SameBoy is an open source Gameboy (DMG) and Gameboy Color (CGB) emulator, written in portable C. It has a native Cocoa frontend for OS X, an experimental 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 Gameboy (DMG) and Gameboy 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 Gameboy games on a Gameboy 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
  • Emulates PCM_12 and PCM_34 registers
  • Emulates LCD timing effects, supporting the Demotronic trick, GBVideoPlayer and other tech demos
  • Extermely high accuracy
  • 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)

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
  • GameBoy Camera support

Read more.

Compatibility

SameBoy passes many of blargg's test ROMs, as well as 77 out of 78 of mooneye-gb's tests (Some tests require the original boot ROMs). 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 port: OS X SDK and Xcode command line tools
  • SDL port: SDL2.framework (OS X) or libsdl2 (Other platforms)
  • 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%, repsectively.

To compile, simply run make. The targets are cocoa (Default for OS X), 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.

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