Xbox 360 games, running as native Linux binaries
This project statically recompiles Xbox 360 titles into ordinary Linux executables — no emulator process, no JIT. Each game’s PowerPC code is translated ahead-of-time to C++ by the ReXGlue SDK (an ahead-of-time recompiler rooted in the foundations of the BSD-licensed Xenia emulator), compiled with Clang, and linked against a runtime that provides an HLE Xbox kernel and a Vulkan GPU backend. The binary then plays the game from your own legally-dumped data.
Several XBLA and retail-disc titles boot, render, and play this way today.
Downloads
| What | Link |
|---|---|
| ReXGlue toolchain, prebuilt (Linux x86_64) — recompiler CLI + runtime + Vulkan GPU plugin, no SDK build needed | rexglue-linux-x86_64.tar.gz |
| ReXGlue SDK source | github.com/CrownParkComputing/rexglue-sdk |
| Ports suite (configs, scaffolds, tooling — this site’s repo) | github.com/CrownParkComputing/xbox360-ports · zip |
No game downloads are offered, ever — the downloads above contain zero game content. You bring your own legally-dumped games and the toolchain turns them into native binaries on your machine (quickstart below).
Nothing copyrighted is hosted here. The repository contains only recompiler configuration, host-shell scaffolding, tooling, and engineering notes. You must supply your own game dumps to build anything runnable.
What’s playable
| Title | Status | Notes |
|---|---|---|
| SoulCalibur | ✅ Playable | “Perfect” — guest setjmp/longjmp redirection was the key fix |
| SoulCalibur II HD | ✅ Playable | SPIR-V shader resync + load-shader pitch contract fix |
| Bubble Bobble Neo | ✅ Playable | setjmp/longjmp fix |
| Space Giraffe | ✅ Playable | setjmp/longjmp fix + thunk-cluster batch |
| Hydro Thunder Hurricane | ✅ Playable | White-surface bug fixed (texture exp_adjust fetch-constant) |
| OutRun Online Arcade | ✅ Playable | Gear-change SFX loops (XMA one-shot completion bug) |
| Choplifter HD | ✅ Playable | Needs the pixel-shader-interlock render-target path for correct colours |
| Project Gotham Racing 3 (disc) | ✅ Plays | 30 fps pacing; known glass/reflection artifacts |
| Ridge Racer 6 (disc) | 🟡 Runs | FSI render-target path + fuzzy alpha epsilon |
| Ridge Racer (disc) | 🟡 Runs | FSI render-target path for correct colours |
| Split/Second (disc) | 🟡 Boots | Multi-module title; renders past where Xenia crashes |
| Raiden Fighters Aces (disc) | 🟡 Menu | Menu renders at 64 fps; game modules in bring-up |
| Bionic Commando Rearmed | 🟡 Frozen | Renders, but game logic never advances |
| Jetpac Refuelled | 🟡 Impaired | Plays, some sprites invisible |
| SoulCalibur IV (disc) | ❌ Stalled | At parity with upstream Xenia’s known stall |
| Daytona USA | ❌ Not working | Never presents a frame |
| Geometry Wars Evolved | ❌ Not working | Silent no-present stall |
| Trials HD | ❌ Not working | XUI menus never load |
| Rainbow Islands | ❌ Not working | Bring-up incomplete |
| Bionic Commando Rearmed 2 | ❌ Not started | Scaffolded only |
See STATUS.md for the full engineering detail behind every line of this table.
How it works
- Extract —
tools/extract_game.pyunpacks your game package (XBLA STFS or disc dump) into the executable (default.xex) and its data files. - Recompile — the ReXGlue SDK analyzes the XEX, discovers function
boundaries (recorded in each title’s
config/*.toml), and emits C++ for every guest function. - Build — a small per-title host-shell project compiles that C++ and links it with the ReXGlue runtime (HLE kernel, Vulkan renderer, XMA audio).
- Play —
./play.sh <game>runs the native binary against your extracted game data, applying each title’s documented workaround flags.
Bring-up of a new title is iterative: tools/bringup.sh runs the binary,
harvests unresolved-function faults and codegen’s unresolved branch targets,
feeds them back into the recompiler config, and repeats until the title
converges.
Getting started
git clone https://github.com/CrownParkComputing/xbox360-ports.git
git clone -b development https://github.com/CrownParkComputing/rexglue-sdk.git
cd rexglue-sdk
cmake --preset linux-amd64
cmake --build --preset linux-amd64-release
cd ../xbox360-ports
export SDK_SRC=/absolute/path/to/rexglue-sdk
tools/newgame.sh mygame mg "/path/to/YOUR GAME/.../000D0000"
tools/bringup.sh mygame mg
./play.sh mygame
Requirements: Linux x86-64, Clang, CMake ≥ 3.21, Ninja, a Vulkan-capable GPU, your own legally-dumped games, and roughly 10 GB of disk per large title.
Single-game quickstart (minimal download)
The repository is tiny (~160 KB — no game content is ever committed), but if you only want one title’s recipe plus the shared tooling, sparse-checkout it and skip building the SDK by using the prebuilt toolchain:
git clone --filter=blob:none --sparse https://github.com/CrownParkComputing/xbox360-ports.git
cd xbox360-ports
git sparse-checkout set games/pgr3 tools docs # pick your game dir
# prebuilt toolchain instead of compiling the SDK:
curl -LO https://github.com/CrownParkComputing/rexglue-sdk/releases/latest/download/rexglue-linux-x86_64.tar.gz
tar xzf rexglue-linux-x86_64.tar.gz
Point the game’s build at the extracted toolchain, supply your own dump under
games/<name>/extracted, and build/play as above. The GPU plugin
(librexgpu-xenos.so) must sit next to the built game binary — the tooling
stages it automatically.
Full instructions, layout, and troubleshooting live in the repository README.
Legal
This project ships no copyrighted material — no game executables, assets, extracted data, or recompiler output derived from game binaries. You must dump games you own, with your own console. Recompiled binaries embed copyrighted game code and must never be redistributed.
Not affiliated with, nor endorsed by, Microsoft or Xbox. Educational, preservation, and interoperability purposes. All trademarks and copyrights belong to their respective owners.