The good old days of DOS.
|Emulator||Rom Folder||Extension||BIOS||Controller Config|
|DOSBox||pc||.com .sh .bat .exe .conf||none||/opt/retropie/configs/pc/dosbox-SVN.conf|
|DOSBox Staging||pc||.com .sh .bat .exe .conf||none||/opt/retropie/configs/pc/dosbox-staging.conf|
Emulators: DOSBox, Rpix86, DOSBox Staging
Accepted File Extensions: .com .sh .bat .exe .conf
Place your ROMs in
- DOSbox: http://www.dosbox.com/wiki/Main_Page
- Rpix86: http://rpix86.patrickaalto.com/rfaq.html
- DOSBox Staging: https://dosbox-staging.github.io
DOSBox Quick Keys:
ctrl+F1: display keymapper configuration screen (to assign key/buttons)
ctrl+F4: to change CD
ctrl+F9: exit emulator
For more information see: https://www.dosbox.com/wiki/Special_Keys
How to configure DOSBOX for individual games. aka one .conf file per game. Recommended way to add games in order to keep a clean setup and ease debug process (whenever needed).
DosBOX Compatibility List feel free to contribute to the list.
see also forum post here
As per Dosbox' documentation: DOS/32A (DOS/32 Advanced DOS Extender) is a free and open source software that can be used to replace the DOS4GW.EXE DOS Extender file that many DOS games use. Once a game uses this, it is expected to run faster and better in DOSBox.
Note: not all games will work with DOS/32A. For example, Shadowcaster is incompatible with it because RAVEN.EXE run with DOS/32A is unable to find the A32SBDG.DLL file that is in the same directory, while with DOS4GW it can.
Check Dosbox' documentation to get further information as well as a guide on how to proceed.
Once "patched" your file executable should look like this:
$ file hospital.exe MS-DOS executable, LE executable for MS-DOS, DOS/32A DOS extender (embedded)
Install Gravis Ultrasound (GUS)
DOSBox comes with Gravis Ultrasound support, but you need a little effort to set it up. It's worth it definitely as the difference with a SoundBlaster 16 is impressive (check that for yourself with a game like Rise of the Triad, it's night and day).
1. You must first find the GUS driver for Dosbox. As I'm not 100% sure about the legality of the file no link can be shared from this wiki.
2. If you get the file it should typically be containing a "ULTRASND" folder with various files and folders within.
3. Simply copy that "ULTRASND" folder straight under your Retropie "roms" directory for Dosbox (default: roms/pc).
4. Edit the .conf of your game(s) and get to the
[gus] section. Modify it this way:
[gus] [...] gus = true gusrate = 44100 gusbase = 240 gusirq = 5 gusdma = 3 ultradir = C:\ULTRASND
install.exelocated in your game's directory.
Note: it's ok to move the "ULTRASND" directory to another location. Just remember to "mount" it whenever you launch the game and to edit the
ultradir path from
Thread to fix games relying on Human Machines Interface/HMI setup. Those will fail detection of GUS soundcard (like Terminator Future Shock, Daggerfall, Whitchaven, etc).
Tips and tricks
With DOSbox on a Pi3B+ without overclocking (stock) I was able to get up to 34000 cycles. Meaning a solid equivalent of a good 486DX2 or even Pentium 60 according to this page. Below the
cpu setting I'm currently using for the majority of games. Feel free to look at the DOSbox' documentation for further details.
[cpu] cycles = max 95% limit 34000
Whenever a game is running too fast you'll have to rely on the
fixed parameter of
cycles. Good example with Wing Commander (1 and 2):
[cpu] cycles = fixed 4000
If the keyboard input in DOSBox is not correct, you need to edit the DOSBox config file, dosbox-SVN.conf, which is located in the hidden folder, .dosbox, in your home folder.
To fix, run the following commands:
cd ~/.dosbox sudo nano dosbox-SVN.conf
In the [sdl] section, edit line 34 of dosbox-SVN.conf so that usescancodes is set to false as below:
In some games your joystick/controller may be permanently fixed in one corner. For these games, edit dosbox-SVN.conf, find the [Joystick] section and set timed to false as below:
rpix86 defaults to analog audio output, if you use HDMI audio you need to give -a0 parameter to rpix86