Sound on MS-DOS games [Retro-PC series]
Wishing you could run all the ever released DOS games on a single non-emulated Retro-PC, you will have to keep wishing. Along with the speed issues, one of the hardest one you will need to tackle is getting the sound out of your games.
The only reliable way to hear sounds on MS-DOS games is to own an old PC (something like 486 or older) and a Sound Blaster compatible sound card installed on ISA-bus (some modern motherboard with ISA-slots are very unlikely to work, sorry). The sound issue is particularly the case for digitized sound effect and game speech, whereas hearing sweet midi melodies is a bit easier. If your PC only has PCI slots, and (making the situation even worse) it is a recently released PC, your best option to enjoy sounds is DOSBox or an other emulator (such as ScummVM). If you are running Windows 98/ME/NT/2000/XP, you may also try emulating the sounds only using VDMSound and leave the game execution to Windows (with “less emulation” than DOSBox would do).
But if you insist, something can be done for a higher success rate of MS-DOS sounds, and in fact, with luck and some hardware combinations, many games will play the sounds in all the glory.
What is the issue with a modern PC and getting the sounds out? The subject is rather complex, and I do not know all the answers. The sound issues are widely discussed at Vogons forums. My limited understanding of the subject is:
- The early sound cards used ISA DMA to “play” sound effects without eating up much CPU resources the game needs for other tasks.
- “PCI DMA” on PCI bus is not anything like “ISA DMA” and cannot be directly used with PCI sound cards.
- To provide “legacy sound card support”, PCI sound cards had to overcome the issue either with hardware tweaks or software emulation.
- SB-Link was the “hardware solution” supported by some motherboards of the time, but not found on any modern motherboard.
- The software emulation solutions always needed a special driver (loaded in CONFIG.SYS and/or AUTOEXEC.BAT) and reserved a DMA channel and IRQ just like a real ISA sound card would do.
- The software emulation never was (even when introduced the late 1990s) 100% reliable solution – some games worked out of the box and some needed to be patched to hear sounds.
- Manufacturers of PCI sound cards used different techniques to achieve “SoundBlaster compatibility”, and these techniques always needed some “DMA help” from the motherboard.
- These “help technologies”, basically PC-PCI, DDMA, and TDMA, are not supported by all the motherboards, and some motherboards of today might not be able to play sound with any sound card on MS-DOS.
- Having a fast modern machine makes the sound emulation even more unreliable than running it e.g. on 486 or an early Pentium model.
A useful and more detailed discussion is found at this Vogons thread and this weird Taiwanese page gives an overview of the terms (mentioned in the bullet above) and for instance how Intel chipset lines used to support these technologies.
My Retro-PC has Intel ICH5 (South Bridge), and it supports PC-PCI. I have tested various sound cards on it:
- Sound Blaster Live!
- nothing seems to work, and requiring large chunk of EMS-memory would make the usage even worse (even if it did play sounds)
- ESS Maestro-2 (ES1968)
- works with some games I have
- Aureal Vortex 2 will not function if installed (at the same time) to an another PCI slot
- ESS Solo-1 (ES1938)
- works with some games I have
- better FM sounds than Maestro because of real FM synthesizer
- very tiny memory print on the sound driver
- Aureal Vortex 2 will function just fine if installed to an another PCI slot
- Aureal Vortex 2
- works with some games I have
- small memory print on the driver (but bigger than ESS Solo-1)
Aureal Vortex 2 also played digitized sounds on a bit newer motherboard of mine (ICH6 = no more PC-PCI). According to some sources, Aureal sound cards might be the only way to get (partially) working FX sounds on a modern PC running MS-DOS. Interestingly, on my PC ESS Solo-1 was able to play sound effects in some games that Aureal Vortex could not. Here’s the summary of how these two cards functioned with some games.
- Alone in the Dark
- Aureal Vortex 2: Game does not start
- ESS Solo-1: Both sound effects and FM music play
- Epic Pinball
- Aureal Vortex 2: Digitized music and effects play
- ESS Solo-1: Nothing hears, but game functions
- Little Big Adventure
- Aureal Vortex 2: only FM music plays (game won’t start if sound effects enabled)
- ESS Solo-1: digitized sound and FM music plays, but game hangs if speech files are enabled
- Sam and Max Hit the Road
- Aureal Vortex 2: FM music plays and sound effects seem to work, but the game will hang playing them soon/instantly.
- ESS Solo-1: FM music plays and sound effects play without issues.
- Space Quest 4
- Aureal Vortex 2: FM music plays and sound effects/speech seem to work, but the game will hang playing them later.
- ESS Solo-1: FM music plays and sound effects/speech seem to work, but the game will hang playing them later.
- Duke Nukem 3D
- Aureal Vortex 2: digitized music and effects play
- ESS Solo-1: game won’t start if sound effect enables (FM music plays)
- Quake
- Aureal Vortex 2: digitized music and effects play
- ESS Solo-1: nothing hears, but game functions
As you can see the symptoms vary considerably, and I clearly cannot get some games behaving at all, and some games work only with one of the cards. Luckily, if the cards do not “conflict” you can install multiple PCI sound cards to one PC. So I have both Aureal Vortex 2 and ESS Solo-1 on board, and I can choose which one to use on operating system boot up. To route the sounds to speakers without touching the cables or adjusting a multi-input amplifier, you could use a simple passive audio mixer. It will attenuate the sound level a tiny bit, but you never have to think why you do not hear a sound. A mixer should be easy to DIY but I bought mine assembled from this guy.
I did not talk about Roland MT-32, but perhaps I will some other day.