VOGONS


VOPL3 - Virtual OPL3 FM for Windows 98/ME

Topic actions

Reply 20 of 24, by keenmaster486

User metadata
Rank l33t
Rank
l33t
sdz wrote on Yesterday, 22:12:

@keenmaster486 thanks for testing!

Can you run install.bat again, don't reboot, go to C:\VOPL3 and rename VOPLSRV.EXE to TEST.EXE, reboot, then open an MS-DOS Prompt and run TEST.EXE?

After doing that, the system does not hang, but attempting to use the OPL emulation results in this weird stuttering behavior:

The attachment IMG_5652_small.mp4.zip is no longer available

World's foremost 486 enjoyer.

Reply 21 of 24, by sdz

User metadata
Rank Oldbie
Rank
Oldbie

@onethirdxcubed it would have helped if I was calling OPL3_WriteRegBuffered instead of OPL3_WriteReg ....
Can you give this one a go please? https://github.com/sdz-mods/VOPL3/releases/tag/A03

@keenmaster486 can you try the above A03? Also, when installing, try to use the Nuked-OPL3-fast backend first (same as before, rename it before rebooting and manually start it after reboot).

Reply 22 of 24, by stanwebber

User metadata
Rank Member
Rank
Member

installed alpha 2 using the nuked-opl3-fast engine. voplsrv idles just fine until music is actually played in a windows dos prompt, but then it continues to consume resources even after exiting. cpu utilization is roughly 30% on my p3 850mhz. i'll try out the new alpha 3, but maybe this wasn't addressed yet?

you patched sbemul...maybe you can answer this question: why is sbemul restricted to the microsoft gs wavetable sw synth? it's obviously redirecting traffic to the windows midi mapper since changing to something other than the microsoft gs wavetable sw synth renders midi mute until you switch it back. to work around this i currently use vdmsound for win9x which redirects midi at the specified port to any device in the windows midi mapper. vdmsound also has adlib emulation, but is horribly buggy so i disable everything except mpu-401 emulation which is rock solid.

Reply 23 of 24, by sdz

User metadata
Rank Oldbie
Rank
Oldbie

@standwebber that is likely on me. Please try the attached version, uninstall the previous version and install this one. (this is based on A03, and the VOPLSRV is not compatible with the A02 VXD).
Can't really test on my machine as on that I7, the CPU load is about the same with or without VOPLSRV running. But this might fix the issue. (I will set up a more proper machine for testing at some point).

As for SBEMUL, I'm no expert in it, just patched it so it leaves the FM ports alone. But that is something worth looking into. Not sure if we can convince SBEMUL to use something else (I suspect not), but maybe take a similar approach to VOPL3 and patch SBEMUL to leave 330/331 alone, make a VXD trap followed by some steps that I don't know now as I'm not really familiar with this.

Reply 24 of 24, by onethirdxcubed

User metadata
Rank Member
Rank
Member

Thanks, the latest version works much better with Adlib Tracker and most games that I tried. No more missing notes. Hocus Pocus works with the music set to "Adlib" but not "Sound Blaster" and SBVGM player only works when specifying -opl3388 on the command line which I think is because the Sound Blaster mode writes to the other set of FM ports which are not trapped yet.

stanwebber wrote on Today, 14:11:

installed alpha 2 using the nuked-opl3-fast engine. voplsrv idles just fine until music is actually played in a windows dos prompt, but then it continues to consume resources even after exiting. cpu utilization is roughly 30% on my p3 850mhz. i'll try out the new alpha 3, but maybe this wasn't addressed yet?

you patched sbemul...maybe you can answer this question: why is sbemul restricted to the microsoft gs wavetable sw synth? it's obviously redirecting traffic to the windows midi mapper since changing to something other than the microsoft gs wavetable sw synth renders midi mute until you switch it back. to work around this i currently use vdmsound for win9x which redirects midi at the specified port to any device in the windows midi mapper. vdmsound also has adlib emulation, but is horribly buggy so i disable everything except mpu-401 emulation which is rock solid.

Sbemul was written before DirectMusic so it uses the MidiOut API and it only plays to the Default Device. It also doesn't support timestamps which is why the tempo goes ropey when things lag a bit. I tried to disassemble it with Ghidra but didn't get very far. It's not necessarily true that it will only play to the GS Wavetable Synth; on sound cards with a hardware OPL but using WDM drivers, it will route MIDI to the real OPL (but then it's using the FatMan patch set so doesn't always sound like you would expect, and nothing else can use the hardware OPL).

I was able to get VDMSound for Windows 98 to work with at least the newer EmuAdlib and EmuSbCompat from the 2.10 version and I've put it up here: https://github.com/andrew-hoffman/vdmsound
To make more improvements I would need to disassemble or replace the port-trapping VxD though and that was again my sticking point. I'm not very familiar with x86 Assembly and haven't had much time to learn lately.