VOGONS


SBEMU: Sound Blaster emulation on AC97

Topic actions

Reply 221 of 1346, by Yoghoo

User metadata
Rank Member
Rank
Member
matti157 wrote on 2023-03-20, 23:32:

Do you have a little guide for freedos?
At startup it gives me the message "jload: versions of Jemm and Jload don't match"

The versions from Freedos are older and do not work with sbemu. So use the files (jload, jemm) from the zip file. You have to change the path in the config.sys and autoexec.bat to where you extracted the zip file to (f.e. c:\sbemu).

Reply 222 of 1346, by matti157

User metadata
Rank Member
Rank
Member
Yoghoo wrote on 2023-03-20, 23:53:
matti157 wrote on 2023-03-20, 23:32:

Do you have a little guide for freedos?
At startup it gives me the message "jload: versions of Jemm and Jload don't match"

The versions from Freedos are older and do not work with sbemu. So use the files (jload, jemm) from the zip file. You have to change the path in the config.sys and autoexec.bat to where you extracted the zip file to (f.e. c:\sbemu).

I found only jemmex.exe under the bin directory of freedos. Updated it and now it no longer boots.

Do you know the paths of where to place the other exe's? Via search I can't find anything

06A58F6D-3942-4787-911B-CCC24B8DC079.jpeg
Filename
06A58F6D-3942-4787-911B-CCC24B8DC079.jpeg
File size
1.7 MiB
Views
2898 views
File license
Public domain
357D1977-6C97-4EF4-B01F-8F2525247561.jpeg
Filename
357D1977-6C97-4EF4-B01F-8F2525247561.jpeg
File size
1.74 MiB
Views
2898 views
File license
Public domain

Reply 223 of 1346, by L4MD4

User metadata
Rank Newbie
Rank
Newbie
matti157 wrote on 2023-03-21, 00:07:

I found only jemmex.exe under the bin directory of freedos. Updated it and now it no longer boots.

Do you know the paths of where to place the other exe's? Via search I can't find anything

You don't need to overwrite the original JEMMEX.EXE, that came with FreeDos.

You can just leave the new one in "C:\SBEMU", if booting to "C:".

For a simple test, of SBEMU, you can edit FDCONFIG.SYS.

Find the line "DEVICE=\FREEDOS\BIN\JEMMEX.EXE" and place a ";" in front of it (this "more or less" disables the line).
Then create a new line for the JEMMEX.EXE in the SBEMU folder.
----Example----
;DEVICE=\FREEDOS\BIN\JEMMEX.EXE
DEVICE=\SBEMU\JEMMEX.EXE
---------------
Once booted, change directory to SBEMU and proceed according the the README.TXT file.

Now, concerning the boot issue, you could try "DEVICE=\SBEMU\JEMMEX.EXE NOEMS NORAM".
That is often the first line of defense, when working with JEMMEX problems.

If you find everything works out for you, it is probably "then" okay to move everything to C:\FREEDOS\BIN. Maybe just rename the old JEMMEX.EXE , to JEMMEX.OLD.

Alternatively, you could add "C:\SBEMU" to the system path, in FDAUTO.BAT.
----Example----
SET DOSDIR=\FREEDOS\BIN
SET PATH=%DOSDIR%;\SBEMU
---------------

Now you don't need to move anything to "C:\FREEDOS\BIN".

Note: The system path does not apply to things loaded by FDCONFIG.SYS.
You still need to specify the path, in that case.

Reply 224 of 1346, by Kenpachi

User metadata
Rank Newbie
Rank
Newbie
Kenpachi wrote on 2023-03-19, 23:13:
Incredible stuff crazii, this is so cool. I tested on a 2nd gen i7 laptop and it worked perfectly with Doom and Duke3D. I was ho […]
Show full quote

Incredible stuff crazii, this is so cool.
I tested on a 2nd gen i7 laptop and it worked perfectly with Doom and Duke3D.
I was hoping to get it working on my Dell M6400 though (IDT 92HDxxx) as my main retro rig. Initially got through some hurdles as duke3d was reporting DMA conflicts, but i sorted those by disabling NIC, COM and parallel ports in BIOS.
Now Doom and Duke3d happily stream the audio but there's no audio output. MPXplay has the same behaviour though, talking directly to the IDT.
Tried the beta to list soundcards in case it was streaming to HDMI audio or similar, but both SBemu and MPXplay both only report the 1 IDT interface.
I'm guessing it's gonna be a mixer/routing config issue.
I'm strapped for time but in future I'll do some datasheet digging, but if anyone else has had any success with the IDT I'd love to know!
Cheers again, SBemu is awesome!

I found the datasheet, and can start going through the required config verbs.
Is there any util floating about that can send verbs and commands to codecs (something similar to PCISET)?

Filename
92HD71B7_IDT.pdf
File size
1.5 MiB
Downloads
69 downloads
File license
Fair use/fair dealing exception

Codec is IDT 92HDxxx, specifically 92HD71B7X
Vendor 111d
Device 76b2

Reply 225 of 1346, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie

AFAIK HDA is a standard across variout chipsets but not including the codec chip. It should work almost with some default setting but manufacturers may implement some more complex logic e.g. for multiplexing various in/out lines to a single jack or jack plug autodetection. Usually on laptops. This may require some special hacks to enable proper audio rout to the jack instead nowhere. Of course this is vendor specific and maybe proprietary. A good example how to turn well defined standard to hell. I vaguelly remember that DOS mplayer added some specific hacks for some HDA to sound properly. So there's no universal/easy way how to fix it to work on all HDA devices...

For manipulation HDA registers I think it requires acessing MMIO - memory above 1 MB and find proper base address first. My last ver of SMB tool have debug commands for accessing such memory but doesn't help finding proper address...

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA

Reply 226 of 1346, by MBH

User metadata
Rank Newbie
Rank
Newbie
RayeR wrote on 2023-03-21, 14:11:

AFAIK HDA is a standard across variout chipsets but not including the codec chip. It should work almost with some default setting but manufacturers may implement some more complex logic e.g. for multiplexing various in/out lines to a single jack or jack plug autodetection. Usually on laptops. This may require some special hacks to enable proper audio rout to the jack instead nowhere. Of course this is vendor specific and maybe proprietary. A good example how to turn well defined standard to hell. I vaguelly remember that DOS mplayer added some specific hacks for some HDA to sound properly. So there's no universal/easy way how to fix it to work on all HDA devices...

For manipulation HDA registers I think it requires acessing MMIO - memory above 1 MB and find proper base address first. My last ver of SMB tool have debug commands for accessing such memory but doesn't help finding proper address...

The same may be true for AC'97 Audio. Just found out, there´s another chip on my board along with VT8237R+. It´s a VIA VT1612A, that´s also a "codec" and contains a mixer. I found a datasheet for this VT1612A and put it in the attachment. Maybe it´s helpful, maybe not.

Attachments

  • Filename
    200851510482647.pdf
    File size
    481.95 KiB
    Downloads
    63 downloads
    File comment
    VIA VT1612A Datasheet
    File license
    Public domain

Reply 227 of 1346, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie

Yes, I never seen chipset with fully integrated analog frontend (bacuase of high noise level produced by digital cirtcuits it's better separate analog part to extra chip) there's usually a small codec chip beside, mostly Realtek, Analog Devices, Sigmatel, Wolfson...

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA

Reply 228 of 1346, by Joakim

User metadata
Rank Oldbie
Rank
Oldbie

First off, wow, what an amazing piece of software. I'd love to try it on one of my rigs.

I have a laptop, a Compaq Armada 100s that I've tried this on, no errors during booting. I set it to sb emulation at irq 5. Tried money island 2 and duke3d shareware version but no sound.

The laptop is rocking something called CS4299 chip which supposedly is ac97. I could not find much in the manual.

BR joakim

Reply 229 of 1346, by Kenpachi

User metadata
Rank Newbie
Rank
Newbie

If SBemu/MPXplay's drivers detect the base address, and also do some node/pin modification (ie. eapd for speaker with -scc 1) maybe there could be a pin/node config file such as with HDATSR and the w3.1 driver?

Reply 230 of 1346, by Kamerat

User metadata
Rank Oldbie
Rank
Oldbie
crazii wrote on 2023-03-19, 06:55:
Based on the symptom that SBEMU can work with HDAplay without any modification, I think MPXPlay may miss some compatibility setu […]
Show full quote
Kamerat wrote on 2023-03-18, 11:53:
As I wrote in a later post I actually got it working by running and exiting HDAplay before launching SBEMU. […]
Show full quote
crazii wrote on 2023-03-16, 06:43:

There was problem on MPXPlay and I did some fix, tested working by folk here, when MPXPlay doesn't work but SBEMU does. There might be more problems that are not fixed.
It uses IRQ7, so you need to use IRQ5 for SBEMU, I saw you've already done that. So what's the BLASTER env after running SBEMU?

As I wrote in a later post I actually got it working by running and exiting HDAplay before launching SBEMU.

I don't think the driver from Mpxplay sets up the codec correctly on that system, here are the main differences I discovered by running the HDAstat utility:

Cold boot        0/ 16/0F05/0  - power state control=0x433
SBEMU only 0/ 16/0F05/0 - power state control=0x33
HDAplay + SBEMU 0/ 16/0F05/0 - power state control=0x0

Cold boot 0/ 16/0F06/0 - link stream/channel: 0x0 (stream=0, channel=0)
SBEMU only 0/ 16/0F06/0 - link stream/channel: 0x0 (stream=0, channel=0)
HDAplay + SBEMU 0/ 16/0F06/0 - link stream/channel: 0x10 (stream=1, channel=0)

I don't know if both are needed for the codec to work correctly as I dont't know how to manually modify it's registers.

Based on the symptom that SBEMU can work with HDAplay without any modification, I think MPXPlay may miss some compatibility setup steps for some chipsets.
Just checked the MPXPlay's source code, the link stream register is written by MPXPlay already, but involves parsing HDA DAC nodes, not just a simple write to register with a raw value. I'm not sure I can handle it right now.
The power state is not touched by MPXPlay, I can try to set it, but not sure if it works.

I've made a slight modification to HDAplay and added a -i option for just running the initialization so there's no need to type exit after launch. This is just a quick hack, but I attached it if anyone are interested to try it out on silent HDA codecs that seems to initialize properly with SBEMU. Run HDAplay before launching SBEMU. I've also included an empty WAV file, a batch file and the modified source file.

Attachments

  • Filename
    HDAutils_v1.0mod.zip
    File size
    23.98 KiB
    Downloads
    99 downloads
    File comment
    License included in archive.
    File license
    Fair use/fair dealing exception

DOS Sound Blaster compatibility: PCI sound cards vs. PCI chipsets
YouTube channel

Reply 231 of 1346, by Kenpachi

User metadata
Rank Newbie
Rank
Newbie

Hi Kamerat,
Very cool, i hadn't thought to try HDAplay.
I used the -i switch, which reported the help info.
I used the -i switch with 44100s.wav, and it reports the EMB physical and HDA base address, states codec 0 lineout pin widget is 11, but then reports no audio output converter is connected to the lineout pin, then no lineout pin found for this device.

Reply 232 of 1346, by Kamerat

User metadata
Rank Oldbie
Rank
Oldbie
Kenpachi wrote on 2023-03-22, 01:28:
Hi Kamerat, Very cool, i hadn't thought to try HDAplay. I used the -i switch, which reported the help info. I used the -i switch […]
Show full quote

Hi Kamerat,
Very cool, i hadn't thought to try HDAplay.
I used the -i switch, which reported the help info.
I used the -i switch with 44100s.wav, and it reports the EMB physical and HDA base address, states codec 0 lineout pin widget is 11, but then reports no audio output converter is connected to the lineout pin, then no lineout pin found for this device.

Did you try "hdaplay.exe -i -s 44100s.wav" which I use in the init.bat batch file?

DOS Sound Blaster compatibility: PCI sound cards vs. PCI chipsets
YouTube channel

Reply 233 of 1346, by Kenpachi

User metadata
Rank Newbie
Rank
Newbie

Thanks, sorry i overlooked init.bat...
I ran init.bat and the output reports EMB and Codec addresses as before, but with the-s switch reports:

Codec 0, speaker pin widget: 13
Codec 0, audio converter widget used: 16

Unfortunately still no sound in doom, duke3d, mpxplay.

Reply 234 of 1346, by crazii

User metadata
Rank Oldbie
Rank
Oldbie
MBH wrote on 2023-03-20, 15:41:
crazii wrote on 2023-03-19, 21:49:
Stainlesscat wrote on 2023-03-19, 18:49:

I'm not sure if this will help but here's the data sheet for the VIA vt8235 & vt8237r+ southbridges. as far as i'm aware these chipsets all carry some form of AC'97 codec, in which MPXplay play's fine in "VIA" mode on my build with a VIA chipset. it's an p4m890 with vt8237r+ chipset.

sbemu inits correctly with no issues. but all dos games i've tested detect an sound blaster IRQ & DMA conflict and nor even OPL fm seems to work. i'm using the sbemu vt8233fix build you just recently compiled.

Yes, the datasheet is very helpful!
I've made a new build according to the datasheet. zip updated here: Re: SBEMU: Sound Blaster emulation on AC97

Thanks crazii, but it´s still not working. There is a progress, FM music is playing in Duke3d setup. It´s very disorted and way too slow, but at least a sign of live. For the soundeffects, there´s still the error with the wrong DMA channel. But I belive that´s a standard message if something is wrong and it is not for sure DMA related.

It's mostly possible that be interrupt that causing the problem. the only difference between mpxplay and sbemu is that sbemu enables interrupt. all the emulate SB's virtual IRQ & DMA is handled in the sound card interrupt. if interrupt is not working, games will report IRQ/DMA problem.
I tried another fix that I overlooked last time, it's updated here: Re: SBEMU: Sound Blaster emulation on AC97

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 235 of 1346, by bregolin

User metadata
Rank Member
Rank
Member

I just want to say this is an amazing piece of software and opens up a lot of new possibilities, so I'd like to thank crazii and everyone involved, directly or indirectly.

I've tested this on an Intel H110 chipset motherboard, booting from a fresh FreeDOS image and only loading the required stuff to run SBEMU. While FM emulation works flawlessly, the digital audio piece does not; I've seen two behaviors so far:
- When trying to playback digital audio, I get lots of page fault errors from Jemmex then I have to reset. No sounds before crashing.
- Playback works but it sounds way sped up, then after 5 seconds or so I get page faults and have to reset; I did try changing the sample rate but made no difference

Let me know if there's any way I can help with testing this.

IBM Aptiva 2162 - P55 166 MMX, 32MB, CS4237B + Wavetable, ATI Mach64 2MB / Win98SE
Custom PIII 750, 64MB, SB AWE64, Voodoo 3 3000 AGP / Win98SE
Sony Vaio z505 SuperSlim - PIII 550, 192MB, YMF744, NeoMagic 256AV+ / Win98SE

Reply 236 of 1346, by MBH

User metadata
Rank Newbie
Rank
Newbie
crazii wrote on 2023-03-22, 19:12:
MBH wrote on 2023-03-20, 15:41:
crazii wrote on 2023-03-19, 21:49:

Yes, the datasheet is very helpful!
I've made a new build according to the datasheet. zip updated here: Re: SBEMU: Sound Blaster emulation on AC97

Thanks crazii, but it´s still not working. There is a progress, FM music is playing in Duke3d setup. It´s very disorted and way too slow, but at least a sign of live. For the soundeffects, there´s still the error with the wrong DMA channel. But I belive that´s a standard message if something is wrong and it is not for sure DMA related.

It's mostly possible that be interrupt that causing the problem. the only difference between mpxplay and sbemu is that sbemu enables interrupt. all the emulate SB's virtual IRQ & DMA is handled in the sound card interrupt. if interrupt is not working, games will report IRQ/DMA problem.
I tried another fix that I overlooked last time, it's updated here: Re: SBEMU: Sound Blaster emulation on AC97

I´m sorry, but still exactly the same problem. Nothing has changed. Duke3d setup complains about DMA and FM music ist disorted/too slow.

Reply 237 of 1346, by Bruno128

User metadata
Rank Member
Rank
Member

Test report,
Realtek ALC888 @ VT8237A
MS-DOS 6.22
SBEMU ver.1.0b2

Output:

DEVICE=JEMMEX.EXE
JEMMEX v5.84 [02/06/23]
System memory found at e000-efff, region might be in use
JemmEx loaded
JLOAD QPIEMU.DLL
JLoad: QPIEMU.DLL loaded successfully.
HDPMI32I -r -x
HDPMI32 now resident
Internal stack overflow
System Halted

Could this be fixed? Thanks.

Now playing: Red Faction on 2003 Acrylic build


SBEMU compatibility reports

Reply 238 of 1346, by RayeR

User metadata
Rank Oldbie
Rank
Oldbie

Looks like the same IRQ problem I had with SBA. Does it need to be fixed for more soundcards?

Gigabyte GA-P67-DS3-B3, Core i7-2600K @4,5GHz, 8GB DDR3, 128GB SSD, GTX970(GF7900GT), SB Audigy + YMF724F + DreamBlaster combo + LPC2ISA