VOGONS


First post, by theelf

User metadata
Rank Oldbie
Rank
Oldbie

Hi all,

I want to share VGMDOS, a VGM player I made for real DOS machines. It runs
on a 286 and up, and I tested it on a real 286 with AWE64, SB Pro 2, SB16,
and clones, like MAD16, ESS AudioDrive,Yamaha cards, etc

How it works:
- FM chips play on the OPL of your sound card (OPL2/OPL3)
- The rest of the chips are emulated by software and go out by the DAC
of the card (Sound Blaster and clones, or a Covox style DAC on LPT)
- PicoGUS in Tandy mode also works for the SN76489

Systems that play right now:
- FM: AdLib/OPL2, OPL3, MSX-Audio, YM2413 (Master System/MSX),
YM2203/YM2608 (PC-88), Mega Drive (converted to OPL3)
- Software: SN76489 (Master System, Game Gear, Tandy), Neo Geo Pocket,
AY8910/YM2149 (MSX, ZX Spectrum, Atari ST), SCC, NES + FDS,
Game Boy, WonderSwan, PC Engine

All the software cores are optimized in assembler for the 286. In the
ini you can set the quality per chip, because a slow 286 can do PSG at
22 kHz but maybe NES only at 11 kHz.

In my harris 25mhz 286 i can play everythin in maximum 22khz quality!!!

VGMTOOL
It comes with vgmtool (Windows (9x?NT4?) XP+ and DOS 386+ versions). You run it
over your whole VGM collection and it prepares everything for the DOS
machine:
- Mega Drive YM2612 is converted to OPL3, with the PCM drums as streams
- PC Engine and NES songs that play PCM writing sample by sample get
"predigested": the samples go to a bank inside the file and play as a
stream, so the 286 does not choke
- Everything gets compressed with LZSS (only the commands, PCM banks stay
as is). Files end up at 25-40% of the size and the player unpacks on
the fly, it costs almost nothing on a 286
- It makes 8.3 names, and a VGM.DIR and FILES.LST in each folder so the
player shows the real game and song names

vgmtool C:\VGM C:\VGMDOS

Then copy the folder to the DOS machine and run VGMDOS.EXE. The compressed
format is only for VGMDOS, vgmtool -d gives you normal VGM files back.

Other stuff:
- English and Spanish (LANGUAGE= in the ini)
- Shows GD3 info: title, game, composer, system, and a little piano
with the notes playing

Any feedback or bug report is welcome, and if you have VGMs that sound
wrong please tell me which ones.

The attachment vgmdos_000.raw1.png is no longer available
The attachment vgmdos_001.raw1.png is no longer available

https://github.com/TheElf01/VGMDOS

Thanks!

Last edited by theelf on 2026-10-03, 20:44. Edited 2 times in total.

Reply 1 of 5, by theelf

User metadata
Rank Oldbie
Rank
Oldbie

NeoGeo and MegaCD VGM support!!!!!! full 22khz quality in a 286-25!!!!

The attachment vgmdos_000.raw1.png is no longer available
The attachment vgmdos_001.raw1.png is no longer available

Reply 2 of 5, by ElBrunzy

User metadata
Rank Oldbie
Rank
Oldbie

hello theelf and thank you for the headsup, I was thrilled to try out your new tool, unfortunately I was not able to process any file. My understanding is that I need to convert the .vgm first (it seem to also support .vgz) using vgmtool. So I did try the sonic 02 green hill zone music (stuff from vgmrip.net) as the usual benchmark tune but it would always return the error :
! 02.vgm : ERROR cannot read

if I try "vgmtool 02.vgm convrt.vgz" I also did try stuff like "vgmtool c:\vgmin c:\vgmout" to always same error of first parameter cannot read...

So maybe I overlooked something. VGMDOS would tell me the 02.vgm need to be converted from ym2612 to opl3).

I'm curious and eager to check out your program so if you have any idea what's going on I'll be happy to do some further investigation. I'm still not sure how it work exactly, so it use the OPL3 to output converted YM2612 instruction and it render a kind of compressed pcm file with the sn76489 instructions ? It would be a shame because on that computer I also have an matze79's tandy nano that could very well receive those instructions 😅

Reply 3 of 5, by theelf

User metadata
Rank Oldbie
Rank
Oldbie
ElBrunzy wrote on 2026-10-04, 01:56:
hello theelf and thank you for the headsup, I was thrilled to try out your new tool, unfortunately I was not able to process any […]
Show full quote

hello theelf and thank you for the headsup, I was thrilled to try out your new tool, unfortunately I was not able to process any file. My understanding is that I need to convert the .vgm first (it seem to also support .vgz) using vgmtool. So I did try the sonic 02 green hill zone music (stuff from vgmrip.net) as the usual benchmark tune but it would always return the error :
! 02.vgm : ERROR cannot read

if I try "vgmtool 02.vgm convrt.vgz" I also did try stuff like "vgmtool c:\vgmin c:\vgmout" to always same error of first parameter cannot read...

So maybe I overlooked something. VGMDOS would tell me the 02.vgm need to be converted from ym2612 to opl3).

I'm curious and eager to check out your program so if you have any idea what's going on I'll be happy to do some further investigation. I'm still not sure how it work exactly, so it use the OPL3 to output converted YM2612 instruction and it render a kind of compressed pcm file with the sn76489 instructions ? It would be a shame because on that computer I also have an matze79's tandy nano that could very well receive those instructions 😅

the PSG will be emulated in software, no PCM or anything just pure emulation, maybe you can try use PGUS_TNDY=1 in ini to see if the PSG audio work in your tandy card, no idea. PGUS_TNDY expect a standard tandy card , try first a PSG only file if work with your card, no need to coonvert, a master system or game gear vgm is fine

About green hill, i download my vgm from vgmrips, then the problem must be in your side, for example

R:\sonic>VGMTOOL.EXE "R:\sonic\02 - Green Hill Zone.vgz" "R:\sonic\02 - Green Hi
ll Zone.vgm"

give me a good reesult

M 02 - Green Hill Zone.vgm: 498 KB -> 336 KB, 53.2 s, bucle desde 14.8 s, DAC:
347 muestras en 55 KB, FM grabado: 18 instrumentos por PCM, 0 por OPL3, 293 KB
(-c2: 407 notas pasadas al OPL3, 0 cedidas)

and this vgz is from vgmrip, are you sure you downloaded my last version from github? upload the vgm give you problems i can test, but believe me, i lready downloaded ALL vgmrips megadrive vgm and converted already... and no one fail

Anyway, just for test, i upload 3 version, low quality, mid quality and high quality, test the ones you like more. Low quality is pure OPL3, the ones are using some PCM samples for things opl3 cant do

Reply 4 of 5, by ElBrunzy

User metadata
Rank Oldbie
Rank
Oldbie

Thanks for your reply theelf. I did other testing today, I made sure I had the latest version from github and refreshed my .vgz of green hill from vgmrip : always same error. But I found that maybe the problem was that I was running under windows 98se ? I did try to clean boot in msdos 7.10 and it returned me a different message : This is a Windows NT character-mode executable. So maybe I need to boot on windows 2000 to try it.

Your 3 converted .vgm worked, though. But the sound seem a bit off, maybe it's because I'm using an Orpheus ][ soundcard. Of course I would be glad to test it for you but I am not very interested in software emulation of the SN76489 (I can do that on a modern computer). So I tested the PGUS_TNDY=1 settings but it seem to ignore it and play using the PCM. Maybe it need to know the SN76489 chip is on port 2c0 on my computer ? I would need to tell the program that.

Honestly, I would had two request for your player now, could the conversion be in the player ? While it's possible, I would prefer not to have to maintain a collection of converted vgm file for different players. My other request was about to use a genuine SN76489 and while I though this request was out of proportion, I'm glad to see you are nearly there.

I like visuals on a player so I was happy to see the piano, but I'm not sure I understand what it's doing. Maybe it's updating every once in a while and display the frequency that was played ? Maybe you had to do it that way for the sake of audio accuracy.

Your player is very impressive so far and I appreciate all the work you put in there so we can listen to YM2612 music on en YM262 !

Reply 5 of 5, by theelf

User metadata
Rank Oldbie
Rank
Oldbie
ElBrunzy wrote on 2026-10-06, 16:43:
Thanks for your reply theelf. I did other testing today, I made sure I had the latest version from github and refreshed my .vgz […]
Show full quote

Thanks for your reply theelf. I did other testing today, I made sure I had the latest version from github and refreshed my .vgz of green hill from vgmrip : always same error. But I found that maybe the problem was that I was running under windows 98se ? I did try to clean boot in msdos 7.10 and it returned me a different message : This is a Windows NT character-mode executable. So maybe I need to boot on windows 2000 to try it.

Your 3 converted .vgm worked, though. But the sound seem a bit off, maybe it's because I'm using an Orpheus ][ soundcard. Of course I would be glad to test it for you but I am not very interested in software emulation of the SN76489 (I can do that on a modern computer). So I tested the PGUS_TNDY=1 settings but it seem to ignore it and play using the PCM. Maybe it need to know the SN76489 chip is on port 2c0 on my computer ? I would need to tell the program that.

Honestly, I would had two request for your player now, could the conversion be in the player ? While it's possible, I would prefer not to have to maintain a collection of converted vgm file for different players. My other request was about to use a genuine SN76489 and while I though this request was out of proportion, I'm glad to see you are nearly there.

I like visuals on a player so I was happy to see the piano, but I'm not sure I understand what it's doing. Maybe it's updating every once in a while and display the frequency that was played ? Maybe you had to do it that way for the sake of audio accuracy.

Your player is very impressive so far and I appreciate all the work you put in there so we can listen to YM2612 music on en YM262 !

Hi! Thanks for the testing. Here are a few things to clear up and try:

About the SN76489 / Tandy on your Orpheus II:
• Test pure files first: You didn't mention if you tried single-chip VGMs (like Master System or Game Gear). Please test those. That way we can know if your card is actually being detected and working. On my end, Tandy hardware works perfect with both pure PSG VGMs and Mega Drive stuff.
• You can try forcing the port directly in the variable, something like PGUS_TNDY=2C0. Give it a shot. But, Just in case the missing PSG sound is a volume blending problem, I added a new option in the .ini file: PGUS_VOL=X. This changes volume in 2 dB steps (from 0 to 14, default is 4). Try tweaking it.
• Audio quality: I don't know your soundcard very well, but if it has a real OPL3 it should sound good... well, as good as a YM2612 to OPL3 conversion can possibly sound. I don't really know what you mean by "sound is a bit off" unless you send me a .wav recording or something to hear it. By the way, I sent you 3 converted VGM files before, but you didn't tell me which one sounded better to you. Let me know

About Windows 98 and the converter:
The DOS converter works fine. For the Windows version, I checked the code and it was compiling with Unicode (which is why it only worked on NT). I changed it to ANSI and recompiled it. I'm leaving the new exe here so you can test it, because I don't have a Win98 machine anymore.

I don't know what kind of modern PC you have, but think about this: my modern i5 Windows XP 4 cores, while YM2612>OPL (low quality) it take 1-2sec every vgm, it takes like 1 minutes PER VGM to convert them in medium/high quality using PCM samples. If you try to run that conversion on a Pentium 4 or a low-end Core 2 Duo, you will literally have to drink SEVERAL coffees waiting for just one track to finish!

Honestly, about the integrated conversion request... real-time conversion is IMPOSIBLE on the target hardware. A 286 doesn't have the muscle for that, the Windows tool is there for a reason, not because I wanted to. Maybe .. MAYBE a 486+ can do real-time YM2612 > OPL3, but:

1. I'm not interested in low quality conversion. I prefer medium/high quality, which means mixing OPL and PCM samples to have a better quality and more close to real megadrive
2. Frankly, I don't care at all about the 386+ architecture.

My ultimate goal is a 100% software-based VGM player. If PSG happens to work through a Tandy card, it’s honestly kind of a miracle—I just happen to own a PicoGUS, so I decided to test it out. Since it's physically impossible for a 286 to software-emulate a YM2612, YM2610, etc., I had no choice but to fall back on OPL3 conversion (which is what the converter outputs in LOW QUALITY). Later, I found a way to mix OPL and PCM, which is the MED quality setting. My final goal is to achieve HIGH quality on a 286, which means completely bypassing the OPL3 and doing everything 100% via software PCM.

About the Piano:
The piano is just there to look pretty! At first it just played random keys. Later I made it read the VGM data to give it some coherence, but the screen updates only 1 time per second (when the player does the tick cycle). If 10 notes play in that second, you will only see the last one. It's just cosmetic and it's coded like this so it doesn't eat CPU cycles. Audio priority is always #1.

Let me know if the new exe and the volume/port tweaks work for you!

PD: Also, you can actually use my converter without compression by using the `-n` and `-mdlow` flags. In that case, you could probably use a hardware-based player like SBVGM, I think it should work. the VGM will have OPL3+PSG, Try and tellme!