# Change Log ## 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](https://github.com/Gekkio/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