joncampbell123 / dosbox-x

DOSBox-X fork of the DOSBox project
GNU General Public License v2.0
2.83k stars 383 forks source link

Update NukedOPL3 core to lastest-master #4711

Closed eugene-s-nesdev closed 11 months ago

eugene-s-nesdev commented 11 months ago

Is your feature request related to a problem? Please describe.

Can you update Nuked OPL3 emulator to lastest-master please? It was updated 2 years ago last time.

There are some bugfixes and new features since 2020: including stereo-extension, 4-ch output support and accuracy fixes like this: https://github.com/nukeykt/Nuked-OPL3/commit/f2c98738413f2711321d7a4b6e294d58ea2cdc6d

old dosbox-x files: https://github.com/joncampbell123/dosbox-x/blob/master/src/hardware/nukedopl.cpp https://github.com/joncampbell123/dosbox-x/blob/master/src/hardware/nukedopl.h

actual nukeykt files: https://github.com/nukeykt/Nuked-OPL3/blob/master/opl3.c https://github.com/nukeykt/Nuked-OPL3/blob/master/opl3.h

What you want

Merge bugfix: update channel algorithm when 4-op flags are changed

Describe alternatives you've considered

No response

Additional information

No response

Have you checked that no similar feature request(s) exist?

Code of Conduct & Contributing Guidelines

maron2000 commented 11 months ago

I replace the current code with the one you said. I ran it on MinGW but I don't know how to confirm that the build is working as expected.

You can grab the build from my repository.
I don't know on which platform you use, but the page should be straightforward enough for you to pick the one you desire. https://github.com/maron2000/dosbox-x-1/actions?query=branch%3Aopl3test++

Edit: Fixed the link to automated builds

eugene-s-nesdev commented 11 months ago

I've just tested mingw-win64-sdl2 build. My blaster settings:

oplmode  = auto
oplemu    = nuked
oplrate    = 49716

I've tested SBVGM32.EXE using both YM3812(OPL2) and YMF262(OPL3) *.vgm-files. Also checked out a few popular games. Seems all work correct...

maron2000 commented 11 months ago

@eugene-s-nesdev Thanks for testing. There shouldn't be a major regression, since there are not so big changes in the code. I'll make a PR later on.

eugene-s-nesdev commented 11 months ago

BTW, NukeYKT (https://github.com/nukeykt) has made new ultra low level (transistor-level) emulators based on real chips die-shots, including:

https://github.com/nukeykt/YM3812-LLE (OPL2) this core uses a lot of CPU time. may not be suitable for playback! https://github.com/nukeykt/YMF262-LLE (OPL3) this core uses even more CPU than YM3812-LLE. not suitable for playback or even rendering if you're impatient!

i guess it will be interesting for retro-community. https://www.vogons.org/viewtopic.php?f=62&t=97946

RNMB15 commented 11 months ago

Nukeykt also developed OPN Emulator, which is in the PC 98 Mudus on the FM boards 86 and 118. https://github.com/nukeykt/Nuked-OPN2 With the Nuked-OPM code from nukeykt you could replace the old FM Boards code from np21x64w.

Here is a links to the FM board from NEC PC 98: http://radioc.web.fc2.com/column/pc98bas/pc980186_en.htm https://www.youtube.com/watch?v=wiPZr8YByrY https://ascii.jp/elem/000/004/141/4141398/

nukeykt has also developed an OPM emulator (Nuked-OPM) which would be interesting for IBM Music Feature Card emulation. https://github.com/nukeykt/Nuked-OPM

RNMB15 commented 11 months ago

I also just saw a YM2610 emulator from Nukeykt, which is the chip that is also in the NEC PC-9801-86 sound board: https://github.com/nukeykt/Nuked-OPNB

I also saw a Yamaha YM7101 PSG emulator from him. I don't know how the Yamaha YM7101 PSG is compatible with PC-9801-26K Sound Board or Tandy/PCJR PSG. https://github.com/nukeykt/Nuked-PSG