Go to file
Kp 56d1814489 Add alternative mixer resamplers
SDL2_mixer changed how it upsamples sounds, and some users complained
about the difference.  Add an internal resampler that emulates how
SDL_mixer upsamples sounds.  Since all Rebirth upsampling is an integer
upsample (11Khz -> 44KHz, 22KHz -> 44Khz), this internal emulation is
considerably simpler than a general purpose resampler.

With this commit, the builder can choose which resamplers to enable.
The available resamplers are chosen by preprocessor directive, and
presently do not have an SConstruct flag.  For each resampler, if no
choice is made, then the resampler will be enabled if it is reasonable.
At least one of the resamplers must be enabled, or the build will fail
with a `#error` message.

The user may choose at program start time which of the available
resamplers to use for that execution of the program, through passing one
of the command line arguments:
- `-sdlmixer-resampler=sdl-native`
- `-sdlmixer-resampler=emulate-sdl1`
- `-sdlmixer-resampler=emulate-soundblaster16`

Runtime switching is not supported.  If the user does not choose, then
the first enabled resampler from the list below will be used.  The
available resamplers are:
- sdl_native (DXX_FEATURE_EXTERNAL_RESAMPLER_SDL_NATIVE) - delegates to
  SDL_mixer / SDL2_mixer, the way Rebirth has historically done.
- emulate_sdl1 (DXX_FEATURE_INTERNAL_RESAMPLER_EMULATE_SDL1) - an
  internal resampler that emulates how SDL_mixer worked.  This should be
  equivalent to sdl_native when using SDL_mixer, so by default it is
  enabled when Rebirth is built to use SDL2_mixer and disabled when
  Rebirth is built to use SDL_mixer.  It can still be enabled manually
  even when building for SDL_mixer, but this does not seem likely to be
  useful.
- emulate_soundblaster16
  (DXX_FEATURE_INTERNAL_RESAMPLER_EMULATE_SOUNDBLASTER16) - an internal
  resampler submitted by @raptor in
  5165efbc46.  Some users reported audio
  quality issues with this resampler, so it is not presently the
  default.
2023-02-11 10:50:21 +00:00
.github Use macos-12 in github macOS workflow 2023-01-23 17:40:00 +01:00
common Add alternative mixer resamplers 2023-02-11 10:50:21 +00:00
contrib Remove abandoned Visual Studio 2017 support 2022-11-09 23:58:22 +00:00
d1x-rebirth Use enum class for D1 custom_info::replacement_index 2023-01-29 20:42:03 +00:00
d2x-rebirth Use enum class for wall_is_doorway_mask 2023-01-29 20:42:03 +00:00
Documentation Update c++std documentation 2022-11-06 18:18:57 +00:00
similar Add alternative mixer resamplers 2023-02-11 10:50:21 +00:00
.gitattributes Instruct git-archive to insert a commit ID in SConstruct 2019-12-29 22:24:20 +00:00
.gitignore Added Brewfile and updated macOS compilation instructions 2022-08-14 19:36:02 -07:00
Brewfile Require SDL 2 for macOS builds 2022-11-11 11:23:52 -08:00
COPYING.txt corrected typo in COPYING.txt (it's to its) 2014-06-06 13:18:52 +02:00
GPL-3.txt
INSTALL.markdown Require SDL 2 for macOS builds 2022-11-11 11:23:52 -08:00
mk-ebuild-snapshot.bash Add convenience options to mk-ebuild-snapshot.bash 2020-05-23 00:31:37 +00:00
README.md Remove references to DXX forum 2020-03-25 02:31:10 +00:00
SConstruct Simplify test for support of explicitly deleted functions 2023-02-04 19:21:25 +00:00

                         __________
__________/ DXX-Rebirth /

https://www.dxx-rebirth.com

0. Introduction:

DXX-Rebirth is based on the late D1X and D2X source ports (which, in turn, were based on the original Descent source and LDescent). The Rebirth Team has spent a lot of time working to improve the source code by fixing old bugs and adding some improvements, while always staying true to our philosophy: Keep it Descent!

It is the goal of DXX-Rebirth to keep Descent 1 & 2 alive and well, updating them for modern PCs while also keeping them the same games you remember playing back in 1995!

Now Material Defender...Prepare for Descent!

1. Features:

DXX-Rebirth has every little feature you may remember from the original Descent 1&2 and much more.

For example:

  • Full compatibility with Descent and Descent 2, including all expansions and third-party levels.
  • DXX-Rebirth runs on your favourite Operating System. We officially support Linux (and other *NIXs), Mac OS X and Windows. The source code can also be compiled on many other systems!
  • OpenGL provides fast and smooth rendering - even on low-end systems.
  • Optionally you can enable several effects like Transparency, Colored Lighting, Texture Filtering, FSAA, etc.
  • Thanks to SDL, a wide variety of Joysticks are supported. Also you can use more Joysticks, buttons and axes than you can ever operate in your state of evolution.
  • Joystick, Keyboard and Mouse can be used simultaneously.
  • The games can display all resolutions and aspects supported by your monitor, including an option for VSync.
  • Besides MIDI and CD-Audio (Redbook), you can play your own custom Music from your hard drive or a separate AddOn.
  • Both games can utilize special AddOn packs to replace or expand the original game content.
  • Multiplayer via UDP protocol provides a fast and easy-to-use LAN and Online action. This includes reliable communication causing less glitches due to lost packets.
  • The ingame Demo-recording system has been improved. Demos are less glitchy and smaller while still still being backwards-compatible to earlier versions of the games.
  • Higher game speed will not cause glitches such as unacceptable fast homing projectiles, incredible high damage caused by several collisions or Fusion cannon, etc.
  • Player files, Savegames, Demos and Missions from DOS-Versions of the games can freely be used in DXX-Rebirth and vice versa.
  • Mac Command keys are now working - see F1 Help. Command-Q works much like a normal Mac program
  • Even more ...

2. Installation:

See INSTALL.markdown.

3. Multiplayer:

DXX-Rebirth supports Multiplayer over UDP/IP.Using UDP/IP works over LAN and Internet.

By default, each game communicates over UDP-Port 42424. This can be changed via the menus, command-line argument or .ini files.

Please be aware that if you host a game and players want to join your game online via direct IP connection, your specified game port should be forwarded on your router.

If you host your game on the Online Tracker and other players join via this method, port forwarding should not be necessary.

If you only want to join a game, or host a game on LAN (not online), port forwarding should not be necessary. If you do experience problems, please check your NAT settings and/or Firewall.

See COPYING.txt and GPL-3.txt

5. Contact:

6. Issue Reporting

Use GitHub issues tab report a new issue, be sure to add as much detail as possible in the template provided.