VOGONS


SBEMU: Sound Blaster emulation on AC97

Topic actions

Reply 1060 of 1341, 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 1341, 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 1341, 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: REMOVED

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.

Last edited by DosFreak on 2023-12-07, 02:06. Edited 1 time in total.

Robert

Reply 1063 of 1341, 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 1341, 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 1341, 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 1341, 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 1341, 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
2123 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 1341, 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 1341, 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
2011 views
File license
CC-BY-4.0

Your feedback is appreciated.

Robert

Reply 1070 of 1341, 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
1692 views
File license
Fair use/fair dealing exception

Reply 1071 of 1341, by dr.zeissler

User metadata
Rank l33t
Rank
l33t

Does SBEMU also support PCI soundcards like "SB128PCI" like ensonic ES1371 ?

On my FSC -Scovery 211/212 SBEMU detects "ENS" and shows all settings (IRQ/DMA etc) but JEMMEX throuhs a freeze while initializing the card. Qemm does work without a freeze but sound is not played.

Retro-Gamer 😀 ...on different machines

Reply 1072 of 1341, by crazii

User metadata
Rank Oldbie
Rank
Oldbie
dr.zeissler wrote on 2023-11-29, 15:54:

Does SBEMU also support PCI soundcards like "SB128PCI" like ensonic ES1371 ?

On my FSC -Scovery 211/212 SBEMU detects "ENS" and shows all settings (IRQ/DMA etc) but JEMMEX throuhs a freeze while initializing the card. Qemm does work without a freeze but sound is not played.

There's a fork of SBEMU that has ES1371 support (untested): https://github.com/sbemu-x/sbemu-x
You may wanna try it and report to the github project.

Toshiba Satellite Pro 4300 - YMF744, Savage IX
Toshiba Satellite 2805-S501 - YMF754, GeForce 2Go
IBM Thinkpad A21p - CS4624, Mobility Radeon 128
main: Intel NUC11PHKi7C Phantom Canyon: i7-1165G7 RTX2060 64G 2T760PSDD

Reply 1075 of 1341, by dr.zeissler

User metadata
Rank l33t
Rank
l33t

Thx! I report later...would be really great if sbemu-x works...on plain dos the sb128pci drivers did not work.
The only pci-soundcard that worked in that machine with that chipset was the ess-solo1. (SB128/SBlive did not work)

Retro-Gamer 😀 ...on different machines

Reply 1076 of 1341, by dr.zeissler

User metadata
Rank l33t
Rank
l33t

Sorry guys, I tend to have the problematic machines...

sbemu-x with jemmex throughs a error6 and a lockup and using quemm everything seems OK but there is no sound at all.
This seems to be an issue with the board/chipset, because I did not get any other PCI soundcard to work in Dos on that AlladinV Chipset beside the ESS-Solo1 PCI, this card works 100% in that machine...but not with amithlon, so I decided to use the SB128PCI which works perfect in amithlon and win95 too, dos does not work (tested every driver inculding the original ones from ensoniq).

Retro-Gamer 😀 ...on different machines

Reply 1077 of 1341, by crazii

User metadata
Rank Oldbie
Rank
Oldbie
Alecio wrote on 2023-03-17, 13:11:

Has anyone managed to get it working in VirtualBox successfully? The only game that worked for me was Whiplash (Fatal Racing), but without music and with several stutters. According to the official page it works , but I don't know if it needs any additional configuration beyond those mentioned in the readme.

In order to make SBEMU works good in virtualbox, you need disable host hyper-v and enable hardware virtualization (VT-x/AMD-v) for virtualbox. otherwise the emulation is slow. I found the problem when I enable core isolation/memory integration on Win11.
There're many things that make hyper-v active: https://forums.virtualbox.org/viewtopic.php?f=25&t=99390 make sure none of those are enabled.

EIDT: I don't recommend turning of core isolation/memory integration, and I don't do that myself 😁. Do it if you really want to run in virtualbox.

Toshiba Satellite Pro 4300 - YMF744, Savage IX
Toshiba Satellite 2805-S501 - YMF754, GeForce 2Go
IBM Thinkpad A21p - CS4624, Mobility Radeon 128
main: Intel NUC11PHKi7C Phantom Canyon: i7-1165G7 RTX2060 64G 2T760PSDD

Reply 1078 of 1341, by MoneySquirrel

User metadata
Rank Newbie
Rank
Newbie

The latest build works great on my Dell Latitude D600 laptop, which is an ICH4 chip I think? I have noticed in Doom shareware that the sound FX start getting choppy around level 2 or 3. Has this been discussed before? It's pretty amazing software though!