I found a Creative Sound Blaster 16 WavEffects (CT4170) ISA sound card and installed it in my 80386 in order to play old DOS games with full sound support:
As my BIOS does not support ISA Plug and Play, as is the case for most motherboards of that era, there is a need for a tool to initialize the ISA card upon system startup. For this I recommend the Creative Configuration Manager tool CTCM.EXE, found in the Sound Blaster 16 setup disk, which should detect and initialize your card automatically:
If the motherboard BIOS supports ISA PnP, which is usually the case if it comes with a 486 or Pentium CPU, running CTCM.EXE is not necessary and may actually crash the system due to address conflict. Take note that CTCM.EXE requires at least a 80386; you may need a 80386 emulator or a different PnP utlity to use the card on a 80286 or older system – refer to this post for more details.
Next you may want to run CTCU.EXE to select a suitable configuration (address, IRQ, DMA) for your card:
CTCU.EXE should also set the BLASTER environment variable upon exiting. At this point, most games should auto-detect your card and play sounds normally. If your games does not play any sound and the card is detected as MPU-401, re-run CTCU.EXE and select a different configuration that places the MIDI port at address 300H (not 330H). For example, your BLASTER environment variable should look like:
A220 I7 D1 H0 P300 T6
A220 I7 D1 H6 P330 T3
This is because some games look for a MIDI device at address 330H and if present, will only play music via this device. If this is the case, the music will be passed through the sound card game port, to be connected to dedicated MIDI devices, and not heard on speakers. Setting the address to 300H prevents this and allows music to be played normally through the speakers using FM synthesis. However, if you game has a setup or sndset program, use that to configure the sound card, instead of fiddling with CTCU.EXE or the BLASTER environment variable.
To configure the card permanently for DOS and Windows, run INSTALL.EXE found in the setup disk. This should be done without HIMEM.SYS, EMM386.EXE, SHARE.EXE or any other device drivers loaded, otherwise the setup may fail with error “On script line xxxx we had a problem” and the installer may hang:
The installer may also modify your AUTOEXEC.BAT files to load a bunch of .SYS drivers which are mostly for use with Creative proprietary utlities such as PLAY.EXE and RECORD.EXE. Although they provide an API for DOS games to access the sound card, almost all DOS games access the card directly without going through the drivers to avoid complexity. For this reason, remove the corresponding lines from your CONFIG.SYS to save precious conventional memory since 640k is never enough for anyone!
After the setup, sound in Windows should work properly and you should hear the Windows 3.1 startup/exit tones. On my 80386, Media Player is able to play back MIDI files nicely:
For those who have issues setting up the Windows 3.1 drivers for the sound card, one way is to install the Sound Blaster 1.5 driver that comes with Windows 3.1 using Control Panel > Drivers:
As vintage Sound Blaster designs are for the most part backwards compatible, this should work. Just make sure to select a configuration for your sound card (using CTCU.EXE) that is supported by Windows 3.1 Sound Blaster 1.5 drivers – later Sound Blater cards introduced more configurations (DMA, IRQ, addresses) that are not present in older cards. If the wrong configuration is selected, Windows may fail to start. You will need to edit SYSTEM.INI to remove any references to the Sound Blaster drivers before trying again.
An interesting point to note is that Windows may ask you for a file named ASPMAN.DLL if you install the Windows 3.1 drivers directly using Control Panel, instead of through the setup program. This file cannot be found anywhere on the Internet, and there seems to be very few references to it. This is because originally ASPMAN stood for Audio Signal Processing Manager but was later renamed to CSPMAN (Creative Signal Processing Manager) to avoid confusion with Microsoft Active Server Pages (ASP) technology. Somewhere in the driver setup files for Windows 3.1, there exists an outdated INF file which refers to the old name, causing the issue. To fix this issue, copy CSPMAN.DLL from an existing installation and rename it to ASPMAN.DLL – it will work just fine!
The necessary DOS and Windows 3.1 setup files can be downloaded here.