GithubHelp home page GithubHelp logo

eonfge / dosbox-staging Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dosbox-staging/dosbox-staging

0.0 0.0 0.0 19.85 MB

DOSBox Staging is a fork of the DOSBox project that focuses on ease of use, modern technology and best practices.

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

License: GNU General Public License v2.0

XSLT 0.01% Shell 0.77% Makefile 0.22% C 3.16% C++ 95.14% Batchfile 0.02% NSIS 0.08% Perl 0.01% Python 0.20% PowerShell 0.01% Meson 0.38%

dosbox-staging's Introduction

DOSBox Staging

GPL-2.0-or-later Chat

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

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

Code quality status

Coverity status LGTM grade

Summary of differences compared to upstream

For developers

DOSBox Staging DOSBox
Version control Git SVN
Language C++17 C++031
SDL >= 2.0.5 1.2
Logging Loguru for C++6 Yes, in-house class
Buildsystem Meson or Visual Studio 2019 Autotools or Visual Studio 2003
CI Yes No
Static analysis Yes2,3,4,5 No
Dynamic analysis Yes No
clang-format Yes No
Development builds Yes No
Unit tests Yes6 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

Feature differences between release binaries (or unpatched sources):

Feature DOSBox Staging DOSBox SVN
Pixel-perfect mode Yes: output=openglpp or output=texturepp N/A
Resizable window Yes: for all output=opengl modes N/A
Relative window size Yes: windowresolution=small, medium, or large windowresolution=X%
Window placement Yes: windowposition = 0,0, and more16 Manual placement
OPL emulators compat, fast, mame, nuked8 compat, fast, mame
CGA/mono support Yes: machine=cga_mono)9 Only CGA with colour
CGA composite modes Yes: machine=pcjr/tandy/cga with hotkeys) N/A
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
Expanded S3 support 4 and 8 MiB of RAM14 2 MiB of RAM
Portable & layered conf By default15 With-userconf and -conf
Translations handling Bundled, see section 14 in README With path to .lng file
ENet modem transport Yes: serialport sock:1 flag or SERIAL.COM17 N/A
Ethernet via [slirp] Yes: See [ethernet] section in conf file N/A
IDE support for CDROMs Yes: See -ide flag in IMGMOUNT.COM /help N/A
Networking in Win3.11 Yes: Via local shell18 Yes: bootable HDD image

*- Requires original ROM files

Stable release builds

Linux, Windows, macOS

Test builds / development snapshots

Links to the newest builds

Get the source

  • Clone the repository (one-time step):

    git clone https://github.com/dosbox-staging/dosbox-staging.git

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 \
                 mt32emu-devel libslirp-devel
# Debian, Ubuntu
sudo apt install ccache build-essential libasound2-dev libpng-dev \
                 libsdl2-dev libsdl2-net-dev libopusfile-dev \
                 libfluidsynth-dev libslirp-dev

# Install Meson on Debian-10 "Buster" or Ubuntu-20.04 and older
sudo apt install python3-setuptools python3-pip
sudo pip3 install --upgrade meson ninja

# Install Meson on Debian-11 "Bullseye" or Ubuntu-21.04 and newer
sudo apt install meson
# Arch, Manjaro
sudo pacman -S ccache gcc meson alsa-lib libpng sdl2 sdl2_net opusfile \
               fluidsynth libslirp
# openSUSE
sudo zypper install ccache gcc gcc-c++ meson alsa-devel libpng-devel \
                    libSDL2-devel libSDL2_net-devel opusfile-devel \
                    fluidsynth-devel libmt32emu-devel libslirp-devel
# macOS
xcode-select --install
brew install ccache meson libpng sdl2 sdl2_net opusfile fluid-synth libslirp

Build and stay up-to-date with the latest sources

  • Checkout the main branch:

    # commit or stash any personal code changes
    git checkout main -f
  • Pull the latest updates. This is necessary every time you want a new build:

    git pull
  • Setup the build. This is a one-time step either after cloning the repo or cleaning your working directories:

    meson setup \
        -Dbuildtype=release \
        -Ddefault_library=static \
        -Db_asneeded=true \
        -Dtry_static_libs=png \
        -Dfluidsynth:enable-floats=true \
        -Dfluidsynth:try-static-deps=true \
      build

    The above enables all of DOSBox Staging's functional features. If you're interested in seeing all of Meson's setup options, run: meson configure.

  • Compile the sources. This is necessary every time you want a new build:

    meson compile -C build

    Your binary is: build/dosbox -- have fun!

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 libmt32emu opusfile fluidsynth gtest

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)

dosbox-staging's People

Contributors

ant-222 avatar arrowgent avatar brandonrobertz avatar burrito78 avatar cyan4973 avatar draky50110 avatar dreamer avatar drfiemost avatar feignint avatar granminigun avatar ipeluchito avatar joncampbell123 avatar jookia avatar kappa971 avatar kcgen avatar kklobe avatar linkmauve avatar lowlevelmahn avatar mackron avatar mastero2 avatar nickninetheeagle avatar nukeykt avatar okias avatar oturpe avatar pmcmorris avatar rderooy avatar rygorous avatar sharkwouter avatar shermp avatar wengier 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.