What bsnes-mcfly does NOT do is compete with bsnes v107. I will not actively encourage users of bsnes v107 to migrate to bsnes-mcfly, because bsnes v107 combines the most important features with a relatively bug-free GUI, and I have no desire to harm bsnes v107 in any way.
Current release version: v106r14b (based on higan/bsnes v106r63)
This version of the Qt GUI has the following features (an ! indicates an evil hack that modifies part of the Super Famicom emulator core):
- Compatibility with higan/bsnes v106r63, including v107-style gamepaks (cartridge folders)
- Low-level emulation of the HG51BS169 (Cx4) and ARM6 (ST018)
- Newer MSU1 features such as audio resume
- Concatenated firmware in game ROMs, as well as a "firmware/" fallback directory.
- No cartridge folders are created within the user's home directory. It is all handled in memory.
- Database lookup of SNES and Super Famicom cartridges. The database is embedded right into the application along with heuristics for games not in it, so icarus is not required.
- Compressed archive support
- Built-in: Zip, GZip
- With archive-reader: 7z, BZip2
- 7z support by Igor Pavlov's LZMA SDK, available in the public domain
- BZip2 support by Rob Landley under the zero-clause BSD license
- Copier extensions: SMC, SWC, FIG, UFO, GD3, GD7, DX2, MGD, MGH, 048, 058, 068, 078, BIN, USA, EUR, JPN, AUS
- All of these extensions are also available for use with BS Memory and Sufami Turbo slot cartridges.
- Optional 512-byte copier header
- WASAPI and ASIO audio drivers
- Exclusive mode for Direct3D and WASAPI
- Separate directories for save RAM, save states, and other mutable game files
- Turbo buttons
- asciiPad (more advanced turbo switches with Off, Turbo, and Auto settings)
- !Simultaneous up+down and left+right (must be enabled in the settings file)
- IPS, UPS, and BPS soft-patching
- IPS and UPS patches are applied before removing the copier header, and BPS patches are applied after.
- Movie recording and playback
- Cheats
- Raw/Pro Action Replay (AAAAAA=DD, AAAAAA=CC?DD, AAAAAA:DD, AAAAAADD, AAAAAA/DD)
- Can omit the address/data separator, use an equals sign, or use a colon; higan supports the equals sign only.
- Game Genie (GGGG-GGGG)
- Will remember that you inputted the code in Game Genie format instead of converting it to Pro Action Replay on save and reload.
- Raw/Pro Action Replay (AAAAAA=DD, AAAAAA=CC?DD, AAAAAA:DD, AAAAAADD, AAAAAA/DD)
- Cheat search (works only on WRAM at 7e-7f:0000-ffff)
- !Enabling/disabling of individual PPU layers and DSP channels (the former only in the Compatibility and Performance profiles, the latter in every profile)
- Software filters
- 2xSaI, Super 2xSaI, Super Eagle
- HQ2x, LQ2x, Scale2x
- Pixellate2x
- blargg's snes_ntsc (with 15-bit precision instead of 13-bit precision)
- Phosphor3x (was included in some bsnes v08x versions)
- OpenGL shaders
- Curvature and Edge Detection from higan v092
- HQ2x, Pixellate, Scale2x
- HDR-TV, Watercolor (these were marked “Archive” in bsnes v083 and not restored when bsnes v085 went back to XML from BML)
- Sepia (converted from Direct3D)
- Only 1 copy of nall for the overall project instead of a separate copy each for bsnes, snesfilter, and snesreader
- Performance profile speed hacks (accuracy and compatibility profiles not affected)
- High-level emulation of the DSP1, DSP2, DSP3, DSP4, ST010, and Cx4, but firmwares are still required
- SMP and DSP are merged into a single APU class that references blargg's SPC_DSP
- Mixed opcode/cycle timing for the SMP; slightly faster while still supporting Tales of Phantasia
- Only the Super Scope and Justifier use cothreading instead of every single peripheral
- JOY1/JOY2/JOY3/JOY4 registers handled on a controller-by-controller basis
- Compressed archives: Z (compress), RAR, JMA
- All of these have restrictive licenses. Need to think carefully on how to implement them...
- Selecting one of multiple files in a single Zip archive
- snes_ntsc configuration dialog
- Because the palette size was increased from 32768 to 524288, changing a setting causes bsnes-mcfly to freeze while it recreates the palette. This dialog had to go.
- Binding the Pause/Break key to an input
- Direct3D shaders
- As consolation, the Sepia shader was converted to OpenGL
That said, the official bsnes v107 is the preferred option, so if you are satisfied with the feature set of bsnes v107, then use that instead. bsnes-mcfly is only concerned with replacing bsnes v073 and bsnes-classic, not bsnes v107.
==============================
Original post: “Is AWJ still in the scene? Regarding bsnes-classic”
Hello everyone. I was highly reluctant to come back to NesDev after a heated dispute between me and some of the forum members here on NesDev last year, but today, I will make a one-time exception.
AWJ made a fork of bsnes v073, which he called “bsnes-classic”. In it, he revived the Qt-based GUI and backported low-level emulation of the uPD96050 coprocessor used by F1 Race of Champions II and Hayazashi Nidan Morita Shougi from bsnes v074. Since then, he has backported a few of higan's emulation accuracy improvements, all to an ancient version of bsnes, all for the sake of a feature-rich GUI based on a bug-plagued toolkit. bsnes-classic was further forked into the debug-oriented bsnes-plus.
I believe that this practice is unsustainable. As higan's accuracy increases, so too does the effort needed to keep track of its changes and backport them. Most importantly, bsnes-classic preserves a badly-aged XML-based manifest format for cartridge folders; today, higan uses a slimmer syntax named “BML” for manifests, and many years of experience have shaped the syntax into what it is today, so that ROM hackers have greater control over their memory maps than they did back in the days of bsnes v073. Unfortunately, the convenience of the Qt GUI means that ROM hackers such as Tom (Far East of Eden: Tengai Makyou Zero) must force themselves to hack the older XML manifest which, given its age, is prone to errors and failure. The situation is not unlike ZSNES, by far the most popular and simultaneously the most bug-filled emulator, whose tremendous userbase holds back progress with translations and ROM hacks that won't work on real SNES hardware.
Therefore, I seek to do the exact opposite: to forwardport the Qt GUI and make it work with higan v106 and later versions. I have documented my efforts on byuu's message board. The current working name for this fork is “bsnes-classic”, exactly the same name as AWJ's fork, and that is not a coincidence.
It cannot be denied that what I am doing is predatory; I am writing a higan fork with exactly the same name as another fork and with the same goals, with the sole exception that it be based on higan v106 instead of bsnes v073 and use the former's BML manifest format both with traditional ROM files (both headered and headerless) and with cartridge folders. Therefore, I believe I owe it to AWJ to inform him of the existence of my fork named “bsnes-classic” so that he can share his opinion on whether I should keep using the name and what he will do with his fork.
And therein lies the reason for my return to NesDev, despite my better judgement: AWJ has been offline from NesDev since October, and neither has he shown any signs of life on GitHub. Even on Freenode's #retroarch channel, hunterk searched and could not find him. If I cannot get in contact with AWJ, then the future of bsnes-classic (my fork, not AWJ's) and the ideals that come with it look bleak.
I hesitate to ask NesDev about this after the way a few of its key members have treated me in the past, but for now, I will steel myself against any flames that come my way. Does anyone here on NesDev know about AWJ's current status within the emulation community as a whole?