- C++ 87.8%
- C 9.3%
- GLSL 0.6%
- HTML 0.5%
- Python 0.4%
- Other 1.2%
| .claude/rules | ||
| .github | ||
| cmake | ||
| docs | ||
| extras | ||
| licenses | ||
| resources | ||
| scripts | ||
| src | ||
| tests | ||
| vcpkg-ports | ||
| vcpkg-triplets | ||
| website | ||
| .clang-format | ||
| .clang-tidy | ||
| .gitattributes | ||
| .gitignore | ||
| .lsan-suppress | ||
| .mdl-styles | ||
| .muon.ini | ||
| .pylint | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| LICENSE | ||
| README.md | ||
| vcpkg-configuration.json | ||
| vcpkg.json | ||
DOSBox Staging
DOSBox Staging is a modern continuation of DOSBox with advanced features and current development practices.
It is a (mostly) drop-in replacement for older DOSBox versions—your existing configurations will continue to work, and you will have access to many advanced features.
For a detailed description of the project's scope please refer to the About page on our website.
Donations
If you enjoy using DOSBox Staging, please consider a donation to the project.
If you want to help but can't afford a donation, check out the Get involved page of our website for other ways to contribute.
Project website
https://www.dosbox-staging.org/
First-time users and people migrating from other DOSBox variants should start by reading the Getting started guide.
Build status
Stable release builds
Regular users should use our stable release builds available on our project website:
Development builds
Development builds are automatically created on every commit merged to the main branch. You need to be logged in to GitHub to download the development builds.
Key features for developers
| Feature | Status |
|---|---|
| Version control | Git |
| Language | C++23 |
| Logging | Loguru for C++3 |
| Build system | CMake + Ninja or Visual Studio 2022 |
| Dependency manager | vcpkg |
| CI | Yes |
| Static analysis | Yes1,2 |
| Dynamic analysis | Yes |
| clang-format | Yes |
| Development builds | Yes |
| Unit tests | Yes4 |
Source code analysis tools
- PVS-Studio — C++ static analyser
- Pylint — Python static analyser
- markdownlint — style checker and linter for Markdown
- ShellCheck — shell script analysis tool
Dependencies
DOSBox Staging has the following library dependencies:
| Dependency | Provides feature | vcpkg package name | vcpkg version | Optional? |
|---|---|---|---|---|
| FluidSynth | General MIDI playback | fluidsynth | 2.5.1 | no 🔴 |
| GoogleTest | Unit testing (development) | gtest | 1.70.0#2 | yes 🟢 |
| IIR | Audio filtering | iir1 | 1.10.0 | no 🔴 |
| libmt32emu | Roland MT-32 and CM-32L emulation | libmt32emu | 2.7.1 | yes 🟢 |
| libpng | PNG encoding of screen captures | libpng | 1.6.53 | no 🔴 |
| libslirp | General purpose TCP-IP emulator | libslirp | 4.9.0 | yes 🟢 |
| Opus File | CD Audio playback for Opus-encoded audio tracks | opusfile | 0.12+20221121#1 | no 🔴 |
| SDL 2 | OS-agnostic API for video, audio, and eventing | sdl2 | 2.32.10 (overlay) | no 🔴 |
| SDL_image 2 | Image decoding for many popular formats | sdl2-image | 2.8.8#2 | no 🔴 |
| Asio | Network API for emulated serial and IPX | asio | 1.30.2 | no 🔴 |
| SpeexDSP | Audio resampling | speexdsp | 1.2.1#1 | no 🔴 |
| zlib-ng | ZMBV video capture | zlib-ng | 2.3.2 | yes¹ 🟢 |
¹ You can use plain old zlib instead.
Dynamically loaded dependencies
Slirp is built separately as a dynamic library (via vcpkg) and is loaded on-demand at runtime if available. Please refer to the dosbox-staging-ext project for further details. To check the version of this dependency included in our stable and dev build packages, check out the comments of the releases packages of the dosbox-staging-ext project.
For information on the optional Nuked SC-55 CLAP audio plugin, check out the plugin's GitHub repository (note Nuked SC-55 CLAP is not a DOSBox Staging project).
Build instructions
Please refer to the platform specific build instructions:
Imported branches, community patches, old forks
Upstream commits are imported to this repo in a timely manner,
see branch svn/trunk.
svn/*- branches from SVNforks/*- code for various abandoned DOSBox forksvogons/*- 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/*"
Website & documentation
Please refer to the documentation guide before making changes to the website or the documentation.