- Fix Bitu printf format type - Check a pointer prior to dereferencing it - Prevent writing one-beyond the last index - Replace strcpy with with helper safe_strcpy, provided by @dreamer - thank you! - Replace strcat with strncat - Add constructor intializers for scalars and arrays - Initialize and replace 0-value pointers with nullptr - Pass in the buffer length when strncpy'ing into a function variable |
||
---|---|---|
.github | ||
contrib | ||
docs | ||
include | ||
scripts | ||
src | ||
visualc_net | ||
.gitignore | ||
.pylint | ||
acinclude.m4 | ||
AUTHORS | ||
autogen.sh | ||
configure.ac | ||
COPYING | ||
INSTALL | ||
Makefile.am | ||
README | ||
README.md | ||
THANKS |
dosbox-staging
This repository attempts to modernize the DOSBox project by using current development practices and tools, fixing issues, adding features that better support today's systems, and sending patches upstream. Read more at Vogons thread.
Summary of differences compared to upstream:
dosbox-staging | DOSBox | |
---|---|---|
Version control | Git | SVN |
Language | C++11 | C++031 |
CI | Yes | No |
Static analysis | Yes2,3 | No |
Dynamic analysis | Yes | No |
Automated regression tests | No (planned)4 | No |
SDL | 1.2 (2.0 WIP)5 | 1.2* |
Codecs supported for CD Digital Audio emulation (loading CD music via cue sheets):
dosbox-staging† | DOSBox‡ | |
---|---|---|
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 (internal)7,* |
AIFF | No | Yes - SDL_sound 1.2 (internal)7,* |
* - SDL 1.2 is not actively maintained any more.
† - 22.05 kHz, 44.1 kHz, 48 kHz; mono, stereo
‡ - 44.1 kHz stereo only
§ - SDL_sound supports it, but the feature might be broken or DOSBox does not indicate support.
Development snapshot builds
Only Linux snapshots are available at the moment.
Pre-release builds can be downloaded from CI build artifacts. Go to Linux builds, select a build you are interested in, click "Artifacts" button (in the top right), and download the package.
Snapshots are dynamically-linked x86_64 builds, you'll need additional packages installed via your package manager. Different dependencies might be necessary for specific snapshots (check included README file).
Fedora
$ sudo dnf install SDL SDL_net opusfile
Debian, Ubuntu
$ sudo apt install libsdl1.2 sdl-net1.2 opusfile
Arch, Manjaro
$ sudo pacman -S sdl sdl_net opusfile
Build instructions
Linux, macOS, MSYS2, MinGW, other OSes
Read INSTALL file for a general summary about dependencies and configure options. Read build.md for the comprehensive compilation guide.
$ git clone https://github.com/dreamer/dosbox-staging.git
$ cd dosbox-staging
$ ./autogen.sh
$ ./configure
$ make
You can also use a helper script ./scripts/build.sh
,
that performs builds for many useful scenarios (LTO, FDO, sanitizer builds,
many others).
Visual Studio (2019 or newer)
First, you need to setup vcpkg to install build dependencies. Once vcpkg is installed and bootstrapped, open PowerShell, and run:
PS> .\vcpkg integrate install
PS> .\vcpkg install libpng sdl1 sdl1-net opusfile
These two steps will ensure that MSVC finds and links all dependencies.
Start Visual Studio, open file: visualc_net\dosbox.sln
and build all
projects (Ctrl+Shift+B).
Interop with SVN
This repository is (deliberately) NOT git-svn compatible, this is a pure Git repo.
Commits landing in SVN upstream are imported to this repo in a timely manner,
to the branches matching svn/*
pattern, e.g.
svn/trunk
.
You can safely use those branches to rebase your changes, and prepare patches
using Git format-patch for sending
upstream (it is easier and faster, than preparing patches manually).
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 imported from SVN in the form of Git notes. To fetch them, run:
$ git fetch origin "refs/notes/*:refs/notes/*"