The Gravis Ultrasound (GUS) soundcard family was released by Advanced Gravis during the 1990s. The original Ultrasound card was meant as a competitive product for the SoundBlaster cards as it provided sound mixing of 32 voices in hardware and came with up to 1MB of on-board sample RAM. The Ultrasound cards were quickly adopted by the demo scene as the hardware mixing ability used no additional processor power and allowed for playing back tracker modules in high quality.
The Ultrasound card family consists of the following cards:
- Ultrasound "Classic": released in 1991, 256 to 1024kB of RAM, GF1 based
- Ultrasound Max: an extended GUS Classic with an additional CS4231 codec, 1MB RAM, GF1 based
- Ultrasound ACE: addon GUS card without the codec and the SoundBlaster compatible control registers, can be used in combination with any SoundBlaster compatible card, GF1 based
- Ultrasound PnP: released in 1995, complete re-design of the GUS based on the AMD Interwave chip, 8MB RAM (16MB with h/w mod), 16bit/44kHz playback and recording possible, 1MB of sample ROM, GUS compatible when RAM is installed, PnP compatible
- Ultrasound Extreme: last GUS released by Gravis, GF1 based, ESS1688 codec for SoundBlaster comatibility, not PnP compatible, 1MB RAM
Unlike any other Ultrasound card, the GUS PnP is not based on the GF1 but rather on the Interwave chip made by AMD. It is hardware compatible with the original GUS when initialized in GUS mode but differs from it in several aspects. First, it is able to play back 32 voices with the full 44kHz sample rate, where the GUS Classic went down to ~19kHz. Second, the on-board sample RAM can be extended to 8MB using SIMM, although the Interwave chip has an address space of 16MB. It also has a built-in effects processor and comes with 1MB of sample ROM filled with a GeneralMIDI compatible sound set.
As the GUS Classic, the Interwave chip is neither SoundBlaster compatible nor has it an integrated OPL3 FM chip. The card only provides the SB control registers (0x220H, 0x388H, ...), the actual SoundBlaster emulation is done in software. To be fully compatible with the original GUS, some RAM has to be installed.
Installing a GUS PnP can be quite a challenge due to its resource demand (three to four IRQs, three DMA channels, several IO ports). Fortunately these requirements can be lowered to two IO ports, two DMA channels and one IRQ when configured correctly. Prior to installing the card, any other soundcard and probably other extension cards should be removed from the system. They can be re-added when configuration of the GUS PnP is completed.
For a DOS installation, the following files are required:
- PNPV22B.ZIP: the basic driver installation disk for DOS and Windows 3.x
- SETRAM.ZIP: a GUS compatible patch set, needed for GUS MIDI playback in many games
- IWAVECFG.EXE: part of the "GUS PnP XSS InterWave EEPROM Toolz", it will allow for substantially reducing the resource hunger of the GUS PnP
The contents of the installation disk should be extracted to a temporary directory, then the installation procedure can be started with INSTALL.EXE. The driver files will be copied to C:\GRAVIS\ULTRASND, then the configuration utility SETUP.EXE will be called. Unfortunately, this program is quite buggy and may crash. If your computer hangs here, restart DOS and start it by bypassing CONFIG.SYS and AUTOEXEC.BAT. SETUP should run now and you can select and test the resources (IO, IRQ, DMA) the card needs. Do not worry if the GUS requests three IRQs, this can be changed later. If not needed, the CDROM interface and the gameport can be disabled here. When finished successfully the SETUP untility will create the file IW.INI in the installation directory. It contains all configuration options of the GUS PnP and can be edited by hand now. SETUP also modifies AUTOEXEC.BAT and CONFIG.SYS. After first-time installation, SETUP should never be started again as it will probably mess up your configuration. The GUS patch set, SETRAM, has to be installed into a subfolder called MIDI in the installation directory (C:\GRAVIS\ULTRASND\MIDI by default). The following entries will be added to AUTOEXEC.BAT, They can be moved to a separate batch file, which, in turn, can be called from AUTOEXEC.BAT.
@REM ===== Gravis initialization (1.3) ===== @SET INTERWAVE=C:\GRAVIS\ULTRASND\IW.INI @SET IWDIR=C:\GRAVIS\ULTRASND @C:\GRAVIS\ULTRASND\IWINIT.EXE @C:\GRAVIS\ULTRASND\GETIWENV.EXE > C:\GRAVIS\ULTRASND\SETIWENV.BAT @CALL C:\GRAVIS\ULTRASND\SETIWENV.BAT @SET ULTRADIR=C:\GRAVIS\ULTRASND @REM ===== Gravis initialization ends =====
The SETIWENV.BAT contains the ULTRASND and the BLASTER environment variables, it is overwritten on each reboot by GETIWENV. If you would like to modify the ULTRASND variable manually, remove the GETIWENV call above. The format of the ULTRASND variable is:
SET ULTRASND=<io port>,<dma1>,<dma2>,<irq1>,<irq2>
The "DEVICE=C:\GRAVIS\ULTRASND\IWINIT.EXE..." entry in your CONFIG.SYS is not strictly necessary for correct function of the card and can be removed. Now the computer should be rebooted, if all went correctly the Interwave driver will find and initialize the GUS. You should test the card with the PLAY.EXE tool and a wave/MIDI file before continuing. If you plan to use an additional soundcard for SoundBlaster compatibility (which is highly recommended!) the SB and MPU emulation of the GUS has to be disabled. Start the IWAVECFG tool, you will see the PnP resources the card currently uses. Disabled devices will show "---", the IDE device and the gameport should be disabled already. You should deactivate the MPU emulation (I/O to "---") , the SB emulation (FM I/O to "---") and the second GUS IRQ if it is not already switched off. Your GUS PnP will now only use two I/O ports 0x220, 0x32c (for the CoDec, not shown), one IRQ and two DMA channels (preferably 6 and 7). You might want to change the I/O to 0x240 as most SoundBlaster cards like to have the 0x220 address for themselves. Save the changes and exit. Now open the IW.INI file with an editor and change the resource values in the "[setup 0]" section to match the PnP configuration in IWAVECFG. An example for I/O 0x240, IRQ 7 and DMA 6,7 is shown below:
[setup 0] SynthBase=240 CodecBase=34c CDBase=0 ATAPIBase=0 MpuBase=0 AdlibBase=0 GamePort=0 IRQ1=7 IRQ2=0 CDIRQ=0 MPUIRQ=0 SBIRQ=0 DMA1=6 DMA2=7
Disabled resources are set to 0. Leave the other values in IW.INI untouched and save the changes. You can now reinstall other soundcards and configure them for SoundBlaster compatibility. The GUS PnP should not interfere with the configuration now.
DOS games and the GUS PnP
A lot of DOS games support the original GUS directly. The GUS PnP is mostly GUS compatible when DRAM is installed and the original GUS patches are present in C:\GRAVIS\ULTRASND\MIDI. However, some games will not detect the GUS PnP or crash, Epic games (Jazz Jackrabbit or One Must Fall) are some examples. Gravis has provided a multi-purpose patch utility called PREPGAME.EXE to deal with those incompatibilities, it will scan the current directory for supported games and update them to work with the GUS PnP. Simply change into the game directory and execute PREPGAME. Most games also look for the ULTRASND environment variable as defined in SETIWENV.BAT. If a game does not support the GUS and you do not have a second SB compatible card, one of two SoundBlaster emulation programs can be used (GUS SB emulation has to be enabled in PnP configuration):
- IWSBOS: provides SoundBlaster, Adlib and GeneralMIDI compatibility, does not require EMM386 but has problems with some protected-mode games (DOS4/GW and friends).
- MegaEM: provides SoundBlaster, Adlib, GeneralMIDI and basic MT32 (only MT32 instrument mapping) compatibility, requires EMM386 or similar memory manager, should work better with protected-mode games
Both emulators support only SoundBlaster 2.0 (i.e. not SBPro) and have severe compatibility issues, Adlib sound playback quality is appalling. MegaEM, in addition, is very picky about the EMM386 version. Games using the Miles Audio Interface Library 3 (AIL) can use the Interwave chip directly with appropriate drivers (IWAV.DIG, IWAV.MDI). Some LucasArts games using iMuse can also be patched for Interwave support. To put the GUS PnP into Interwave compatible mode, IWSBOS has to be loaded.