VOGONS


First post, by sdz

User metadata
Rank Oldbie
Rank
Oldbie

It does exactly what the title says, Virtual OPL3 FM for Windows 98/ME.

How it works:
VOPL3.VXD (ring-0 port trap -> ring buffer) -> VOPLSRV.EXE (drains the buffer, Nuked OPL3 -> waveOut -> KMIXER). It works alongside Microsoft's SBEMUL.SYS.

Installation:
run INSTALL.BAT. It does the following:
-makes a backup of SBEMUL.SYS, patches SBEMUL.SYS to stop binding to 388-38B ports and bind to 2A0-2A3 instead (hopefully these are unused). This is needed because SBEMUL only grabs those ports to fake AdLib detection, without doing any sort of FM emulation. If those ports are claimed before SBEMUL, it breaks digital audio as well.
-copies VOPL3.VXD to C:\WINDOWS\SYSTEM
-copies VOPLSRV.EXE to C:\VOPL3
-registers the VOPL3.VXD and VOPLSRV.EXE to they're loaded/start automatically at boot/login.

How to use:
After installation, set the game to use AdLib for music and Sound Blaster for sound effects. You will get OPL3 music via VOPL3 and digital sound effects via SBEMUL.

Github:
Soon, need to do some cleanup first.

Credits:
-nukeykt's Nuked-OPL3 https://github.com/nukeykt/Nuked-OPL3 - the actual OPL3 emulator inside VOPLSRV.EXE
-JHRobotics's vdmdisp9x https://github.com/JHRobotics/vmdisp9x - VxD glue (vmm.h io32.h code32.h) and for figuring out how to build an actually working VxD
-onethirdxcubed's WDMHDA https://github.com/andrew-hoffman/WDMHDA/releases -without which this project wouldn’t have made sense to me
-Anthropic's Fable 5 - helped a lot

https://youtu.be/nyR7Ddocxrk

This is very much an alpha release, so any testing is appreciated.

Currently tested on:
Dell Precision M4800 with coreboot/SeaBIOS, running Windows 98 SE with WDMHDA
VirtualBox VM running Windows 98 SE with WDMHDA

So far, it has only been tested with HDA + WDMHDA, but it is not intended to be limited to that setup.

Reply 1 of 4, by stanwebber

User metadata
Rank Member
Rank
Member

this patch rendered my win98se system un-bootable. i installed it on a compaq armada e500 laptop (p3 850mhz 440bx) with an ess maestro 2e soundcard. i switched from vxd to wdm drivers and everything checked out prior to the install. afterwards the system would boot to the desktop and play the windows startup sound, but then i would get an endless hourglass cursor and not be able to click on anything so my only recourse was a hard power-off.

i booted into a dos prompt and restored the original sbemul.sys, but this wasn't sufficient to render the system bootable. (i would recommend explicitly indicating the sbemul.sys path in your readme as you do for everything else. i think it's a hidden file so it was frustrating trying to locate it with a dos prompt unaided.) ultimately, i had to manually delete the vopl3.vxd to get back into windows and then run the uninstall.reg to clean things up.

the lockup in windows occurs suspiciously at the point when my wpa2 supplicant client (odyssey) would normally start--i never see the odyssey splash screen; however, i have no real evidence that any of this is connected. in any case, let me know if there's anything i can do to help track it down for you.

Reply 2 of 4, by sdz

User metadata
Rank Oldbie
Rank
Oldbie

@stanwebber thanks for testing and sorry for the bad experience!

Yes, good idea about mentioning explicitly where the backup is located, I'll update that. Didn't do that because there is also an uninstall.bat, that unregisters and removes both VOPLSRV.EXE and VOPL3.VXD, and restores the original SBEMUL.SYS from the backup.
If the system does not boot into Windows, that uninstall.bat can still be run from DOS. It will remove VOPL3.VXD and VOPLSRV.EXE, restore SBEMUL.sys but fail at unregistering the two. Not a huge issue, during boot, windows will complain that it cannot find the VXD, you can press enter on that and it will boot normally. Then, either run again UNINSTALL.BAT from Windows or run only UNINSTALL.REG.

If you're willing to test some more, can you install it normally and before rebooting just remove (or better yet, rename) C:\VOPL3\VOPLSRV.EXE ?
If that works and it boots into Windows, please try to manually run the renamed VOPLSRV.EXE and see what happens.

Last edited by sdz on 2026-07-10, 17:38. Edited 2 times in total.

Reply 3 of 4, by stanwebber

User metadata
Rank Member
Rank
Member

renaming voplsrv.exe allows me to finish booting normally, but as soon as i rename and execute voplsrv.exe from within windows i get an endless hourglass cursor and have to hard power-off.

Reply 4 of 4, by sdz

User metadata
Rank Oldbie
Rank
Oldbie

-when you get that hourglass cursor, is the mouse cursor still moving?
-does pressing Ctrl+Alt+Del do anything?

A few tests to run, all without the VOPLSRV.EXE binary (remove it or rename it), VXD must be installed, as well as your ESS WDM driver.
-with Media Player, play the attached .wav file and report if it works.

Attached archive that contains a couple of tests. Run them from an MS-DOS Command Prompt. Report if it freezes, and if there's any output in the console. If a specific test freezes, please reboot. If it does not, kill it with Ctrl+Alt+Del before proceeding to the next test (or reboot the system).

-test2, this is the VOPLSRV with normal priority, debug output and logging
-test3, this is the VOPLSRV with realtime priority, debug output and logging
-test4, VXD test, without registering the audio path, will exit after 30 seconds if it doesn't freeze the system
-test5 audio path test, 48Khz, without involving the VXD, will exit after 30 seconds if it doesn't freeze the system
-test6 audio path test, 44.1Khz, without involving the VXD, will exit after 30 seconds if it doesn't freeze the system

At the end, please attach C:\Srvtest*.log files, if any.