VOGONS


First post, by HandOfFate

User metadata
Rank Member
Rank
Member

I have a Compaq N600c with an ESS 198x audio chip (probably ESS 1989, aka Maestro 3/Allegro-1) that plays audio fine under Windows, plays music fine in Doom but crashes hard when Doom is about to play a sound effect. Same thing with Quake (which I think just takes the values from BLASTER)

There have been topics about the N600c before (this one was most informative) and I also found this Czech website talking about the N400c, which has a similar audio chip. I've got the same (simple) setup in my CONFIG.SYS and AUTOEXEC.BAT.

The ESS PCI device driver for DOS, ESSAUDIO.COM, requires that a ESSAUDIO.INI file is present at the root of the drive (e.g. C:\). It's a binary file with the I/O, DMA and IRQ settings that the card should be configured to. I took the file from the ESS PCI drivers at Vogonsdrivers as a starting point, and successfully edited it with DEBUG to try various settings. But the machine keeps hanging, no matter what settings I try.

One difference with the Czech N400c website is that on my machine ESSAUDIO.COM reports that "DMA mode is TDMA" instead of "DDMA". Unfortunately the link to ESSAUDIO.INI on that website leads to a 404 (and nothing at web.archive.org) so I don't know if it's a setting that I can adjust or if it's just a difference between the chipsets/notebooks. I also have no clue what effectively the difference is between "TDMA" (Transparent DMA, I think) and "DDMA" (Distributed DMA?), or if it matters in this case.

Does anyone maybe have a ESSAUDIO.INI for a N600c that works for you? Or some other idea what could cause this?

Edit: I forgot to mention. This newsgroup post also has some details about the chipset and configuration. I'm not sure how to apply it though.

Last edited by HandOfFate on 2020-07-20, 16:11. Edited 1 time in total.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 2 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

Please read my post 😀

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 3 of 49, by keenmaster486

User metadata
Rank l33t
Rank
l33t

Are there settings in the BIOS for the IRQ, DMA, etc of the card?

Also, you should probably try different Sound Blaster card options in the DOOM setup. Start with SB 1.0 and work your way up. Because if that doesn't work then nothing will.

Basically these PCI cards usually provide SB Pro II compatibility, but not SB16.

World's foremost 486 enjoyer.

Reply 4 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

No, the Compaq BIOS is very simple. Unless there's some advanced mode hidden somewhere there are no IRQ settings of any kind.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 5 of 49, by MAZter

User metadata
Rank Member
Rank
Member
HandOfFate wrote on 2020-07-20, 16:05:

Please read my post 😀

Ok, if you already have necessary essaudio.ini, just make same changes, like on that website manual:

In the hex editor I adjusted the values in my essaudio.ini as follows: SB IO: 220h, DMA: 1, FM IO: 388h, IRQ: 5, GAME IO: 201h and MPU-401 IO 330h

Doom is what you want (c) MAZter

Reply 6 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

I tried it but still nothing.

I managed to find some non-WDM drivers over at Archive.org that adds a "DOS Emulation" sound device to Windows. I'm guessing it is there to add sound support for running DOS programs under Windows, but it also creates/updates the C:\ESSAUDIO.INI and C:\ESSAUDIO.SYS every time Windows starts.

So I should have an accurate config file now, generated by the official drivers, but still no improvement: Doom hangs and MPXPlay reports that it can't find a sound card.

I also booted with a Debian 10 installation DVD (they still make i386 versions) and it reports that the card is a ES1988 instead of 1989. Not sure it matters though.

[edit]
Other findings: PLANY v1.5 plays WAV files using the I/O, IRQ and DMA set in ESSAUDIO.INI in DOS. So something is working

However, running DOS games in Windows also causes a hard crash (with the non-WDM drivers, haven't tried the WDM again). So something is also definitely not working.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 7 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

I played around with a custom init script that was made by Kamarat (posted in this topic) that uses an utility called PCISET to directly set registers on the card, instead of via ESSAUDIO.

After much trial and error I found a combination that actually worked(!) and gave me music and sound in Rise of the Triad, until I rebooted. The combination was I/O 220, IRQ 7, DMA 3 with DMA type set to WBDMA mode '110' ("ISA write-back every 2 transfers")

Apparently DMA 3 is normally in used by the IDE controller so trying to start Windows 98 while the card set to these values was... a mistake. So even if this configuration would work reliably it wouldn't be ideal.

So I still didn't make any real progress but at least I know it can work.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 9 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

I will make one tomorrow (Sunday).

I'm still running into issues but so far everything has been playable, even games that have traditionally (in my experience) been a bit weird with sound like Skyroads and Syndicate. It's just that the MIDI quality is horrible in DOS (with the exception the Duke3D setup's "music test", for some reason. The game itself is just as bad) and the volume is just too damn high.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 10 of 49, by vorob

User metadata
Rank Oldbie
Rank
Oldbie

Can anyone explain what’s going on here? I’ve got n600c and n400c. Both with win 98, default wdm sound driver and Microsoft midi thing:

8D91C820-1C7F-4B0B-B797-329FE6D12471.jpeg
Filename
8D91C820-1C7F-4B0B-B797-329FE6D12471.jpeg
File size
1.05 MiB
Views
2911 views
File license
Public domain

But they sound differently. N600c sounds horribly primitive.

https://youtu.be/lSAZHFs0cKo

Reply 11 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

I think Prince of Persia only uses Adlib/OPL2 for sounds and music when using a Sound Blaster, and the Allegro-1 was missing some OPL2 stuff (I think? It came by in the laptop saga topic). That would explain why it sounds so off. Another game that would (unfortunately) sound bad is Dune, which had amazing Adlib music.

I'm about to collect all my files and make a guide. I found out that it also works when having the WDM drivers installed in Windows, which makes everything easier as you can skip the whole "manually select the Allegro-1 PCI device"-thing when using the VXD drivers.

I still haven't solved the volume issue though. I'm hoping to find a AC97 Mixer that can adjust the internal volume registers of the card directly, because I've found that even though the Allegro-1 boasts "SB Pro compatibility" it completely ignores the volume settings in the SB Pro registers. Also, the technical manual barely even mentions the SB Pro, where the one for the Solo-1 (ES1938) has multiple pages of information about it.

So far I would have to say that the Allegro-1 is not a good DOS sound card. But if we can fix the volume issue I think it could be acceptable.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 12 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

Alright, here we go. I hope everything is clear. Please let me know if something is unclear or broken:

Getting DOS sound to work using Compaq's Allegro/ES1988 WDM drivers (as opposed to VXD drivers)

Advantages of this method:

* Simple driver install
* No audio problems in Windows when ESSAUDIO.SYS is loaded via CONFIG.SYS

Disadvantages of this method:

* Have to directly boot to DOS if you want sound there, cannot boot to Windows first and then exit to DOS. With VXD drivers booting / exiting Windows is fine.
* Volume issues (same as VXD for now, more on this later)

What's in WDM-1.0.zip:

* ESSAUDIO.COM 2.31S: initializes the audio device with the settings from ESSAUDIO.INI
* ESSAUDIO.SYS 2.30F: [Update: this file doesn't have to be loaded. In fact, it's better not to] changes the IRQ of the PCI host bridge to the IRQ set in ESSAUDIO.INI
* ESSAUDIO.INI: for the following settings: I/O 220, IRQ 5, DMA 1
* PCISET.EXE: Used by ESSINIT.BAT to directly change settings of the audio chip.
* ESSINIT.BAT: set I/O, IRQ and DMA again, and changes internal settings that make audio work and not crash the system. I left some comments in the file about what it does.
* SP18965.EXE: Compaq provided WDM drivers for the Allegro
* ESSAUDIO.IN7: for the following settings: I/O 220, IRQ 7, DMA 1 (install as C:\ESSAUDIO.INI)
* ESSINIT.BA7: for setting the card to IRQ 7 (install as C:\ESSINIT.BAT)

Steps to install:

1. Install WDM drivers (via SP18965.EXE or any other)
2. Place ESSAUDIO.*, PCISET.EXE and ESSINIT.BAT in C:\
3. Place somewhere in CONFIG.SYS: DEVICE=C:\ESSAUDIO.SYS (note: this step could be skipped but without this sound doesn't work in Doom I/II/others?) (note 2: it doesn't stay in memory so DEVICEHIGH is not needed)
4. Place as the last line in AUTOEXEC.BAT: C:\ESSINIT.BAT
5. Reboot directly to DOS (using F8, a CONFIG.SYS boot menu or with BootGUI=0 set in C:\MSDOS.SYS)
6. Done, hopefully. The sound card should now be accessible to programs on I/O 220, IRQ 5 and DMA 1. BLASTER variable is also set.

Some games ask you to select the type is there. Sound Blaster Pro 2.0 will work but the stereo output might be reversed. With Sound Blaster 2.0 the stereo seems fine but perhaps it decreases sound quality, I can't tell.

Volume issue:

In some games the sound and/or music are really loud. I don't know why it's different and how to fix it yet.

An example of this: the "Test music" option in Duke Nukem 3D (V1.3D and 1.4) sounds fine but in the actual game it's really loud and sounds terrible.

Notes on certain games:

* Doom / Doom II: The game only starts when started using DOS32A (http://dos32a.narechk.net/index_en.html) as DOS4GW crashes. Music volume is reasonable compared to many other games.
* Skyroads: music and audio are way, way, way too loud
* Duke Nukem 3D: "Test music" in sound setup sounds fine, music in game is too loud and (perhaps because of that) distorted (also with headphones. RIP my ears)
* Syndicate: intro and game music very loud. Menu sounds work but ingame sound only works when the card is set to IRQ 7 (even if you configure the game to IRQ 5). I remember something similar from my childhood so this might not be the fault of the Allegro.
* Quake 1 v1.06: some sounds are cut off, seems to be random. You can hear it happen with (random) weapon/ammo pickups in the demo the game starts up with. Did not try v1.08.
* Rise of the Triad: works, music is quite loud and high notes sound strange (but that might be normal for the Allegro)

Credits:

* Kamerat on Vogons for coming up the idea of using PCISET to adjust the card settings (PCI sound cards and Chipsets from various manufacturers...)
* Uwe Sieber for PCISET
* Myself for putting way too much time into this, until I happened to try loading ESSAUDIO.COM first and then change some things with PCISET which made things work (at least for the Compaq N600c). After that it was just a matter of optimizing the settings.

Links:

* Technical documentation for the ES1988, contains details about the PCI registers that are modified by ESSINIT.BAT: ftp://ftp.alsa-project.org/pub/manuals/ess/ds … 8_3_18_00_1.pdf

I might make a step-by-step guide for VXD drivers at some point but it isn't too different:

* You have to force Windows to install the drivers (as it claims they're not for the correct card, which is not true)
* You need to ensure that the DOS emulation device is set to I/O 220, IRQ 5 and DMA 1 (might be the default but you never know)
* Check CONFIG.SYS, AUTOEXEC.BAT and [windows directory]\DOSSTART.BAT because the driver installation changes them. ESSAUDIO.COM should not be loaded separately, ESSINIT.BAT will handle it. DEVICE=C:\ESSAUDIO.SYS should also be removed from CONFIG.SYS
* The rest is the same

Attachments

  • Filename
    WDM-1.0.zip
    File size
    1.66 MiB
    Downloads
    236 downloads
    File license
    Fair use/fair dealing exception
Last edited by HandOfFate on 2020-07-28, 09:35. Edited 5 times in total.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 14 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

I'm not personally, but WDM also works and the installation is easier to explain.

[Edit]
In the meanwhile, I managed to get the volume up/down hardware buttons on the notebook to work in DOS. Unfortunately, they only adjust the volume of the 'voices' (sound) and not the music. I will update the files for it later and upload them but this was the fix: PCISET for 52 should become '11100000 11100000' (third zero becomes a one in both bit series)

But I really don't understand why the FM synthesis channel is seemingly excluded from volume control.

[Edit II]
I got a hint of what is going on, which would explains why Doom is music volume control is working but not why Duke 3D is ignoring its own volume controls. I'll have another look tomorrow.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 15 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

I made some updates to the guide. It turns out ESSAUDIO.SYS is never needed, also not for Doom. The volume was probably muted in game when I tried it but now that the hardware volume buttons work the volume can be adjusted. This is good news as having VXD drivers + ESSAUDIO.SYS loaded caused problems in Windows.

If I got the energy I'll also make a collection and guide for the VXD drivers.

But then I'm done with this laptop. I've checked everything I can think of, even wrote some C programs to directly read and adjust the SB and ESS mixer registers on the sound card in the hope to get the music to tone down in DOS, but without success.

I did find out that when running the PCISET lines after starting Windows 98 running the VXD drivers, games also don't crash the system in Windows AND have music with a normal volume level. I've tested Skyroads and Duke Nukem 3D and the music was finally ok.

This makes me think it has something to do with the audio levels set in the mixer of the AC'97 part of the card that can be adjusted in Windows but not from DOS without some serious digging, which I'm unwilling to do (the DOSSOUND program didn't work on this laptop).

I've tried Alex Mina's AC97 mixer to get some insights in the volume levels and while it has explicit support for the Allegro, it doesn't recognize the one in this laptop. Maybe the card's hardware ID is slightly different which is also why Windows thinks that the VXD drivers are not suitable.

So, problem "solved". But I'd prefer to play in pure DOS and the performance of Duke Nukem 3D in Windows wasn't great. I could spend another X hours to try and improve that but honestly I'm a bit burned out.

The last hope is to get a different ESSAUDIO.INI from someone that has it working. This file contains many more bytes than just FM I/O, MPU I/O, IRQ and DMA but who knows what they are. Maybe the secret solution is in there somewhere.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 16 of 49, by Kamerat

User metadata
Rank Oldbie
Rank
Oldbie
HandOfFate wrote on 2020-07-26, 16:12:
... Credits: […]
Show full quote

...
Credits:

* Kamerat on Vogons for coming up the idea of using PCISET to adjust the card settings (PCI sound cards and Chipsets from various manufacturers...)
...

Thanks!

Out of curiosity I modified the ESSAUDIO.COM in your package exchanging PCI ID for the LPC interface from 8086:2410 to 8086:248c that should match the chipset of your computer. Can you see what mode it initializes to now? If you're lucky the Allegro-1 have it's PC/PCI pins connected to the ICH of the chipset, but I'm not sure if the initializer is able to detect if it is.

Attachments

  • Filename
    ESSAUDIO.zip
    File size
    19.14 KiB
    Downloads
    109 downloads
    File license
    Fair use/fair dealing exception

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

Reply 17 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

Interesting, thanks. I will we able to try it out in a few hours 😀

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 18 of 49, by HandOfFate

User metadata
Rank Member
Rank
Member

It works, Kamarat. The DMA mode is now PCPCI 😀

What are the advantages of this mode over the others? The ESS1988 data sheet/technical manual doesn't really contain any explanations about the different modes.

I've not managed to get sound in DOS yet with it (I updated the PCISET line to keep the DMA mode at PC/PCI) but I'll try some things.

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 19 of 49, by ragefury32

User metadata
Rank Oldbie
Rank
Oldbie
HandOfFate wrote on 2020-07-28, 17:39:

It works, Kamarat. The DMA mode is now PCPCI 😀

What are the advantages of this mode over the others? The ESS1988 data sheet/technical manual doesn't really contain any explanations about the different modes.

I've not managed to get sound in DOS yet with it (I updated the PCISET line to keep the DMA mode at PC/PCI) but I'll try some things.

PC/PCI is a hardware link that connects the ISA DMA requests to the PCI side of the machine so it can be processed. Distributed DMA fires those ISA DMA requests to all of the PCI slots/devices, and TDMA (transparent DMA) handles it using some magic secret sauce that doesn't always work. For PCI based audio boards, PC/PCI is always preferred, then DDMA and then followed by TDMA and other wizardry (DDMA/TDMA/etc requires a compliant requires compatible southbridges).