Skip to content
Robert edited this page Oct 17, 2023 · 11 revisions
Table of index (click to expand)

Introduction

DOSBox Staging supports a wide range of sound cards that could be found in PCs of the era. DOSBox Staging defaults to the Sound Blaster 16, which is (mostly) backward compatible with earlier Sound Blaster models, as well as the popular AdLib sound card.

Note: DOSBox Staging only supports sound output. Any sound input capabilities (Mic, Line-In) these sound cards have, are not supported.

Definitions

What is an IRQ?

An IRQ is a hardware-generated interrupt request. These are generated by devices on the motherboard and external devices on the ISA/EISA/VESA/PCI/etc. bus to let software know that something happened. In the case of a modem, an IRQ would be raised if a new byte is ready to enter the computer. In the case of a sound card, an IRQ would be raised to tell the computer to dump more sound samples into it's DMA buffer. Most devices and drivers do not take well to IRQs being shared with other devices. If two devices have the same IRQ, (like a sound card and a modem card) one driver will receive messages relating to some other device's status. A mouse's IRQ would send a sound card's handlers into serious disarray every time the mouse is touched if they both report the same IRQ. This, too, is called a 'conflict'. It can be harmless if no handlers are installed, or the sound card is inactive. It is usually only fatal if both devices are used at the same time. One common IRQ conflict is IRQ7. This is the default IRQ for many sound cards and just happens to be the one used by the printer (LPT1) as well. Generally, turning the printer off and rebooting clears IRQ7 for the sound card's use.

Here's a list of IRQs and what uses them. Note that network cards and other special purpose cards generally take an IRQ and certain software emulations will grab IRQs as well. This list is by no means all-inclusive.

Click to expand
IRQ0 - Timer                       Raised 18.2 times a second.
IRQ1 - Keyboard                    Each time a key is hit
IRQ2 - LPT2                        Printer LPT2 SEND/RECV/ERROR
IRQ3 - COM2                        Serial port/modem/mouse send/recv
IRQ4 - COM1                        Serial port/modem/mouse send/recv
IRQ5 - Fixed disk                  Certain systems use it...
IRQ6 - Floppy controller           Data / DMA ready
IRQ7 - LPT1                        Printer LPT1 SEND/RECV/ERROR

// Computers after the IBM PC-AT include these IRQs
IRQ8 - CMOS real time alarm        Happens if alarm set
IRQ9 - (Redirected to 0A by BIOS)  (Complicated kludge)
IRQ10- Reserved/Not in use
IRQ11- Reserved/Not in use
IRQ12- Pointing device             Another type of mouse...
IRQ13- Math coprocessor exception  Floating point error divide/0
IRQ14- Hard disk controller        A lot of systems use it...
IRQ15- Reserved/Not in use

What is a DMA?

DMA stands for 'Direct Memory Access', and a DMA channel in a PC is a single device that allows an interface card to continuously read or write data to/from system RAM without bothering the CPU. A sound card uses a DMA buffer to quietly read samples from system RAM as it needs them, rather than ask software to cram another sample into its digital-to-analog converter (DAC), register manually at a rate of 11025 times or more every second. If a sound card DMA channel is mixed up with, say, a hard drive's controller's DMA channel, many bad things, from a system lock-up to actual corruption of the hard disk's data (extremely, extremely rare) may result. Most DMA conflicts are between less important devices, but mix-ups in this area generally do cause system-wide chaos as different devices do bad things to each other's DMA buffers, at best. This is called a conflict.

What is an I/O ADDRESS?

An I/O address is an address used by the CPU to communicate with external devices. The I/O addresses are physically separate from memory addresses in 80x86 and Pentium CPUs. There are only 65536 I/O addresses, and every device in your PC (built-in and on separate boards) uses at least one. Some, like the VGA card, use ranges of hundreds of addresses. Many devices have two addresses; one address to select what is addressable in the other. An I/O address is typically used to set attributes of or send data to devices, or read information from devices. A typical interaction for this service would be to read a palette register from the VGA card, or put another byte on a modem's output register, or set a sound card's sample rate.

If addresses to a sound card, and a serial card are mis-matched, the software will end up reading from or sending commands to the wrong device. Suddenly, register information that should have set the volume on your sound card tells your serial mouse's UART that it's OK to stop sending characters to the mouse driver (mouse stops moving). This is also a conflict. Often, commands sent this way will interact in less forgiving ways than stopping the mouse.

[Top]


Ad Lib

AdLib Music Synthesizer Card

Released in 1987, and based on the Yamaha OPL2 chip, providing 9 channels mono FM sound. Often referred to simply as 'AdLib'. It was the first successful PC sound card, and is supported by many games of the era. Part of it's success was that it is a simple design that was easy to clone, as demonstrated by the Creative Labs Sound Blaster cards which quickly took over the market.

Note: Some games require the AdLib SOUND.COM TSR to be loaded. See the Sound Driver pack for details.

Note: Some games may fail to detect the AdLib soundcard, if the CPU cycles are set too high.

AdLib Gold 1000

Released in late 1992, based on the Yamaha OPL3 chip, providing 9 channels of stereo FM sound, in addition to a 12bit DAC up-to 44kHz. It only provides backward compatibility with the original AdLib card, not with the popular Sound Blasters.

While an excellent card at the time, it was beaten by the popular Sound Blaster cards and their clones. Ad Lib filed for bankruptcy shortly after.

AdLib configuration

DOSBox Staging does not provide true AdLib modes at this time, but as the original AdLib Music Synthesizer Card is very simple, it can be emulated using the following config settings:

[sblaster]
sbtype = none
oplmode = opl2

The OPL part of the AdLib Gold 1000 is fully emulated, including the surround add-on module. There is no support for the DAC currently, which is not a problem as the only game that uses AdLib Gold is Dune, which doesn't use the DAC (it needs a Sound Blaster for digitised sounds).

[sblaster]
sbtype = none
oplmode = opl3gold

References

[Top]


Creative Labs

Game Blaster

Released in August 1987 as the Creative Music System or C/MS, and subsequently re-branded as the Game Blaster. It features dual Philips SAA-1099 sound chips allowing for 6-channels, plus one noise channel of FM stereo sound.

Fewer than 100 games support this card.

This card can be emulated via the following setting:

[sblaster]
sbtype = gb

Sound Blaster 1.x

Released in late 1989 as the Sound Blaster, it features full backward compatibility with both the AdLib Music Synthesizer Card and the Game Blaster. In addition, it adds an 8bit DAC up-to 22kHz for sound effect and speech samples.

A year later, a cost-reduced Sound Blaster 1.5 was released, which made the Game Blaster compatibility optional (the customer could purchase an upgrade kit to restore the functionality). This card became very popular and is therefore supported by many DOS games of the era.

This card can be emulated via the following setting (including Game Blaster emulation):

[sblaster]
sbtype = sb1

Sound Blaster 2.0

Released in October 1991, it upgrades the DAC to support up-to 44kHz samples, and adds software mixer support, but otherwise is functionally the same as the earlier Sound Blaster 1.5 card.

Note: This was the last Sound Blaster card to provide backward compatibility with the Game Blaster.

This card can be emulated via the following setting (including Game Blaster emulation):

[sblaster]
sbtype = sb2

Sound Blaster Pro

Released in May 1991 as the Sound Blaster Pro (aka Sound Blaster Pro 1.0). This card is backward compatible with the earlier Sound Blaster 1.5 cards. It features an upgraded DAC, supporting up-to 44kHz samples (as on the Sound Blaster 2.0), and software mixer support.

One of its main feature though is that it provided dual Yamaha OPL2 chips for Stereo FM sound. Some games known to support it:

This is also the only card supported by the known OEM releases of Microsoft Windows 3.0a with Multimedia Extensions.

This card can be emulated via the following setting:

[sblaster]
sbtype = sbpro1

Sound Blaster Pro 2

Released in late 1991. It is functionally the same as the earlier Sound Blaster Pro with one key difference. Instead of dual Yamaha OPL2 chips for stereo FM sound, it uses a single Yamaha OPL3 chip for equivalent functionality.

Note: Software written for the dual OPL chips of the Sound Blaster Pro 1 will not sound properly on a Sound Blaster Pro 2 (or vice-versa). As such it is important that the right Sound Blaster Pro card is emulated for the game.

This card can be emulated via the following setting:

[sblaster]
sbtype = sbpro2

Sound Blaster 16

Release in June 1992. Backward compatible with the Sound Blaster Pro 2. It upgrades the DAC from 8bit to 16bit, allowing for true CD quality samples.

This is the default sound card emulated by DOSBox Staging.

Note: There are variations of the Sound Blaster 16 with an ASP (Advanced Signal Processor), later renamed to CSP (Creative Signal Processor). Only a subset of the ASP functionality is implemented in DOSBox Staging. In general, you should not expect programs using the ASP to work properly. The only known game to support it is TFX, but even then it is supposedly limited to the original 1.0 floppy release of the game, and no longer works once you install any game patches.

Sound Blaster Configuration

DOSBox Staging defaults to the following settings, regardless of Sound Blaster card emulated:

  • I/O Base = 220
  • IRQ = 7
  • DMA = 1
  • High DMA = 5 (SB16 only)

This is important, as some games will ask for one or more of these settings during installation or startup, and providing the wrong values can result in no-sound, hanging sounds or crashes. In particular, early Sound Blaster cards defaulted to IRQ7, while starting with the SB Pro the default changed to IRQ5. This may cause some games to pre-select IRQ5 when you select a SB Pro or SB16, while DOSBox defaults to IRQ7 instead for all emulated Sound Blaster models.

Some games also require a driver or library to be present. See the Sound Driver pack for more details.

DOSBox Staging allows you to set the mixer levels before starting a game using the mixer command. However, starting with the Sound Blaster Pro 1 and Sound Blaster 2.0 cards, a software controlled mixer was added. Meaning that games can alter the various levels themselves. In some cases that may not produce the desired effect (e.g. voice samples too low compared to background music). If you want to disable the ability of games to modify the mixer, set sbmixer = false in the config file.

Click to expand
[sblaster]
#              sbtype: Type of Sound Blaster to emulate. 'gb' is Game Blaster.
#                      Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none.
#              sbbase: The IO address of the Sound Blaster.
#                      Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300.
#                 irq: The IRQ number of the Sound Blaster.
#                      Possible values: 7, 5, 3, 9, 10, 11, 12.
#                 dma: The DMA number of the Sound Blaster.
#                      Possible values: 1, 5, 0, 3, 6, 7.
#                hdma: The High DMA number of the Sound Blaster.
#                      Possible values: 1, 5, 0, 3, 6, 7.
#             sbmixer: Allow the Sound Blaster mixer to modify the DOSBox mixer.
#            sbwarmup: Silence initial DMA audio after card power-on, in milliseconds.
#                      This mitigates pops heard when starting many SB-based games.
#                      Reduce this if you notice intial playback is missing audio.
#             oplmode: Type of OPL emulation. On 'auto' the mode is determined by 'sbtype'.
#                      All OPL modes are AdLib-compatible, except for 'cms'.
#                      Possible values: auto, cms, opl2, dualopl2, opl3, opl3gold, none.
#           sb_filter: Type of filter to emulate for the Sound Blaster digital sound output:
#                        auto:      Use the appropriate filter determined by 'sbtype'.
#                        sb1, sb2, sbpro1, sbpro2, sb16:
#                                   Use the filter of this Sound Blaster model.
#                        modern:    Use linear interpolation upsampling that acts as a low-pass
#                                   filter; this is the legacy DOSBox behaviour (default).
#                        off:       Don't filter the output.
#                        <custom>:  One or two custom filters in the following format:
#                                     TYPE ORDER FREQ
#                                   Where TYPE can be 'hpf' (high-pass) or 'lpf' (low-pass),
#                                   ORDER is the order of the filter from 1 to 16
#                                   (1st order = 6dB/oct slope, 2nd order = 12dB/oct, etc.),
#                                   and FREQ is the cutoff frequency in Hz. Examples:
#                                      lpf 2 12000
#                                      hpf 3 120 lfp 1 6500
# sb_filter_always_on: Force the Sound Blaster filter to be always on
#                      (disallow programs from turning the filter off).
#          opl_filter: Type of filter to emulate for the Sound Blaster OPL output:
#                        auto:      Use the appropriate filter determined by 'sbtype' (default).
#                        sb1, sb2, sbpro1, sbpro2, sb16:
#                                   Use the filter of this Sound Blaster model.
#                        off:       Don't filter the output.
#                        <custom>:  Custom filter definition; see 'sb_filter' for details.
#          cms_filter: Filter for the Sound Blaster CMS output:
#                        on:        Filter the output (default).
#                        off:       Don't filter the output.
#                        <custom>:  Custom filter definition; see 'sb_filter' for details.

sbtype              = sb16
sbbase              = 220
irq                 = 7
dma                 = 1
hdma                = 5
sbmixer             = true
sbwarmup            = 100
oplmode             = auto
sb_filter           = modern
sb_filter_always_on = false
opl_filter          = auto
cms_filter          = on

References

[Top]


Gravis UltraSound

The Gravis UltraSound (GUS) was notable at the time of its 1992 launch by providing sample-based music playback (marketed as "wavetable") using real-world sound recordings rather than artificial computer-generated waveforms, or "FM" synthesis, as the basis of a musical instrument. Samples of pianos or trumpets, for example, sound more like their real respective instruments. -- Wikipedia.

Up to 32 of these independent voices could be managed and mixed simultaneously in hardware, unlike the competing Sound Blaster cards that provided two (left and right) PCM playback streams, which had to be generated in software.

Benefits

  • Quality: the handful of games that took advantage of the GUS's hardware mixing capability were rewarded with greater dynamic range due to the GUS's sample interpolation or "Interwave" as they called it.

    One Must Fall 2097 and Star Control 2 are two great examples where this quality difference is immediately apparent, with the games' 8-bit samples sounding much dirtier (or "fuzzy") when played via Sound Blaster versus Gravis UltraSound.

  • Noise floor: The GUS classic has a -85 dB noise floor; significantly lower than the competing Sound Blaster and SBPro cards that produced noticeable hiss at high volumes.

  • Lower CPU usage: The GUS was capable of mixing in hardware up to 32 independent voice streams at relatively high playback rates (~19 KHz at 32 voices and up to 44.1KHz at 14 voices), which was impossible for typical consumer 386 and 486 CPUs at the time. With the GUS offloading all of the playback effort, game (and demo) developers had almost the entire CPU available for other uses.

    The distinction here is that DOSBox Staging's GUS "hardware" emulation and mixing is performed in native-compiled code, which also consumes significantly fewer CPU cycles versus having the original DOS emulated software perform that work inside DOSBox Staging's emulated x86 code. For example, the MOD player "Impulse Tracker" performs its voice mixing entirely in software and simply outputs a stereo stream (and requires 10-fold the CPU cycles to do so) versus the "CapaMOD" player that offloads all the voice handling to the GUS hardware.

Types of Supported Game Audio

Despite its technical superiority, the GUS struggled to gain equivalent wide-spread adoption like the Sound Blaster achieved. To bolster consumer confidence they tried to be compatible with as many game audio engines as possible:

  • Gravis SBOS: a Sound Blaster software emulator and FM translation layer; roughly 65 Sound Blaster-only games worked with it. DOSBox Staging users can entirely ignore this category, because DOSBox Staging offers excellent native Sound Blaster emulation.

  • Gravis UltraMID and MegaEM: a Roland / SC55 / and MIDI translation layer that populated the GUS with wavetable samples that sounded similar to either Roland's or the General MIDI set, respectively. Roughly 100 games worked with UltraMID and 144 games worked with MegaEM.

    DOSBox Staging users can also safely ignore this category because superior and flawless Roland MT-32 emulation is available via mt32emu. Also General MIDI players such as FluidSynth or Timidity are available that offer true MIDI playback with far higher quality samples.

    There exists only a small number of games where the GUS MIDI banks offer comparable quality; see below.

  • Native Support: Roughly 40 games were developed that leveraged the GUS's multi-voice hardware mixing capabilities; also known as "tracker music". These are of the most interest to DOSBox Staging users, as their music is typically unique in sound composition (being sample-based) and superior in quality versus that offered by their Sound Blaster and/or MIDI equivalents. Check the list of supported CDDA / GUS / MIDI games.

Follow that link to have a look at the list of Gravis UltraSound supported games.

Configuration

DOSBox Staging defaults to the following settings to setup the Gravis UltraSound:

    I/O Base = 240
    IRQ = 5
    DMA = 3
    ultradir = C:\ULTRASND

The following two sections describe how to configure DOSBox Staging for GUS-Native games and for those games that use the UltraMID midi files and/or UltraMID.exe Terminate and Stay Resident program (TSR).

Setting up MEGAEM and SBOS is not covered; please use DOSBox Staging's Sound Blaster and MIDI output for these games.

GUS-Native Games

Those games support the Gravis UltraSound natively and simply need to be configured to use it. Such games do not use the ultradir = /some/path environment variable nor do they need the ultramid.exe Terminate and Stay Resident (TSR) program or any midi sound bank directory.

A list of GUS-Native games is available on the CDDA / GUS / MIDI games section of the Wiki.

Note: you might wonder why the famously touted Crusader No Remorse & Crusader No Regret games are not in the list. Similar to Quake, these games perform their music and effects mixing entirely in software, which is output to the Gravis UltraSound as a single 16-bit voice stream. Despite technically supporting the Gravis's hardware interface, they simply don't leverage any of its multi-voice capabilities - and because of that, they're not part of the CDDA / GUS / MIDI games list nor do they provide any appreciable difference versus using the Sound Blaster 16.

GUS-Native games should have all other sound devices disabled, DOSBox Staging's master mixer rate set to 44.1 KHz, and a fixed cycle count (typically) between 6000 and 20000:

Click to expand
[cpu]
cycles = 20000

[mixer]
rate = 44100

[midi]
mpu401     = none
mididevice = none 

[sblaster]
sbtype  = none
oplmode = none

[gus]
gus = true

[speaker]
pcspeaker = false
tandy     = off
disney    = false

UltraMID Games

The vast majority of games supporting UltraMID had their musical scores composed against a real MIDI player. So when these games' drivers map their MIDI instruments down to the GUS set, the resulting music sounds like a poor imitation of the real thing (ie: MIDI with a high-quality Soundfont).

We've only listed the following games where their music tracks sounds equivalent or acceptable in their own right vesus real General MIDI or MT-32 output. If you are aware of more, please raise an issue or edit this page.

  • Hocus Pocus
  • Rise of the Triad
  • Turrican 2

UltraMID games are similar to native games in their configuration, however additionally rely on:

  • the ultradir environment variable pointing to the ULTRASND directory,
  • the midi sound bank directory being present within the ULTRASND directory, and
  • the (optional) presence of the ultramid.exe TSR, which should be loaded prior to starting games that rely on it.

Procedure

  1. Start with the GUS-Native configuration setup described above.

  2. Download and extract ultrasnd.zip along-side your games or even inside a specific game's directory.

    The resulting ULTRASND directory needs be available inside of a dosbox-mounted drive.

  3. Add the ultradir setting pointing to the mounted path of the ULTRASND directory, in your conf's [gus] section:

    [gus]
    gus      = true
    ultradir = c:\ultrasnd
  4. Confirm your ultradir is setup properly, start DOSBox Staging and:

    • Type c:
    • Type cd ultrasnd
    • Type dir, and confirm this directory contains the ultramid.exe TSR and midi the sound bank directory.

    Note: it's fine moving the ULTRASND directory to another location like to the U: drive. Just be sure to "mount" it whenever you launch the game and update the ultradir path accordingly.

  5. All that's left is to configure the game with GUS as the main sound card for music and/or digital effects. You can do that usually via setup.exe, setsound.exe, or install.exe located in your game's directory.

Check the config files section for examples.

Most people will only ever need the above steps to enjoy all native Gravis UltraSound games. Advanced users who like to tinker can check out this package which contains all the original GUS installation files plus the improved Pro Patches Lite instrument set (setup instructions included).

HMI setup detection issue

Refer to the HMI setup with GUS section for a solution should your GUS card not being detected properly by the HMI middleware.

References

[Top]


IBM

IBM Music Feature Card

The IBM Music Feature Card (simply referred to as the IBM PC 'Music Feature' by IBM) and sometimes abbreviated as the IBM MFC, or just IMFC: is a professional-level sound card for the PC, and used the 8-bit ISA bus. The card made use of the Yamaha YM2164 chip which produces sound and music via FM synthesis. It was introduced in 1987 by IBM, and originally oriented towards composers and musicians.

IBM Music Feature Card Configuration

The card can be emulated via the following setting.

[imfc]
imfc        = true
imfc_base   = 2a20
imfc_irq    = 3
imfc_filter = on

References

[Top]


IBM PCjr

Released in March 1984 as a home computer, the IBM PCjr features a TI SN76496 sound chip with 3 channels, plus one noise channel of mono FM sound.

The PCjr was only on the market for roughly a year, before it was discontinued due to poor sales.

IBM PCjr Configuration

The PCjr can be emulated via the following setting. Note: This will simultaneously enable PCjr video emulation.

[dosbox]
machine = pcjr

References

[Top]


IBM PS/1 Audio Card

The PS/1 Audio Card was released in 1990 by IBM exclusively for the IBM PS/1 line of computers.

The card provided 3-voice FM sound along with a noise channel and an 8-bit DAC for digital samples. The FM sound quality of the card was very similar to that of the IBM PCjr and Tandy 1000 computers. -- [pixelatedarcade]

The card's Programmable Sound Generator (PSG) is identical to the Texas Instruments SN76496 used in the IBM PCjr, but with a different input clock rate. For an in-depth comparison of the different incarnations of this chip and how it was used in various machines, see Nerdy Pleasure's thorough write-up.

Support for the PS/1 Audio device in DOSBox was authored by jmk in 2008, and the patch has been carried forward into several forks including DOSBox Daum and DOSBox-X.

PS/1 Supported Games

Games known to have decent PS/1 Audio music and DAC sound effects include:

  • BattleTech: The Crescent Hawks’ Revenge
  • Castle of Dr. Brain
  • Conquests of the Longbow: The Legend of Robin Rood
  • The Dagger of Amon Ra
  • Freddy Pharkas: Frontier Pharmacist
  • Galleons of Glory: The Secret Voyage of Magellan
  • Hoyle Classic Card Games
  • King’s Quest V and VI
  • Leather Goddesses of Phobos! 2
  • Leisure Suit Larry 1 (1991), 5, and 6
  • Lost Secret of the Rainforest
  • The Manhole: New and Enhanced
  • Mixed Up Fairy Tales
  • Pepper’s Adventures in Time
  • Police Quest 3 and In Pursuit of the Death Angel
  • Prince of Persia 1 and 2
  • Quest for Glory I (1992) and 2
  • Roberta Williams’ Mixed-Up Mother Goose
  • Shanghai II: Dragon’s Eye
  • Silpheed version 3.2
  • Space Quest I (1991) and IV
  • The Treehouse

Note that many games claim PS/1 support although not including extensive music scores and effects:

If you come across more games that have music and effects, please add them to the list.

PS/1 Configuration

By default, the PS/1 Audio card is disabled. Turn it on using the following:

[speaker]
ps1audio = on

[Top]


Innovation SSI 2001

The SSI-2001 audio card was released in 1989 by the Innovation Computer Corporation. It brought Commodore's programmable sound generator chip, the Sound Interface Device (SID), to the PC.

By this time, the SID chip had already helped initiate the demo scene and had made the Commodore 64 the best-selling home computer in history.

The SID was devised by engineer Robert "Bob" Yannes who was inspired by previous work in the synthesizer industry, but was not impressed by the current state of computer sound chips. "I thought the sound chips on the market, including those in the Atari computers, were primitive and obviously had been designed by people who knew nothing about music." — [Robert Yannes, On the Edge: The Spectacular Rise and Fall of Commodore]

Unfortunately the SSI-2001 never caught on and was only supported by a handful of games. The lack of support led to a lack of production, and many of the cards that did get produced were later cannibalized for their SID chips, meaning that only a couple of working cards are known to exist today. [Reference]

Reproductions

Today, several SSI-2001 cards have been reproduced, such as this circa-2019 reproduction card by Fagear shared on the Vogons.org forums:

Implementation

Emulation of the SID chip exists under the reSID and derived projects. Support for Innovation's SSI-2001 card in DOSBox was authored by Vasyl in 2006, and the patch has been carried forward into several forks including DOSBox Daum and DOSBox-X.

Innovation SSI 2001 Supported Games

Games that support the Innovation SSI-2001:

  • Airball
  • Bad Blood
  • Battle Chess II
  • BattleTech: The Crescent Hawks’ Revenge
  • F-19 Stealth Fighter
  • Falcon A.T.
  • Harpoon
  • Joe Montana Football
  • Lord of the Rings Volume 1
  • Red Storm Rising
  • Super Jeopardy
  • Ultima VI
  • Windwalker

Innovation SSI 2001 Configuration

Reproduction cards are the most likely (if not only) way to experience the SSI-2001 today on a hardware platform. To produce a similar experience, Staging provides similar settings that these cards offer, namely: selecting the model of SID chip to use, its clock rate, and filtering strength.

You can enable and configure support in Staging using the following section:

Click to expand
[innovation]
#   sidmodel: Model of chip to emulate in the Innovation SSI-2001 card:
#              - auto:  Selects the 6581 chip.
#              - 6581:  The original chip, known for its bassy and rich character.
#              - 8580:  A later revision that more closely matched the SID specification.
#                       It fixed the 6581's DC bias and is less prone to distortion.
#                       The 8580 is an option on reproduction cards, like the DuoSID.
#              - none:  Disables the card.
#             Possible values: auto, 6581, 8580, none.
#   sidclock: The SID chip's clock frequency, which is jumperable on reproduction cards.
#              - default: uses 0.895 MHz, per the original SSI-2001 card.
#              - c64ntsc: uses 1.023 MHz, per NTSC Commodore PCs and the DuoSID.
#              - c64pal:  uses 0.985 MHz, per PAL Commodore PCs and the DuoSID.
#              - hardsid: uses 1.000 MHz, available on the DuoSID.
#             Possible values: default, c64ntsc, c64pal, hardsid.
#    sidport: The IO port address of the Innovation SSI-2001.
#             Possible values: 240, 260, 280, 2a0, 2c0.
# 6581filter: The SID's analog filtering meant that each chip was physically unique.
#             Adjusts the 6581's filtering strength as a percent from 0 to 100.
# 8580filter: Adjusts the 8580's filtering strength as a percent from 0 to 100.

sidmodel   = auto
sidclock   = default
sidport    = 280
6581filter = 50
8580filter = 50

The above settings will produce the following in Ultima VI: 🔈 click-to-play

References

[Top]


Parallel-Port DAC

This is an adaptor which can be attached to the parallel printer port (aka LPT port) of a PC. Various adaptors were made, including clones. They were comparatively cheap and did not require the user to open the PC to install a sound card.

They only feature a DAC for playing (mostly short) sound samples and speech, and were as such not suited for background music in games.

Covox Speech Thing

This parallel port dongle was released in 1987. It features a 8-bit mono DAC. Although it could in theory approach CD quality sound, the sampling rate was limited by a combination of the parallel-port speed and the speed of the CPU. There is no DMA support or buffering, so high sampling rates will require a high-speed CPU, and use a lot of CPU cycles which can not be used by the game for other purposes.

Various clones were produced, and magazines even featured schematics such that people could make their own. One clone that you may find mentioned in the configuration options of games produced by French developer Coktel Vision, is the Intersound MDO.

NOTE: Covox later released the "Covox Sound Master". This is an ISA card, and not compatible with the Covox Speech Thing.

Disney Sound Source

Released in 1990, this is mostly a clone of the Covox Speech Thing. Unlike the Covox, it is however limited to 7kHz. But it does add a 16-byte FIFO buffer, making it less timing and CPU sensitive. Games developed for the Covox Speech Thing typically work on a Disney Sound Source, but not the other way around.

Stereo-on-1 DAC

This is a more modern Covox clone, but with stereo support. It is supported by ModPlay v2, an Amiga MOD file player.

Parallel-Port DAC Configuration

By default, the Parallel-Port DAC emulation is disabled. Set it to the desired type using the lpt_dac setting. The DAC will be connected to a virtual LPT1 port provided by DOSBox Staging.

[speaker]
#             lpt_dac: Type of DAC plugged into the parallel port:
#                        disney:    Disney Sound Source.
#                        covox:     Covox Speech Thing.
#                        ston1:     Stereo-on-1 DAC, in stereo up to 30 kHz.
#                        none/off:  Don't use a parallel port DAC (default).
#                      Possible values: none, disney, covox, ston1, off.
#      lpt_dac_filter: Filter for the LPT DAC audio device(s):
#                        on:        Filter the output (default).
#                        off:       Don't filter the output.
#                        <custom>:  Custom filter definition; see 'sb_filter' for details.
lpt_dac             = none
lpt_dac_filter      = on

References

[Top]


PC Speaker

While not actually a sound card, the PC Speaker is the integrated mono speaker starting with the earliest IBM PC’s. It was really only meant for simple beeps, but ended up widely used by PC games as it was the lowest common-denominator for PC sound, despite its very limited capabilities.

It is effectively a single-channel square-wave generator, and with considerable CPU overhead, and some tricks, it is possible to get some half-decent sound out of it as demonstrated by RealSound.

Sound quality is heavily dependent on the type of speaker and the placement and PC case it is built into. Originally a dynamic speaker was used, but later model PCs use a tiny moving iron speaker instead which further reduces sound quality and volume.

PC Speaker emulation is enabled by default, but can be disabled by setting pcspeaker=off in the DOSBox config file.

PC Speaker Configuration

[speaker]
#           pcspeaker: PC speaker emulation model:
#                        discrete: Waveform is created using discrete steps (default).
#                                  Works well for games that use RealSound-type effects.
#                        impulse:  Waveform is created using sinc impulses.
#                                  Recommended for square-wave games, like Commander Keen.
#                                  While improving accuracy, it is more CPU intensive.
#                        none/off: Don't use the PC Speaker.
#                      Possible values: discrete, impulse, none, off.
#    pcspeaker_filter: Filter for the PC Speaker output:
#                        on:        Filter the output (default).
#                        off:       Don't filter the output.
#                        <custom>:  Custom filter definition; see 'sb_filter' for details.
pcspeaker           = discrete
pcspeaker_filter    = on

References

[Top]


Tandy 1000

Released in November 1984, the Tandy 1000 when released was in some respects a clone of the IBM PCjr. It featured a similar TI SN76489 sound chip with 3 channels, plus one noise channel of mono FM sound. This sound synthesiser is referred to as the PSG (Programmable Sound Generator).

Although there are some incompatibilities, many games supporting IBM PCjr sound and video, also work on the Tandy 1000.

Tandy released many revisions of the Tandy 1000. Later revisions, namely the Tandy 1000 SL, TL, TLX, RL and RLX models, added an 8-bit DAC, capable of up to 22kHz playback of digital audio. Only a few games support the Tandy DAC.

Tandy Configuration

The Tandy sound emulation is controlled by the tandy config setting in the the [speaker] section. By default, tandy is set to auto, which auto-enables the Tandy PSG and DAC for the tandy machine type (this machine type will also enable Tandy video).

To simply enable the Tandy machine type, set the following setting in your dosbox.conf file:

[dosbox]
machine = tandy

Alternatively, Tandy PSG and DAC emulation can be enabled for other machine types with the tandy = on or the tandy = psg settings. But these only work for games that do not try to auto-detect a Tandy machine.

The Tandy DAC can only use DMA 1 which conflicts with the default SoundBlaster DMA setting of 1. So if you enable Tandy sound, then the Sound Blaster will be disabled if it uses DMA 1 and vice versa. Moreover, enabling Tandy sound disables the high DMA channels, so it cannot coexist with the Sound Blaster 16 which uses high DMA for 16-bit digital audio playback.

However, you can combine the Tandy PSG with a Sound Blaster DAC by using sbtype = sbpro2 or earlier (e.g., this is possible in the SSI Gold Box games):

[sblaster]
sbtype = sbpro2

[speaker]
tandy = psg
[speaker]
#               tandy: Set the Tandy/PCjr 3 Voice sound emulation:
#                        auto:  Automatically enable Tandy/PCjr sound for the 'tandy' and 'pcjr'
#                               machine types only (default).
#                        on:    Enable Tandy/PCjr sound with DAC support, when possible.
#                               Most games also need the machine set to 'tandy' or 'pcjr' to work.
#                        psg:   Only enable the card's three-voice programmable sound generator
#                               without DAC to avoid conflicts with other cards using DMA 1.
#                        off:   Disable Tandy/PCjr sound.
#                      Possible values: auto, on, psg, off.
#        tandy_filter: Filter for the Tandy synth output:
#                        on:        Filter the output (default).
#                        off:       Don't filter the output.
#                        <custom>:  Custom filter definition; see 'sb_filter' for details.
#    tandy_dac_filter: Filter for the Tandy DAC output:
#                        on:        Filter the output (default).
#                        off:       Don't filter the output.
#                        <custom>:  Custom filter definition; see 'sb_filter' for details.

tandy               = auto
tandy_filter        = on
tandy_dac_filter    = on

References

[Top]


Clone this wiki locally