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

[BossFight,MiniBoss] Add Nuked-OPN2 Yamaha YM3438 Emulation Engine #83

Open
rastertail opened this issue Dec 20, 2020 · 5 comments
Open
Labels
feature request New feature or request

Comments

@rastertail
Copy link

Right now, the 2612 emulation in the Boss Fight and Mini Boss modules miss out on some subtle sound quirks like the ladder effect in the original 2612. Nuked-OPN2 is a highly accurate emulation core that accurately models such quirks. I'm not sure if its possible to integrate it into this codebase, but if possible, that would be really cool.

@Kautenja
Copy link
Owner

Hmm could you provide any more information about the ladder effect and any other quirks that might be missing? I've not come across this in my research of the 2612, but I am no expert. Also, if there are any Genesis emulators you know of that use Nuked-OPN2, I'd also be interested in checking them out to get a feel for the difference between the MAME implementation (that is currently used) and this one. As far as getting this implemented, it would be pretty cool I think to add a right-click context menu that allowed the user to select which emulator engine they prefer (MAME or Nuked or etc. in the future).

@Kautenja Kautenja changed the title Use Nuked-OPN2 for 2612 emulation? [BossFight,MiniBoss] Add Nuked-OPN2 Yamaha YM3438 Emulation Engine Dec 21, 2020
@Kautenja Kautenja added the feature request New feature or request label Dec 21, 2020
@Kautenja
Copy link
Owner

Kautenja commented Dec 21, 2020

Oh nvm, it looks like Genesis Plus GX actually merged the Nuke emulation into master as their sound engine. Cool, I'll definitely be looking into this.

@rastertail
Copy link
Author

rastertail commented Dec 21, 2020

Thanks for responding so quick! Having an option to select between the emulation cores would be cool. FYI Nuked OPN2 has an option to switch between 2612 and 3438 that is missing from the readme, where the default 3438 lacks some things, namely the ladder effect, so you might want 3 options in the emulation core selector. And since you asked, the ladder effect is a distortion effect caused by the truncation of the output to 9 bits, where a bug in the circuitry creates an offset on the negative side of the wave. It's a pretty subtle effect, but also pretty noticable on patches with long decay times.

@Kautenja
Copy link
Owner

Kautenja commented Dec 21, 2020

Oh I see now, this is an emulation of the 9-bit DAC on the YM2612. It might be possible to just take the snippet that does the quantization and offset in Nuke-OPN2 and put it into the MAME core here, but I'm inclined to port the entire Nuke core still because I'm sure there will be other differences that result in a significantly different sound between the two.

EDIT: To clarify, the MAME core currently quantizes to 14-bit, which is the pre-DAC dynamic range of the YM2612. There is no DAC emulation in the MAME core at the moment.

@rastertail
Copy link
Author

rastertail commented Dec 22, 2020

I see. Honestly, I'm not really a 2612 expert, so a lot of the little details are pretty vague to me. It would be nice to port over the entire Nuked core just for peace of mind, but all I really care about is the audio effects that I can hear, so if you just extract the 9 bit DAC and put the MAME core through it, I probably wouldn't mind as I expect that the difference between that and the full Nuked core would be more subtle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants