bsnes v0.045 released

This is a maintenance release to fix a crashing bug in S-DD1 games (Star Ocean, Street Fighter Alpha 2), and a video issue in games using the WAI instruction.
As always, my apologies for any inconvenience. SA-1 support required modification of a large amount of delicate code in the emulation core, and our limited testing team was not able to catch these in time before release.
bsnes v0.046

- Save RAM is now automatically saved once per minute
- Added delay to Super Scope / Justifier latching to fix X-Zone
- Fixed an edge case in CPU<>PPU counter history
- S-CPU can now run up to one full scanline ahead of S-PPU before syncing
- Added interface for Super Game Boy support (no emulation yet)
- Fixed a bug with path selection not adding trailing slash
- All S-SMP opcodes re-written to use new pre-processor
- Entire core encapsulated into SNES namespace
- Core accepts files via memory only; zlib and libjma moved outside of core
- Major Makefile restructuring: it's now possible to build with just "make" alone
- Linux: libxtst / inputproto is no longer required for compilation
- Lots of additional code cleanup
bsnes v0.047
bsnes v0.048

- Added save state support
- Added SPC7110 and OBC1 save state support
- Added new tools group, with new cheat code and save state managers
- Lots of new UI shortcuts: quick save state, quick load state, show state manager, etc
- Escape key will now close both the settings and tools group windows
- Added major speed-ups to both SuperFX and SA-1 emulation; both now run ~15-25% faster than v047
- Added new video filter, LQ2x; it's as fast as Scale2x while being almost as smooth as HQ2x
- Re-wrote HQ2x algorithm; code size was reduced to less than 10% of its original size with virtually no speed loss
- Corrected SuperFX2 cache access timing; fixes Stunt Race FX menus and slowdown in other titles
- Relaxed palette write limitations for PGA Tour Golf [Jonas Quinn]
- Fixed a slight timing issue that was breaking 'An Americal Tail - Feivel Goes West'
- Turned off auto-save of SRAM as it was causing slowdowns when writing to flash memory; can be re-enabled via bsnes.cfg -> system.autoSaveMemory = true
- Added bsnes.cfg -> system.autoHideMenus, defaults to false; when true, menu and status bars will be hidden upon entering fullscreen mode
- Added skeletons for ST011 and ST018 support. Both Quick-move titles get in-game now
- Re-wrote S-CPU and S-SMP processor cores to use templates, removed custom pre-processor
- Split PPUcounter into a base class inherited by both PPU and CPU; allows both cores to run out-of-order
- Split inline header functions to separate files, allows headers to be included in any order now
bsnes v0.049

Optimized S-PPU emulation, provides a ~10-15% speedup in normal games
Cleaned up cheat editor user interface
Added save state and export data path selections
Added workaround for a strange issue that caused PAL games to run at 60 fps sometimes
Fixed sprite caching issue; fixes SD F-1 Grand Prix
Fixed PPUcounter reset issue; fixes Bishoujo Janshi Suchie-Pai [Jonas Quinn]
Fixed scaling on scanline, Scale2x, LQ2x and HQ2x on hires and interlace screens
Fixed sizeof(bool) serialization issue for PowerPC architecture [Richard Bannister]
Fixed cheat code sort ordering
Fixed a bug with centering in fullscreen mode
Fixed an audio pitch bug when changing frequency
Fixed a volume adjust bug when frequency was exactly 32000hz
Fixed X-video RGB rendering bugs [thanks to tukuyomi for testing]
Fixed a file open dialog issue on Linux when using QGtkStyle [jensbw]
Fixed a memory corruption issue involving QApplication::main() [giovannibajo]
Added a preliminary debugger (disabled in binary releases due to associated speed hit)
Added S-CPU and S-SMP stepping and tracing support
Added read/write/execute breakpoint support
Added memory editor (currently it can only view memory)
Various code cleanup work, as usual (note: the debugger code is messy, as it is in-progress)
bsnes v0.050
bsnes v0.051

corrected a small bug in HDMA processing; fixes College Football '97 flickering corrected ROMBR and PBR SuperFX register masking; fixes Voxel demo [MooglyGuy] DSP-4 driver AI bug fixed [Jonas Quinn] added save state support to the S-DD1, S-RTC, DSP-1, DSP-2 and ST-0010 co-processors fixed a freeze issue when the S-SMP encounters STOP and SLEEP opcodes Cx4 save states no longer need floating-point values, and are thus fully portable now added new custom file loading dialog; allows non-modal usage, screenshot previews and ROM info summary, among many other benefits added support for IPS soft-patching added blargg's File_Extractor library added support for archives compressed using 7-zip, RAR and BZip2; which is in addition to existing support for Gzip, ZIP and JMA state manager now properly updates the timestamp column on saves [FitzRoy] added OpenGL renderer to OS X port fixed system beep issue with keyboard input on OS X port fixed menubar visibility issue on OS X port fixed a Display handle leak on Linux port [snzzbk] X-video driver now releases SHM memory properly upon exit [emon] fixed Direct3D rendering issue that was blurring video on some cards [Fes] enhanced window positioning code for all platforms debugger is now GUI-driven instead of via command-line memory hex editor is now fully usable added PPU video RAM viewer to debugger added S-CPU and S-SMP tracing capabilities to debugger Qt version upgraded to 4.5.2, and compiled with optimizations enabled; runs faster but makes the binary slightly larger too many code cleanups to list
bsnes v0.052

- fixed loading of files and folders containing non-ANSI characters (Chinese, Japanese, etc)
- fixed a slight lag on startup due to the new file browser
- fixed path selection setting, screenshots will now be saved to the correct directory
- hid memory editor scrollbar since it does not work yet
- disabled window positioning on Linux due to bugs in the Compiz compositor
- added icons from the Tango icon library to the menus and panels
bsnes v0.053

save RAM is initialized to 0xff again to work around Ken Griffey Jr Baseball issue
libco adds assembly-optimized targets for Win64 and PPC-ELF [the latter courtesy of Kernigh]
libco/x86 and libco/amd64 use pre-assembled blocks now, obviates need for custom compilation flags
added a new cheat code search utility to the tools menu
separated filters from main bsnes binary to libsnesfilter / snesfilter.dll
added 2xSaI, Super 2xSaI and Super Eagle filters [kode54]
added full configuration settings for NTSC and scanline filters (12+ new options)
further optimized HQ2x filter [blargg]
added Vsync support to the Mac OS X OpenGL driver
added folder creation button to custom file load dialog
fixed a few oddities with loading of "game folders" (see older news for an explanation on what this is)
updated to blargg's file_extractor v1.0.0
added full support for multi-file archives (eg GoodMerge sets)
split multi-cart loading again (BS-X, Sufami Turbo, etc) as required for multi-file support
cleaned up handling of file placement detection for save files (.srm, .cht, etc)
file load dialog now remembers your previous folder path across runs even without a custom games folder assigned
windows now save their exact positioning and size across runs, they no longer forcibly center
menus now have radio button and check box icons where appropriate
debugger's hex editor now has a working scrollbar widget
added resize splitter to settings and tools windows
worked around Qt style sheet bug where subclassed widgets were not properly applying style properties
bsnes v0.054

This release is essentially the same as v053, but it's now at least as fast as v052 was, and ~10% faster than v053, which lacked profiling.

I did add in two quick changes, however: first, when starting in fullscreen mode, the video output size was being incorrectly set to the windowed size; second, by requiring save states to match the CRC32 of games, it made debugging with them impossible, so I've turned off the CRC32 matching.
bsnes v0.055

◦added Super Game Boy emulation (thanks to gambatte for the Game Boy core)
◦extended hybrid scanline/cycle PPU renderer to support Mode7 register caching; fixes scanline flickering on NHL '94 title screen
◦all windows (other than the main window) can be closed with the escape key now
◦file dialog path selection now accepts typed paths; can be used to access hidden directories and network shares
◦file dialog's game information panel can now be disabled
◦fixed a crashing issue when the file dialog was given an invalid path
◦fixed screenshot capture save location
◦added screenshot capture option to tools menu
◦state manager now auto-closes when loading a state; it can be reopened quickly with F3
◦fixed GZip archive loading
◦fixed NTSC off-by-one filter bug on hires screens
◦extended Scale2x, LQ2x and HQ2x to properly filter hires screens
◦added Pixellate2x filter
bsnes v0.056

◦lowered Game Boy audio volume so that it matches SNES audio volume
◦fixed Super Game Boy multi-player support
◦fixed Super Game Boy swapped player bug
◦compressed Game Boy cartridges can now be loaded
◦added save state support for Super Game Boy games
◦blocked illegal Super Game Boy packets, fixes Zelda DX, Akumajou Dracula, etc palette issues
◦main window once again shrinks on size changes
◦joypads can now control the file loading window (support is very rudimentary)
◦cleaned up video and audio sliders, increased audio input frequency range for 59hz monitors
◦rewrote all of the input capture system from scratch
◦added dozens of additional GUI hotkey bindings to resize the main window, control synchronization, control speed, etc
◦it is now possible to map keyboard modifiers (shift, control, alt, super) to any input or hotkey; eg alt+enter = fullscreen
◦merged all input capture windows into the main settings panel
◦added turbo button support; hold down turbo buttons to send a 30hz input pulse
◦added asciiPad controller emulation; contains off/turbo/auto fire toggles and slow-motion mode
◦asciiPad support allows for quick switching between keyboard and gamepad input
◦merged scanline filter into the user interface (under Video Settings) to allow it to work on all filters; including the NTSC filter
◦killed off an evil QString <> string intermediary class called utf8; string class can convert to and from QString directly now
◦added fast BS-X, Sufami Turbo and Game Boy cartridge loading: use the filter list under "Load Cartridge" to bypass the BIOS selection screen
◦added pixel shader support to the OpenGL driver on Windows and Linux; note that it only really works well on Linux at the moment
◦added proper Vsync support to the OpenGL driver on Windows and Linux using GL extensions; again this really only works well on Linux
◦added unique path memory for shaders, folders, cartridges, BS-X, Sufami Turbo and Game Boy images
◦upgraded to Qt 4.6.0 release candidate 1; fixes an issue with the first checkbox in lists not updating when clicked
bsnes v0.057

I'm really sorry about this, but a major issue snuck into v056. It was caused by a bug in the newly released Qt 4.6.0 RC1. Whenever one moved the mouse cursor over the main window in the Windows port, the frame rate was immediately cut in half, which effectively ruined Mouse, Super Scope and Justifier support. As for how this could happen, well ... I'm ... really at a loss for words about this.

This release does not change the source code at all except to increment the version number, and it is built against Qt 4.6.0 beta 1 instead of 4.6.0 release candidate 1 as v055 was.

I will file an official bug complaint and post a link to it here during next week. Again, my apologies for any inconvenience. I incorrectly assumed it would be safe to update to RC1, and didn't spot the bug in time.
bsnes v0.058 released

2009-12-09We've tested the latest release on at least a dozen computers now, all seems to be in order for a release.

◦added 21fx support
◦added movie recording and playback support
◦added rewind support (enable under Settings->Configuration->Advanced, use backspace key to rewind)
◦added speedup (fast forward) and slowdown key bindings
◦audio no longer stutters on Windows when moving or resizing the main window
◦co-processors can now specify their own clock rates instead of sharing the S-CPU clock rate
◦Super Game Boy 2 now runs at the correct hardware speed, and not 2.4% faster like the Super Game Boy 1 does
◦added Vsync support to the Windows OpenGL driver (Intel graphics drivers do not support this option, because their engineers are lazy)
◦OpenGL driver no longer re-initializes when changing video synchronization, helps pixel shaders
◦refactored user interface compilation; now split into several object files, auto-generated MOC files placed under src/obj/
◦worked around a bug in the PulseAudio sound server that was causing the ALSA output driver to lock up [BearOso]
◦rewrote and simplified the save state manager, it is no longer a part of the core
◦S-DD1 and SPC7110 can now access up to 256MB via their MMCs
◦re-added background and OAM layer toggling under the tools dialog
◦added config file options to adjust emulation speed levels (config.system.speed*)
◦added snesreader, snesfilter and supergameboy support to the OS X port
◦added a really neat pixel shader that can perform point scaling to non-even multiples, eg it looks great even with aspect correction [Fes]
◦upgraded to Qt 4.6.0 official
Debugger changelog:
◦added memory export and import to the memory editor
◦added bus usage analyzer: logs opcodes, memory reads, memory writes and M/X states to usage.bin file
◦added disassembler that can trace both forward and backward from the current execution address
◦extended read/write breakpoints to the S-SMP
◦re-added trace masking option
Errata: there is one known bug in Qt 4.6.0 that affects the Windows port: menus attached to buttons show up as invisible on Windows Vista and above. I only use this on the file load dialog options button, and only to toggle the information pane on and off. Given that this is less severe than the bugs in the beta versions, I've upgraded anyway. I'll submit a bug report to the Qt team for this shortly. Also, my sincerest thanks to Bradley Hughes from the Qt development team for quickly fixing this show-stopper bug that greatly affected performance in bsnes v056.

New pages: I've added a new page to the navigation menu to explain 21fx, and I've also added a bsnes compilation guide on the main bsnes page. Please check those out for more information.
bsnes v0.059

◦fixed a bug in the save state manager that was allowing saves for unsupported special chips
◦added save state support for SuperFX games
◦added save state support for SA-1 games
◦the "Apply UPS" checkbox actually works now; allows bypassing of patching prior to ROM loading
◦ROM loader will display internal ROM title and header info for uncompressed files ending in ".sfc"
◦added Shift JIS to UTF-8 conversion for internal ROM titles
◦"open-folder" concept now requires folders to end in ".sfc" to avoid false positives
◦shrunk all GUI buttons and right-aligned them, as some of them were ridiculously long before
◦rewrote settings and tools windows to be driven via tabs instead of lists; this saves a lot of screen space
◦rewrote input mapping system to use a tree view instead of the confusing combo box hierarchy; hopefully more people will find the user interface GUI hotkey remapping section now
◦added support to map modifiers as individual keys (eg you can map the shift key to the SNES select button)
◦rewrote the cheat code editor, it behaves exactly like the state manager now; there are 128 pre-defined slots, and it is easy to clear any or all of them
◦the cheat file will auto erase itself upon exit if all codes and descriptions have been erased
◦fixed title bar game name ordering; was "bsnes v058 - Game Name", is now "Game Name - bsnes v059"
◦fixed a bug where pressing escape inside the main window's menus would cause the program to quit
◦Windows: worked around QTBUG-7188 to fix the multi-file archive loading dialog; it was not updating properly before
◦Linux: added full-API PulseAudio driver with synchronization and latency control [RedDwarf]
◦Linux: fixed a crashing bug involving OpenGL and glXSwapIntervalEXT()
◦Linux: X-Video driver texture now resizes dynamically to support > 1024x1024 for any future filters to use
◦Debugger: single-stepping instructions now updates all windows marked to "auto update"
◦Debugger: fixed execute breakpoints, they were disassembling at the wrong offset
◦Debugger: S-CPU bus breakpoints now mirror WRAM $7e:0000-1fff to $00-3f|80-bf:0000-1fff
◦Debugger: fixed a rendering issue when stepping through hires games
◦Debugger: added property system; can now view internal register states of all S-CPU and S-PPU registers (S-SMP and S-DSP coming soon)
◦Debugger: added CGRAM palette viewer
◦Debugger: added OAM sprite viewer (no graphical output yet)
◦Debugger: added options window -- so far only to control output of memory / execution usage tables
◦Debugger: updated usage and memory export file names to start with the loaded cartridge name
◦Source: cleaned Utility class, split some of the functionality out to Cartridge class
◦Source: greatly simplified SNES::Cheat class, SNES::Cartridge class; etc

◦added folder-up button to the file loading window
◦hid new-folder button except on path selection window
◦removed "Assign Modifiers as Keys" button; replaced with input.modifierEnable in the configuration file
◦fixed a Qt signal issue that was causing ROM loading to take an extra second or two longer than necessary
◦scale 5x setting will now maintain an exact multiple in both width and height for both NTSC and PAL modes
◦re-added group assignment and unassignment to the input settings window
◦re-wrote mouse capture code to be more intuitive, now uses buttons to set assignment
◦re-added input.allowInvalidInput check to stop up+down and left+right key combinations by default [Jonas Quinn]
◦split "Tools Dialog" menu option into separate items for each tool (Cheat Editor, Cheat Finder, State Manager)
◦added S-SMP and S-DSP property information readouts to the debugger
bsnes v059.06

◦21fx API moved to pre-finalized form as S-MSU1; more about this on the forum
◦OpenGL driver now uses GL_CLAMP_TO_BORDER instead of GL_CLAMP_TO_EDGE to support screen curvature shader
◦rewrote file open dialog; code is greatly simplified, interface is improved
◦all cheat code columns are now enquoted, and empty codes at the bottom of the file are omitted (format is compatible with previous releases still)
◦debugger: added missing DMA variables to S-CPU properties viewer
◦snesfilter: added OpenMP (multi-threading) support to HQ2x filter
◦lots of other miscellaneous code cleanup work
bsnes v061 beta released

Please keep in mind that bsnes v060 remains the current stable release. v061 has been released as a work-in-progress build. As such, it is only available at Google Code.

I am releasing this WIP to allow the public to test out and comment on the new XML mapping system, as well as the integration of mightymo's cheat code database into the cheat editor. I would greatly appreciate feedback on these two on the forums.

There are some important issues with this release. The biggest is the move to C++0x. This requires GCC 4.4.0 or newer to compile, thus it is not currently possible to build this on OS X using Xcode. Nor would it be possible on certain BSDs or older distros. If you have an older compiler, please stick with v060, or use a binary release where available.

Another issue is that TDM/GCC 4.4.1 for Windows crashes with an internal compiler error when attempting to generate a profile for the DSP-1 module. This is a bug in the compiler, and not in the code itself. The workaround is to simply omit profile-guided optimization for this one object.

Lastly, there's also a known bug in the memory mapping. If you load an SA-1 game, SuperFX games will not load properly afterward unless you restart the emulator. I'm looking into the cause now, but it didn't seem serious enough to hold up a WIP release.

So, yes. If you want a good gaming experience that's been fully tested and stable, please stick with v060. If you want to see some bleeding edge features, I'd appreciate feedback on v061. Thanks for reading this.

◦added mightymo's cheat code database, access via "Find Cheat Codes" button on cheat editor window
◦added an option to temporarily disable all cheat codes quickly
◦debugger now properly uses S-SMP IPLROM when needed for disassembling and tracing
◦indexed indirect read opcodes in the S-CPU were testing for IRQs one cycle too early [someone42]
◦fix an off-by-one array iteration in S-PPU OAM rendering [PiCiJi]
◦added some implicit linked libraries to linker flags for Fedora [belegdol]
◦moved from C++98 to C++0x, resulting in substantial code cleanups and simplifications
◦C++0x: implemented foreach() concept for linear container iteration
◦C++0x: implemented concept system using SFINAE and type traits
◦C++0x: utilized auto keyword to increase source readability
◦C++0x: moved to strongly-typed enumerators
◦C++0x: rewrote va_list-based code to use type-safe variadic templates
◦C++0x: replaced noncopyable class with deleted default copy functions
◦C++0x: replaced custom static_assert template class with built-in version
◦C++0x: utilized rvalue references to implement move semantics into string, array, vector and serialization classes
◦C++0x: utilized std::initializer_list for { ... } initialization support to lstring, array and vector classes
bsnes v062 beta released
bsnes v062.04 beta

I suppose I should start calling these nightlies, heh. blargg went ahead and verified every last possible edge case with regards to the S-CPU MUL / DIV registers. It uncovered a few errors in my implementation, which have since been corrected. The design used now should be a direct reflection of the hardware implementation: no actual multiplication, no actual division, and no variable-length bit-shifting.

We also spent about eight hours straight hammering away at the S-SMP test register. We have a partial understanding of TEST.d3 and TEST.d0, and a complete understanding of the other six bits. All of this has been implemented as well.

Lastly, snesreader gets a tiny update to fix Test Drive II, which broke due to a slight regression when porting the mapping code to XML.
bsnes v064 released

A thank you to everyone who helped test the RC to ensure stability. I've uploaded the official v064 release to Google Code.

The most important change in this release is the cycle-based PPU renderer; but due to performance reasons the scanline-based renderer remains the default in the Windows binary. If you want to try out the cycle-based renderer, you will need to compile from source for now.

Another major change is the introduction of libsnes, which allows one to build bsnes as a shared library that can be used from other programming languages. It is intended both to create a regression testing framework, and to provide API stability for the various projects that use the bsnes core. While I can't guarantee the API to libsnes won't change, I will properly revision it and do everything I can to avoid changing it if possible.
bsnes v065 released

It's been a while, so here is a new release of bsnes.

Unfortunately I don't have a full changelog this time. Most of the work went into stabilizing libsnes (which is used by the experimental .NET, Cocoa and Python UIs; as well as by Richard Bannister's OS X port).

The Windows binary package now comes with all three variants included: bsnes.exe, the standard version that casual users should run; bsnes-debugger.exe, for SNES programmers and ROM hackers only; and bsnes-accurate.exe, which should not be used by anybody, ever.

In all seriousness, bsnes-accurate.exe is bsnes with the dot-based S-PPU renderer. It's twice as slow as the normal build, and you won't really notice any differences except in Air Strike Patrol. It's there for the curious and for any SNES programmers who want to try making some really awesome video demos.

◦OS X port builds once again; now requires gcc44 from Macports
◦libsnes API finalized
◦fixed a bug with S-CPU debugger breakpoints
◦various source cleanup
bsnes v066 released2010-07-31

Major features in this release are: serial controller emulation, a brand new scheduler that supports multiple simultaneous coprocessors, and accuracy improvements.

The serial controller is something devised by blargg. With the proper voltage adjustments (5v-9v), it is possible to wire an SNES controller to a serial port, which can then be used for bidirectional communication between the SNES, and (usually, but not only) a PC. The support in bsnes was added so that such programs could be debugged and ran from within an emulator, and not just on real hardware.

The scheduler rewrite was meant to allow the combination of coprocessors. It was specifically meant to allow the serial controller thread to run alongside the SuperFX and SA-1 coprocessor threads, but it also allows fun things like MSU1 support in SuperFX and SA-1 games, and even creating dev cartridges that utilize both the SuperFX and SA-1 at the same time. The one thing not yet allowed is running multiple instances of the exact same coprocessor at the same time, as this is due to design constraints favoring code inlining.

There are two important accuracy updates. The first is that when PAL video mode is used without being in overscan mode, black bars are shown. Emulators have always shown this black bar at the bottom of the screen, but this is actually incorrect. resxto took pictures from his PAL TV that shows the image is in fact vertically centered in the screen. bsnes has been updated to reflect this.
Also interesting is that I have backported some code from the dot-based PPU renderer. In the game Uniracers, it writes to OAM during Hblank, and expects the write to go to a specific address. In previous releases, that address was hard-coded to go to the required memory location. But the way the hardware really works is that the write goes to the extended attribute address for the last sprite that the PPU fetched, as the PPU is still asserting the OAM address bus. Now, due to the precision limitations, I was not able to also port timing access during the active display period. However, this is sufficient to at least remove the last global hack from the older, speed-focused scanline renderer.
bsnes v067 released2010-08-01

I apologize, bsnes v066 had a small error in the source that resulted in the PPU not synchronizing properly to the CPU. This bug was not exposed in the images I use to test releases. I have also updated the cheat code database, which is maintained by mightymo.
bsnes v068

◦Split core into three profiles: accuracy, compatibility and performance
◦Accuracy core now takes advantage of variable-bitlength integers (eg uint24_t)
◦Performance core uses a new S-CPU core, written from scratch for speed
◦Performance core uses blargg's snes_dsp library for S-DSP emulation
◦Binaries are now compiled using GCC 4.5
◦Added a workaround in the SA-1 core for a bug in GCC 4.5+
◦The clock-based S-PPU renderer has greatly improved OAM emulation; fixing Winter Gold and Megalomania rendering issues
◦Corrected pseudo-hires color math in the clock-based S-PPU renderer; fixing Super Buster Bros backgrounds
◦Fixed a clamping bug in the Cx4 16-bit triangle operation [Jonas Quinn]; fixing Mega Man X2 "gained weapon" star background effect
◦Updated video renderer to properly handle mixed-resolution screens with interlace enabled; fixing Air Strike Patrol level briefing screen
◦Added mightymo's 2010-08-19 cheat code pack
◦Windows port: added XAudio2 output support [OV2]
◦Source: major code restructuring; virtual base classes for processor cores removed, build system heavily modified, etc.
bsnes v069

◦added new effect toggle tool window, which allows toggling of BG/OAM graphics layers and DSP audio channels
◦added an option to use the native OS file and folder open dialogs instead of my custom browser
◦added a new state selection window
◦added frame skipping support, which is only used during fast forwarding; as a result, fast forward is now ~80% faster
◦removed unnecessary icons, added workaround for checkbox/radiobox menu icons on Linux/GNOME
◦added RTS/CTS support to serial simulation
◦all cores: OAM high table even address writes should update OAM latch data register [blargg]
◦accuracy core: major improvements to mosaic emulation
◦accuracy core: added additional hardware-based caching, resulting in a ~15% speed boost
◦accuracy core: emulated CGRAM address invalidation for writes during active display
◦performance core: added new S-PPU renderer, resulting in a ~10% speed bost
bsnes v070

◦configuration file is now called bsnes-qt.cfg; the first run of this release will start with a clean state
◦MSU1 now supports audio looping via new PCM file format
◦disabled state load/save menu due to a serious bug in Qt 4.6.0 for Windows
◦RawInput: all keyboards merged to KB0, it should no longer be required to reconfigure the keyboard out-of-the-box
◦RawInput: fixed a bug where Xbox 360 controller states were being overwritten by DirectInput controllers
◦RawInput: fixed a device sorting bug caused by moving ruby to Unicode
◦Direct3D: fixed a pixel shader bug caused by moving ruby to Unicode
◦Linux port: fixed sudo make install target
◦Linux port: default to gcc/g++ instead of gcc-4.5/g++-4.5 for one last release
◦updated to mightymo's 2010-09-20 cheat pack
bsnes v074.11 beta
bsnes v075 released 2011-01-25

This release brings improved Super Game Boy emulation, the final SHA256 hashes for the DSP-(1,1B,2,3,4) and ST-(0010,0011) coprocessors, user interface improvements, and major internal code restructuring.

◦completely rewrote memory sub-system to support 1-byte granularity in XML mapping
◦removed Memory inheritance and MMIO class completely, any address can be mapped to any function now
◦SuperFX: removed SuperFXBus : Bus, now implemented manually
◦SA-1: removed SA1Bus : Bus, now implemented manually
◦entire bus mapping is now static, happens once on cartridge load
◦as a result, read/write handlers now handle MMC mapping; slower average case, far faster worst case
◦namespace memory is no more, RAM arrays are stored inside the chips they are owned by now
◦GameBoy: improved CPU HALT emulation, fixes Zelda: Link's Awakening scrolling
◦GameBoy: added serial emulation (cannot connect to another GB yet), fixes Shin Megami Tensei - Devichil
◦GameBoy: improved LCD STAT emulation, fixes Sagaia
◦ui: added fullscreen support (F11 key), video settings allows for three scale settings
◦ui: fixed brightness, contrast, gamma, audio volume, input frequency values on program startup
◦ui: since Qt is dead, config file becomes bsnes.cfg once again
◦Super Game Boy: you can now load the BIOS without a game inserted to see a pretty white box
◦ui-gameboy: can be built without SNES components now
◦libsnes: now a UI target, compile with 'make ui=ui-libsnes'
◦libsnes: added WRAM, APURAM, VRAM, OAM, CGRAM access (cheat search, etc)
◦source: removed launcher/, as the Qt port is now gone
◦source: Makefile restructuring to better support new ui targets
◦source: lots of other internal code cleanup work

Many thanks to those who helped beta test for this release, we were able to squash some important bugs.
bsnes v076 released 2011-02-25

Most notable in this release is that sound support has been added to my own Super Game Boy emulation. The GUI toolkit, phoenix, has also received a complete rewrite; with the most visible change there being that windows are now resizable.

◦added sound emulation to Game Boy core
◦fixed Super Game Boy save state support
◦added HexEdit widget to Windows and Qt targets; debugger can now be compiled on all platforms
◦entering fullscreen now auto-hides mouse; and mouse capture is toggled otherwise by F12 key
◦fullscreen command and geometry caching works much better on GTK+ and Qt targets
◦phoenix rewritten from scratch; now supports resizable layout containers
◦phoenix/Windows no longer relies on buggy SetParent API to reparent widgets