Skip to main content

DOSBox

Install DOSBox Staging for a more enhanced DOS gaming experience:

yay -S dosbox-staging

General MIDI/Soundfonts

The integrated FluidSynth MIDI sequencer has issues with some soundfont files, resulting in minor to major music playback issues in games. Timidity++ does not have these issues.

To install simply:

pacman -S timidity++

A list of available soundfonts to install from the AUR, sorted by votes:

AUR Package Name Description
soundfonts-aur-meta Installs all the soundfont packages in the AUR
soundfont-unison A lean and clean GM/GS soundbank
soundfont-sgm A balanced, good quality GM soundbank
soundfont-titanic A public domain, high quality MIDI soundfont by Luke Sena
soundfont-generaluser A small and well balanced GM/GS soundbank for many styles of music.
soundfont-zeldamcsf2 Legend of Zelda: Minish Cap soundfont for MIDI playback
soundfont-zelda3sf2 Legend of Zelda: Link to the Past soundfont for MIDI playback
soundfont-fatboy A free GM/GS SoundFont for classic video game MIDI, emulation, and general usage
soundfont-arachno GM/GS soundbank courtesy of Maxime Abbey.
soundfont-sso-sf2 The Sonatina Symphonic Orchestra by Mattias Westlund. (SF2 format)
soundfont-toh Don Allen's Timbres of Heaven soundfont
soundfont-opl3-fm-128m A SoundFont designed to simulate the classic MIDI sound of the Sound Blaster 16 (and other YM262 enabled hardware).
soundfont-sunshine-perc Five drum/percussion soundfonts from Sunshine Studios. Non-commercial use only.
soundfont-realfont GM soundbank by Michel Villeneuve
soundfont-personalcopy A large free SoundFont.
soundfont-jeux Jeux organ soundfont

Configure Timidity++ to use the soundfont of your choosing in its global config file /etc/timidity++/timidity.cfg:

soundfont /usr/share/soundfonts/FluidR3_GM.sf2

Set up timidity++ to run in daemon mode and start with user login:

systemctl --user enable --now timidity

ListYou need to tell DOSBox which MIDI Port to send MIDI data to. Install the alsa-utils package and list the available MIDI ports with aconnect:

pacman -S alsa-utils
aconnect -o

ConfigureThe DOSBoxoutput might look something like this:

client 14: 'Midi Through' [type=Kernel]
    0 'Midi Through Port-0'
client 128: 'TiMidity' [type=User,pid=89573]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '

In the configuration file for DOSBox, pass the client ID of the sequencer and the port to senduse MIDIon eventsthe midiconfig setting. The mididevice needs to Timidity++be port:default. The syntax is [client]:[port]:

[midi]
mpu401     = intelligent
mididevice = default
midiconfig = [timidity++ MIDI port]128:0

Gravis UltraSound (GUS)

The Gravis UltraSound cards were technically advanced soundcards with sample-based music synthesis ("wavetable") and hardware-mixing. DOSBox can emulate a Gravis UltraSound card for games that support it.

To enable GUS emulation, set the following options in your DOSBox configuration file:

IMPORTANT: The ultradir references a directory within DOSBox, not your local filesystem!

gus      = true
gusbase  = 240
gusirq   = 5
gusdma   = 3
ultradir = C:\ULTRASND

Depending on where you mount your C: drive (e.g. ~/DOS), the ULTRASND directory needs to be placed inside it.

Installing GUS drivers

NOTE: Assumptions being made in this guide:

    The C: drive is mounted from ~/DOS The X: drive is mounted from ~/Downloads/GUS Install and contains the GUS setup files

    IMPORTANT: Make sure you turn on GUS emulation in DOSBox before starting the setup procedure!

    Preparations

    GUS emulation needs the original install disks for the Gravis UltraSound, which can be downloaded here.

    Create an autoexec.bat at the root of DOSBox's C: drive:

    touch ~/DOS/autoexec.bat
    

    In DOSBox

    Extract the contents into a directory and mount it as drive X: in DOSBox:

    mount x ~/Downloads/GUS Install
    

    Change directory to the GUS410 directory and start the installer:

    X:
    cd X:\GUS410
    INSTALL.EXE
    

    Setup procedure:

      Choose Restore, NOT Install When asked what to restore, provide the glob pattern *.* Keep the default target drive letter Keep the default target directory Start the installation process

      Back at the main menu:

        Choose Install (since it is restored, the installation should be quick) Keep the defaults for the drive and directory
          If it can't find Windows, provide C:\ULTRASND\WINDOWS When the installation completes successfully exit out
            Don't run Express or Custom Setup

            Change directory to the GUS411 directory and start the installer:

            cd X:\GUS411
            INSTALL.EXE
            

            Repeat the installation steps above.

            Testing

            To test if setup was successful restart DOSBox, change into C:\ULTRASND and start MIDIDEMO.BAT.

            If you hear music being played, the installation was successful.

            Games with CD Audio

            You can use CBAE to save some space with games that use CD audio tracks by compressing them.

            cbae is a NodeJS package that is installed via npm. If you don't have NodeJS already installed:

            pacman -S nodejs
            

            Then install the cbae package globally:

            npm i cbae --location=global
            

            cbae takes .bin/.cue images as input and uses the information of the .cue file to determine what the CD audio tracks are.

            To convert a .bin/.cue image:

            cbae e KEEPER.cue -o ./ -enc OPUS:64 -p $(nproc)
            

            This achives the following:

              e KEEPER.cue: encodes CD audio tracks of the image KEEPER.cue -o ./: outputs the resulting files into a sub-directory of the current directory, e.g.:
              KEEPER.bin
              KEEPER.cue        <-- input file
              KEEPER [e]        <-- sub-directory
              ├── KEEPER.cue                <-- new .cue file by cbae
              ├── KEEPER - Track 01.bin     <-- binary game data
              ├── KEEPER - Track 02.opus    <-- CD audio track
              ├── KEEPER - Track 03.opus
              ├── KEEPER - Track 04.opus
              ├── KEEPER - Track 05.opus
              ├── KEEPER - Track 06.opus
              └── KEEPER - Track 07.opus
              
              -enc OPUS:64: encodes audio tracks with Opus at 64 kbps (see cbae --help for available codecs) -p $(nproc): specifies how many CPU cores are used for encoding ($(nproc) assigns the maximum number of cores available)

              Mount the newly created .cue file with DOSBox's imgmount command, e.g. as the D: drive:

              imgmount d ~/DOSGAMES/KEEPER [e]/KEEPER.cue -t cdrom