This version is not compatible with save states of older versions.

New/Improved Features

  • The Cocoa and SDL ports can now rewind the game using a configurable key
  • The libretro port can now be compiled for Haiku and Wii U
  • The libretro port now has split-screen link cable emulation
  • The Cocoa and SDL ports can now under-clock the emulator for a “slow motion” effect
  • A new LCD screen filter for both the Cocoa and SDL ports
  • The new PPU and timing system introduced an up to 100% performance boost (More details in “Accuracy Improvements/Fixes”)
  • A new debugger operator – {...} can now be used to dereference a pointer to a 16-bit value
  • Fullscreen support in the SDL port
  • Improved audio in the Windows SDL port, on supported versions of Windows
  • The delete and unwatch debugger commands are now less strict
  • Added joystick hat support to the SDL port
  • The Cocoa port now uses Metal on supported Macs for better performance on laptops and less capable desktops
  • The Cocoa port now allows specifying a boot ROMs folder, so it can be used with the original boot ROMs
  • Improved the Cocoa debugger, it is now more responsive and no longer truncates output
  • The lcd debugger command now shows more accurate details about what the PPU is currently doing
  • The SDL port now has proper joypad configuration, similar to the Cocoa port
  • The SDL port now has more consistent joypad menu navigation, in comparison to keyboard navigation
  • Improved analog stick controls in both ports

Accuracy Improvements/Fixes

  • This version introduced major accuracy improvements, making SameBoy able to pass:
  • Improved emulation of analog characteristics of the APU for more accurate sound
  • Emulation of an open-bus-like quirk behavior in GDMA and HDMA
  • A whole new T-cycle accurate PPU:
    • Accurate interrupt timing and blocking
    • Sprite timings are now accurate
    • Pixel pushing timing is now accurate, for pixel-perfect emulation of Prehistorik Man
    • Has accurate memory and register access timings
  • Accurate emulation of several timing edge cases related to the halt instruction
  • Accurate emulation of a DMA bus quirk on the DMG
  • Complete and accurate emulation of the OAM bug, including cases not tested by Blagg’s tests
  • Fixed a regression in dmg_sound-2
  • Several accuracy fixes in SameBoy’s built-in boot ROMs
  • DMA now blocks PPU OAM access
  • Correct emulation of wiring both sets of buttons in JOYP
  • Fixed a bug where HDMA and GDMA were 4 times faster than they should have been
  • I/O register access conflicts are now emulated, including behavior differences between models
  • Improved accuracy of the halt bug
  • Correct emulation of the DMG STAT-write bug, which is just a specific case of I/O register access conflict
  • Emulated an APU glitch where in some edge cases a DIV-triggered APU event is skipped

Bug Fixes

  • Minor text adjustments in both the Cocoa and SDL ports
  • Fixed the Android build of the libretro port
  • The call instruction is now properly symbolicated
  • Fixed an issue that caused the Cocoa port to play a beep sound when certain buttons were pressed
  • Fixed several graphical issues with some of the filters
  • Worked around an SDL bug introduced in the macOS port of SDL
  • Fixed a bug where SameBoy froze after leaving turbo mode
  • Fixed a bug where the Windows port could not handle Unicode paths
  • Fixed a bug where the debugger wrote to the wrong CGB RAM bank
  • Fixed a bug where debugging symbols were not properly reloaded
  • Fixed save states in the SDL port
  • Fixed a bug where battery saves were not always saved in the SDL port
  • Fixed a bug where the SWAP instruction was incorrectly disassembled as RLC
  • Fixed a bug where the Cocoa memory viewer would play a beep sound and show a warning after resetting the emulator

Misc Internal Changes

  • API refinements
  • Minor improvements to the Windows build system
  • Documented several differences between DMG revisions and CGB revisions, and between DMG and MGB. SameBoy now explicitly targets DMG-CPU-B and CGB-CPU-E, and hopefully more revisions in the future
  • The official Windows binaries now use SDL 2.0.8