Skip to content

SameBoy v0.16

Compare
Choose a tag to compare
@LIJI32 LIJI32 released this 16 Dec 21:28
· 251 commits to master since this release

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