Version 0.11.2

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

Version 0.11.1

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

Version 0.11

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

Version 0.10.1

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

Version 0.10

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

Version 0.9.1

This version is a minor bug-fixing version

Bug Fixes

  • Fixed a bug where SameBoy froze for various amounts of time after using turbo mode.

Version 0.9

This version is not compatible with save states of older versions.

New/Improved Features

  • A symbol file for IO-registers is now included
  • The Cocoa GUI now handles errors and warnings in a more user friendly manner
  • The debugger now includes an lcd command, that outputs information about the LCD controller and related registers
  • Improved audio quality, especially on Windows, by adding supersampling support
  • Upgraded the SDL port from SDL 1.2 to SDL 2.0
  • The following features were added to the SDL port:
    • OpenGL renderer
    • Reset and pause shortcuts
    • Ability to mute and unmute the audio
    • Ability to switch model between CGB and DMG without restarting SameBoy
    • Ability to open ROMs with drag and drop
    • Resizing, with 3 different mode (Entire window, keep aspect, and integer ratio)
    • Help dialog, accessible by the Shift+? shortcut (macOS) or F1 (Other platforms)
  • Improved input in the Cocoa debugger; supports command history (up/down) and reverse search (^R)

Accuracy Improvements/Fixes

  • Much more accurate emulation of HDMA
  • The effect of the DI opcode is no longer delayed
  • SameBoy’s CGB boot ROM no longer incorrectly changes the RAM bank
  • Fixed a bug where HUC1 banks higher than 0x1F were not mapped correctly
  • Fixed a bug where MBC5 would map the wrong bank if address 3XXX is written before 2XXX is
  • The STOP instruction is now treated as a 2-byte opcode
  • LCD timing was rewritten and is now much more accurate
  • Corrected behavior of the HUC1 RAM enable switch
  • Large ROMs use MBC3 if the header claims no MBC should be use, for better compatibility with unofficial ROMs
  • Fixed a bug in the implementation of the STAT write bug
  • The value of SCX now affects the LCD’s mode 3 length
  • More accurate FPS capping that tracks time correctly even when the LCD is off
  • Window behavior rewritten and and is now much more accurate; fixes Donkey Kong ‘94
  • Fixed a bug where sound is generate on the wave channel while it shouldn’t be

The following games now pass the automatic testing:

Alfred’s Adventure, Animorphs, Armada - FX Racers, Asterix - Search for Dogmatix, Bad Badtz-Maru Robo Battle, Barbie - Pet Rescue, Bear in the Big Blue House, Blue’s Clues - Blue’s Alphabet Book, Boarder Zone, Bob et Bobette - Les Dompteurs du Temps, Caesars Palace II, Captain Knick-Knack (Sachen), Daikaijuu Monogatari - The Miracle of the Zone II, Disney’s Tarzan, Doug’s Big Game, Dragon Tales - Dragon Wings, The Emperor’s New Groove, Fort Boyard, Honkaku Yonin Uchi Mahjong - Mahjong Ou, Hoyle Casino, Kinniku Banzuke GB3 - Shinseiki Survival Retsuden!, Konami GB Collection Vol.2, Konami GB Collection Vol.4, LEGO Racers, Lemmings & Oh No! More Lemmings, Les Aventures De TinTin - Le Temple du Soleil, Matchbox - Emergency Patrol, Microsoft Entertainment Pack, Pia Carrot he Youkoso!! 2.2, Pocket Music (E), Pokemon Card GB (J), Puchi Carat, San Francisco Rush 2049, Scrabble, The Simpsons - Night of the Living Treehouse of Horror, Star Wars Episode I - Obi-Wan’s Adventures, Supreme Snowboarding, Tintin in Tibet, Toki Tori, Tomb Raider - Curse of the Sword, Turok 3 - Shadow of Oblivion, VS Lemmings, World Destruction League - Thunder Tanks, Yu-Gi-Oh! Duel Monsters 4 - Saikyou Kettousha Senki

Bug Fixes

  • The SBC instruction was incorrectly printed as “LBC” in the debugger
  • The LDH instruction was not symbolicated
  • Fixed a bug with saving and loading save states and battery states on Windows
  • Fixed a bug where saving or loading save states sometimes worked incorrectly in the SDL port
  • Fixed a bug where the VRAM window would now show correctly if the game is paused
  • Fixed a bug where ^C in the Cocoa port would not move the focus to the console

Misc Internal Changes

  • Major refinements to the API

Version 0.8

This version is not compatible with save states of older versions. This version ignores key bindings set by older versions

New/Improved Features

  • The debugger now includes a ticks command, to allow tick counting
  • The debugger now includes a palettes command, to allow dumping the palettes in CGB mode
  • General optimizations
  • Complete Game Boy Camera support in the Cocoa port, basic support in the SDL port
  • Debugger syntax improved, commands now allow modifiers
    • print/eval can now have a format modifier (e.g. print/d)
    • examine can now have a byte count modifier (e.g. x/4)
  • The debugger now includes a disassemble command
  • Added a VRAM viewer to the Cocoa port
  • Game Boy Printer emulation in the Cocoa port
  • New icon for GBC files, following Nintendo’s color-coding convention, fixed icon alignment for both GB and GBC icons
  • Quick Look support in Cocoa: GB and GBC files now display in-game screenshots on their cartridge icon

Accuracy Improvements/Fixes

  • The APU emulation was refactored, and is now faster and now longer dependent on the sampling rate
  • LCDC’s bit 0 is now properly emulated (Fixes: Krusty’s Fun House)
  • The HALT bug is now emulated
  • The user is now prevented from pressing opposite keys at the same time (Fixes Pocket Bomberman)
  • Fixed MBC2 RAM emulation
  • Corrected emulation of the palette registers in CGB mode
  • HUC1 is now partially emulated, sans the IR sensor
  • Basic HUC3 support, only the MBC is emulated
  • Implemented the STAT-write interrupt bug (Fixed: Road Rash and Zero no Densetsu; these games do not work on CGBs)
  • Limited the LY=144 interrupt to DMG mode, as hinted by MooneyeGB’s test ROMs

The following games now pass the automatic testing:

All-Star Baseball ‘99, Cave Noire, Daisenryaku, F-1 Race, Game Boy Camera, Hatris, Ironman, Konami Golf, Kwirk, Meitantei Conan, Nintendo World Cup, Pocket Bomberman (J), Puzzle Boy, SS Spinner, The Smurfs, Speedball 2, Tecmo Bowl, Teenage Mutant Ninja Turtles 2, Tsuri Sensei, Ultima, Ultra Golf, WordZap, Z - The Miracle of the Zone, Zerd no Densetsu

Bug Fixes

  • Fixed a deadlock in the Hex Editor/Viewer when viewing APU data
  • Fixed a crash when accessing MBC RAM on some ROMs that do not have MBC RAM
  • Multiple watchpoints did not function correctly
  • Improved the behavior and performance of the open dialog in Cocoa
  • Fixed dereferencing a non-banked address in the debugger
  • VRAM was not initialized
  • Fixed an edge case where the Hex Editor/Viewer crashed
  • Breakpoint and watchpoint conditions no longer trigger other watchpoints; fixed potential crashes
  • Better handling of input in the Cocoa port when the system has a non-ASCII keyboard layout
  • Minor fixes for the help debugger command

Misc Internal Changes

  • Added rumble API, but it is not actually used by any of the GUIs
  • Added serial API, but it is currently only used internally for the Game Boy Printer

Version 0.7

New/Improved Features

  • The debugger now includes a backtrace command to show the stacktrace
  • Cocoa port now includes a Hex Editor/Viewer
  • The debugger help command was improved
  • General improvements to debugger usability
  • The SDL port now compiles on Windows (Binaries included)
  • Mouse hiding in Cocoa is now only enabled during full screen
  • The Cocoa port now remembers the mute setting
  • SameBoy now issues a warning when loading a game that uses an unsupported cartridge
  • Cocoa port now remembers previous breakpoints/watchpoints after reset
  • Cocoa port now automatically shows the open if needed

Accuracy Improvements/Fixes

  • OBP0/1 are now initialized to the correct value (Fixes Mooneye’s DMG hardware registers test).
  • A disconnected serial cable is now emulated. Fixes:
    • Baseball
    • Faceball 2000
    • Fighting Simulator
    • Godzilla
    • Hiryuu Gaiden
    • In Your Face
    • Lunar Lander
    • Pinball Party
    • Sneaky Snakes
    • Super R.C. Pro-Am
    • WWF Stars
    • Yoshi’s Egg
  • Correctly emulating unused OAM RAM in DMG mode
  • DMG boot ROM now finishes with the original register values (Fixes Mooneye’s DMG boot registers test)
  • RTC clock latching is now emulated.
  • Fixed APU issues where simultaneously running games could affect each other
  • Fixed APU issue that could break some games. Fixes:
    • Chiki Chiki Tengoku
    • Moguranya/Mole Mania
  • Fixed MBC RAM not being properly reset. Old save data must be deleted for this fix to apply. Fixes:
    • Purikura Pocket 3
    • Probably affects many other games

Bug Fixes

  • Boot ROMs were not trimmed correctly
  • Fixes several bugs that caused the Cocoa port to freeze when using the reset command during debugging

Misc Internal Changes

  • SameBoy can now be compiled with precompiled (non-SameBoy) boot ROMs
  • SameBoy includes an automated game ROM tester

Version 0.6

New/Improved Features

  • Conditional r/w/rw debugger watchpoints
  • Added the “!=” operator to the debugger
  • Redefined the debugger input and output syntax, being more consistent with RGBDS
  • Debugger now reads .sym files (Tested with 3 popular formats). It shows symbols when possible, and allows using them in expressions
  • Debugger data types can now be either 16-bit values, or 25-bit full addresses that include a bank identifier
  • Debugger commands and expressions support full addresses as parameters. This allows, for example, breaking on an address on a specific ROM bank, or reading a value from a specific MBC RAM bank.
  • Some debugger commands may now run without breaking the debugger. (Similar to LLDB or GDB’s async mode)
  • SDL port now supports save states
  • Improved performance by about 6% by enabling link-time optimizations
  • Reduced file size by stripping executables
  • Several Cocoa-only UX improvements:
    • Prevented being paused “twice” (Both by the pause option and the debugger)
    • Optional proportional resizing
    • Proper fullscreen support
    • Mouse cursor is now hidden while running

Accuracy Improvements/Fixes

This version includes major accuracy improvements, which allow it to pass 54 tests out of mooneye-gb’s 58 acceptance tests (2 of which fail due to not including the original boot ROM); more than any other emulator.

  • Rewritten MBC support, with MBC1M support (Fixing some N-in-1 cartridges)
  • Major accuracy improvements to OAM DMA.
  • Corrected a lot of instruction memory-access timings
  • Corrected some IO register masks
  • Major accuracy improvements to timers (TIMA/DIV)

Bug Fixes

  • Corrected operator priorities in the debugger
  • Fixed a bug where a breakpoint might have been ignored
  • Reduced CPU usage when running games with a real time clock
  • Handling ^C and ^D more sanely in SDL port
  • Fixed memory leak in Cocoa

Misc Internal Changes

  • Added infrared API, but it is not actually used by any of the GUIs
  • Fixed build system bugs that caused needless dep file generation, and made the Cocoa build fail sometimes if SDL is not installed

Version 0.5

This version is not compatible with save states of older versions.

New/Improved Features

  • Updated save state format, should now be much more future compatible
  • Save state compatibility between 32 and 64 bit versions of SameBoy
  • Cocoa version is now using OpenGL 3
  • HQ2x filter added (Cocoa only)
  • A new, redesigned OmniScale filter; old filter is renamed to OmniScale Legacy (Cocoa only)
  • Cocoa port now “remembers” the last window size
  • Added boolean operators to the debugger
  • Added conditional breakpoints

Accuracy Improvements/Fixes

  • Better emulation of certain behaviors of the SCX register
  • Fixed emulation of the STOP instruction
  • Minor fix to the accuracy of the JOYPAD register
  • Minor improvements to HDMA accuracy

Bug Fixes

  • Improved concurrency in the Cocoa port
  • Fixed a bug where an emulator window in the Cocoa port will freeze until resized
  • Fixed incorrect disassembler outputs
  • Fixed a potential crash when deleting a breakpoint

Misc Internal Changes

  • Large code refactoring, getting ready to stabilize API

Version 0.4

This version is not compatible with save states of older versions.

New/Improved Features

  • Cocoa port now includes several scaling algorithms, including a beta of the exclusive OmniScale algorithm
  • SDL port now includes sound support
  • SDL port now includes battery save support

Accuracy Improvements/Fixes

  • APU emulation now includes stereo support
  • Improved PCM registers emulation
  • More accurate STAT interrupt emulation. This fixes Altered Space.

Bug Fixes

  • The Cocoa port ignored some key presses if the user keyboard layout included non-ASCII characters
  • Fixed a bug that could cause a crash when adding or removing a breakpoint

Version 0.3

New/Improved Features

  • New debugger command: cartridge (alias: mbc) shows information about the cartridge and the current status of the MBC
  • Experimental debugger command: sld (Short for Stack Leak Detection) behaves similarly to finish, but stops if a stack leak or stack overflow is detected
  • The Cocoa port now allows configuring controls

Accuracy Improvements/Fixes

  • ROM banks now wrap (Fixes game: Pocket Monster Adventures (Bootleg))
  • Fixed incorrect DMA behavior, DMA might fail for specific source addresses (Fixes game: The Smurfs 3)
  • Timer registers were counting too slow in CGB double speed mode
  • Corrected read behavior of the HDMA5 register (Fixes game: A Bug’s Life in CGB mode)
  • Fixed a bug with the CGB boot ROM that prevented initialization of the wave RAM
  • The CGB boot ROM now loads the DMG tilemap for specific games, just like the original ROM (Fixes game: X (intro animation))
  • Fixed a bug where audio channel 3 was playing silently while it should have been muted.

Bug Fixes

  • Debugger’s finish command now behaves correctly when interrupts are involved
  • Corrected the description for the breakpoint command
  • SameBoy will not create save files for ROMs without cartridge RAM or RTC, even if they report having a battery, preventing 0-bytes save files

Version 0.2

New/Improved Features

  • Support for multiple breakpoints
  • Better debugger command style and error reporting; includes help command
  • In the SDL port, ^C in the terminal will break the debugger instead of quitting SameBoy
  • Cocoa port now saves preferences (Model and frame blending)
  • It is not possible to toggle console output and debugging in the Cocoa port

Accuracy Improvements/Fixes

  • Read/write masks corrected for several registers
  • Corrected 144th OAM interrupt behavior
  • LCD operation moved to advance_cycles, fixing some obscure timing issues (Fixes game: X / Ekkusu)
  • More accurate emulation of the registers controlling DMG emulation on CGB
  • Emulation of PCM_12 and PCM_34 in the SDL port

Bug Fixes

  • Debugger’s next command can now exit a function

Version 0.1

Initial public release