With some logs from DMV27, and assistance from blargg, I was able to fix the final remaining sound bug in bsnes. KON/KOFF behavior was updated to correct sound effects when pausing in Toy Story. Though despite having no known bugs, I'll continue to attempt to improve the accuracy even further.
I also worked a bit more on the lui port of bsnes. Video mode selection is now possible. But I still really need an input configuration window (and not to mention, Linux input support) at the very least before I can make another release.
This is an early beta for the next release of bsnes. Please keep in mind that the new UI is not yet complete, so things are kind of minimal. This version should be a lot faster than the previous versions, but sound doesn't seem to be working right on some machines. If you get no sound, I apologize, this will hopefully be corrected in time for the next official release.
Added blargg's new S-DSP emulator, runs at 1.024mhz. Many thanks to blargg for this, as this puts all portions of SNES emulation except for the S-PPU at bus-accuracy
blargg's S-DSP core fixes bugs in both Koushien 2 (J) and Toy Story (U)
Corrected all S-SMP cycle timings to be hardware accurate. Thanks to blargg for creating an amazing test ROM that tested every possible opcode
Corrected S-CPU wai instruction timing, fixes Mortal Kombat II
Reverted HDMA sync emulation once more to fix Breath of Fire II (G) and Secret of Mana (U)
Completely rewrote user interface to use libui, which is a wrapper that allows the same code to produce the same UI on both Windows (through the Win32 API) and Linux (through the GTK+ API)
Corrected $2100.d7 OAM reset behavior, thanks to research from anomie
Massively revamped the Linux port, should compile with no warnings or errors now
Added 64-bit support to libco, tested on FreeBSD/amd64, should work on Linux as well
Revamped makefile with suggestions from Nach
Improved Linux Xv renderer to use the far more common YUY2 format, which should work on most Xorg drivers, allowing hardware accelerated video scaling
Completely rewrote config file system. bsnes.cfg is now saved to user's profile folder on both Windows and Linux, allowing multi-user support
A lot more work has been done behind the scenes, including massive code cleanups and portability improvements
This is a maintainence release. I am mostly releasing this for the sake of the recently released Der Langrisser translation.
Changelog:
Windows port can once again map joypads through the Input Configuration panel
Using enter or spacebar to assign a key should no longer instantly map those keys
F11 now toggles fullscreen mode
Esc now toggles menu on and off (use F11+Esc combined to hide UI completely)
Fixed a bug in King of Dragons (J, U, E), KOFF was not cleared during S-DSP power(), thanks to FitzRoy for the report, and blargg for assistance fixing the bug
Fixed serious crashing error with File->Load on Linux/amd64 port
Hopefully fixed min/max undefined error on GCC 4.2.0, but I am unable to test to verify
Fixed many cast const char* to char* warnings for GCC 4.2.0, but some probably remain, as again, I am unable to test as I lack GCC 4.2.0
Set XV_AUTO_COLORKEY to 1 for Video/Xv renderer. Should fix some video drivers where there was no output, especially after running mplayer, etc. Thanks to sinimas for the fix
Added clear_video() to Video/Xv renderer. Green edges at the bottom and right sides of the video output are now gone, and unloading a ROM will clear video
* Fixed buffer overflow that was manifesting as corrupted tiles in Lemmings 2
* OAM and CGRAM addresses are now invalidated during active display, however the algorithms for how this address invalidation occurs is currently still unknown, so reads/writes are mapped to static addresses for now
* Re-added cheat code editor.
* Windows only: keypresses when main emulation window is not active are ignored once again
- Fixed serious bug in S-SMP incw and decw instructions -- fixes sound bug in Emerald Dragon
- Added Nach's MinGW fixes -- can now be compiled with MinGW/GCC3 or MinGW/GCC4
- Fixed const char* cast warnings in GCC 4.2, thanks to [vEX] for the feedback
- Updated source to use latest libraries for libco, libui, etc.
- Added new advanced options to adjust aspect ratio correction
- Cleaned up source code a bit
Improved CGRAM access timing restrictions, fixes a bug in WWF Super WrestleMania
Re-added Sufami Turbo menu to load ST and ST dual cartridges
Added support for the ST-010 coprocessor, used by F1 Race of Champions II
Improved libui to automatically adjust control sizes based on platform, vastly improves Windows UI
Fixed relative paths in config file for Windows port
bsnes no longer consumes 100% CPU time when idle on Linux port, thanks [vEX]
Fixed config file object to not rely on undefined C++ language behavior, thanks Nach
Added DSP-3 support, thanks to John Weidman, Kris Bleakley, Lancer, z80 gaiden
Added DSP-4 support, thanks to Dreamer Nom, John Weidman, Kris Bleakley, Nach, z80 gaiden
Started on support for SuperFX, no games playable as chip emulation is less than 1% complete
Unsupported special chips will now display an alert
Missing stbios.bin file when loading Sufami Turbo cartridges will now display an alert
Video settings now saved separately for windowed and fullscreen mode
Advanced option video<.mode>.synchronize can be enabled for vsync, but will cause sound crackling
Added menu option to toggle FPS counter
Minor source code cleanup
Since the last public release, I've completely rewritten the memory mapping and cartridge loading systems. With this, I've added preliminary support for the Broadcast Satellaview (BS-X), however very few BS-X games will run at this time. I've also switched compilers from Visual C++/8 to MinGW/GCC4, which grants a ~5-10% speedup over the previous release.
Changelog:
Major source code cleanup
Completely rewrote memory mapper to support runtime MMCs
Updated S-DD1 MMC to use new memory mapping interface
Improved S-DD1 emulation, thanks to information from orwannon
Added support for SameGame -- load via "Load Special -> Load BS-X Slotted Cart" menu option
Completely rewrote cartridge loader to support BS-X, BS-X slotted carts and ST carts
Created custom dialog windows for multicart loading
Improved generic memory mapper, which eliminates the need for cart.db [Nach]
Added BS-X slotted cart detection to generic memory mapper [Nach]
Linux port will now ignore keypresses when window is inactive
Linux port will use much less CPU power when idle
Added detailed compilation instructions to Makefile for Linux port
Added "make install" target and PNG program icon for Linux port
Switched Windows compiler to MinGW/GCC4
Windows executable is now packed with UPX to decrease filesize
Removed .ufo, .gd7 and .078 ROM extensions; added .bs extension
Added preliminary support for the BS-X base unit, BS-X base cartridge + MMC, and BS-X flash I/O
Major source code cleanup (lib/, ui/miu/, ui/vai/)
Cheat code editor was broken in v0.026, this is now fixed
Cheat code file format simplified for human readability
Makefile install target improvements [belegdol]
libui replaced with miu GUI library
Custom video / audio / input drivers replaced with vai HW library
ppc and ppc64 libco targets added [Vas Crabb]
x86 and x86-64 libco targets now work on OS X [Lucas Newman]
Changelog:
OpenGL (with hardware filter mode support) and SDL video drivers added to Linux port
OpenAL (with speed regulation disable support) and OSS audio drivers added to Linux port [Nach]
SDL input driver (with joypad support) added to Linux port
Emulator pause option added
Added option to select behavior of bsnes when idle: allow input, ignore input or pause emulator
Added support to remap common GUI actions to key/joypad presses on the "Input Configuration" screen
bsnes will now clamp the video output size when it is larger than the screen resolution
GUI library has been enhanced, and renamed to hiro
Fullscreen mode now always centers video, rather than approximates
Fullscreen mode now works correctly on Linux/Openbox
Extra layer of abstraction in src/ui has been removed, as GUI lib unifies all ports anyway
Video, audio and input drivers unified into standard library, named ruby
All custom headers have been merged into a new template library, named nall
Makefile rewritten, vastly improved. Allows quick toggling of compiled-in drivers
Makefile: all object files now placed in /src/obj, binary placed in /
libco greatly enhanced, no longer requires an assembler to build [byuu, blargg, Nach]
libco SJLJ driver added; bsnes should now build on any Unix-derivative now (Solaris, OS X, PS3, etc) [Nach]
Fixed register $213e.d4 PPU1 open bus behavior [zones]
Windows port will not activate screensaver while bsnes is running [Nightcrawler]
Visual C++ target no longer requires stdint.h
And lots more -- mostly code refactoring related
Changelog:
Greatly improved invalid DMA transfer behavior, should be nearly perfect now
Major code cleanup -- most importantly, almost all PPU timing-related settings moved back to PPU, from CPU
Added option to auto-detect file type by inspecting file headers rather than file extensions
Rewrote video filter system to move it out of the emulation core -- HQ2x and Scale2x will work even in hires and interlace modes now, 50% scanline filter added
Re-added bsnes window icon
Added new controller graphic when assigning joypad keys [FitzRoy]
Redundant "Advanced" panel settings which can be configured via the GUI are no longer displayed
Improved speed regulation settings
XP and Vista themes will now apply to bsnes controls
Added "Path Settings" window to allow easy selection of default file directories
Tab key now mostly works throughout most of the GUI (needs improvement)
Main window will no longer disappear when setting a video multipler which results in a window size larger than the current desktop resolution
Added two new advanced options: one to control GUI window opacity, and one to adjust the statusbar text
Changelog:
• Fixed bug and re-enabled HDMA bus sync delays
• Emulated newly discovered IRQ timing edge case
• Optimized offset-per-tile rendering
• Added state-machine implementation of S-DSP core, ~5% speedup
• Added SPC7110 detection, will now warn that this chip is unsupported
• Fixed very annoying Windows port OS beeping noise when using keyboard for input
• Linux port will now save most recent folder when no default ROM path is selected
• Added OpenGL rendering support to Windows port [krom]
• Fixed Direct3D pixel mode scaling bug [krom, sinamas, VG]
• Improved SNES controller graphic [FitzRoy]
• Added UPS (not IPS) soft-patching support; UPS patch must be made against unheadered ROM
• As always, cleaned up source code a bit
A new version of bsnes has been released. This version includes multiple user interface enhancements, including localization support.
Changelog:
• Core: simplified CPU / SMP flag calculations
• Added ALSA audio output driver to Linux port [Nach]
• Improved font handling for Windows and Linux ports
• Greatly cleaned up the user interface
• Windows port now uses Unicode instead of ANSI
• Added localization support
• Config and locale files can now be placed inside bsnes executable directory for single-user mode, if desired
• Fixed crashing bug with HQ2x on Linux/amd64 port [RedDwarf, Nach]
• Hid "Power Cycle" option by default, as it is too similar to "Reset"
• Slighty tweaked program icon [FitzRoy]
• Minor code cleanups -- replaced union bitfields with templates, improved memory allocation, etc
Very sorry for the inconvenience. Some last minute bugs snuck into the last release.
Also, I've added three new localizations: French (by tukuyomi), Portugese - Brazillain (by Hunter) and Russian (by Hatsuyuki). Dutch, Finnish and German should follow shortly, so be sure to check back in a week or so if you'd like one of those.
I forgot to mention this on the last update, but for any sites hosting the bsnes executable, you are free to distribute the archive with any locale you'd like. In fact, I'd prefer if you did, as it makes it easier for those who cannot read English.
Changelog:
• Windows: file open filters are now working once again
• All ports: emulation speed setting is now properly restored at startup
This release adds SPC7110 emulation, without the need for graphics packs!!, and a rewritten S-RTC (real-time clock) emulator.
SPC7110 support means that Far East of Eden Zero, FEoEZ: Shounen Jump Edition, Momotarou Dentetsu Happy and Super Power League 4 are now all fully playable. I will warn you, the emulation is very slow in this version -- while most areas of each game will run at the same speed as other games, there are a few peak moments where speed will drop by up to ~50%. The reason for the slow-down is that I am currently uncertain how to determine the amount of data to decompress in advance, so I default to the maximum amount possible. The reason I am releasing now anyway, is because I beleive in the "release early, release often" paradigm. It will likely take me a few weeks to finish researching this chip, and I didn't want to keep the work I had private during that time. But rest assured, bsnes v034 should feature much faster SPC7110 emulation.
neviksti, Andreas Naive and jolly_codger worked non-stop on the SPC7110 decompression algorithm for the past two weeks. caitsith2 provided valuable data to the effort. I only wish that I could've been of some use, but alas, I had no role in this. In the end, it was neviksti who managed to crack all three(!!) compression modes of this chip, which turned out to be a customized 8-bit QM-coder with a prediction model. You can read more about this here. I would also like to thank Dark Force and John Weidman (aka The Dumper) for their research notes on the SPC7110 register interface.
For those who don't understand the hoopla about figuring out this compression algorithm when we already had graphics pack simulation, I should note that we have since found a few errors in these packs. Not to mention, you no longer need ~4-16MB packs for each game you wish to run. They work like any other game now. Better still, the chip can now be used to compress new graphics, eg for any future translation efforts on these titles.
The real-time clocks in both Far East of Eden Zero and Dai Kaijuu Monogatari 2 will now save a ".rtc" file in your save folder, which contains the clock as set by the video game, as well as a timestamp from your computer when the time was last updated. It uses the difference between the saved timestamp and current time to update the time. This allows you to specify any time you like, whereas previously bsnes would just use your computer's current time, ignoring the time you set in-game. It also allows the "round clock by 30 seconds" option in both games to work. I avoided this before because this method makes supporting daylight savings time and such impractical, although I should note that the original hardware did not support DST, either. This method was required to pass the SPC7110 tests, and is overall much more faithful to how the original chips worked.
Once again, I'd really like to personally thank neviksti for his tireless efforts. Eliminating graphics packs from SNES emulation was one of my primary reasons for getting involved in the SNES emulation scene. That neviksti managed to crack this algorithm means a lot to me. Thank you so much, neviksti. This release is dedicated to you, now go get some sleep ;)
For this release: SPC7110 emulation speed has been greatly optimized, massive improvements to HDMA timing have been implemented, Multitap support was added, and the user interface was polished a bit more.
Changelog:
SPC7110 decompression code updated to latest version by neviksti and converted to a state machine; SPC7110 overhead is now identical to S-DD1 overhead (eg ~5% speed hit over standard games)
Fixed a major bug in SPC7110 data port emulation that was crashing Super Power League 4 [Jonas Quinn]
HDMA trigger point corrected to H=1104, bus sync timing corrected
All illegal DMA A-bus accesses should now be properly blocked
DMA state machine rewritten, greatly simplified
Major corrections to HDMA run timing; fixes flickering bugs in Mecarobot Golf and Super Mario Kart
Emulator now defaults to 2/1/3 SNES (CPU/PPU1/PPU2 revision numbers)
Multitap emulation added, can be attached to either or both controller ports; user interface updated to reflect this
Status messages (cartridge loaded / unloaded, UPS patch applied, etc) now appear in status bar
Added advanced configuration option, "input.analog_axis_resistance", to control gamepad analog stick sensitivity
Also, the SPC7110 emulator download link below was removed: if you are looking for this, please download the bsnes v034 source code, which has the most up-to-date version in the src/chip/spc7110 folder.
This release adds vsync support, improved header detection and many new configuration options. Many thanks go to I.S.T. for extensively testing the new header detection for regressions.
Changelog:
Added video synchronization support at long last [blargg, byuu]
Added audio panel to control volume, latency, frequency and SNES input frequency settings
Added driver panel to select APIs to use for video, audio and input
Added crash handler for driver initialization
Xv and SDL video drivers now work with compositing enabled on Linux/Xorg
Improved ALSA audio driver for Linux
Now using a fixed output frequency, along with a 4-tap hermite resampler
Improved header detection; fixes Batman: Revenge of The Joker and a few fan translations
Frameskip will now randomly choose a frame in each set to display; helps with animations
Locales now support meta-data, which allows for unique translations of the same English input
This release adds support for the SNES mouse, Super Scope and Justifier peripherals. It also simplifies cartridge loading and refines the user interface. Lastly, GZ and ZIP archives can now contain non-ANSI characters (Chinese, Japanese, Russian, ...) This support existed in the last release for all uncompressed files. Together, this means only JMA support on Windows lacks support for loading non-ANSI filenames. This is due to the library itself (really, it's more Windows' fault), and licensing issues prevent me from patching libjma as I did with zlib (bsnes is not GPL compatible.) I'm planning to work with Nach to fix this in a future release.
About the cartridge loading changes ... the emulator now determines what kind of cartridge is being loaded (eg normal, BS-X BIOS, Sufami Turbo cart, etc) by looking inside the file itself. If it detects a cart type that requires more than one ROM image to load, it will present you with the appropriate specialized load menu automatically. Aside from being more intuitive, this method also allows loading of BS-X and Sufami Turbo games from the command-line or via file association.
Changelog:
added mouse support to DirectInput and SDL input drivers
up to 96 buttons per controller; 8 buttons per mouse (5 per mouse on Linux) can be mapped now
added SNES mouse support (does not support speed setting yet)
added Super Scope support
added Justifier support (supports both Justifiers)
input management system almost completely rewritten to support new controllers
"Load Special" menu removed, all cart loading merged to "Load Cartridge ..." option
replaced "Power Cycle" and "Unload Cartridge" with "Power" -> "On" / "Off"
when video exceeds screen size and is scaled down, aspect ratio is now maintained [Ver Greeneyes]
zlib modified to support non-ANSI characters
cheat code count was limited to 1,024 codes before; it now supports unlimited codes per game
added sort by description setting for cheat code list
polished listbox control interaction (disable buttons when nothing selected, etc)
cleaned up OBC-1 chip emulation (code is functionally identical to v036)
added option to toggle fullscreen mode to settings menu
added advanced mode options to toggle base unit (none, Satellaview) and system region (Auto-detect, NTSC, PAL)
Changelog:
fixed a Linux listbox bug that left action buttons disabled when there was only one item [tukuyomi]
fixed a few strings that were not being translated by locale.cfg before [diminish]
Changelog:
eliminated S-DD1 DMA enslavement to the S-CPU; this allows the S-DD1 to behave more like the real chip, and it also simplifies the S-CPU DMA module
eliminated S-PPU enslavement to the S-CPU; all processor cores now run independently of each other
added cycle-level S-PPU timing for OAM address reset and OBSEL; fixes scanline glitches in Mega Lo Mania and Winter Olympics
removed ppu.hack.* settings; as they are no longer needed due to above changes
corrected VRAM tiledata cache bug; fixes Super Buster Bros v1.0 reset glitch
added memory export and trace logging key bindings to user interface
removed WAV logging (to trim the emulation core)
embedded readme and license texts inside executable
simplified S-CPU, S-SMP flag register handling
source code cleanup for S-CPU timing module
GUI-Linux: added style improvements to the listbox and combo box controls
GUI-Linux: finally added filetype filter support to the file open dialog
GUI-all: shrunk configuration panel [FitzRoy]
GUI-all: modified paths panel descriptions for clarity [FitzRoy]
Changelog:
Recovered ~10% speed loss from last release via S-CPU IRQ timing optimizations
Implemented O(1) binary-heap priority queue for event scheduling
Fixed a bug where BS-X slotted carts were never mapping SRAM
Fixed a bug where invalid controller input was always being allowed
Fixed all compilation warnings with GCC 4.3 and Visual C++ 9.0
Added advanced options to control S-CPU ALU hardware delays
S-RTC and SPC7110 timers updated to handle time_t overflow (Y2k38) gracefully
Cheat codes can now have multiple codes per entry, and multiple lines per description
Rewrote config file parser; removed config/ class from emulator core
Windows: added 256x256 image to program icon set
Linux: fixed Xorg keysym mapping, key names should show correctly in all cases now
UI: updated video panel, added fullscreen-on-startup and NTSC merge fields options
UI: simplified audio panel
UI: boolean options on advanced panel can be toggled via double-click
Lots of code cleanup, especially for S-CPU IRQ handling and nall template library
Changelog:
Fixed a bug that was preventing BS-X carts from loading and mapping properly
Fixed a bug with mapping joypads after the first Improved window centering code to reduce flickering, still a bit volatile on Linux due to Qt/X11 limitations
Minor cleanup work on S-PPU BG renderer
Improved mouse axis / button mapping
Added proper support for analog joypad inputs: both sticks and triggers are now fully supported
Windows: added RawInput support, allows up to 16 keyboards + mice to be mapped independently
Windows: added XInput support, allows Xbox 360 controller triggers to operate independently
Windows and Linux: Screen saver and monitor power saving disable re-added
This release adds full SA-1 support, with no known issues. All 26 games have been tested by myself and others, and a few have been beaten from start to finish. The latter include Super Mario RPG, Kirby's Dreamland 3, Kirby Super Star and Jikkyou Oshaberi Parodius.
Please understand that the SA-1 is essentially four times faster than the SNES' main CPU, so system requirements will be very high for these games. For example, on an E8400 @ 3.0GHz, I average ~160fps in ordinary games. But for SA-1 emulation, this drops to ~90fps, with the worst case being ~80fps.
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.
- 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
- 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
Changelog:
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)
Changelog:
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
- 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
Changelog:
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
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.
Changelog:
◦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
Changelog:
◦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
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.
2009-12-09We've tested the latest release on at least a dozen computers now, all seems to be in order for a release.
Changelog:
◦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.
Changelog:
◦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
changelog:
◦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
Changelog:
◦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
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.
Changelog:
◦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
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.
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.
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.
Changelog:
◦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
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.
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.
Changelog:
◦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.
Changelog:
◦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
Changelog:
◦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
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.
Changelog:
◦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.
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.
Changelog:
◦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
Changelog:
◦video filters and shaders now populate inside main menu; no longer have to select them as files
◦fixed 2xSaI, Super 2xSaI and Super Eagle on 32-bit platforms; still buggy on 64-bit Windows
◦fixed linear mirroring issues (fixes Mega Man X dash bug)
◦fixed RAM memory mapping bug in Sufami Turbo games
◦home folder is now %APPDATA%/bsnes or ~/.config/bsnes
◦added paths.cfg file, which will allow you to specify custom paths for any file types
◦save states and cheat files for multi-slot games are based on slot names instead of BIOS names
◦fixed compilation warning on OS X with nall::decimal
◦fixed calculation bug in nall::fp
◦Makefile now has options variable, example: make options=debugger
◦configuration files and cheat database can now reside in the same folder as the binary itself
◦updated to 2011-03-11 release of mightymo's cheat database
Changelog:
◦memory and most registers are now randomly initialized on power-up
◦fixed auto joypad polling issue in Super Star Wars
◦fixed .nec and .rtc file extensions (they were missing the dot) [krom]
◦PPU/accuracy now clears overscan region on any frame when it is disabled
◦PPU/compatibility no longer auto-blends hires pixels (use NTSC filter for this)
◦added hotkey remapping dialog to input settings window
◦added a few new hotkeys, including quick-reset
◦phoenix API now auto-sizes widgets based on font sizes
◦file dialog once again remembers previously selected file when possible
◦updated mightymo's cheat code database to April 19th release
Changelog:
◦rewrote S-DD1 module to decompress individual bytes at a time
◦simplified SPC7110 deinterleaving code
◦OBC1 should not clear RAM on reset [Jonas Quinn]
◦fixed enum-cast compilation errors with the latest GCC 4.6.x releases
◦added bsnes logo to about screen
◦make phoenix=gtk will now build the GTK+ port on Linux
◦added settings.startFullScreen to the config file for front-end users
◦added advanced settings option to disable window compositor (only works on Windows and Xfce)
◦merged settings windows into the panel approach used by bsnes/Qt in the past
◦fixed a crashing bug on input settings window
◦fixed GTK+ auto-geometry sizing
◦added screenshot capture capability
◦added exit emulator hotkey (defaults to being unmapped)
◦Xorg keyboard polling now uses cached Display variable [Bisqwit]
◦cheat code database updated [mightymo]