Hell's Gate

Dante's Inferno (Xbox 360), statically recompiled to run natively on PC.

Dante's Inferno fan artwork
Fan artwork by POOTERMAN (#12)

Latest release Ko-fi Discord Other Projects

--- Hell's Gate is a PC port of **Dante's Inferno** built with the [ReXGlue SDK](https://github.com/rexglue/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](https://github.com/DiligentGraphics/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. ## ✨ Features **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 ## 🎮 Getting started ### Windows 1. Download the latest package from [Releases](https://github.com/florinp93/hells-gate-recomp/releases). 2. Run `DantesInfernoInstaller.exe`, choose an install folder and point it at your Dante's Inferno Xbox 360 ISO. 3. Launch from the desktop shortcut, adjust settings if you like, and press **PLAY**. The launcher writes `dantes_inferno.toml` next to the game and checks for updates when it opens. ### Linux - **x86-64:** build from source (see below), or run the Windows build under Proton. The Proton path is documented in [`docs/linux-cross-compile.md`](docs/linux-cross-compile.md). - **ARM64:** a Qt launcher and AppImage are available; see [`packaging/appimage/README.md`](packaging/appimage/README.md). A working Vulkan driver is required on every platform. ### DLC 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. ## ⚙️ Settings 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. ## 🛠️ Building from source You need your own `default.xex` and game files in `game/` (see [`game/README.md`](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: ```bash 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. ### Windows ```powershell 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`](launcher/README.md)). You can also cross-compile the Windows build from Linux with `clang-cl` and `xwin`; see [`docs/linux-cross-compile.md`](docs/linux-cross-compile.md). ### Linux (Ubuntu, Vulkan)
Step-by-step native Linux build **1. Install dependencies** (keeps a backup of the manifest, which later steps overwrite): ```bash 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): ```bash pwsh ./setup.ps1 ``` **3. Configure and build the ReXGlue CLI.** The same configure command is reused below, so it is kept in a variable: ```bash 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:** ```bash 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): ```bash 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++:** ```bash "${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:** ```bash python3 patches/generated/apply_generated_patches.py ``` **8. Build the game:** ```bash "${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: ```bash ./scripts/dantes_inferno_exe.sh ```
### Linux (openSUSE Tumbleweed)
Differences from the Ubuntu steps Steps 1 to 4 were tested on Tumbleweed with Clang 23; steps 5 to 9 need `game/default.xex` and are not yet tested on openSUSE. Clone the repository to a path with no apostrophe (`'`) in it: parts of the build pass the path to the shell unquoted. **1. Install dependencies** (also installs `shaderc` and `wine`, which FidelityFX needs to generate its shader permutations): ```bash 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: ```bash ./setup.sh ``` **3 to 9.** Follow the Ubuntu steps, but use the system Clang in `CONFIGURE`: ```bash -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ```
## 🗺️ Status and roadmap **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](docs/trials_online_server_emulator.md)) | ## 📚 Documentation | Document | Topic | |---|---| | [Native renderer design](docs/NATIVE_RENDERER_DESIGN.md) | How the D3D layer is replaced, milestones | | [Native D3D map](docs/NATIVE_D3D_MAP.md) | The game's Direct3D entry points | | [Frame rate](docs/frame_rate.md) | How high refresh rates are made to work | | [VP6 FMV fix](docs/vp6_fmv_corruption_fix.md) | Video corruption root cause and fix | | [Linux cross-compile](docs/linux-cross-compile.md) | Building on Linux, running under Proton | | [ReXGlue notes](docs/rexglue_notes.md) | SDK notes and patches | | [Trials online emulator](docs/trials_online_server_emulator.md) | DLC online research | ## 🤝 Contributing Bug reports, pull requests and translations are welcome. The Italian launcher translation came from the community ([#63](https://github.com/florinp93/hells-gate-recomp/pull/63)), and the ARM64 launcher and AppImage from [#11](https://github.com/florinp93/hells-gate-recomp/pull/11). Come say hi on [Discord](https://discord.gg/mjGfv7ysG8). ## 🤖 AI usage disclosure 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. ## Credits - [ReXGlue SDK](https://github.com/rexglue/rexglue-sdk), which makes the recompilation possible - [DiligentCore](https://github.com/DiligentGraphics/DiligentCore), the graphics layer under the native renderer - [POOTERMAN](https://www.deviantart.com/pooterman) for the fan artwork - Everyone who has tested, reported bugs and contributed ## Legal 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.