VOGONS


SBEMU: Sound Blaster emulation on AC97

Topic actions

Reply 1060 of 1070, by bert003

User metadata
Rank Newbie
Rank
Newbie

Hi guys, I am new to this forum. Got to know about SBEMU and decided to experiment with it on my Dell Latitude D530 using FreeDOS.

Unfortunately I got no luck since the system hangs when invoking SBEMU from the autoexec.bat as follows:

C:\SBEMU\JLOAD.EXE C:\SBEMU\QPIEMU.DLL
C:\SBEMU\HDPMI32I.EXE -r -x
SET BLASTER=A220 I7 D1 H5 T6
C:\SBEMU\SBEMU.EXE

Then I came across this: https://github.com/Baron-von-Riedesel/VSBHDA and tried it. This does not crash on boot but I get no sound at all. Games like DOOM and Wolf3D detect the soundblaster but I get no sound. The KeenDreams game only detects Adlib but still I get no sound. The SoundBlaster option is disabled in this game though.

The sound card of my laptop is SigmaTel. Any help is appreciated. I tried a lot of settings combinations and also downloaded and tried versions of SBEMU from this forum with no luck 🙁

Thanks in advance.

Reply 1061 of 1070, by tauro

User metadata
Rank Member
Rank
Member
bert003 wrote on 2023-11-21, 04:43:
Hi guys, I am new to this forum. Got to know about SBEMU and decided to experiment with it on my Dell Latitude D530 using FreeDO […]
Show full quote

Hi guys, I am new to this forum. Got to know about SBEMU and decided to experiment with it on my Dell Latitude D530 using FreeDOS.

Unfortunately I got no luck since the system hangs when invoking SBEMU from the autoexec.bat as follows:

C:\SBEMU\JLOAD.EXE C:\SBEMU\QPIEMU.DLL
C:\SBEMU\HDPMI32I.EXE -r -x
SET BLASTER=A220 I7 D1 H5 T6
C:\SBEMU\SBEMU.EXE

Then I came across this: https://github.com/Baron-von-Riedesel/VSBHDA and tried it. This does not crash on boot but I get no sound at all. Games like DOOM and Wolf3D detect the soundblaster but I get no sound. The KeenDreams game only detects Adlib but still I get no sound. The SoundBlaster option is disabled in this game though.

The sound card of my laptop is SigmaTel. Any help is appreciated. I tried a lot of settings combinations and also downloaded and tried versions of SBEMU from this forum with no luck 🙁

Thanks in advance.

Make sure you're loading the appropriate JEMMEX version. Use only the one included with SBEMU (and not your system's one).

Include this line in your CONFIG.SYS:

DEVICE=C:\SBEMU\JEMMEX.EXE

Reply 1062 of 1070, by bert003

User metadata
Rank Newbie
Rank
Newbie

Yep I am loading the correct JEMMEX.EXE file.

Since I wrote the post I found this: https://github.com/volkertb/temu-vsb/releases … -3.03-vsb-2.02a

It requires QEMM though to run: https://winworldpc.com/product/qemm/7x

I installed QEMM but I am getting an error that QEMM386 is not loaded on the line:

DEVICE=C:\QEMM\QDPMI.SYS

However even with error above, when I run VSB, it loads fine and when I press CTRL-G, I hear a cracking noise from the speaker instead of a beep. At least a step forward.

Obviously without QDPMI running, I cannot run DOOM to test so if you can help me on this as well I appreciate.

Robert

Reply 1063 of 1070, by digger

User metadata
Rank Oldbie
Rank
Oldbie

@bert003 VSB, a much older piece of software, can work in two modes: in QEMM mode when QEMM is loaded, or in an alternative mode that works only when no EMM manager is loaded at all, since it will then switch the CPU into V8086 mode itself. But regardless of which mode it's used in, it does not work with protected mode (DOS extender) games. That's exactly the limitation that SBEMU and VSBHDA were designed to solve. For real mode games, they use port trapping through QPI (QEMM's API, which Jemm should now also support through a Jemm Loadable Module called QPIEMU.DLL). For protected mode games, they use port trapping using HDPMI. (At the moment, SBEMU needs a forked version of HDPMI for this, but that's another story.)

VSB, although an impressive piece of software, especially back in the '90s when it was initially written, is written in assembly, specifically Borland's TASM dialect, and the code is hard to maintain. The original author has long stopped working on it. Also, unlike SBEMU, VSB doesn't emulate FM synthesis. It only emulates the PCM playback functionality of the Sound Blaster card. Therefore, I wouldn't recommend it as an alternative to SBEMU or VSBHDA.

And indeed, like @tauro rightly pointed out, you need to be careful to use a newer (pre-release) Jemm version than the one that currently ships with FreeDOS 1.3. Even v5.83, which is still listed as the "latest" release of Jemm on GitHub, isn't new enough. Support for port-trapping ISA DMA ports, which is required for both SBEMU and VSBHDA to work, wasn't included until version v5.84pre1, and a bug in this new functionality was fixed in version v5.84pre2, which is the latest available build at the time of this writing. To my knowledge, that's currently the best version to use with SBEMU or VSBHDA.

Also, in addition to using at least v5.84pre2 of Jemm, you also need to load the QPI Emulation module (QPIEMU.DLL) using JLOAD. See the documentation for detailed instructions on that.

I guess you could also use QEMM, but it's closed source and no longer maintained. Jemm, on the other hand, is free and open source, and still being maintained and regularly improved by Baron-von-Riedesel (f.k.a. japheth).

Reply 1064 of 1070, by jtchip

User metadata
Rank Member
Rank
Member
bert003 wrote on 2023-11-21, 04:43:

Then I came across this: https://github.com/Baron-von-Riedesel/VSBHDA and tried it. This does not crash on boot but I get no sound at all.

Is this the corresponding issue raised on the VSBHDA GitHub? Looks a number of tools were already tried and it appears to be related to the HDA routing. Hopefully this saves others from suggesting the same tests.

Reply 1065 of 1070, by bert003

User metadata
Rank Newbie
Rank
Newbie

@bert003 VSB, a much older piece of software, can work in two modes: in QEMM mode when QEMM is loaded, or in an alternative mode that works only when no EMM manager is loaded at all, since it will then switch the CPU into V8086 mode itself. But regardless of which mode it's used in, it does not work with protected mode (DOS extender) games. That's exactly the limitation that SBEMU and VSBHDA were designed to solve. For real mode games, they use port trapping through QPI (QEMM's API, which Jemm should now also support through a Jemm Loadable Module called QPIEMU.DLL). For protected mode games, they use port trapping using HDPMI. (At the moment, SBEMU needs a forked version of HDPMI for this, but that's another story.)

VSB, although an impressive piece of software, especially back in the '90s when it was initially written, is written in assembly, specifically Borland's TASM dialect, and the code is hard to maintain. The original author has long stopped working on it. Also, unlike SBEMU, VSB doesn't emulate FM synthesis. It only emulates the PCM playback functionality of the Sound Blaster card. Therefore, I wouldn't recommend it as an alternative to SBEMU or VSBHDA.

@digger - Thanks for the extremely detailed and informative explanation. I appreciate your time and now I better understand what's going on under the hood. I am ALL in favour of open source software but having had no success with SBEMU and VSBHDA and I was searching for and trying other alternatives, sort of like a wild goose chase.

And indeed, like @tauro rightly pointed out, you need to be careful to use a newer (pre-release) Jemm version than the one that currently ships with FreeDOS 1.3. Even v5.83, which is still listed as the "latest" release of Jemm on GitHub, isn't new enough. Support for port-trapping ISA DMA ports, which is required for both SBEMU and VSBHDA to work, wasn't included until version v5.84pre1, and a bug in this new functionality was fixed in version v5.84pre2, which is the latest available build at the time of this writing. To my knowledge, that's currently the best version to use with SBEMU or VSBHDA.

I was thinking of using this current Jemm version with VSBHDA to check if it maybe solves the issue. Thanks for pointing me to the beta release. Will keep you posted. Other than that, all settings in CONFIG and AUTOEXEC are fine since I followed the exact instructions.

I guess you could also use QEMM, but it's closed source and no longer maintained. Jemm, on the other hand, is free and open source, and still being maintained and regularly improved by Baron-von-Riedesel (f.k.a. japheth).

Closed source... no thanks

Is this the corresponding issue raised on the VSBHDA GitHub? Looks a number of tools were already tried and it appears to be related to the HDA routing. Hopefully this saves others from suggesting the same tests.

@jtchip - yes that is me in fact since, before becoming a member here, I raised an issue on GitHub for support. I cannot thank Baron-von-Riedesel enough for his support in guiding me how to test. Thanks for pasting the link.

I will try using Jemm v5.84pre2 and post back. In the meantime, any other suggestions are welcome and appreciated.

Robert

Reply 1066 of 1070, by digger

User metadata
Rank Oldbie
Rank
Oldbie
bert003 wrote on 2023-11-22, 04:12:

I will try using Jemm v5.84pre2 and post back. In the meantime, any other suggestions are welcome and appreciated.

Good luck! And again, don't forget to run DLOAD QPIEMU.DLL too, as well as the correct version of HDPMI, depending on whether you are using SBEMU or VSBHDA. 👍🏽

Reply 1067 of 1070, by bert003

User metadata
Rank Newbie
Rank
Newbie

Good luck! And again, don't forget to run DLOAD QPIEMU.DLL too, as well as the correct version of HDPMI, depending on whether you are using SBEMU or VSBHDA. 👍🏽

I tried the Jemm v5.84pre2 with dload and everything. However SBEMU still does not work. Through the headphones I hear a sort of initialisation tick and then the system becomes unresponsive (I cannot even restart with CTRL-ALT-DEL but have to use the power button). I then removed the /o0 to default to speakers with no luck.

I left it for almost a minute to give it some time and then pressed CTRL-C a couple of times to get the following:

jemm584.jpg
Filename
jemm584.jpg
File size
99.03 KiB
Views
456 views
File comment
Jemm v5.84 Pre Release - SBEMU Issue
File license
CC-BY-4.0

With VSBHDA, the behaviour is normal like before in the sense that everything seems to load fine and gives no error but I hear no sound.

Any other suggestions are welcome. In the meantime, I will continue to test. Thanks

Robert

Reply 1068 of 1070, by ajacocks

User metadata
Rank Member
Rank
Member

You might want to try a different output. I had to use /o1 on mine, as the primary output was mapped there, for some reason, on my Dell Latitude X300.

- Alex

Reply 1069 of 1070, by bert003

User metadata
Rank Newbie
Rank
Newbie

You might want to try a different output. I had to use /o1 on mine, as the primary output was mapped there, for some reason, on my Dell Latitude X300.

Thanks for the suggestion @ajacocks. No luck with /o1 though.

@digger - Using the Jemm v5.84pre2, now not even VSBHDA works as shown below.

jemx584.jpg
Filename
jemx584.jpg
File size
82.1 KiB
Views
346 views
File license
CC-BY-4.0

Your feedback is appreciated.

Robert

Reply 1070 of 1070, by wierd_w

User metadata
Rank Member
Rank
Member

I have a Toshiba (Satellite L755-S5214) with intel HDA, that straight up just hangs when SBEMU loads.
This happens with both Jemmex, and Qemm, even when all the adapter region is excluded, and nothing is loaded high.
Happens with dos6.22 and with freedos.

I'll edit this post with the specific model number when I go home.

I will test with VSBHDA : internal stack error, system halts.

Intel series 6 / C200 HDA

IMG_20231128_145532.jpg
Filename
IMG_20231128_145532.jpg
File size
656.91 KiB
Views
27 views
File license
Fair use/fair dealing exception