Decompilation of Deus Ex: Human Revolution
Go to file
2023-01-12 16:39:52 +00:00
3rdParty move {fmod,imgui,miniz} -> 3rdParty 2022-10-29 12:43:36 +01:00
bfx add empty bfx classes 2022-06-23 10:53:25 +01:00
camera use minimal camera manager 2023-01-03 23:37:31 +00:00
cdcAnim this engine has both AnimComponent and AnimComponentV2 2022-12-09 20:37:20 +00:00
cdcFile rename sys -> cdcSys 2022-10-29 21:57:44 +01:00
cdcGameShell linux: forgot to call localstr_reload 2022-12-23 15:52:03 +00:00
cdcGeom rename math -> cdcMath 2022-10-29 12:25:00 +01:00
cdcKit/Animation this engine has both AnimComponent and AnimComponentV2 2022-12-09 20:37:20 +00:00
cdcLocale rename filesystem -> cdcFile 2022-10-28 14:33:06 +01:00
cdcMath rename math -> cdcMath 2022-10-29 12:25:00 +01:00
cdcMulticore add cdc::Job 2022-12-09 19:10:13 +00:00
cdcObjects rename gameshell -> cdcGameShell 2022-12-21 19:49:18 +00:00
cdcResource sys: use indirect iterator in SList (to allow erasing) 2022-12-22 22:50:11 +00:00
cdcScript add enough scripting system so call and handle NsScaleformMovieController::ProcessMovieFunction 2022-12-04 19:23:59 +00:00
cdcSound sound: minimal implementation of SoundPlexChoiceList 2022-12-25 16:07:40 +00:00
cdcSys sound: SoundPlexWave shall self-delete when the corresponding voice has stopped, and voice deletion is enabled by maintainance of the VoiceCollection linked list 2022-12-22 22:50:19 +00:00
cdcWorld rename gameshell -> cdcGameShell 2022-12-21 19:49:18 +00:00
eventually_generated sound: minimal implementation of SoundPlexChoiceList 2022-12-25 16:07:40 +00:00
game I think code/game/ in TR corresponds to game/ in DX:HR 2022-12-23 01:41:46 +00:00
input implement linux mouselook 2022-11-13 01:33:56 +00:00
postprocessing rename LInkedList -> cdc::SList, Array -> cdc::Array 2022-11-06 17:43:50 +00:00
rendering remove types.h 2023-01-12 16:39:52 +00:00
res add screenshot for readme 2022-10-21 20:17:02 +01:00
scene add dtp::IntermediateMesh and GetIMFPointerFromId 2022-11-13 04:44:18 +00:00
CMakeLists.txt rename gameshell -> cdcGameShell 2022-12-21 19:49:18 +00:00
config.h.in make dependency on d3dcompiler optional 2022-08-07 21:25:41 +01:00
DXHRDC.shad remove execute bit from DXHRDC.shad 2022-05-08 20:12:22 +01:00
dxvk-build-linux32.txt support linux build 2022-08-07 22:17:32 +01:00
dxvk-meson.patch support linux build 2022-08-07 22:17:32 +01:00
objtree.txt add objtree.txt 2022-05-22 21:11:29 +01:00
README.md README: small fixes 2022-12-09 19:09:31 +00:00
spinnycube.cpp remove types.h 2023-01-12 16:39:52 +00:00
spinnycube.h d3d is made of structs, not classes 2022-06-29 14:52:31 +01:00

Welcome

Screenshot

Code here is decompiled with IDA Pro and manually cleaned up, uninlined and rewritten to use templates. It is not a matching decompilation, and there is no workflow to merge the functions here with functions from the binary. The .exe contains class names as part of RTTI (see objtree.txt) but there has been no source leak. There has however been a debug info leak for Tomb Raider (2013). It's a different game, but uses a similar engine. This debug info contains:

  • file names and line numbers
  • function and class names
  • function signatures (argument and return types)
  • struct layouts (including inheritance and template names)

The first commit to integrate information from Tomb Raider is dated 14 July 2022. Some parts have no correspondence to Tomb Raider, for example everything in the 'camera', 'input' or 'postprocessing' subdirectory.

How to build (Linux 32-bit binary on Linux)

This build uses DirectX 11 through the dxvk-native project. CMake will automatically download and build the sources.

git clone https://github.com/rrika/cdcEngineDXHR.git
cd cdcEngineDXHR
mkdir native_build
cd native_build
cmake .. -DNATIVE_BUILD=ON
make

How to build (Windows 32-bit binary on Linux)

This build requires the Windows SDK. There exists a Rust tool named xwin that can download it on non-windows systems. See the rustup instructions for how to install Rust. Once that is done you can build and run xwin.

cargo install xwin --locked
xwin --accept-license --arch x86 splat
mv .xwin-cache/splat winsdk # need this specific folder name
# rm -rf .xwin-cache # if you want

The CMake build of this project expects to be in a directory adjacent to winsdk.

git clone https://github.com/rrika/cdcEngineDXHR.git
cd cdcEngineDXHR
mkdir build
cd build
cmake ..
make

How to build (Windows 32-bit binary on Windows)

In Visual Studio 2019 choose "Open a local folder" on start-up. VS should detect the CMakeLists.txt file and set up the build for you. Be sure to select x86, not x64.

How to run

This project requires a copy of Deus Ex: Human Revolution Director's Cut to run. In the installation location you will find a number of files:

BIGFILE.000
BIGFILE.001
BIGFILE.002
...
DXHRDC.exe

Run the binary as follows:

export BIGFILE=path/to/game/BIGFILE.000
./dxhr     # for linux build
./dxhr.exe # for windows build

In Visual Studio you can set the environment to BIGFILE=C:/path/to/game/BIGFILE.000 in the project properties.