GithubHelp home page GithubHelp logo

5l1v3r1 / dosbox-staging Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dosbox-staging/dosbox-staging

0.0 1.0 0.0 9.4 MB

Modernized DOSBox soft-fork

Home Page: https://dosbox-staging.github.io/

License: GNU General Public License v2.0

XSLT 0.01% Shell 0.85% Makefile 0.26% M4 0.74% C 3.27% C++ 94.53% Batchfile 0.01% NSIS 0.10% Perl 0.02% Python 0.22% PowerShell 0.01%

dosbox-staging's Introduction

dosbox-staging

Linux x86_64 build status Linux other build status Windows build status macOS build status

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.

Summary of differences compared to upstream

For developers

dosbox-staging DOSBox
Version control Git SVN
Language C++14 C++031
SDL 2.0 1.2
CI Yes No
Static analysis Yes2,3,4 No
Dynamic analysis Yes No
clang-format Yes No
Development builds Yes No
Automated regression tests No (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)5,*
MP3 Yes (built-in) Yes - SDL_sound 1.2 (libmpg123)5,*,§
FLAC Yes (built-in) No§
WAV Yes (built-in) Yes - SDL_sound 1.2 (built-in)6,*
AIFF No Yes - SDL_sound 1.2 (built-in)6,*

*- SDL 1.2 was last updated 2013-08-17 and SDL_sound 2008-04-20
† - 22.05 kHz, 44.1 kHz, 48 kHz; mono, 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=texturepp)7 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

Stable release builds

Linux, Windows, macOS

Test builds / development snapshots

Links to the newest builds

Build instructions

Read INSTALL file for a general summary about dependencies and configure options and BUILD.md for the comprehensive compilation guide. You can also use helper script ./scripts/build.sh, that performs builds for many useful scenarios (LTO, FDO, sanitizer builds, many others).

Linux, macOS

Install build dependencies appropriate for your OS:

# Fedora
sudo dnf install gcc-c++ automake alsa-lib-devel libpng-devel \
                 SDL2-devel SDL2_net-devel opusfile-devel
# Debian, Ubuntu
sudo apt install build-essential automake libasound2-dev libpng-dev \
                 libsdl2-dev libsdl2-net-dev libopusfile-dev
# Arch, Manjaro
sudo pacman -S gcc automake alsa-lib libpng sdl2 sdl2_net opusfile
# macOS
xcode-select --install
brew install autogen automake libpng sdl2 sdl2_net opusfile

Following flags are suggested for local optimised builds:

git clone https://github.com/dosbox-staging/dosbox-staging.git
cd dosbox-staging
./autogen.sh
./configure CPPFLAGS="-DNDEBUG" \
            CFLAGS="-O3 -march=native" \
            CXXFLAGS="-O3 -march=native"
make -j$(nproc)

See CONTRIBUTING.md for compilation flags more suited for development.

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

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, MinGW), macOS (MacPorts), Haiku OS, others

Instructions for other build systems and operating systems are documented in BUILD.md.

Imported branches and community patches

Commits landing in SVN upstream are imported to this repo in a timely manner, to the branches matching svn/* pattern, e.g. svn/trunk.

Other branch name patterns are also in use: vogons/* for various patches posted on the Vogons forum, munt/* for patches from the Munt project, etc.

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/*"

For some historical context of why this repo exists you can read Vogons thread, (1, 2)

dosbox-staging's People

Contributors

ant-222 avatar cyan4973 avatar dragonwolf83 avatar dreamer avatar erlotinib avatar expack3 avatar icculus avatar joncampbell123 avatar joshuafern avatar kcgen avatar mackron avatar nickninetheeagle avatar nopey avatar nukeykt avatar numberzero avatar phcoder avatar pmcmorris avatar rderooy avatar sharkwouter avatar tyrells avatar voidah avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.