Skip to content

SameBoy v0.15

Compare
Choose a tag to compare
@LIJI32 LIJI32 released this 02 Jul 19:48
· 663 commits to master since this release

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 not 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