Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(Feature Request) Support SNES Classic/Virtual Console rom files with PCM audio data #58

Open
HeroponRikiBestest opened this issue Sep 16, 2020 · 3 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@HeroponRikiBestest
Copy link

HeroponRikiBestest commented Sep 16, 2020

All of the super Nintendo roms that Nintendo has rereleased have been modified to use PCM audio data, and as a result, only work properly on their emulators. I think it would be nice to see these properly supported in bsnes.

@Kawa-oneechan Kawa-oneechan added the enhancement New feature or request label Sep 16, 2020
@Screwtapello
Copy link
Contributor

At a first guess, I expect this would be like emulating a SNES-like console with entirely different audio hardware. That could be a lot of work, and if all it gets us is the ability to play games we could already play, I'm not sure if it would be worth it. On the other hand, if it were really easy to do, and there are re-released games with bonus content or quality-of-life additions, it would easily be worth it.

We need to know more about the differences between original and PCM-patched SNES games are (hopefully somebody already has documentation) and about the structure of the bsnes code.

@Screwtapello Screwtapello added the help wanted Extra attention is needed label Nov 4, 2020
@HeroponRikiBestest
Copy link
Author

http://darkakuma.z-net.us/p/sfromtool.html seems to give some hints.

@Dark-Akuma
Copy link

Hello. I was just emailed about this topic, did a search and seems I found the origin of the inquiry.

That first guess would be wrong. But you are right about the need to know the differences regarding PCM patching. NERDs pcm patching absolutely destroys the audio of the ROM unless your emu properly processes it and the sfrom format itself. The actual PCM data itself is just 16bit signed waveform data converted from BRR by NERD back in the days of the original Wii. Though I personally don't know the code of BSNES or other SNES emus, I'd assume they could process it easily enough. It may even be similar to what the emus themselves do to the audio internally, as all that canoe does is convert BRR to PCM for normal ROMs. NERDs PCM patching seems to have just been done to save CPU time (is my best guess to date).

Anyway. I have been, and still am working on documenting the .sfrom format(s) fully. And the PCM audio patching is the last thing on my list. And I just made significant headway on that to the point that I may be ready to both submit my findings for inclusion of support for the complete .sfrom format in emus, as well as having the tools ready for users to convert between the format. SFROM Tool itself already supports Switch, SNES Classic, and 3DS sfroms (excluding PCM audio). I just need to get it, or another tool managing the audio conversion too.

And FYI, since its in the title of this thread. NSO .sfrom do NOT use PCM audio patching anymore. Only Wii, WiiU, 3DS and SNESClassic. NERD simply cut and pasted their old work over from VC to VC over the years, and only with Switch did they finally make significant effort to emulate ROMs without special patching.

As I told whoever emailed me. Whoever wants to work on it, keep in contact with me directly and hopefully I'll have the data ready for you to add support soon! This aligns with my own goals! =)

@HeroponRikiBestest HeroponRikiBestest changed the title (Feature Request) Support SNES Classic/Virtual Console/NSO rom files with PCM audio data (Feature Request) Support SNES Classic/Virtual Console rom files with PCM audio data Dec 15, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants