SameBoy v0.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 standardr
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 ashalt
andstop
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