emulator: dxx-rebirth type: standalone core_classification: game_engine source: "https://github.com/dxx-rebirth/dxx-rebirth" upstream: ~ profiled_date: "2026-10-04" source_commit: "db1996a7fd18c7bf11c9b18b881aa4f11a84f017" core_version: "git" display_name: "Descent 1 & 2 (DXX-Rebirth)" cores: [dxx-rebirth, d1x-rebirth, d2x-rebirth] systems: [descent, descent2] verification: existence notes: | DXX-Rebirth is a dual-engine source port of Descent 1 and Descent 2 built from the Parallax-released sources. The repository builds two executables, d1x-rebirth and d2x-rebirth, sharing the similar/ tree guarded by DXX_BUILD_DESCENT = 1 or 2. Each build mounts its data via PhysFS. The game folder (defaulted to the executable directory on Windows/macOS, DXX_SHAREPATH or ~/.d1x-rebirth / ~/.d2x-rebirth on Unix) is searched for the HOG and PIG files; -hogdir on the command line adds another search path. On startup similar/main/inferno.cpp mounts descent.hog (D1) or descent2.hog / d2demo.hog (D2) via make_PHYSFSX_ComputedPathMount (similar/main/inferno.cpp:471-476). If neither hog is found the engine aborts with UserError "Could not find a valid hog file". The size of the HOG picks the data edition (common/main/mission.h:58): 6856701 / 6856183 / 7261423 bytes = PC Descent 1 retail v1.4-v1.5 / v1.0 4492107 / 4494862 bytes = PC Descent 1 OEM v1.4a / v1.0 2339773 / 2365676 bytes = PC Descent 1 shareware v1.4 / v1.0 7456179 / 3370339 bytes = Mac Descent 1 retail / shareware 2292566 bytes = d2demo.hog v1.0 (D2 PC shareware) 4292746 bytes = D2 Mac shareware 6132957 bytes = D2 PC OEM v1.1 7595079 / 7107354 bytes = D2 PC full v1.1-1.2 / v1.0 7110007 bytes = D2 Mac full v1.1-1.2 For Descent 2 the engine also expects descent2.ham (binary tables) and one of the PIG graphics families (groupa.pig / alien1.pig / alien2.pig / fire.pig / ice.pig / water.pig for retail, d2demo.pig for shareware) plus the sampled sound bank (descent2.s11 for 11 kHz or descent2.s22 for 22 kHz; similar/main/piggy.cpp:79). Mac shareware additionally bundles exit.ham. d2x.hog is the Descent 2: Vertigo expansion mission, probed in the MISSION_DIR by similar/main/inferno.cpp:542 to toggle the "Vertigo Enhanced" title. The movie libraries are named from three stems (intro, other, robots; d2x-rebirth/main/movie.cpp:93-95) and a resolution letter: -h.mvl is tried first, then -l.mvl (d2x-rebirth/main/movie.cpp:660, 672-677). A library that fails to mount is logged and skipped; the game plays without movies. Only the free PC shareware pair (desc14sw.tar.gz = descent.hog + descent.pig; d2shar10.tar.gz = d2demo.hog/pig/ham) is redistributable; the retail archives listed below are commercial GOG files. files: # ------ Descent 1 shareware (free) ------ - name: descent.hog path: descent.hog system: descent category: game_data required: false size: 2339773 validation: [size] description: "Descent 1 PC shareware v1.4 HOG" variant_group: d1-hog note: "freely redistributable (icculus.org/d2x/data/desc14sw.tar.gz)" source_ref: "similar/main/mission.cpp:80; common/main/mission.h:67" - name: descent.pig path: descent.pig system: descent category: game_data required: false description: "Descent 1 PC shareware PIG (ships with desc14sw.tar.gz)" source_ref: "common/main/fwd-piggy.h:55" # ------ Descent 1 retail ------ - name: descent.hog path: descent.hog system: descent category: game_data required: false size: 6856701 validation: [size] description: "Descent 1 PC retail v1.5 HOG (GOG)" variant_group: d1-hog note: "commercial; alternative sizes 6856183 (v1.5 alt), 7261423 (v1.0), 7456179 (Mac retail)" source_ref: "common/main/mission.h:61-64" - name: descent.pig path: descent.pig system: descent category: game_data required: false description: "Descent 1 PC retail PIG" source_ref: "similar/main/piggy.cpp:69" # ------ Descent 2 shareware (free) ------ - name: d2demo.hog path: d2demo.hog system: descent2 category: game_data required: false size: 2292566 validation: [size] description: "Descent 2 PC shareware HOG" variant_group: d2-hog note: "freely redistributable (icculus.org/d2x/data/d2shar10.tar.gz)" source_ref: "similar/main/mission.cpp:107-108; common/main/mission.h:71" - name: d2demo.pig path: d2demo.pig system: descent2 category: game_data required: false description: "Descent 2 shareware PIG" source_ref: "similar/main/piggy.cpp:73" - name: d2demo.ham path: d2demo.ham system: descent2 category: game_data required: false description: "Descent 2 shareware HAM" source_ref: "similar/main/piggy.cpp:75" # ------ Descent 2 retail ------ - name: descent2.hog path: descent2.hog system: descent2 category: game_data required: false size: 7595079 validation: [size] description: "Descent 2 PC full v1.1-1.2 HOG (GOG)" variant_group: d2-hog note: "commercial; alternative sizes 7107354 (v1.0), 7110007 (Mac full), 6132957 (OEM v1.1), 4292746 (Mac shareware)" source_ref: "common/main/mission.h:73-76" - name: descent2.ham path: descent2.ham system: descent2 category: game_data required: false description: "Descent 2 retail HAM (tables)" source_ref: "similar/main/piggy.cpp:74" - name: groupa.pig path: groupa.pig system: descent2 category: game_data required: false description: "Descent 2 retail default PIG (loaded by piggy_init_pigfile)" source_ref: "similar/main/piggy.cpp:72; similar/main/inferno.cpp:689" - name: alien1.pig path: alien1.pig system: descent2 category: game_data required: false description: "Descent 2 Alien-1 textures PIG" source_ref: "similar/main/piggy.cpp:87" - name: alien2.pig path: alien2.pig system: descent2 category: game_data required: false description: "Descent 2 Alien-2 textures PIG" source_ref: "similar/main/piggy.cpp:88" - name: fire.pig path: fire.pig system: descent2 category: game_data required: false description: "Descent 2 Fire textures PIG" source_ref: "similar/main/piggy.cpp:89" - name: ice.pig path: ice.pig system: descent2 category: game_data required: false description: "Descent 2 Ice textures PIG" source_ref: "similar/main/piggy.cpp:91" - name: water.pig path: water.pig system: descent2 category: game_data required: false description: "Descent 2 Water textures PIG" source_ref: "similar/main/piggy.cpp:92" - name: descent2.s22 path: descent2.s22 system: descent2 category: game_data required: false description: "Descent 2 22 kHz digital sound bank (default for retail)" source_ref: "similar/main/piggy.cpp:79" - name: descent2.s11 path: descent2.s11 system: descent2 category: game_data required: false description: "Descent 2 11 kHz digital sound bank (shareware/Mac default)" source_ref: "similar/main/piggy.cpp:79" - name: d2x.hog path: missions/d2x.hog system: descent2 category: game_data required: false description: "Descent 2: Vertigo expansion mission HOG" source_ref: "similar/main/inferno.cpp:542" - name: intro-h.mvl path: intro-h.mvl system: descent2 category: game_data required: false description: "Descent 2 intro cinematic (high-res)" source_ref: "d2x-rebirth/main/movie.cpp:93-95 (movielib_files), 660 (name format); similar/main/titles.cpp:292 (intro.mve)" - name: robots-h.mvl path: robots-h.mvl system: descent2 category: game_data required: false description: "Descent 2 robot briefings (high-res)" source_ref: "d2x-rebirth/main/movie.cpp:93-95 (movielib_files), 660 (name format)" - name: other-h.mvl path: other-h.mvl system: descent2 category: game_data required: false description: "Descent 2 misc cinematics (high-res)" source_ref: "d2x-rebirth/main/movie.cpp:93-95 (movielib_files), 660 (name format)" # ------ Add-on archives ------ # add_archives_to_search_path() mounts every *.dxa found at the root of # the search path; the code names the extension, not the files. The names # below are the add-ons the project publishes. Each build has its own data # directory (d1x-rebirth, d2x-rebirth), so an archive is seen by one game. - name: "d1xr-hires.dxa" path: "d1x-rebirth/d1xr-hires.dxa" system: descent category: game_data required: false description: "High resolution title, briefing and ending screens for Descent 1" note: "Mounted at startup when present; its files extend or replace the game content." source_ref: "common/misc/physfsx.cpp:23, 377-394, similar/main/inferno.cpp:603, SConstruct:4362" - name: "d1xr-briefings-ger.dxa" path: "d1x-rebirth/d1xr-briefings-ger.dxa" system: descent category: game_data required: false description: "German briefing texts for Descent 1" note: "Mounted at startup when present; its files extend or replace the game content." source_ref: "common/misc/physfsx.cpp:23, 377-394, similar/main/inferno.cpp:603, SConstruct:4362" - name: "d1xr-mac-demo-sounds.dxa" path: "d1x-rebirth/d1xr-mac-demo-sounds.dxa" system: descent category: game_data required: false description: "Sound set of the Macintosh Descent 1 demo" note: "Mounted at startup when present; its files extend or replace the game content." source_ref: "common/misc/physfsx.cpp:23, 377-394, similar/main/inferno.cpp:603, SConstruct:4362" - name: "d1xr-opl3-music.dxa" path: "d1x-rebirth/d1xr-opl3-music.dxa" system: descent category: game_data required: false description: "Descent 1 music as Ogg Vorbis files, OPL3 rendering" note: "Mounted at startup when present; its files extend or replace the game content." source_ref: "common/misc/physfsx.cpp:23, 377-394, similar/main/inferno.cpp:603, SConstruct:4362" - name: "d1xr-sc55-music.dxa" path: "d1x-rebirth/d1xr-sc55-music.dxa" system: descent category: game_data required: false description: "Descent 1 music as Ogg Vorbis files, Roland SC-55 rendering" note: "Mounted at startup when present; its files extend or replace the game content." source_ref: "common/misc/physfsx.cpp:23, 377-394, similar/main/inferno.cpp:603, SConstruct:4362" - name: "editor.dxa" path: "d1x-rebirth/editor.dxa" system: descent category: game_data required: false description: "Level editor data for the Descent 1 build" note: "Mounted only by a build with the editor enabled, when the editor opens." source_ref: "similar/editor/med.cpp:367-370, SConstruct:4362" - name: "d2xr-briefings-ger.dxa" path: "d2x-rebirth/d2xr-briefings-ger.dxa" system: descent2 category: game_data required: false description: "German briefing texts for Descent 2" note: "Mounted at startup when present; its files extend or replace the game content." source_ref: "common/misc/physfsx.cpp:23, 377-394, similar/main/inferno.cpp:603, SConstruct:4362" - name: "d2xr-opl3-music.dxa" path: "d2x-rebirth/d2xr-opl3-music.dxa" system: descent2 category: game_data required: false description: "Descent 2 music as Ogg Vorbis files, OPL3 rendering" note: "Mounted at startup when present; its files extend or replace the game content." source_ref: "common/misc/physfsx.cpp:23, 377-394, similar/main/inferno.cpp:603, SConstruct:4362" - name: "d2xr-sc55-music.dxa" path: "d2x-rebirth/d2xr-sc55-music.dxa" system: descent2 category: game_data required: false description: "Descent 2 music as Ogg Vorbis files, Roland SC-55 rendering" note: "Mounted at startup when present; its files extend or replace the game content." source_ref: "common/misc/physfsx.cpp:23, 377-394, similar/main/inferno.cpp:603, SConstruct:4362" - name: "editor.dxa" path: "d2x-rebirth/editor.dxa" system: descent2 category: game_data required: false description: "Level editor data for the Descent 2 build" note: "Mounted only by a build with the editor enabled, when the editor opens." source_ref: "similar/editor/med.cpp:367-370, SConstruct:4362"