PDA

View Full Version : AC'97 audio driver or Sound Blaster emulator for DOS?



Fire-Flare
June 19th, 2017, 09:47 AM
I'm using an ITX motherboard to run my retro gaming PC, and the expansion slot is currently hosting a graphics card.

Everything seems to be working in Windows 98SE, except for audio when I drop into DOS mode.

My research shows that my onboard AC'97 is the culprit. I'm hoping somebody here knows a workaround that won't require sacrificing the graphics card for an actual Sound Blaster card.

hargle
June 19th, 2017, 12:31 PM
my guess is no.
AC97 has no native SB emulation, and the hardware is only visible to software in memory mapped IO space, way at the top of 4GB (on a 32bit CPU).
This means DOS has to be in protected mode or unreal mode in order to throw samples to the HW to play, which will likely upset many games. There would have to be some kind of TSR to catch access to soundblaster port access and convert them into AC97 accesses. yuk.

I haven't worked on AC97 sound in DOS in a decade, so someone may have come along and produced something by now, but it would be quite an undertaking!

Plasma
June 19th, 2017, 04:54 PM
This is actually what Ensoniq AudioPCI and Sound Blaster 16 PCI DOS drivers do. Digitized sound works ok in most games, but FM synth emulation is god awful. Supposedly there is a similar VIA AC97 DOS driver, but I don't know how well it works.

hargle
June 20th, 2017, 06:08 AM
I think those drivers still require HW support for soundblaster emulation.
I found a rather old pdf file from intel about how they recommend vendors support legacy audio in PCI:
http://intel-vintage-developer.eu5.org/PC-SUPP/PLATFORM/AC97/LEG_PCI.PDF

Where there is a bit in the PCI device to enable/disable legacy audio support:
Sound Blaster Enable:
A “1” in this bit position enables positive decode for all Sound Blaster register I/O references. If Sound Blaster decode is enabled via this bit, and the legacy subsystem is enabled via bit(15) = “0”, then the DMA channel specified by bits(7:6) is activated for playback sample transport, and the IRQ# specified by bits(9:8) is activated for SB interrupt service requests.


In other words, the act of catching access to port 22xh is done in hardware, not by a driver/emulation layer. These devices may be AC97 under the hood, but the SB support is still in HW. I suspect that as DOS support has faded away, so did these additional HW layers on most AC97 audio devices.

Fire-Flare
June 20th, 2017, 10:10 AM
*sigh* Goodbye 1080p...

Which PCI Sound Blaster card(s) are supported in Windows 98SE and DOS? Looking through Creative's support site for their cards shows one OS or the other in driver downloads, not both.

Will a 98SE driver work when I 'Restart in DOS Mode'?

TravisHuckins
June 20th, 2017, 10:59 AM
I've never gotten A Sound Blaster live card (that has Sound Blaster emulation) to work in DOS. I had it show up in Windows and it had an IRQ, but it would default to an IRQ that could not be selected in any games. The problem with Plug N Play cards in DOS is that you can't physically set the IRQ and DMA. What I did was just buy a real MS-DOS system with real ISA slots (well it also has PCI). Your best bet for DOS sound for compatibility is to use an ISA Sound Blaster.

zombienerd
June 20th, 2017, 05:43 PM
Edit - you mentioned PCI above. I'm guessing original PCI, not PCI-e

You could always use a cable-extended riser card and add a slot, put the cards in an external enclosure.

Something like this:

http://www.microsatacables.com/pci-riser-32bit-to-dual-pci-slot-with-flex-cable-pci-32bit-dl10cm

GiGaBiTe
June 22nd, 2017, 03:20 AM
I've never gotten A Sound Blaster live card (that has Sound Blaster emulation) to work in DOS. I had it show up in Windows and it had an IRQ, but it would default to an IRQ that could not be selected in any games. The problem with Plug N Play cards in DOS is that you can't physically set the IRQ and DMA. What I did was just buy a real MS-DOS system with real ISA slots (well it also has PCI). Your best bet for DOS sound for compatibility is to use an ISA Sound Blaster.

SB Live! PCI sound cards work under DOS, it's just a pain to set them up. You need the DOS driver and to mess with the SET BLASTER environment variable to get it working.

It's not really worth the effort though because many games have crashing issues with PCI sound cards (like Duke 3D, SW, RR, etc.)