First post, by gerwin
- Rank
- l33t
I have a compiler environment setup with an old game 'Doom MBF'.
This game uses the Allegro 3 audio drivers and sound system.
There have been complaints about the digital audio part of Allegro for DOS, and I too have some problems with it.
I managed to fix two nags that are happening with a sound blaster pro compatible Crystal CS4232 soundcard:
1) Distorted output when frequency over 16 kHz stereo.
After investigation it seems that Allegro is ordering the card to set a frequency rate that is slightly higher then the max supported frequency of this card's SBPro interface (>43478 Hz). In general allegro's frequencies are at least one step higher then several other well known DOS drivers. Lowering the allegro SB frequencies fixes it. Can even be done by hex editing the executable.
2) Problem using WSS mode after exitting an Allegro 3 sound output mode.
I suspect this issue is DMA related. I finally managed to 'fix' it by programming an odd procedure at closing the Allegro sound system: close DMA as usual, then order the card to the unsupported frequency (45454 Hz), Start a dummy DMA transfer for 0.15 seconds, then close again. Then it still affects the WSS mode, but much less so. At least I know which WSS registers to set to get going again.
So point two is practically mostly fixed, but I would really like to explain what Allegro 3 does to make this necessary, as most other DOS drivers can exit their sound procedures without any noticable leftovers. As to point one, what is the reason to pick slightly higher or lower frequencies and DMA blocks? Every DOS driver has its own values. In the attachment a comparison of several Sound Blaster Pro Drivers as seen through Dosbox Debug.
--> ISA Soundcard Overview // Doom MBF 2.04 // SetMul