Version 0.16.2

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

Accuracy Improvements/Fixes

  • Improvements to the “Accurate” frame blending option; SameBoy now correctly tracks the “parity” of each frame, and uses a more realistic blending ratio
  • Support for bootleg ROMs that claim to have no RAM in the MBC field, but also declare a non-zero RAM size

Bug Fixes

  • Removed XAudio 2.7 support and replaced it with the redistributable version of XAudio 2.9, fixing various crashes on Windows 7
  • Fixed an issue with the menu graphics being glitched in the SDL frontend if SameBoy is set to display a border
  • Fixed the update dialog in the Cocoa frontend displaying the changelog in the wrong font on versions of macOS
  • Fixed Quick Look support being broken on macOS Sonoma
  • Fixed a bug where the Cocoa and iOS frontend would sometimes flicker when using the Metal renderer

Version 0.16.1

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • SameBoy on iOS will now warn the user if it hasn’t been correctly signed, which could prevent “Open With” from working with SameBoy

Accuracy Improvements/Fixes

  • Fixed a bug that made SameBoy think a WorkBoy was connected in some cases where a Game Boy Printer was connected

Bug Fixes

  • Fixed a bug that made SameBoy incompatible with macOS versions 10.9 to 10.15
  • Fixed several UI issues with the Printer Feed on macOS Big Sur and newer
  • Prevent some Cocoa toolbar items from overflowing into a menu item that would crash on click
  • Fixed a bug that prevented SameBoy from opening ROM files if VisualBoyAdvance was also installed on macOS
  • VSync is now automatically disabled in the SDL frontend if the screen refresh rate is under 60Hz, which could cause garbled audio on some machines
  • Fixed a bug where the SDL frontend would indefinitely hang if the current audio device became unavailable while using the XAudio 2.7 driver

Misc Internal Changes

  • The iOS Deb releases no longer contain local file ownership information
  • The SDL version used in the Windows release has been updated to 2.28.5

Version 0.16

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • A new, fully-featured iOS frontend:
    • Supports every iPhone, iPad and iPod Touch model running iOS 11 or newer (iOS 13 or newer is recommended)
    • Can be installed by side-loading (using AltStore or TrollStore) or using a jailbreak
    • Innovative and customizable touch controls, including support for analog rewind, fast-forward and slow motion
    • Save states
    • Scaling filters
    • In-game rumble support
    • Game Boy Camera support
    • Motion controls for supported games
    • Notifications for alarm-clock-enabled games
    • Advanced emulation settings
    • A lot more!
  • Reopening a ROM from Finder or other means now reloads the ROM in the Cocoa frontend
  • The SDL frontend received a small facelift
  • Cheats support in the SDL frontend
  • The SDL frontend can now pick a specific revision from CLI
  • A new reset command in the debugger, supporting 3 types of resets
  • Several new changes that improved performance:
    • Disabled inlining of several slow-path functions
    • Enabled the compiler’s fast-math flag
    • Prevention of loop unrolling for large, non-speed-critical loops, to improve utilization of instruction caches
    • Optimize the GUI code for size rather than speed to improve utilization of instruction caches
    • Work around Clang and GCC generating slow code for inline compile-time constants
  • Support for ranged breakpoints and watchpoints
  • Breakpoints and watchpoints are now identified by a unique ID rather than an address, deletion is now done by ID
  • The IO_ prefix for hardware registers in the debugger has been removed in favor of the more standard r prefix
  • The Cocoa memory viewer’s “Go to” field can now switch banks and address spaces
  • The Cocoa memory viewer now symbolicates its selection in the status bar
  • The debugger now supports backwards single stepping, if rewinding is enabled (experimental)
  • Sending SIGUSR1 to the SDL frontend now triggers a reset command
  • Improved controller assignment in the Cocoa frontend, especially when playing multiplayer SGB games or when emulating the link cable
  • Menu and keyboard shortcuts to scale windows up and down to the next integer factor in the Cocoa frontend
  • The Windows builds are now 64-bit, greatly improving performance on Windows

Accuracy Improvements/Fixes

  • Emulation of open bus behavior when reading disabled cartridge RAM
  • More accurate emulation of volume envelope locking on the pre-Color models, as well as CGB revisions older than D
  • Improved Printer timings, allowing the mini game in Hello Kitty Pocket Camera to be played
  • First-party Nintendo games will now have correct initial register values when using the built-in CGB and AGB boot ROMs
  • Improved accuracy of JOYP switching delay
  • Fixed a timing issue when aborting an object fetch using an LCDC write
  • Improvements to object fetching address calculation timings
  • Accurate emulation of PPU registers write conflicts in CGB double speed mode
  • Correct emulation of reading SVBK, fixes Flyeyes (unlicensed game)
  • Wired Switch Controllers now get automatic button mappings in the Cocoa frontend
  • Fixed a bug where GBS files were starting with a wrong value in the IE register, fixes several GBS files
  • Emulation of the OAM corruption glitch triggered by the jr instruction, as well as halt and stop modes
  • Correct read emulation of the BANK register while still in the boot ROM
  • Fixed a bug where accurate RTC emulation halted while SameBoy wasn’t running
  • Accurate emulation of many sweep-related glitches, including revision differences
  • Fixed a bug where HDMA5 was not correctly updated when disabling HBlank HDMA
  • Correct, revision-accurate emulation of reading from VRAM in the last cycle of Mode 3
  • Channel 3 is now correctly mixed when emulating a GBA

Bug Fixes

  • The “Step” icon in the Cocoa debugger was broken on non-Retina displays
  • Fixed a bug where certain temperature tint settings would tint too much
  • Banked breakpoints no longer trigger while executing the boot ROM
  • Fixed camera emulation using the wrong aspect ratio on some Macs
  • Fixed a bug that caused artifacts on the right and bottom edges of the Game Boy Camera
  • Fixed a bug that allowed rewinding across ROM switches in the SDL frontend
  • Fixed a bug that made rewinding try to rewind across model changes
  • Fixed a bug that made save states created on Windows incompatible with other operating systems, and vice versa
  • Several settings in both the SDL and Cocoa frontends had some unexpected defaults, which have been adjusted
  • GameShark cheats were not imported correctly
  • Fixed imported cheats not appearing in the Cocoa frontend
  • Fixed the built-in MGB boot ROM being unexpectedly larger than it should be
  • Prevented cases where the Cocoa debug console would remain open after closing a ROM
  • Fixed a bug that caused the Libretro core to crash in link mode
  • Fixed support for Xbox Wireless Controllers in the Cocoa frontend
  • Some constants in the LCD and CRT filters were not updated when the shaders switched to linear RGB
  • Fixed a bug where jump-to breakpoints disassembled the wrong address under certain scenarios
  • Fixed an edge case where jump-to breakpoints did not work as expected, or took a slow code path
  • Fixes a bug where certain macOS versions would fail to restore the previously opened windows due to a regression in Apple’s code
  • Fixed a bug that caused the VRAM viewer’s toolbar to not appear on macOS Sonoma
  • Fixed a bug where controllers did not always automatically connect or reconnect in the SDL frontend

Misc Internal Changes

  • New APIs to explicitly reset the rewind buffer
  • When building SameBoy in debug mode, assertions will now make sure functions are always called from a safe thread context
  • Fixed an issue that caused the Cocoa preferences window to not open when building on some Macs
  • Certain false positive warnings when building with GCC 9 are now avoided
  • SameBoy can now be built as a library, allowing to disable certain features as required
  • New APU APIs to allow detailed querying of its state
  • SameBoy now correctly refers to its license as the Expat License
  • Fixed an issue that prevented SameBoy to be built if the repository’s path included a space

Version 0.15.8

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • The button mapped to B, on both the keyboard and controllers, can now be used to return from menus in the SDL frontend

Bug Fixes

  • Fixed a bug that caused the new Cocoa debugger interface display glitched buttons on newer versions of macOS

Version 0.15.7

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • Debugger inputs in the Cocoa frontend now work if the emulator is paused rather than in debugger-stopped
  • The Cocoa debugger was given an improved interface with better contrast, and traditional Continue/Step Over/Step In/Step Out buttons
  • The debugger now has an interrupt command, in addition to the previously-available ^C key sequence
  • SameBoy is now properly categorized as a Game app in macOS’s Launchpad
  • The lcd command now displays the background shifter and fetcher states
  • The Cocoa frontend can now perform a “quick reset”, which is essentially equivalent to a reset via the cartridge reset pin, and retains RAM values, and other otherwise-uninitialized values
  • The Cocoa cheats window is now less strict about forcing a user to type $ when typing an address
  • The tick debugger command now has an optional keep argument, which prevents resetting the tick count
  • Joy-Cons are now fully supported in the Cocoa frontend:
    • This includes the usual pack of zero-configuration key-mappings, rumble support, player LEDs, and motion controls
    • Additionally, a dedicated Joy-Con arrangement sheet lets you combine and separate Joy-Cons and switch their orientation from horizontal to vertical

Accuracy Improvements/Fixes

  • Fixed a regression that made DMA restart timing inaccurate
  • Fixed a regression that caused ROMs that trigger one of the pixel insertion glitches to display incorrectly (Release builds) or trigger an assertion (Debug builds)
  • Fixed a different regression in a different pixel insertion glitch

Bug Fixes

  • Fixed a bug where the debugger finish command did not behave as expected in certain cases where the ROM manipulated the stack
  • Fixed a bug that caused the Cocoa cheat window to send debugger commands
  • Fixed a regression that caused the Cocoa cheat window to crash when attempting to add an invalid GameShark or GameGenie code
  • Fixed a bug that caused the Cocoa cheat window to crash while typing a cheat address on newer versions of macOS

Misc Internal Changes

  • SameBoy (and SameBoot) can now be built with RGBDS 0.6.x; support for RGBDS 0.4.x has been dropped
  • Fixed potential compilation warnings for incoming versions of Clang and GCC
  • Added the GB_quick_reset API

Version 0.15.6

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • All CGB revisions, as well as MGB, are now available in the libretro core
  • The debugger now guides users to use the help command
  • Both frontends can now selectively mute and unmute each of the 4 audio channels
  • Both frontends now support cartridge hot swapping

Accuracy Improvements/Fixes

  • Fixed a bug where the libretro core sometimes ran at an incorrect speed after switching models
  • Fixed a minor DMA regression

Bug Fixes

  • Fixed a bug where the Cocoa Memory Viewer “Go To” field did not work correctly and occasionally crashed

Version 0.15.5

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • Both frontends now include links to the debugger documentation and to the GitHub Sponsors page

Accuracy Improvements/Fixes

  • Fixed a bug where certain color correction modes were desaturating colors in an unbalanced manner
  • Accurate emulation of the first-frame-behavior while emulating the Game Boy Color and Game Boy Advance; fixes white flashes while playing games developed by THQ
  • More accurate emulation of the square channels sample repeat glitch, fixing certain audio pops in LSDj and various games while using a vibrato effect

Bug Fixes

  • Fixed a bug introduced in the previous release that introduced several issues in the Cocoa version, including:
    • The memory viewer crashing under some conditions
    • Attempting to save state returned an error, despite saving being completed successfully
  • Fixed a bug where MBC state was not properly reset, fixing bugs resulting in some games not booting correctly if they were loaded after certain other games in the SDL frontend, libretro, and other 3rd-party frontends

Misc Internal Changes

  • New memory management APIs for better integration of SameBoy as a library

Version 0.15.4

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • The “Emulate Hardware” and “Preserve Brightness” color correction modes are now called “Modern – Balanced” and “Modern – Boost Contrast”, respectively, to better represent them in the context other modes that came after their introduction
  • A new “Modern – Accurate” color correction mode was added. This new mode preserves the modern saturation and contrast of “Modern – Balanced” but further improves on color balancing accuracy
  • The Cocoa preferences window now includes help buttons that describe the different Color Correction and High-Pass Filter modes
  • Major improvements to the performance of the Cocoa memory viewer
  • The Anti-aliased Scale4x filter has been revised and improved

Accuracy Improvements/Fixes

  • A color correction rounding error was fixed

Bug Fixes

  • Fixed potential visual artifacts when using certain scaling filters on some combinations of resolutions and devices
  • Fixed a bug that made SameBoy crash on launch on older versions of macOS if an update was available
  • Fixed a bug where the Cocoa memory viewer temporarily showed wrong addresses
  • The SDL will no longer get stuck (unless “Skip” is used) when trying to use certain joypads’ D-pad to configure the directional keys
  • Attempt to work around an X11 bug that caused file and directory selection dialogs to ignore mouse keys

Misc Internal Changes

  • The Cocoa memory viewer no longer requires access to internal structures

Version 0.15.3

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

Accuracy Improvements/Fixes

  • Improvements to all color correction modes

Bug Fixes

  • Fixed a race condition that could cause the Memory Viewer to crash if used without pausing the ROM first
  • Fixed a bug that caused SameBoy to incorrectly warn about saves being unwritable
  • Fixed a bug that caused SameBoy on Windows to not warn about saves being unwritable
  • Fixed a bug that caused the SDL port to not respect the joypads-in-background setting at startup

Version 0.15.2

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • A setting to allow joypad input when SameBoy is not in focus was added to both frontends
  • The SDL GUI now follows the user-configured Game Boy palette
  • The SDL frontend now supports Game Boy palettes exported from the Cocoa port, and now includes 7 new palettes to choose from
  • The scrollbar in the SDL frontend is now draggable
  • The SDL GUI now correctly allows using the user-configured buttons in its menu
  • An OpenAL audio driver is now available for Linux and other Unix users in the SDL port
  • Up to two joypad hotkeys may now be configured to perform actions such as pausing and saving states in both frontends
  • The softbreak debugger command was given a better description
  • Both frontends will now warn you if progress cannot be saved when loading a ROM
  • Game Boy Player (using CPU AGB A) is now a selectable Game Boy Advance revision

Accuracy Improvements/Fixes

  • Emulated a glitch where a misconfigured window can insert pixels between tiles on models prior to the Game Boy Color, fixes Star Trek - 25th Anniversary
  • Fixed a window-related regression, affecting edge cases where WX=0
  • Accuracy improvements to emulation of the Game Boy Camera
  • Accurate emulation of JOYP switching delay on the DMG
  • Realistic emulation of button bouncing while keeping lag to a minimum

Bug Fixes

  • Fixed a bug where SameBoy crashed on Windows 7 when using turbo while the XAudio driver was in use

Misc Internal Changes

  • Fixed a potential memory corruption when SameBoy is used as a library in a C++ project

Version 0.15.1

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • Improvements to the updater mechanism in the Cocoa port, should handle both Gatekeeper and write permissions better
  • The SDL frontend now allows switching between audio drivers, rather than defaulting to the “best” supported driver
  • The Windows XAudio2 drivers now use the system’s default sample rate, which prevents audio resampling and improves the audio quality

Bug Fixes

  • Fixed SameBoy crashing on launch on Windows 8 and Windows 8.1 machines

Misc Internal Changes

  • Fix code signing when locally building release builds of SameBoy on ARM-based Macs

Version 0.15

This version is backwards compatible with save states from SameBoy 0.14.3 and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • Improved UI for the VRAM Viewer’s palette and object views
  • Customizable palettes for monochrome models in the Cocoa frontend
    • Bundled with several new palettes as examples
  • The bundled register names symbol file now correctly names several undocumented registers
  • Improved performance by better utilizing Link-Time Optimizations
  • The Memory Viewer, as well as the debugger examine command, no longer trigger side effects when reading from memory
  • The Develop menu in the Cocoa frontend now lists options to hide or show the background or object “layers”
  • Introducing PPU “fast paths”, improving performance by up to 34% with no accuracy losses
  • Removed the use of slow floating point arithmetics in the APU code to improve performance
  • Introducing lazy APU output generation, improving performance by up to 17%
  • Link-Time Optimizations are now enabled for Windows build, significantly improving performance on Windows
  • A new dma debugger command
  • Improved the performance and responsiveness of the Cocoa VRAM Viewer and Memory Viewer
  • New icon, minor visual refresh across both the Cocoa and SDL frontends
  • Cartridge Instances now allow having multiple saves for the same ROM file in the Cocoa frontend
  • The debugger apu commands now display a single channel
  • Audio recording is now available in both the Cocoa and SDL frontends
  • The SDL frontend now uses XAudio2 on Windows, when available
  • The more common rX hardware symbol naming scheme now replaces the IO_X scheme; the latter remains supported
  • General code optimizations for overall performance improvements

Accuracy Improvements/Fixes

  • The Game Boy Pocket/Light is now available for emulation
  • Every CGB revision is now available for emulation, adding CGB revisions 0, A, B and D
    • An option to select the CGB revision is now available in the SDL port
  • Added MBC7 support
    • The mouse, as well as a joystick, can be used for motion controls
    • On the Cocoa frontend, a supported controller’s motion controls can be used as well
  • Accurate timing of clearing bits in the IF register
  • Improved accuracy of LY change timings
  • Improved accuracy of the LY=LYC condition in revisions prior to CGB-D
  • Improved emulation of a glitch that makes channel 3 use the CPU’s address bus as an index to the wave sample buffer
  • Fixed an incorrectly emulated theorized glitch where writing to VRAM in certain timings would corrupt data
  • Improved emulation of the TILE_SEL glitch
  • Major improvements to DMA, HDMA, and GDMA, including timings, revision differences, interaction with halt/stop, and all sorts of bus conflicts
    • This allows pixel-perfect emulation of certain demos, such as It Came from Planet Zilog
  • Improved IR modelling, fixes Gen 2 Pokémon Mystery Gift
  • Added MMM01 support, including Mani carts
  • Improved emulation of channel 1/2 “zombie stepping”
  • Improved serial accuracy
  • Correct emulation of how SCX prolongs mode 3
    • Including emulation of “SCX banging”, which can disrupt the PPU state machine and, on a real device, damage the LCD
  • Improved emulation of object timings where X=0
  • Fixed a regression where MBC5’s initial ROM bank was not 1
  • Improved emulation of the Game Boy Camera MBC
  • Improved HuC-1 emulation, fixes a Robopon Japanese Prototype ROM

Bug Fixes

  • Fixed a bug in the Cocoa frontend where screenshots with filters applied would come out blurry on Retina displays
  • Fix several instabilities in the Cocoa audio driver
  • Fixed a bug where certain writes, when emulating CGB-C, would corrupt the emulator state
  • Fixed a bug where the SDL fronted did not correctly load the palette setting
  • Fixed a bug where the debugger undo command was available while not stopped
  • Fixed GDMA being used incorrectly in SameBoot
  • Fixed a bug where the obscured object indicator did not function correctly in the VRAM Viewer’s object view
  • Fixed the Preserve Waveforms setting, now it behaves as intended
  • Fixed a bug where closing an instance connected via serial to another instance would not behave correctly in the Cocoa frontend
  • Fixed SDL crashes on certain Linux systems
  • Fixed UI issues on OS X Mavericks
  • Fixed achievement supports in the Libretro frontend
  • Fixed the 16x16 cartridge icon in both Cocoa and FreeDesktop
  • Fixes audio glitches during the SGB jingle
  • Visual fixes for the GBS player on macOS Big Sur and newer

Misc Internal Changes

  • Improvements to the input hints API
  • Added safe memory read API
  • New memory write callback API
  • New API to determine DMG-mode CGB
  • Improved APIs to handle input
  • New execution callback API
  • New LCD line callback API
  • An API for adjusting the RTC speed, for TAS verifications
  • An API for detecting lag frames
  • The direct access API now supports accessing the CPU registers
  • An API for allowing illegal directional inputs
  • General preparation for future support of different AGB revisions

Version 0.14.7

This version is backwards compatible with save states from SameBoy 0.11.x and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • The Cocoa frontend now has a built-in screenshot functionality
  • The Cocoa palette viewer now uses a monospaced font

Accuracy Improvements/Fixes

  • Fixed incorrect emulation of the SVBK register
    • This fixed BESS compatibility issues between SameBoy and other emulators when importing save states of non-Color games on a Game Boy Color and using the original boot ROMs
    • This also fixes RAM not being properly randomized in DMG games running on a Game Boy Color when using the original boot ROMs

Bug Fixes

  • Improvements to stability and security when loading save states
  • The SDL port now detects ANSI-incompatible Windows consoles and reverts to the previous behavior

Version 0.14.6

This version is backwards compatible with save states from SameBoy 0.11.x and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • Scrolling is now smooth when running the SDL port on macOS
  • The SDL port’s debugger now has a readline-like interface; featuring history, search, auto-complete, text formatting, and improved asynchronous input
    • This also introduces asynchronous debugging to the Windows version
  • Minor UI improvements on Big Sur

Accuracy Improvements/Fixes

  • Fixed a bug where NR32 was treated as the wrong value after an APU reset
  • Writes to wave RAM are now blocked, as expected, when emulating a Game Boy Advance
  • Fixed the Game Boy Color and Advance boot ROM not properly initializing wave RAM
  • Improved accuracy of mid-line SCX writes, fixes Infinity
  • ld sp, hl now triggers an OAM corruption on affected models
  • Improved emulation of Super Game Boy multiplayer, fixes several games that were not responding to inputs
  • Fixed the Super Game Boy ATTR_SET command not working correctly, fixing several mis-colored SGB games
  • Fixed inaccurate Super Game Boy border fade timing, which caused some games to have corrupt borders
  • Fixed inaccurate Super Game Boy graphic transfers, which caused some games to have corrupt borders
  • Fixed Super Game Boy rendering of unused tiles, which caused some games to obscure the Game Boy viewport entirely
  • Fixed a bug that caused 7-part Super Game Boy commands to lock SGB features, effectively freezing some games on blank screens
  • Several timing improvements to the Super Game Boy
  • Fixed a mistyped condition that caused a timer glitch to be incorrectly emulated
  • Accurate emulation of how the wave channel behaves on restart
  • Mostly complete emulation of an APU glitch where channel 3 could read from wave RAM while inactive using the CPU’s main address bus on models prior to the Game Boy Advance
  • The Game Boy Color and Advance boot ROM animation had its timings slightly altered to better match the original boot ROMs

Bug Fixes

  • A typo was fixed in the debugger mbc command
  • Fixed a crash in the SDL port that could happen when swapping ROMs
  • Handling of tiny (Less than 32KB) ROMs is now more consistent
  • Fixed a bug in the SDL port that flipped the controller left and right keys in the menu
  • Resetting a game after loading a save state from a different CPU revision now resets the CPU revision to the user-selected revision on the Cocoa port

Misc Internal Changes

  • Fixed an internal struct issue that could have lead to future compatibility issues
  • The automatic tester now supports Super Game Boy

Version 0.14.5

This version is backwards compatible with save states from SameBoy 0.11.x and newer, as well as save states from any BESS compliant emulator. Outside of macOS, this version is identical to 0.14.4 other than the version number.

Bug Fixes

  • Fixed a bug that sometimes prevented opening GBS files

Version 0.14.4

This version is backwards compatible with save states from SameBoy 0.11.x and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • GBS support updated to support common non-standard formats, as well as ugetab’s GBS extensions
  • ROM and GBS loading errors and handled better in the Cocoa frontend
  • SameBoy is now better categorized on Linux desktops
  • The Cocoa frontend now includes an optional update checker and installer
  • Improved support for running without OpenGL in the SDL frontend, added command-line flag to disable OpenGL
  • SameBoy will now attempt to load .snX save states (used by other emulators such as BGB) if a .sX save state is not found
  • The Cocoa frontend now has volume control
  • The Cocoa and SDL frontends now include an optional speedrun-friendly OSD
  • DualSense controllers now have first-tier support in the Cocoa frontend, with rumble, LED, and analog turbo/slow-motion support, in both wireless and USB modes
  • The SDL frontend now supports the -s/–stop-debugger command line flag, which starts SameBoy with a stopped debugged on the first instruction
  • A new realistic low contrast color correction mode, “Harsh Reality”, was added
  • Improved the ticks debugger command with more detailed output
  • Improved warnings when entering PPU or APU odd-modes
  • Major improvements to JoyKit, which should allow previously broken controllers such as Xbox controllers or 8BitDo controllers to work in the Cocoa frontend
  • The libretro frontend has been updated to the newer options API, which majorly improves core option screens in RetroArch and other libretro interfaces

Accuracy Improvements/Fixes

  • Improved accuracy of RTC latching
  • Fixed a bug that prevented STAT interrupt blocking from functioning correctly in the transition to VBlank while the OAM interrupt was disabled
  • Disabled an attempt to improve audio accuracy that resulted in audio regressions in several games
  • Improved T-cycle accuracy of VBlank
  • Major improvements to emulation of the STOP instruction and speed switching
  • MBC5’s RAM enable register is now correctly emulated as an 8-bit register
  • Improvements to several edge cases of the OAM corruption bug
  • Fixed an issue where several DMG games would boot with incorrect palettes when using SameBoy’s built-in boot ROMs

Bug Fixes

  • Fixed a bug where the ‘O’ key could not be mapped in the SDL frontend
  • Corrected the default mapping for DualShock 4 and DualSense controllers in the Cocoa frontend
  • Fixed a bug that prevented using the Switch Pro Controller in USB mode in the Cocoa frontend
  • Fixed a bug where Cocoa’s VRAM viewer could appear blurry

Misc Internal Changes

  • The GBS APIs now allow loading from a buffer
  • Redundant MBC data removed from BESS save states

Version 0.14.3

This version is backwards compatible with save states from SameBoy 0.11.x and newer, as well as save states from any BESS compliant emulator

New/Improved Features

  • GBS APIs available in the core
  • Built-in GBS player in the Cocoa frontend
    • Like standard ROMs in SameBoy, it supports debugging and selection of specific models/revisions
  • Support for emulation of the homebrew TPP1 MBC
  • Save states can be dropped into emulator windows to load them in both the Cocoa and SDL frontends
  • SameBoy now uses the BESS (Best Effort Save State) format within its save states, allowing interoperability between big and little endian save states, future versions of SameBoy, as well as other BESS compliant emulators (Such as the incoming releases of BGB and Emulicious)

Accuracy Improvements/Fixes

  • Fixed time syncing issues when turning the LCD off and on, fixes timing issues in Link’s Awakening
  • Fixed a bug where an invalid SGB command would be ignored, while the actual SGB firmware would still process it in some manner, fixes Donkey Kong Land

Bug Fixes

  • Better handling of more edge cases in the Linux build system
  • Fixed a memory leak in the SDL and libretro frontends when loading a second ROM
  • Fixed several potential crashes involving cheat codes
  • Fixed a bug where the screen would temporarily freeze in the Cocoa frontend if certain controllers are rumbling in specific strengths

Version 0.14.2

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • FreeDesktop installations now register and associate .ISX files

Accuracy Improvements/Fixes

  • Fixed an audio regression where some games would play audio one octave lower when emulating a DMG

Bug Fixes

  • Fixed a bug where certain Cocoa windows would incorrectly remain open after closing a ROM

Version 0.14.1

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • Improvements to installation and packaging support on Linux, BSD and other FreeDesktop environments

Accuracy Improvements/Fixes

  • Fixed a sweep regression when emulating DMG, SGB or CGB-C

Bug Fixes

  • Fixed various potential crashes when using symbol files
  • Fixed a bug where certain symbols would never be used with an offset

Version 0.14

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • Emulation of the unreleased Workboy accessory in the Cocoa port
  • Emulation of Game Link Cable and infrared cross-game communication in the Cocoa port
  • Multiplayer support in the Libretro core now includes infrared support
  • The debugger now supports the undo command, which will revert the most recent state-modifying command
  • The automatic tester can now optionally output TGA files instead of BMP files
  • The debugger will now issue a warning when a ROM triggers PPU odd-mode
  • Improved support to non-QWERTY, Latin keyboard layouts in the SDL port
  • Simulation of an ambient light’s effect on the non-backlit screens of the Game Boy, with user-controlled ambient light color temperature
  • Improved menu scrolling in the SDL frontend
  • Improved mouse support in the SDL frontend, with mouse wheel scrolling and a visual scrollbar
  • The SDL port can now select a boot ROMs folder
  • The escape button now returns to the previous menu in the SDL port instead of closing it completely
  • Improved noise when emulating the Game Boy Camera on frontends without webcam support
  • The SDL port will exit cleanly and report an error if it fails to initialize
  • The automatic tester can now optionally create battery save files
  • Support of two Real Time Clock emulation modes:
    • Sync to system clock (Not affected by turbo, slow motion, pausing, etc.)
    • Accurate (Affected by the mentioned above)
  • The automation uses the new accurate RTC mode for stable results across runs
  • Refinements to the icon
  • Linux, BSD and other FreeDesktop users can now install SameBoy as both a command line utility and a GUI app by running make install

Accuracy Improvements/Fixes

  • Emulation of a scenario where an interrupt might trigger OAM corruption
  • Emulation of CGB-mode TILE_SEL mixing
  • Correct emulation of wave RAM reads when emulating a Game Boy Advance
  • Accuracy improvements to infrared
  • Accuracy improvements to the window
  • Major APU improvements, with correct emulation of countless edge cases and newly discovered quirks:
    • Complete rewrite of Channel 1’s sweep envelope
    • Complete rewrite of Channel 4’s noise generation, especially mid-pulse writes to NR43
    • Complete rewrite of the volume envelopes, including “Zombie Mode” and related quirks
  • The state of the NRx1 registers are now correctly preserved when emulating models prior to Game Boy Color
  • Emulation of a quirk where writes to NR44 might be delayed on models prior to Game Boy Color
  • Improved and more accurate color correction
  • Fixed a regression and improved the accuracy of speed switching, fixed a bug where odd-mode avoidance did not work correctly
  • Improved timing of the STOP instruction
  • Optional emulation of audio interference from the Game Boy SoC, with a user-controlled slider representing interference level
  • Emulation of an APU quirk where triggering Channels 1 and 2 might advance the duty cycle in certain cases in CGB-E (and CGB-D, currently unsupported)
  • Correct emulation of the differences between revisions when it comes to writes to NRx2 (“Zombie Mode”)
  • Accuracy improvements to RTC emulation
  • Minor improvements to MBC3 emulation
  • Prevent the printer from deadlocking if it was terminated during the transmission of a byte

Bug Fixes

  • Fixed a rare potential crash when loading symbol files
  • Fixed a bug where the Cocoa port would display wrong, dark, colors when disabling frame blending
  • Fixed a bug where the SDL and libretro ports would not update the game’s border when switching games and emulating a model other than the SGB
  • Fixed cases where the audio thread would deadlock the Cocoa frontend
  • Fixed a bug where changing the rewind length in the SDL port didn’t take effect until restarting

Version 0.13.6

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • Prevent SameBoy from asking for notification permissions until that feature is needed by an HuC-3 game
  • Improved user interface on macOS Big Sur
  • The SDL frontend now has the ability change the default window size

Bug Fixes

  • Fixed a bug that caused the Quick Look previews to include a border on macOS Big Sur
  • Fixed a bug where the RTC might drift when loading older saves or states, or when pausing SameBoy for a long time

Version 0.13.5

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

Bug Fixes

  • Fixed major regression introduced in 0.13.4 that prevented saving progress in games and caused several other issues

Version 0.13.4

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • Native support for ARM-based Macs (Experimental)
  • Improved the loading time of battery saves with an RTC time set to the far past

Bug Fixes

  • Fixed a spelling mistake in the debugger
  • Fix several major regressions affecting games that use a real time clock

Version 0.13.3

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • The scaling filters were updated to use gamma-corrected color mixing, improving the quality of all shaders, especially the LCD and CRT shaders.

Bug Fixes

  • Fixed a regression in the CGB and AGB boot ROMs where wrong palettes were chosen for Nintendo DMG games.

Version 0.13.2

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • The Cocoa debugger now has tab completion
  • Conflicting key mappings are now highlighted in red in the Cocoa button configuration dialog
  • Improved Dark Mode appearance in the Cocoa port
  • Better, more system native appearance for the Cocoa memory viewer
  • Improved Printer Feed window in the Cocoa port, now with an option to print with an actual printer

Bug Fixes

  • Fixed a bug in the Libretro frontend that prevented certain achievements from triggering
  • Fixed a bug where the save state format effectively used by the Windows build was not following the intended format
  • The non-Windows builds can now read pre-0.13.2 Windows save states and vice versa
  • Fixed a minor compatibility issue between save states created on 32-bit machines and ones created on 64-bit machines
  • Fixed a potential crash when loading certain save states while a printer is connected in the Cocoa port

Version 0.13.1

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

Bug Fixes

  • Fixed a potential memory corruption when loading certain malformed ROMs
  • Improved stability when loading corrupt preference files in the SDL port

Version 0.13

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • When emulating a Game Boy, you can now select out of 4 different palettes
  • New Monochrome LCD scaling filter
  • It is now possible to display Super Game Boy, or a built-in default border, even when emulating different models
  • Improvements to the built-in boot ROMs; the DMG boot ROM has a new animation, and the CGB boot ROM now features an anti-aliased logo
  • Gamma correction added to the CRT scaling filter
  • Add “Reduce Contrast” as an additional color correction mode
  • Optional more accurate frame blending mode, emulating the scanline-like appearance of actual Game Boy displays
  • The next debugger command now skips over HALT
  • The registers debugger command now display IME as well
  • Added volume control to the SDL frontend
  • The SDL frontend will now load and save “prefs.bin” relative to the binary if such file exists
  • The sidebar in the Cocoa debugger is now resizable and collapsable
  • The Cocoa frontend now supports cheats
  • Added support to ISX files, used by the official toolchain
  • Rewritten and improved controller support in Cocoa, featuring rumble, player LEDs, and analog controls for turbo and slow motion. Controller support:
    • GameCube adapters (Both official and PC adapters): Full support, including automatic mappings, multiplayer, analog controls, and rumble
      • Unofficial adapters in PC mode support analog rumble, as opposed to PWM binary rumble; the use of PC mode is recommended
    • Generic “Twin USB” DualShock 2 PC adapter: Automatic mapping, multiplayer support
    • Switch Pro Controller: Full support, including automatic mappings, rumble, and player LEDs; via both USB and Bluetooth
    • DualShock 3: Full support, including automatic mappings, rumble, player LEDs, and analog controls; via both USB and Bluetooth
      • Some Macs seem to be unable to communicate LED and rumble information to DualShock 3 controllers; the use of USB for this controller is recommended
    • Generic controllers: Basic functionality, may need to be manually remapped in settings
    • Support for more controllers will come in future releases
  • Optionally add rumble support to all games, even those without a Rumble Pak, in all frontends
    • SDL rumble support varies between operating systems and SDL versions
  • The debugger now allows more than one symbol at the same address
  • Added the softbreak debugger command to enable/disable software breakpoints (ld b, b)
  • The SDL debugger now always outputs “>” when it’s waiting for an input
  • The SDL debugger allows the use of the magic binary sequence "\x03\x0a" to break the debugger from stdin in async-capable platforms

Accuracy Improvements/Fixes

  • Fixed a regression bug that made the first frame blank instead of repeated on the Game Boy Color
  • Fixed an APU sequencer edge case
  • Fixed a bug affecting HDMA timing
  • Color correction is now more accurate
  • Correct emulation of the OPRI register
  • More accurate emulation of STOP mode
  • More accurate emulation of LCDC write conflicts; although individual units may behave differently
  • Emulation of cases where PPU object fetched are aborted in the middle
  • Correct emulation of changing object height during fetch
  • More accurate emulation of the PPU fetcher’s timings
  • Accurate emulation of SCX’s upper 5 bits changing mid-line
  • Rewritten window implementation, which is much more accurate now, including the various timing scenarios
  • More accurate emulation of background FIFO push timings
  • Emulate some of the cases where the PPU and LCD desync
  • Accurate emulation of tilemap advance timings
  • Implement a missing SGB command (ATTR_CHR)
  • More accurate MBC2 emulation
  • More accurate MBC3 emulation and proper MBC30 support
  • Correct emulation of PCM12 and PCM34 reads when emulating CGB-C
  • Improved HuC-1 emulation
  • HuC-3 emulation, including RTC and alarm clock emulation
    • Alarm clock emulation is only supported in the Cocoa frontend
  • Partial emulation of glitched VRAM reads that happen right after mode 3

Bug Fixes

  • Fixed a bug with scrolling menus in the SDL frontend when emulating a Super Game Boy
  • Fixed cases where the Cocoa frontend froze
  • Fixed a bug where an incorrect minimum window size was enforced on the Cocoa frontend
  • Assignments to 16-bit expression in the debugger is now working correctly
  • Fixed operator priorities in the debugger
  • Fixed a debugger parsing bug
  • Fixed compatibility with older macOS versions in the Cocoa version, restoring support for 10.9 (Mavericks) and newer

Misc Internal Changes

  • Added per-commit automatic GitHub builds, with basic sanity tests
  • When building the SDL frontend on macOS, the Brew version of SDL2 is used
  • Fixed various compilation errors with GCC
  • Make the libretro frontend compile without warnings
  • HuC-1 and HuC-3 IR are emulated now, but this is not currently supported in any frontend

Version 0.12.3

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • Super Game Boy color correction is now available in the libretro port
  • It is now possible to hide the Super Game Boy border in the libretro port
  • The SDL port will now hide the mouse while a ROM is running

Accuracy Improvements/Fixes

  • Changing the frequency of channels 1 and 2 is now more accurate
  • Audio rendering should now be accurate when emulating Game Boy Advance

Bug Fixes

  • Fixed garbled graphics while emulting Super Game Boy in the SDL port when OpenGL 3.2 is not available
  • The Cocoa build is now linked against the correct SDK version, restoring compatbility with older macOS versions that was mistakenly dropped in the previous release
  • Fixed fullscreen related issues in the SDL port
  • Fixed a bug where the SDL port did not save the battery in some cases
  • Bug fixes to libretro achievement support
  • Restored Game Boy Camera support on newer macOS versions
  • Fixed High-DPI support on Windows 10

Misc Internal Changes

  • Improvements to the audio and ICD2 APIs
  • Allow compiling SameBoy for platforms with a non-standard bool size
  • Improved build portability, will now use pkg-config if available

Version 0.12.2

This version is backwards compatible with save states from SameBoy 0.11.x and newer.

New/Improved Features

  • The Quick Look previewer now produces color-corrected thumbnails
  • The debugger now supports a wider range of symbol files

Accuracy Improvements/Fixes

  • Fixed a bug where samples in the wave channel were treated as if they’re 0, effectively muting the channel in some cases.
  • Fixed a regression that caused some PPU test ROMs to fail
  • More accurate emulation of memory access conflicts on the Super Game Boy
  • When emulating a Super Game Boy, built-in palettes for select games are now emulated
  • Accuracy improvements to Super Game Boy’s multiplayer mode
  • Super Game Boy and Game Boy Advance now have their own color correction filters

Bug Fixes

  • Improvements to audio in the SDL port, affecting some machines
  • Fixed a bug where the SDL port loaded the wrong boot ROM when emulating Super Game Boy 2
  • Fixed broken audio on libretro when used with some RetroArch audio drivers
  • Fixed a potential crash when closing a window in the Cocoa port
  • Fixed libretro achievements
  • Fixed major performence issues in the Cocoa port that affected some Macs, especially when emulating the original Super Game Boy

Misc Internal Changes

  • The emulation core now supports emulating a Super Game Boy without high level emulation of the SNES or SFC. SameBoy is now used for Game Boy emulation by bsnes, allowing extremely accurate low-level emulation of Super Game Boy.
  • Made it possible to compile the SDL port with older SDL versions
  • Compression improvements to the CGB and AGB boot ROMs

Version 0.12.1

This version is a minor bug-fixing version that only affects the SDL version. The macOS version is identical, except for the version number.

Bug Fixes

  • Fixed the CGB and AGB boot ROMs being corrupt on the Windows version
  • Improved audio quality on the SDL ports on systems using a large audio buffer

Version 0.12

This version is backwards compatible with save states from SameBoy 0.11.x.

New/Improved Features

  • An experimental support for emulating CGB-CPU C is now available in the Cocoa port. This is still experimental and does not accurately represent all differences between CGB-CPU E and CGB-CPU C yet
  • The Libretro port no longer restarts the core after changes to the high-pass filter or color correction
  • The SDL port can now start in fullscreen mode via a command line argument
  • High level emulation of Super Game Boy:
    • Supports game colorization
    • Supports borders, including correct emulation of the fade animations and borders that obscure parts of the Game Boy display window
    • Up to 4-player multiplayer (Currently only in the Cocoa and Libretro ports)
    • Can choose between Super Game Boy (NTSC), Super Game Boy (PAL) and Super Game Boy 2, with correct CPU speed emulation
    • All models include open source boot ROMs, just like previously supported models
    • Includes a default border for games without SGB support
    • Includes a boot animation
    • Accurate emulation of cases where the internal frame buffer loses sync with the SNES/SFC side
  • New CRT display filter
  • New preference panel in the Cocoa port
  • Minor visual improvements to the icon
  • Many performance all around the core
  • The debugger now includes jump-to breakpoints
  • New APU debugger commands
  • The SDL port now has mouse support
  • The SDL port now has an “Open ROM” dialog window, in addition to the previously available drag and drop support
  • The Cocoa and SDL ports now have better support for sub-frame input accuracy
  • The VRAM display window in the Cocoa port can now display SCX and SCY on the tilemap
  • Redesigned audio API that should improve audio quality in all ports

Accuracy Improvements/Fixes

  • WRAM, VRAM, and other types of memory are now realistically initialized to random values. The randomization patterns vary across emulated models and revisions. This fixes several games that rely on non-zero values on boot
  • Slightly more accurate emulation of the undocumented $FF4C register, which controls DMG mode on CGBs
  • Fixed an APU regression where the noise channel’s volume envelope ran too fast
  • More accurate emulation of analog APU characteristics
  • Fixed a CGB boot ROM bug that made some games boot with incorrect palettes
  • Fixed incorrect emulation of echo RAM
  • Fixed a very rare edge case when an interrupt occurs while the stack points to $FF11
  • Correct emulation of the time required to switch the CPU speed
  • Correct emulation of CGB palette accessibility in different PPU timings, fixes Lego Racers
  • Other accuracy improvements to OAM and VRAM accessibility
  • The serial registers now behave realistically by working with bits instead of bytes
  • More accurate initial RAM and VRAM values when using the built in CGB boot ROM
  • Accurate emulation of AGB audio mixing, which is different from older models
  • Fixed the behavior of the wave channel’s first sample playback, fixes buzzing sounds on LSDJ and several games
  • Most aspects of STOP mode are now accurately emulated
  • Fixed a bug where initial register values were incorrect when selecting a palette for a DMG game in the built in CGB boot ROM
  • Fixed incorrect emulation of the Background and Window enable bit in LCDC

Bug Fixes

  • Fixed a bug where the SDL port would not recognize joypads if started directly to a ROM
  • Fixed a bug where the Quick Look previewer would show glitched thumbnails for DMG games
  • Fixed a regression that made the Cocoa port unable to display anything on Macs not supporting Metal
  • Fixed a bug where modifying RTC data could corrupt MBC RAM data
  • Fixed a bug where CGB save states were significantly larger than they should have been, older save states are converted
  • Fixed several bugs in expression parsing in the debugger
  • Work around a bug where some Windows 10 machines using Intel HD Graphics had unresponsive UI in the SDL port
  • Fixed a bug where the D-Pad did not work on several gamepads in the Cocoa port
  • Fixed a bug where the gamepad D-Pad had unexpected behaviors in the menus of the SDL port
  • Fixed a bug where underclocking slowed down the core to ~40% of its speed instead of an exact 50%

Misc Internal Changes

  • Rename all Z80 instances to SM83, which is most likely the name of the CPU core used in the Game Boy
  • Size optimization in the CGB boot ROM

Version 0.11.2

New/Improved Features

  • Each debug console in Cocoa now displays the ROM file name in its titlebar
  • SameBoy can now load RTC information from battery saves from different emulators including BGB, VisualBoyAdvance, and VisualBoyAdvance-M and vice versa. Older battery saves will automatically be converted

Accuracy Improvements/Fixes

  • More accurate emulation of DAC charging and discharging. Fixes the buzzing sound heard in several games
  • Fixed a bug where the left and right audio channel were swapped
  • More accurate GDMA and HDMA timings
  • Fixed several bugs, one of which is a regression, where channels 1 and 2 could play without a delay. Fixes missing audio in Gensan 2
  • Correct emulation of enabling and disabling the volume envelope
  • Correct emulation of a glitch where the volume envelope ticks when it usually wouldn’t
  • Compensate for CPU prefetch in DIV’s initial value
  • Correct emulation of turning the DACs on and off. Fixes missing audio in several games

Bug Fixes

  • Fixed bugs in the debugger UI in Cocoa that made it unresponsive
  • Fixed a bug where the libretro core didn’t save and load the RTC properly

Version 0.11.1

New/Improved Features

  • Introduced adaptive audio buffer length mechanism to improve audio quality systems that force big audio buffers

Accuracy Improvements/Fixes

  • Fixed a major regression where DMG games failed to switch to DMG mode when using SameBoy’s CGB boot ROM

Bug Fixes

  • Fixed the titlebar color in the Cocoa frontend
  • Fixed a bug where some macOS machines running High Sierra showed graphical garbage during fullscreen mode

Version 0.11

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

Version 0.10.1

New/Improved Features

  • The libretro port can now be compiled for the Switch
  • Made the menu key more obvious in the SDL port
  • Can now emulate a Game Boy Advance in Game Boy Color mode
  • Changing a model in the SDL port is now done via the menu
  • Major improvements to the way the libretro port handles audio, significantly improving audio quality
  • It is now possible to select a specific model to emulate in the libretro port

Accuracy Improvements/Fixes

  • APU stereo volume levels are now scaled emulated correctly (Volume levels are 1-8, not 0-7)
  • Triggering a pulse by writing to NRx4 now correctly changes the volume level of the previously played pulse. Fixes sound pops in Link’s Awekening.
  • The CGB boot now finishes with correct register values
  • Fixed APU DIV events sometimes causing audio pops in disabled channels. Fixes sound pops in Super Mario Land 2
  • Fixed a bug where the effects of NR50 and NR51 were unintentionally delayed. Fixes sound pops in Pokémon Puzzle Challenge and Donkey Kong ‘94.

Bug Fixes

  • Fixed video issues with the libretro port when using Vulkan
  • Using a Joypad in the Cocoa port did not prevent the screen saver from starting

Version 0.10

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

New/Improved Features

  • The CGB boot ROM will now wait until the user finishes choosing a palette
  • New SDL GUI:
    • More user friendly, settings are now more accessible
    • Added configurable controls
    • Added scaling filters (requires OpenGL 3.2 support)
    • Added frame blending (requires OpenGL 3.2 support)
  • Added joypad support to both the Cocoa and SDL ports

Accuracy Improvements/Fixes

  • More accurate PPU timings
  • The first frame after turning the LCD on is now skipped, as in hardware (Fixed Pokémon Pinball visual glitch)
  • Accurate emulation of VRAM and OAM blocking
  • More accurate emulation of MBC1
  • Improved serial cable timing emulation
  • Complete rewrite of the APU emulation (Fixed audio on several games)
    • APU emulation is now sample-accurate in almost all case
    • Audio is now rendered at 2MHz (like real hardware), downsampled to 96KHz (or 44.1 on Windows)
    • Passes all of Blagg’s APU tests, as well as most of SameBoy’s (yet-to-be-released) APU tests
    • Added 3 modes of high-pass filtering (Disabled, Emulate Hardware, and Preserve Waveforms)
  • Fixed KEY1 being writable on a CGB in DMG mode
  • Refined window behavior (Fixed visual glitches in Pokémon G/S/C)
  • SCY latching is now correctly emulated
  • Refined SCX’s effects on PPU timings
  • Correctly emulate differences in interrupt timing when the CPU is in halt mode
  • More accurate emulation of interrupt servicing. (Fixed Pinball Deluxe)
  • Fixed OAM interrupt timing (Fixed Pinball Deluxe when emulating a DMG)
  • Added 4 modes of color correction (Disabled, Correct Curves, Emulate Hardware and Preserve Brightness)
  • Fixed EI behavior

Bug Fixes

  • Fixed backtrace command in the debugger (first item did not appear correctly)
  • Fixed a bug that prevented saving games after resetting the emulator
  • Fixed several memory leaks
  • Fixed a bug that caused black screens after loading a save state when emulating a DMG
  • Fixed potential crashes when viewing OAMs in the VRAM viewer

Misc Internal Changes

  • API improvements
  • It is now possible to specify a boot ROM for the automatic tester
  • The Libretro core is now merged into the main branch

Version 0.9.1

This version is a minor bug-fixing version

Bug Fixes

  • Fixed a bug where SameBoy froze for various amounts of time after using turbo mode.

Version 0.9

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

New/Improved Features

  • A symbol file for IO-registers is now included
  • The Cocoa GUI now handles errors and warnings in a more user friendly manner
  • The debugger now includes an lcd command, that outputs information about the LCD controller and related registers
  • Improved audio quality, especially on Windows, by adding supersampling support
  • Upgraded the SDL port from SDL 1.2 to SDL 2.0
  • The following features were added to the SDL port:
    • OpenGL renderer
    • Reset and pause shortcuts
    • Ability to mute and unmute the audio
    • Ability to switch model between CGB and DMG without restarting SameBoy
    • Ability to open ROMs with drag and drop
    • Resizing, with 3 different mode (Entire window, keep aspect, and integer ratio)
    • Help dialog, accessible by the Shift+? shortcut (macOS) or F1 (Other platforms)
  • Improved input in the Cocoa debugger; supports command history (up/down) and reverse search (^R)

Accuracy Improvements/Fixes

  • Much more accurate emulation of HDMA
  • The effect of the DI opcode is no longer delayed
  • SameBoy’s CGB boot ROM no longer incorrectly changes the RAM bank
  • Fixed a bug where HUC1 banks higher than 0x1F were not mapped correctly
  • Fixed a bug where MBC5 would map the wrong bank if address 3XXX is written before 2XXX is
  • The STOP instruction is now treated as a 2-byte opcode
  • LCD timing was rewritten and is now much more accurate
  • Corrected behavior of the HUC1 RAM enable switch
  • Large ROMs use MBC3 if the header claims no MBC should be use, for better compatibility with unofficial ROMs
  • Fixed a bug in the implementation of the STAT write bug
  • The value of SCX now affects the LCD’s mode 3 length
  • More accurate FPS capping that tracks time correctly even when the LCD is off
  • Window behavior rewritten and and is now much more accurate; fixes Donkey Kong ‘94
  • Fixed a bug where sound is generate on the wave channel while it shouldn’t be

The following games now pass the automatic testing:

Alfred’s Adventure, Animorphs, Armada - FX Racers, Asterix - Search for Dogmatix, Bad Badtz-Maru Robo Battle, Barbie - Pet Rescue, Bear in the Big Blue House, Blue’s Clues - Blue’s Alphabet Book, Boarder Zone, Bob et Bobette - Les Dompteurs du Temps, Caesars Palace II, Captain Knick-Knack (Sachen), Daikaijuu Monogatari - The Miracle of the Zone II, Disney’s Tarzan, Doug’s Big Game, Dragon Tales - Dragon Wings, The Emperor’s New Groove, Fort Boyard, Honkaku Yonin Uchi Mahjong - Mahjong Ou, Hoyle Casino, Kinniku Banzuke GB3 - Shinseiki Survival Retsuden!, Konami GB Collection Vol.2, Konami GB Collection Vol.4, LEGO Racers, Lemmings & Oh No! More Lemmings, Les Aventures De TinTin - Le Temple du Soleil, Matchbox - Emergency Patrol, Microsoft Entertainment Pack, Pia Carrot he Youkoso!! 2.2, Pocket Music (E), Pokemon Card GB (J), Puchi Carat, San Francisco Rush 2049, Scrabble, The Simpsons - Night of the Living Treehouse of Horror, Star Wars Episode I - Obi-Wan’s Adventures, Supreme Snowboarding, Tintin in Tibet, Toki Tori, Tomb Raider - Curse of the Sword, Turok 3 - Shadow of Oblivion, VS Lemmings, World Destruction League - Thunder Tanks, Yu-Gi-Oh! Duel Monsters 4 - Saikyou Kettousha Senki

Bug Fixes

  • The SBC instruction was incorrectly printed as “LBC” in the debugger
  • The LDH instruction was not symbolicated
  • Fixed a bug with saving and loading save states and battery states on Windows
  • Fixed a bug where saving or loading save states sometimes worked incorrectly in the SDL port
  • Fixed a bug where the VRAM window would now show correctly if the game is paused
  • Fixed a bug where ^C in the Cocoa port would not move the focus to the console

Misc Internal Changes

  • Major refinements to the API

Version 0.8

This version is not compatible with save states of older versions. This version ignores key bindings set by older versions

New/Improved Features

  • The debugger now includes a ticks command, to allow tick counting
  • The debugger now includes a palettes command, to allow dumping the palettes in CGB mode
  • General optimizations
  • Complete Game Boy Camera support in the Cocoa port, basic support in the SDL port
  • Debugger syntax improved, commands now allow modifiers
    • print/eval can now have a format modifier (e.g. print/d)
    • examine can now have a byte count modifier (e.g. x/4)
  • The debugger now includes a disassemble command
  • Added a VRAM viewer to the Cocoa port
  • Game Boy Printer emulation in the Cocoa port
  • New icon for GBC files, following Nintendo’s color-coding convention, fixed icon alignment for both GB and GBC icons
  • Quick Look support in Cocoa: GB and GBC files now display in-game screenshots on their cartridge icon

Accuracy Improvements/Fixes

  • The APU emulation was refactored, and is now faster and now longer dependent on the sampling rate
  • LCDC’s bit 0 is now properly emulated (Fixes: Krusty’s Fun House)
  • The HALT bug is now emulated
  • The user is now prevented from pressing opposite keys at the same time (Fixes Pocket Bomberman)
  • Fixed MBC2 RAM emulation
  • Corrected emulation of the palette registers in CGB mode
  • HUC1 is now partially emulated, sans the IR sensor
  • Basic HUC3 support, only the MBC is emulated
  • Implemented the STAT-write interrupt bug (Fixed: Road Rash and Zero no Densetsu; these games do not work on CGBs)
  • Limited the LY=144 interrupt to DMG mode, as hinted by MooneyeGB’s test ROMs

The following games now pass the automatic testing:

All-Star Baseball ‘99, Cave Noire, Daisenryaku, F-1 Race, Game Boy Camera, Hatris, Ironman, Konami Golf, Kwirk, Meitantei Conan, Nintendo World Cup, Pocket Bomberman (J), Puzzle Boy, SS Spinner, The Smurfs, Speedball 2, Tecmo Bowl, Teenage Mutant Ninja Turtles 2, Tsuri Sensei, Ultima, Ultra Golf, WordZap, Z - The Miracle of the Zone, Zerd no Densetsu

Bug Fixes

  • Fixed a deadlock in the Hex Editor/Viewer when viewing APU data
  • Fixed a crash when accessing MBC RAM on some ROMs that do not have MBC RAM
  • Multiple watchpoints did not function correctly
  • Improved the behavior and performance of the open dialog in Cocoa
  • Fixed dereferencing a non-banked address in the debugger
  • VRAM was not initialized
  • Fixed an edge case where the Hex Editor/Viewer crashed
  • Breakpoint and watchpoint conditions no longer trigger other watchpoints; fixed potential crashes
  • Better handling of input in the Cocoa port when the system has a non-ASCII keyboard layout
  • Minor fixes for the help debugger command

Misc Internal Changes

  • Added rumble API, but it is not actually used by any of the GUIs
  • Added serial API, but it is currently only used internally for the Game Boy Printer

Version 0.7

New/Improved Features

  • The debugger now includes a backtrace command to show the stacktrace
  • Cocoa port now includes a Hex Editor/Viewer
  • The debugger help command was improved
  • General improvements to debugger usability
  • The SDL port now compiles on Windows (Binaries included)
  • Mouse hiding in Cocoa is now only enabled during full screen
  • The Cocoa port now remembers the mute setting
  • SameBoy now issues a warning when loading a game that uses an unsupported cartridge
  • Cocoa port now remembers previous breakpoints/watchpoints after reset
  • Cocoa port now automatically shows the open if needed

Accuracy Improvements/Fixes

  • OBP0/1 are now initialized to the correct value (Fixes Mooneye’s DMG hardware registers test).
  • A disconnected serial cable is now emulated. Fixes:
    • Baseball
    • Faceball 2000
    • Fighting Simulator
    • Godzilla
    • Hiryuu Gaiden
    • In Your Face
    • Lunar Lander
    • Pinball Party
    • Sneaky Snakes
    • Super R.C. Pro-Am
    • WWF Stars
    • Yoshi’s Egg
  • Correctly emulating unused OAM RAM in DMG mode
  • DMG boot ROM now finishes with the original register values (Fixes Mooneye’s DMG boot registers test)
  • RTC clock latching is now emulated.
  • Fixed APU issues where simultaneously running games could affect each other
  • Fixed APU issue that could break some games. Fixes:
    • Chiki Chiki Tengoku
    • Moguranya/Mole Mania
  • Fixed MBC RAM not being properly reset. Old save data must be deleted for this fix to apply. Fixes:
    • Purikura Pocket 3
    • Probably affects many other games

Bug Fixes

  • Boot ROMs were not trimmed correctly
  • Fixes several bugs that caused the Cocoa port to freeze when using the reset command during debugging

Misc Internal Changes

  • SameBoy can now be compiled with precompiled (non-SameBoy) boot ROMs
  • SameBoy includes an automated game ROM tester

Version 0.6

New/Improved Features

  • Conditional r/w/rw debugger watchpoints
  • Added the “!=” operator to the debugger
  • Redefined the debugger input and output syntax, being more consistent with RGBDS
  • Debugger now reads .sym files (Tested with 3 popular formats). It shows symbols when possible, and allows using them in expressions
  • Debugger data types can now be either 16-bit values, or 25-bit full addresses that include a bank identifier
  • Debugger commands and expressions support full addresses as parameters. This allows, for example, breaking on an address on a specific ROM bank, or reading a value from a specific MBC RAM bank.
  • Some debugger commands may now run without breaking the debugger. (Similar to LLDB or GDB’s async mode)
  • SDL port now supports save states
  • Improved performance by about 6% by enabling link-time optimizations
  • Reduced file size by stripping executables
  • Several Cocoa-only UX improvements:
    • Prevented being paused “twice” (Both by the pause option and the debugger)
    • Optional proportional resizing
    • Proper fullscreen support
    • Mouse cursor is now hidden while running

Accuracy Improvements/Fixes

This version includes major accuracy improvements, which allow it to pass 54 tests out of mooneye-gb’s 58 acceptance tests (2 of which fail due to not including the original boot ROM); more than any other emulator.

  • Rewritten MBC support, with MBC1M support (Fixing some N-in-1 cartridges)
  • Major accuracy improvements to OAM DMA.
  • Corrected a lot of instruction memory-access timings
  • Corrected some IO register masks
  • Major accuracy improvements to timers (TIMA/DIV)

Bug Fixes

  • Corrected operator priorities in the debugger
  • Fixed a bug where a breakpoint might have been ignored
  • Reduced CPU usage when running games with a real time clock
  • Handling ^C and ^D more sanely in SDL port
  • Fixed memory leak in Cocoa

Misc Internal Changes

  • Added infrared API, but it is not actually used by any of the GUIs
  • Fixed build system bugs that caused needless dep file generation, and made the Cocoa build fail sometimes if SDL is not installed

Version 0.5

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

New/Improved Features

  • Updated save state format, should now be much more future compatible
  • Save state compatibility between 32 and 64 bit versions of SameBoy
  • Cocoa version is now using OpenGL 3
  • HQ2x filter added (Cocoa only)
  • A new, redesigned OmniScale filter; old filter is renamed to OmniScale Legacy (Cocoa only)
  • Cocoa port now “remembers” the last window size
  • Added boolean operators to the debugger
  • Added conditional breakpoints

Accuracy Improvements/Fixes

  • Better emulation of certain behaviors of the SCX register
  • Fixed emulation of the STOP instruction
  • Minor fix to the accuracy of the JOYPAD register
  • Minor improvements to HDMA accuracy

Bug Fixes

  • Improved concurrency in the Cocoa port
  • Fixed a bug where an emulator window in the Cocoa port will freeze until resized
  • Fixed incorrect disassembler outputs
  • Fixed a potential crash when deleting a breakpoint

Misc Internal Changes

  • Large code refactoring, getting ready to stabilize API

Version 0.4

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

New/Improved Features

  • Cocoa port now includes several scaling algorithms, including a beta of the exclusive OmniScale algorithm
  • SDL port now includes sound support
  • SDL port now includes battery save support

Accuracy Improvements/Fixes

  • APU emulation now includes stereo support
  • Improved PCM registers emulation
  • More accurate STAT interrupt emulation. This fixes Altered Space.

Bug Fixes

  • The Cocoa port ignored some key presses if the user keyboard layout included non-ASCII characters
  • Fixed a bug that could cause a crash when adding or removing a breakpoint

Version 0.3

New/Improved Features

  • New debugger command: cartridge (alias: mbc) shows information about the cartridge and the current status of the MBC
  • Experimental debugger command: sld (Short for Stack Leak Detection) behaves similarly to finish, but stops if a stack leak or stack overflow is detected
  • The Cocoa port now allows configuring controls

Accuracy Improvements/Fixes

  • ROM banks now wrap (Fixes game: Pocket Monster Adventures (Bootleg))
  • Fixed incorrect DMA behavior, DMA might fail for specific source addresses (Fixes game: The Smurfs 3)
  • Timer registers were counting too slow in CGB double speed mode
  • Corrected read behavior of the HDMA5 register (Fixes game: A Bug’s Life in CGB mode)
  • Fixed a bug with the CGB boot ROM that prevented initialization of the wave RAM
  • The CGB boot ROM now loads the DMG tilemap for specific games, just like the original ROM (Fixes game: X (intro animation))
  • Fixed a bug where audio channel 3 was playing silently while it should have been muted.

Bug Fixes

  • Debugger’s finish command now behaves correctly when interrupts are involved
  • Corrected the description for the breakpoint command
  • SameBoy will not create save files for ROMs without cartridge RAM or RTC, even if they report having a battery, preventing 0-bytes save files

Version 0.2

New/Improved Features

  • Support for multiple breakpoints
  • Better debugger command style and error reporting; includes help command
  • In the SDL port, ^C in the terminal will break the debugger instead of quitting SameBoy
  • Cocoa port now saves preferences (Model and frame blending)
  • It is not possible to toggle console output and debugging in the Cocoa port

Accuracy Improvements/Fixes

  • Read/write masks corrected for several registers
  • Corrected 144th OAM interrupt behavior
  • LCD operation moved to advance_cycles, fixing some obscure timing issues (Fixes game: X / Ekkusu)
  • More accurate emulation of the registers controlling DMG emulation on CGB
  • Emulation of PCM_12 and PCM_34 in the SDL port

Bug Fixes

  • Debugger’s next command can now exit a function

Version 0.1

Initial public release