VOGONS


HD Audio Driver for Windows 98

Topic actions

Reply 20 of 26, by onethirdxcubed

User metadata
Rank Newbie
Rank
Newbie

Here is version Alpha-013 which rearranges a lot of the codec init code and tries to init all the Line Outs no matter what.

https://github.com/andrew-hoffman/WDMHDA/rele … s/tag/Alpha-013

My SFF with an ALC887 codec now produces some sound but it is garbled; small segments will keep looping until I do something that causes hard drive activity and then it will play a bit more into the buffer. It's possible that the interrupt is not firing or is being suppressed. The problematic system has most devices sharing IRQ 11.

Reply 21 of 26, by onethirdxcubed

User metadata
Rank Newbie
Rank
Newbie

Released Alpha-014 which ignores outputs marked as not connected by the BIOS pin configuration. This improves compatibility quite a bit. It now functions on Intel 915G /Realtek ALC880. Still investigating the garbled sound issue with newer post-2010 chipsets.

https://github.com/andrew-hoffman/WDMHDA/rele … s/tag/Alpha-014

e: I think I broke something on Atom systems between version 12 and 13, where it hangs on a blinking cursor after the Windows splash screen, and it's annoying because it doesn't happen if i have the driver disabled, change the version and then enable it after boot. So I can't see the crash in DbgView. Does anyone happen to have an industrial embedded Atom PC with a serial port?

Last edited by onethirdxcubed on 2026-01-11, 05:10. Edited 1 time in total.

Reply 22 of 26, by myne

User metadata
Rank l33t
Rank
l33t

There was a revision of HDA around that time.

Found it.
1.0a
https://www.intel.com/content/dam/www/public/ … ecification.pdf

1.0 Initial Release April 15, 2004
1.0a June 17, 2010

  • Updated with DCN No: HDA001-A changes.
  • Updated with DCN No: HDA002-A changes.
  • Updated with DCN No: HDA006-A changes.
  • Updated with DCN No: HDA011-A changes.
  • Updated with DCN No: HDA012-A changes.
  • Updated with DCN No: HDA015-B changes.
  • Updated with DCN No: HDA016-A changes.
  • Updated with DCN No: HDA017-A changes.
  • Updated with DCN No: HDA019-A changes.
  • Updated with DCN No: HDA022-A changes.
  • Updated with DCN No: HDA024-A changes.
  • Updated with DCN No: HDA034-A2 changes.
  • Updated with DCN No: HDA035-A changes.
  • Updated with DCN No: HDA036-A changes.
  • Updated with DCN No: HDA039-A changes.
  • Updated with DCN No: HDA041-A changes.
  • Updated with DCN No: HDA042-A changes.

Errata:

  • Clarified Input Payload Capability and Output Payload Capability Reset value is implementation specific.
  • Clarified that Stream Descriptor n FIFO Size must be valid and static after every programming of data format register, as well as when RUN bit is set.
  • Clarified that Stream Descriptor n BDL Pointer Upper Base Address register attribute is RO if not supporting 64 bit addressing.
  • Fixed timing error in “Codec Discovery” section that SW should wait for at least 521 us (25 frames) after reading CRST# as „1‟ before accessing codec.
  • Strongly recommend the default value for EAPD to be „1‟ in “EAPD/BTL Enable” section.
  • Clarified the codec response expected for double Function Group reset command in D3cold state, but recommended no response for the first Function Group reset of the double Function Group reset command sequence.
  • Clarified the reset value for FIFOS register is implementation specific.
  • Clarified UR enable verb for function group node is conditional in the required support for verbs table.

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic

Reply 23 of 26, by bakemono

User metadata
Rank Oldbie
Rank
Oldbie

Seeing as this is a WDM driver, can it work in 2K/XP? Or are there big differences between 98 and 2K audio drivers?

GBAJAM 2024 submission on itch: https://90soft90.itch.io/wreckage

Reply 24 of 26, by onethirdxcubed

User metadata
Rank Newbie
Rank
Newbie

My driver should be able to work in 2k, though I think it would have to be recompiled and have some edits to the inf file.

However there's already a better Microsoft driver available for 2000 SP4 and up, because Microsoft backported the UAA Architecture with the KB888111 update. They didn't ever bring that to the 9x Windows versions, and even R Loew couldn't backport it because of some missing kernel features to let the HDA Bus driver create its own child bus for the codec drivers to attach to.

This is why my driver has to cover both codec & controller as one monolithic piece. Supporting every possible combination of controller and codec across the last 20 years is looking like an insurmountable task though. I will do my best but would appreciate testing and pull requests.

Reply 25 of 26, by myne

User metadata
Rank l33t
Rank
l33t

I took a look at the code briefly a while back, and as an amateur c++ coder I honestly didn't know where to start.

Any chance you can write more comments and/or a guide to the code?

I'm no dummy, but it would take me weeks to understand it enough to add anything.

I built:
Convert old ASUS ASC boardviews to KICAD PCB!
Re: A comprehensive guide to install and play MechWarrior 2 on new versions on Windows.
Dos+Windows 3.11+tcp+vbe_svga auto-install iso template
Script to backup Win9x\ME drivers from a working install
Re: The thing no one asked for: KICAD 440bx reference schematic

Reply 26 of 26, by onethirdxcubed

User metadata
Rank Newbie
Rank
Newbie

It took me a few months to find and understand everything I needed to get this far so don't feel too bad about that.

A lot of the code is from the Windows 2000 Driver Development Kit sample drivers, the AC97 and Sound Blaster 16 WDM audio examples. So the first thing you will need to do is find that and install it in a Windows 98se VM. (Yes that is the official Microsoft solution, the WDM audio examples were removed from the 98 DDK because they are very buggy on 98 First Edition and I didn't want to write a VxD for a couple of reasons.) The samples are in C:\NTDDK\src\wdm\audio after you install the DDK. There are readme.htm files in each folder of sample code and a lot of documentation is installed as well, see the Driver Writer's Guide d_dwguid.chm and the Kernel Streaming guide d_kernel.chm in the C:\ntddk\help folder. Most of the code I have added and edited is in the common.cpp file.

I am also using some init code and the codec node parser adapted from a hobbyist OS "BleskOS" which you can find information about on osdev.org wiki and forums. Besides that, you will need to read the Intel HD Audio Specification a lot to understand what is going on.

Maybe I can walk whoever is interested through the process of getting a dev environment set up over Discord or something.