dosbox-staging / Dosbox Staging
Projects that are alternatives of or similar to Dosbox Staging
DOSBox Staging
This repository attempts to modernize the DOSBox codebase by using current development practices and tools, fixing issues, and adding features that better support today's systems.
Build status
Code quality status
Summary of differences compared to upstream
For developers
DOSBox Staging | DOSBox | |
---|---|---|
Version control | Git | SVN |
Language | C++14 | C++031 |
SDL | >= 2.0.2 | 1.2* |
Buildsystem | Meson or Visual Studio 2019 | Autotools or Visual Studio 2003 |
CI | Yes | No |
Static analysis | Yes2,3,4 | No |
Dynamic analysis | Yes | No |
clang-format | Yes | No |
Development builds | Yes | No |
Unit tests | Yes5 | No |
Automated regression tests | WIP | No |
Feature differences
DOSBox Staging does not support audio playback using physical CDs. Using CD Digital Audio emulation (loading CD music via cue sheets or mounting ISO images) is preferred instead.
Codecs supported for CD-DA emulation:
DOSBox Staging† | DOSBox SVN‡ | |
---|---|---|
Opus | Yes (libopus) | No |
OGG/Vorbis | Yes (built-in) | Yes - SDL_sound 1.2 (libvorbis)6,* |
MP3 | Yes (built-in) | Yes - SDL_sound 1.2 (libmpg123)6,*,§ |
FLAC | Yes (built-in) | No§ |
WAV | Yes (built-in) | Yes - SDL_sound 1.2 (built-in)7,* |
AIFF | No | Yes - SDL_sound 1.2 (built-in)7,* |
*- SDL 1.2 was last updated 2013-08-17 and SDL_sound 2008-04-20
† - 8/16/24 bit-depth, 22.05/44.1/48 kHz, and mono or stereo
‡ - 44.1 kHz stereo only
§ - Broken or unsupported in either SDL_sound or DOSBox
Other differences:
DOSBox Staging | DOSBox SVN | |
---|---|---|
Pixel-perfect mode | Yes (output=openglpp or output=texturepp ) |
N/A |
Resizable window | Experimental (windowresolution=resizable ) |
N/A |
Relative window size | N/A | windowresolution=X% |
OPL emulators | compat, fast, mame, nuked8 | compat, fast, mame |
CGA/mono support | Yes (machine=cga_mono )9
|
Only CGA with colour |
Wayland support | Experimental (use SDL_VIDEODRIVER=wayland ) |
N/A |
Modem phonebook file | Yes (phonebookfile=<name> ) |
N/A |
Autotype command | Yes10 | N/A |
Startup verbosity | Yes11 | N/A |
GUS enhancements | Yes12 | N/A |
Raw mouse input | Yes (raw_mouse_input=true ) |
N/A |
FluidSynth MIDI | Yes13 (FluidSynth 2.x) | Only external synths |
MT-32 emulator | Yes* (libmt32emu 2.4.2) | N/A |
*- Requires original ROM files
Stable release builds
Test builds / development snapshots
Build instructions
Read BUILD.md for the comprehensive compilation guide.
Linux, macOS
Install build dependencies appropriate for your OS:
# Fedora
sudo dnf install ccache gcc-c++ meson alsa-lib-devel libpng-devel \
SDL2-devel SDL2_net-devel opusfile-devel fluidsynth-devel
# Debian, Ubuntu
sudo apt install ccache build-essential meson libasound2-dev libpng-dev \
libsdl2-dev libsdl2-net-dev libopusfile-dev libfluidsynth-dev
# Arch, Manjaro
sudo pacman -S ccache gcc meson alsa-lib libpng sdl2 sdl2_net opusfile \
fluidsynth
# openSUSE
sudo zypper install ccache gcc gcc-c++ meson alsa-devel libpng-devel \
libSDL2-devel libSDL2_net-devel opusfile-devel \
fluidsynth-devel libmt32emu-devel
# macOS
xcode-select --install
brew install ccache meson libpng sdl2 sdl2_net opusfile fluid-synth
Instructions for creating an optimised release build:
git clone https://github.com/dosbox-staging/dosbox-staging.git
cd dosbox-staging
meson setup -Dbuildtype=release build
ninja -C build
./build/dosbox
Windows - Visual Studio (2019 or newer)
First, you need to setup vcpkg to install build dependencies. Once vcpkg is bootstrapped, open PowerShell and run:
PS:\> .\vcpkg integrate install
PS:\> .\vcpkg install --triplet x64-windows libpng sdl2 sdl2-net opusfile fluidsynth
These two steps will ensure that MSVC finds and links all dependencies.
Start Visual Studio and open file: vs\dosbox.sln
. Make sure you have x64
selected as the solution platform. Use Ctrl+Shift+B to build all projects.
Windows (MSYS2), macOS (MacPorts), Haiku, others
Instructions for other build systems and operating systems are documented in BUILD.md. Links to OS-specific instructions: MSYS2, MacPorts, Haiku.
Imported branches, community patches, old forks
Commits landing in SVN upstream are imported to this repo in a timely manner,
see branch svn/trunk
.
-
svn/*
- branches from SVN -
forks/*
- code for various abandoned DOSBox forks -
vogons/*
- community patches posted on the Vogons forum
Git tags matching pattern svn/*
are pointing to the commits referenced by SVN
"tag" paths at the time of creation.
Additionally, we attach some optional metadata to the commits in the form of Git notes. To fetch them, run:
git fetch origin "refs/notes/*:refs/notes/*"
For some historical context of why this repo exists you can read Vogons thread, (1, 2)