bsnes-emu / bsnes

bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.
Other
1.67k stars 154 forks source link

Feature request: add an option for old ZSNES sound emulation #178

Closed Anas13303 closed 3 years ago

Anas13303 commented 3 years ago

I noticed that you added some options that allow you to play older hacks without any issue. However, on that topic, I'd like to request an option for the old ZSNES sound emulation, if feasible. Honestly, I feel really nostalgic for that sound emulation, and I'd really appreciate an option for that small detail. Thanks!

Screwtapello commented 3 years ago

Thanks for filing an issue!

The various romhack compatibility options enable specific behaviours enforced by hardware (and by accurate emulators) that weren't enforced by ZSNES or old versions of Snes9x. They definitely don't cover all the inaccuracies of those old emulators (as you've noticed, they don't cover sound emulation, and they don't cover ZSNES' security vulnerabilities) but they do cover the issues romhacks were most likely to encounter.

Unfortunately, ZSNES' sound emulation wasn't a matter of a specific inaccurate behaviour, it was more that nobody really understood how the SNES sound chip worked, so the sound emulation was a bunch of educated guesses. Supporting that in bsnes would require somebody to reverse-engineer how the ZSNES code actually worked (as opposed to how it was supposed to work) and re-implement that behaviour in C++ (a very different language from the assembly ZSNES was originally written in). It wouldn't be impossible, but it would be a lot of work (about as much as creating bsnes' sound emulation in the first place), and would be difficult to maintain. After all, it's not enough to play a game and verify that the audio sounds wrong, it has to be wrong in a very specific and particular way.

As a result, I don't think this feature would be a good fit for bsnes, so I'll close this issue. Thanks for using bsnes, though, and if you get nostalgit for ZSNES you can always run it safely inside something like DOSBox. ;)