Dante's Inferno Recompiled

Dante's Inferno Recompiled brings Dante's Inferno to PC.

README

Dante's Inferno - Xbox 360 to PC Port (ReXGlue)

Dante's Inferno - Fan Artwork

Fan artwork by POOTERMAN (#12)

A static recompilation port of Dante's Inferno (Xbox 360) to native PC, built with the ReXGlue SDK.

ReXGlue converts Xbox 360 PowerPC XEX executables into portable C++ that runs natively on Windows (D3D12) and Linux (Vulkan) - no emulation, no JIT at runtime.

Ko-fi Discord Other Projects

🤖 AI Usage Disclosure

Transparency and integrity are important to this project. Artificial Intelligence (AI) tools were utilized as part of the development and maintenance workflow, strictly serving as an assistant to handle repetitive, time-consuming, and low-level tasks.

How AI Was Used:
  • Documentation: Generating initial drafts, organizing notes, and structuring documentation to keep project progress up to date.
  • Research & Exploration: Investigating APIs, syntax references, and conceptual troubleshooting.
  • Git Workflows: Assisting with routine commit descriptions, repository maintenance tasks, and boilerplate structuring.
Human Oversight:

While AI accelerated the auxiliary workflow, all core architectural decisions, advanced problem-solving, code implementation, and final reviews were entirely human-driven. The AI served to eliminate friction, allowing focus on high-level logic and feature development.

Linux build (Ubuntu)

The project can also be built natively on Linux using Vulkan.

The commands below use Clang 22 and the same ReXGlue workflow used by the Windows build, with the additional Linux GPU plugin and generated-code patch step.

1. Install the required Linux dependencies

Make manifest backup and make the provided dependency installer executable and run it:

cp dantes_inferno_manifest.toml dantes_inferno_manifest.toml.back
chmod +x ./scripts/install_dantes_min.sh
./scripts/install_dantes_min.sh

This installs the compiler/toolchain and the development libraries needed by ReXGlue on Ubuntu.

2. Set up the SDK

Run the existing project setup script with PowerShell:

pwsh ./setup.ps1
3. Configure Linux and build the ReXGlue CLI
cmake -B out/build/linux-release \
  -G Ninja \
  -DCMAKE_C_COMPILER=/usr/bin/clang-22 \
  -DCMAKE_CXX_COMPILER=/usr/bin/clang++-22 \
  -DCMAKE_CXX_FLAGS="-stdlib=libstdc++ -I$(pwd)/thirdparty/rexglue-sdk/thirdparty/imgui -mssse3 -mavx2" \
  -DREXSDK_DIR=thirdparty/rexglue-sdk

cmake --build out/build/linux-release --target rexglue
4. Build the Xenos GPU plugin
cmake --build out/build/linux-release --target rexgpu-xenos

cp thirdparty/rexglue-sdk/out/linux-amd64/lib*.so \
  ./out/build/linux-release/
5. Regenerate the SDK-managed project files

Make sure game/default.xex is present before running this command:

thirdparty/rexglue-sdk/out/linux-amd64/rexglue init \
  --force \
  --project-name dantes_inferno \
  --project-root . \
  --xex-path game/default.xex \
  --game-root game
6. Generate the recompiled C++ sources

Reconfigure the project:

cmake -B out/build/linux-release \
  -G Ninja \
  -DCMAKE_C_COMPILER=/usr/bin/clang-22 \
  -DCMAKE_CXX_COMPILER=/usr/bin/clang++-22 \
  -DCMAKE_CXX_FLAGS="-stdlib=libstdc++ -I$(pwd)/thirdparty/rexglue-sdk/thirdparty/imgui -mssse3 -mavx2" \
  -DREXSDK_DIR=thirdparty/rexglue-sdk

Restore the project manifest backup, then run codegen:

cp dantes_inferno_manifest.toml.back dantes_inferno_manifest.toml

cmake --build out/build/linux-release \
  --target dantes_inferno_codegen
7. Apply the generated-code patches

The generated sources need the project-specific patches before the final game build:

python3 patches/generated/apply_generated_patches.py
8. Build the Linux executable

Reconfigure once more:

cmake -B out/build/linux-release \
  -G Ninja \
  -DCMAKE_C_COMPILER=/usr/bin/clang-22 \
  -DCMAKE_CXX_COMPILER=/usr/bin/clang++-22 \
  -DCMAKE_CXX_FLAGS="-stdlib=libstdc++ -I$(pwd)/thirdparty/rexglue-sdk/thirdparty/imgui -mssse3 -mavx2" \
  -DREXSDK_DIR=thirdparty/rexglue-sdk

Restore the manifest and build the port:

cp dantes_inferno_manifest.toml.back dantes_inferno_manifest.toml

cmake --build out/build/linux-release --target dantes_inferno

The resulting Linux executable is:

out/build/linux-release/dantes_inferno

Remove manifest backup:

cp dantes_inferno_manifest.toml.back dantes_inferno_manifest.toml
rm -rf dantes_inferno_manifest.toml.back
9. Run on Linux

From the repository root:

./scripts/dantes_inferno_exe.sh

Code dantes_inferno_exe.sh is:

 LD_LIBRARY_PATH="$PWD/thirdparty/rexglue-sdk/out/linux-amd64:$LD_LIBRARY_PATH" 
 ./out/build/linux-release/dantes_inferno

Progress Tracker

  • Game boots, runs, and is fully playable

    • ReXGlue SDK v0.10.0 codegen + native build
    • VMX/AltiVec PowerPC instructions supported
    • VP6/Bink FMV corruption fixed (upstream PR to be made)
    • Save system fixed (fiber/setjmp/longjmp + XUserFindUsers handler)
  • Graphics & input configured

    • Resolution scaling, anisotropic override, post-effect cvars
    • Aspect ratio control: 4:3 / 16:9 / 16:10 / 21:9 / 32:9
    • SDL input backend set as default
    • Mouse & keyboard keybind defaults configured
In progress
  • DLC auto-install hook (OnPostSetup STFS package scan)
  • 120 Hz / high-refresh timing polish (gameplay OK; menu/minigame timing under reverse engineering)
  • Native DiligentCore/Vulkan renderer migration (working, not fully implemented)

Roadmap

PhaseFeatureStatus
1Graphics quality cvars (resolution scale, AA, filtering)Done
2Input defaults + SDL backendDone
3DLC auto-installIn progress
4Ultrawide / aspect-ratio supportDone
5Button glyph replacement (input-device RE)Planned
6Native DiligentCore/Vulkan renderer migrationIn progress (working, not final)