Skip to content

Releases: LIJI32/SameBoy

SameBoy v0.13

31 May 20:04
Compare
Choose a tag to compare

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

SameBoy v0.12.3

02 Jan 18:11
8971352
Compare
Choose a tag to compare

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

SameBoy v0.12.2

14 Sep 17:09
Compare
Choose a tag to compare

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

SameBoy v0.12.1

22 Jun 16:27
Compare
Choose a tag to compare

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

SameBoy v0.12

21 Jun 16:23
Compare
Choose a tag to compare

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

SameBoy v0.11.2

03 Nov 13:34
Compare
Choose a tag to compare

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

SameBoy v0.11.1

11 Jul 17:21
Compare
Choose a tag to compare

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

SameBoy v0.11

29 Jun 10:56
Compare
Choose a tag to compare

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

SameBoy v0.10.1

02 Feb 23:10
Compare
Choose a tag to compare

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

SameBoy v0.10

30 Dec 16:01
Compare
Choose a tag to compare

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 correct)
  • 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