Dante's Inferno (Xbox 360), statically recompiled to run natively on PC.
Fan artwork by POOTERMAN (#12)
Hell's Gate is a PC port of Dante's Inferno built with the ReXGlue SDK. The game's Xbox 360 PowerPC executable is translated ahead of time into portable C++ and compiled into a native program. There is no emulator and no JIT at runtime.
On top of the recompiled game, Hell's Gate ships its own renderer: the game's Direct3D layer is replaced by a project-owned implementation on DiligentCore (Vulkan), so the game draws at any resolution and aspect ratio without emulating the Xenos GPU.
You need your own copy of the game. Hell's Gate contains no game files. The installer asks for an Xbox 360 ISO of Dante's Inferno that you dumped yourself.
Playability - Fully playable from start to finish, including saves - DLC support: drop STFS packages into the DLC folder and they install on launch - Game language picked from the languages your copy's region contains
Graphics (native renderer, default since 0.8.0) - Any render resolution, detected from your display by default - Ultrawide and super-ultrawide (16:10, 21:9, 32:9) and the original 4:3 - 60, 120, 180 or 240 FPS, with menus and minigames kept at the correct speed - SMAA anti-aliasing, anisotropic filtering, higher-resolution shadow maps
Input - Mouse and keyboard with rebindable keys - Xbox and PlayStation controllers through SDL3 (XInput also available) - Button prompts match the device in use: Xbox, PlayStation or your keyboard / mouse bindings
Launcher - One-click installer that extracts your ISO - Settings, keybinds, DLC folder and log toggle in one place - Built-in updater from GitHub Releases - Interface in English, Spanish, Portuguese, French and Italian
DantesInfernoInstaller.exe, choose an install folder and point it at
your Dante's Inferno Xbox 360 ISO.The launcher writes dantes_inferno.toml next to the game and checks for
updates when it opens.
docs/linux-cross-compile.md.packaging/appimage/README.md.A working Vulkan driver is required on every platform.
Open the launcher's DLC tab, click Open DLC Folder, copy your DLC STFS package files in, then start the game. They are installed automatically on startup.
Everything below is exposed in the launcher. Advanced users can pass the same options as command-line flags.
| Setting | Flag | Notes |
|---|---|---|
| Resolution | --dante_resolution=WIDTHxHEIGHT |
Defaults to your display's native resolution |
| Frame rate | --video_mode_refresh_rate=60 |
60 / 120 / 180 / 240. Use multiples of 60 |
| SMAA | --dante_smaa=true |
On by default |
| Shadow quality | --dante_shadow_scale=2 |
Shadow map scale, 1–4 |
| Renderer | --renderer=dante |
xenos is the D3D12 fallback (see below) |
If the native renderer misbehaves on your machine, set
renderer_override in dantes_inferno.toml to fall back to the emulated
Xenos/D3D12 path.
You need your own default.xex and game files in game/ (see
game/README.md). Requirements: Git, CMake 3.25+, Ninja,
Clang 18+ (Clang 22 on Linux), Python 3 and PowerShell 7 (pwsh). Windows
also needs Visual Studio 2022 with the Windows SDK.
The native renderer needs DiligentCore. Clone it before running setup so the project's patches are applied to it:
git clone --depth 1 --recurse-submodules https://github.com/DiligentGraphics/DiligentCore.git thirdparty/diligent-core
pwsh ./setup.ps1 # clones ReXGlue SDK v0.10.0 and applies the patches in patches/
On Linux, ./setup.sh does the same without PowerShell and also clones
DiligentCore.
cmake --preset win-amd64-release -DREXSDK_DIR=thirdparty\rexglue-sdk
cmake --build out\build\win-amd64-release --target dantes_inferno_codegen
python patches\generated\apply_generated_patches.py
cmake --build out\build\win-amd64-release --target dantes_inferno
To package the launcher, installer and game into a release folder, run
launcher\package-release.ps1 (details in
launcher/README.md).
You can also cross-compile the Windows build from Linux with clang-cl and
xwin; see docs/linux-cross-compile.md.
cp dantes_inferno_manifest.toml dantes_inferno_manifest.toml.back
chmod +x ./scripts/install_dantes_min.sh
./scripts/install_dantes_min.sh
**2. Set up the SDK** (after cloning DiligentCore as above):
pwsh ./setup.ps1
**3. Configure and build the ReXGlue CLI.** The same configure command is
reused below, so it is kept in a variable:
CONFIGURE=(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)
"${CONFIGURE[@]}"
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** (`game/default.xex` must be
present):
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++:**
"${CONFIGURE[@]}"
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:**
python3 patches/generated/apply_generated_patches.py
**8. Build the game:**
"${CONFIGURE[@]}"
cp dantes_inferno_manifest.toml.back dantes_inferno_manifest.toml
cmake --build out/build/linux-release --target dantes_inferno
rm dantes_inferno_manifest.toml.back
The executable is `out/build/linux-release/dantes_inferno`.
**9. Run it** from the repository root:
./scripts/dantes_inferno_exe.sh
cp dantes_inferno_manifest.toml dantes_inferno_manifest.toml.back
./scripts/install_opensuse.sh
**2. Set up the SDK** without PowerShell. `setup.sh` does what `setup.ps1`
does and also clones DiligentCore and applies its patch:
./setup.sh
**3 to 9.** Follow the Ubuntu steps, but use the system Clang in `CONFIGURE`:
-DCMAKE_C_COMPILER=clang
-DCMAKE_CXX_COMPILER=clang++
Current release: 0.8.0-beta
| Area | Status |
|---|---|
| Recompiled game: boots, saves, fully playable | ✅ Done |
| FMV (VP6) playback fixes | ✅ Done |
| Mouse & keyboard, SDL controller support | ✅ Done |
| Ultrawide and 4:3 | ✅ Done |
| DLC auto-install | ✅ Done |
| High refresh rate (up to 240 FPS) | ✅ Done |
Native renderer (--renderer=dante) |
✅ Default; still being refined |
| SMAA, higher-resolution shadows | ✅ Done |
| Button glyphs (Xbox / PlayStation / keyboard) | ✅ Done |
| Trials of Saint Lucia online server | 🔬 In development (research) |
| Document | Topic |
|---|---|
| Native renderer design | How the D3D layer is replaced, milestones |
| Native D3D map | The game's Direct3D entry points |
| Frame rate | How high refresh rates are made to work |
| VP6 FMV fix | Video corruption root cause and fix |
| Linux cross-compile | Building on Linux, running under Proton |
| ReXGlue notes | SDK notes and patches |
| Trials online emulator | DLC online research |
Bug reports, pull requests and translations are welcome. The Italian launcher translation came from the community (#63), and the ARM64 launcher and AppImage from #11. Come say hi on Discord.
AI tools were used as an assistant for documentation drafts, research into APIs and references, and routine Git work such as commit messages. Core architecture, problem-solving, implementation and final review are done by the project's human developers.
Hell's Gate is an unofficial fan project and is not affiliated with or endorsed by Electronic Arts, Visceral Games or Microsoft. Dante's Inferno is a trademark of its respective owners. This repository contains no game code or assets; you must provide your own legally obtained copy of the game.
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|