How accurate is using VGMPlay (or other players) on modern computers? (i.e. Windows 10, etc)
Over the past year I've purchased a Roland MT32 and SC-55 MK2 and it allows me to connect directly to a modern PC using a USB adapter (UM-ONE). I can then use DosBox or other emulators but use authentic hardware to produce sounds and music.
Is there anything similar for AdLib/SoundBlaster (OPL?) or NES/SNES/Genesis sounds?
I've just found out about VGM files and VGMPlayer (thanks 8-bit guy!) but I'm not completely sure how authentic playback is on a modern PC. If I understand correctly, the VGM files have the exact commands sent to the original hardware, but I'm guessing it's emulated when playing back on a modern PC?
I did see that VGMPlayer supports DOS and if you have an old machine with an old soundcard it will use that to playback sounds on the original chips (if your soundcard has them) but that requires a separate/dedicated PC?
Most accurate way to play VGM files on Windows 10?
Technical discussion about the VGM format, and all the software you need to handle VGM files.
Moderator: Staff
- ValleyBell Offline
- Posts: 4787
- Joined: 2011-12-01, 20:20:07
- Location: Germany
VGMPlay is probably the most accurate way of playing VGMs if you can't play them on actual OPx chips.
MegaDrive emulation is as accurate as it can get if you enable the NukedOPN2 core. (I personally consider the MAME/Genesis Plus GX core sufficient most of the time though.)
OPL emulation is "decent" currently. (NukedOPL3 will be included with the next major update.)
The quality of the emulation generally varies between "okay" and "very good".
For some PCM chips you also get the option of oversampling them, so VGMPlay's output sounds better than the actual chip.
As for playing on real hardware, you can use SBVGM if you want to play back VGMs in real DOS.
VGMPlay itself can also play back data on real a OPL3 card. On Windows NT/2000/XP/... it does that through the PortTalk driver. On Windows 9x and Linux-based OS it works without any special driver.
I've been using VGMPlay to listen to OPL2/3 VGMs on an old PC (Pentium II with SoundBlaster 16, Windows 2000), as well as a modern PC (Intel i7 with YMF744 PCI sound card, Gentoo Linux).
Note that VGMPlay is not a DOS program. It just runs in a console window.
MegaDrive emulation is as accurate as it can get if you enable the NukedOPN2 core. (I personally consider the MAME/Genesis Plus GX core sufficient most of the time though.)
OPL emulation is "decent" currently. (NukedOPL3 will be included with the next major update.)
The quality of the emulation generally varies between "okay" and "very good".
For some PCM chips you also get the option of oversampling them, so VGMPlay's output sounds better than the actual chip.
As for playing on real hardware, you can use SBVGM if you want to play back VGMs in real DOS.
VGMPlay itself can also play back data on real a OPL3 card. On Windows NT/2000/XP/... it does that through the PortTalk driver. On Windows 9x and Linux-based OS it works without any special driver.
I've been using VGMPlay to listen to OPL2/3 VGMs on an old PC (Pentium II with SoundBlaster 16, Windows 2000), as well as a modern PC (Intel i7 with YMF744 PCI sound card, Gentoo Linux).
Note that VGMPlay is not a DOS program. It just runs in a console window.
Thanks very much for the reply and information!
Do you know if anybody has thought about (and has enough experience/knowledge!) to use an FPGA to recreate these sound chips and play VGM files?
It would be absolutely incredible if a device like the MiSTer (FPGA) had a core(s) written to playback VGM files and cycle-accurate (or nearly) sound chip recreation.
Do you know if anybody has thought about (and has enough experience/knowledge!) to use an FPGA to recreate these sound chips and play VGM files?
It would be absolutely incredible if a device like the MiSTer (FPGA) had a core(s) written to playback VGM files and cycle-accurate (or nearly) sound chip recreation.
I've written briefly to Jose and he's actually created a bunch of cores:
I'm not sure what you mean by 'cycle accurate isn't sample accurate' but most of this goes above my head. I just want to hear accurate playback of video game music
- YM2203 (JT03)
- YM2612 (JT12)
- YM2610 (JT10)
- YM2151 (JT51)
I'm not sure what you mean by 'cycle accurate isn't sample accurate' but most of this goes above my head. I just want to hear accurate playback of video game music
- ValleyBell Offline
- Posts: 4787
- Joined: 2011-12-01, 20:20:07
- Location: Germany
For me the most difficult part with OPL3 on modern hardware was actually getting the FM port to work at all.
The legacy port (0x388) doesn't work on modern main boards, so you need to specify a port that is within the sound card's PCI address range. (see this comment by Nuke.YKT)
For YMF744/YMF754 cards, you have to remap the OPL port using kernel driver options.
I set those in /etc/modprobe.d/alsa.conf (file name may vary, my card uses PCI ports 0xD000..0xDFFF)
After that, you can just specify that port in VGMPlay.ini
Finally, run vgmplay as root in order to be able to access the FM ports.
The legacy port (0x388) doesn't work on modern main boards, so you need to specify a port that is within the sound card's PCI address range. (see this comment by Nuke.YKT)
For YMF744/YMF754 cards, you have to remap the OPL port using kernel driver options.
I set those in /etc/modprobe.d/alsa.conf (file name may vary, my card uses PCI ports 0xD000..0xDFFF)
Code: Select all
# make YMF744 MIDI Out and OPL3 ports work
options snd-ymfpci mpu_port=0xDF30 fm_port=0xDF88
Code: Select all
FMPort = DF88
That's really interesting...
It sounds like you can find a modern PCI-Express sound card with an OPL3 (YMF744/YMF754) card and play VGM files through the authentic OPL3 chip?
I wonder if these also work in Windows 10 or only Linux?
Also, do you pass the audio output to another sound card (i.e. onboard/motherboard sound card) or output directly to speakers?
It sounds like you can find a modern PCI-Express sound card with an OPL3 (YMF744/YMF754) card and play VGM files through the authentic OPL3 chip?
I wonder if these also work in Windows 10 or only Linux?
Also, do you pass the audio output to another sound card (i.e. onboard/motherboard sound card) or output directly to speakers?
- ValleyBell Offline
- Posts: 4787
- Joined: 2011-12-01, 20:20:07
- Location: Germany
The YMF744 is a (non-Express) PCI card from about 2000, so it's a pretty old card.
You need to find a mainboard that has a non-Express PCI slot in order to use it.
Under Linux it works just fine. (except that you won't get an XG MIDI synthesizer - that's part of the Windows driver)
There are 32-bit drivers for Windows 98/ME/2000/XP. I'm not sure if they work on modern machines though, as they probably just use the Legacy ports for FM and MIDI out.
There are no 64-bit drivers, so I haven't been able to get it to work under Windows 10 (64-bit) at all.
When it works, then all sound (OPL + wave) is output through the speakers, just like it is on old cards like the SoundBlaster 16.
You need to find a mainboard that has a non-Express PCI slot in order to use it.
Under Linux it works just fine. (except that you won't get an XG MIDI synthesizer - that's part of the Windows driver)
There are 32-bit drivers for Windows 98/ME/2000/XP. I'm not sure if they work on modern machines though, as they probably just use the Legacy ports for FM and MIDI out.
There are no 64-bit drivers, so I haven't been able to get it to work under Windows 10 (64-bit) at all.
When it works, then all sound (OPL + wave) is output through the speakers, just like it is on old cards like the SoundBlaster 16.