What's new

SameBoy v0.16 is released!

An ultra-precise Gameboy B&W/Color emulator for Windows and MacOs also offering a debugger.

Changelog:

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

 

Top