sulix/omnispeak

Use Nuked OPL3 emulator?

aroenai opened this issue · 2 comments

Any chance an option to compile with the Nuked OPL3 emulator can be added? This would be accurate than the Dosbox implementation.

https://github.com/nukeykt/Nuked-OPL3

sulix commented

Thanks for suggesting this! I'd heard of Nuked OPL3 before, but had never got around to looking into adding it to Omnispeak.

I've added some experimental support for it now: you can enable it with the /NUKEDOPL3 command-line option. Note that it's probably still pretty buggy, and may see some changes going forward. In particular, Omnispeak has only used DOSBox's OPL2 emulation thus far, and so has no support for the stereo OPL3 output. I've quickly added support to mix the Nuked OPL3 output back down to mono (which shouldn't matter, as Keen never tries to use the OPL3's stereo support), but the code there could definitely use improvement. Do let me know if you try it and get unexpected clicks, pop, or crackle, as there are some possible integer overflow issues.

Alternatively, Omnispeak supports real OPL2/3 soundcards on DOS and Linux (on Linux, you'll need to build with WITH_ALSA=1 defined, and run with the /ALSAOPL2 option). The OPL2/3LPT parallel port soundcards are also supported with the WITH_IEEE1284 option (and libieee1284 installed).

In any case, there should be a test build with Nuked OPL3 support available here — click on "Artifacts" and download the version for your platform. Please let me know if it works for you.

sulix commented

Okay — I've tidied this up a bit to handle any integer overflow issues more smoothly, as well as made a couple of other small changes, and am pretty happy with this myself for now.

As of the latest builds, you can enable this either with the /NUKEDOPL3 option, or by adding the following line to the OMNISPK.CFG file:

oplEmulator = "nukedopl3"

Do let me know if this works/doesn't work, but I'm going to close this issue as done for now. Feel free to reopen it or file a new one if something is broken / needs changing.