PC port of Asura's Wrath (default.xex, Title ID 43430817) via Xbox 360 static PowerPC recompilation to C++23.
Note: Android port is experimental, use on your own risk.
https://www.youtube.com/playlist?list=PLVyuezqTsTB0
Original illustration by Satoshi Sakai
- A copy of the Xbox 360 game ISO (
Asura's Wrath.iso). - extract-xiso tool to extract
.isocontents. - CMake 3.25+ and Clang / Ninja compiler toolchain.
git clone --recursive https://github.com/PauloUbirajara/asuras-wrath-recomp.git
cd asuras-wrath-recompRequires the .iso contents in extracted/ to build.
cmake --preset linux-amd64-release
cmake --build out/build/linux-amd64-release --parallelcmake --preset win-amd64-release
cmake --build out/build/win-amd64-release --parallelcmake --preset android-aarch64-release
cmake --build out/build/android-aarch64-release --parallel# Build binary
./build.sh
# Build binary and create release zip archive in out/ directory
./build.sh --package
# out/
# ├── build
# │ └── linux-amd64-release
# └── dist
# ├── asura_wrath_recomp_linux_x86_64
# └── asura_wrath_recomp_linux_x86_64.zip# Build binary
build.bat
# Build binary and create release zip archive in out/ directory
build.bat --package
# out/
# ├── build
# │ └── win-amd64-release
# └── dist
# ├── asura_wrath_recomp_win_amd64.exe
# └── asura_wrath_recomp_win_amd64.zip# Build release APK
./build_android.sh
# Build debug APK
./build_android.sh --debug
# out/dist/asura_wrath_recomp_android.apkIn the same directory as the executable, run the following:
# Extract Game ISO
mkdir -p extracted/
extract-xiso -x asura_wrath.iso -d extracted/
# (Optional) Install DLC Content (Not supported/tested yet)If extracted game is somewhere else, it can be specified via the --game_data_root argument:
asura_wrath_recomp --game_data_root=/path/to/extracted/gameAvailable ReXGlue Path Configuration Flags:
| Flag | Description | Default |
|---|---|---|
--cache_root |
Directory for compiled Vulkan pipeline and shader storage. | cache |
--game_data_root |
Root directory containing extracted game files. | extracted (if exists) or current directory |
--metadata_root |
Directory for game metadata. | (empty) |
--update_data_root |
Directory containing game update / DLC patches. | (empty) |
--user_data_root |
Directory for user save games and profile data. | %USERPROFILE%\Documents\asura_wrath_recomp (Windows) |
--user_data_root |
Directory for user save games and profile data. | ~/.local/share/asura_wrath_recomp (Linux) |
├── asura_wrath_recomp # Executable
├── extracted/ # .iso contents
├── librexgpu-xenos.so
├── librexruntime.so
└── libTracyClient.so
├── asura_wrath_recomp.exe # Executable
├── extracted/ # .iso contents
├── rexgpu-xenos.dll
├── rexruntime.dll
└── TracyClient.dll
| OS | Location |
|---|---|
| Linux | ~/.local/share/asura_wrath_recomp |
| Windows | %USERPROFILE%\Documents\asura_wrath_recomp\ |
| Android | <user picks the save location> |
asura_wrath_recomp
# Linux (What currently works best for me)
asura_wrath_recomp \
--async_shader_compilation=true \
--render_target_path_vulkan=fsi \
--vulkan_async_skip_incomplete_frames=true \
--vulkan_device=1 \
--vulkan_pipeline_creation_threads=6 \
--window_height=1080 \
--window_width=1920asura_wrath_recomp.exe# Install the game on your phone/emulator
adb install -r out/dist/asura_wrath_recomp_android.apk
# Run the game
adb shell am start -n asura_wrath.recomp/.MainActivityasura_wrath_recomp.exe --gpu_backend=vulkan
asura_wrath_recomp.exe --gpu_backend=d3d12asura_wrath_recomp --window_width=1920 --window_height=1080List available GPUs and their index numbers on your system:
vulkaninfo --summary | grep -E 'GPU[0-9]+:|deviceName'Output:
GPU0:
deviceName = Intel(R) UHD Graphics (CML GT2)
GPU1:
deviceName = NVIDIA GeForce GTX 1650
GPU2:
deviceName = llvmpipe (LLVM 20.1.8, 256 bits)
Pass --vulkan_device=<index> to target a specific GPU (e.g., index 1 for discrete NVIDIA GPU):
asura_wrath_recomp --vulkan_device=1fbo: Host framebuffers (default, higher performance, can produce color artifacts on some GPUs).fsi: Fragment Shader Interlock (software EDRAM pixel packing, fixes red overlay artifacts on NVIDIA GPUs).
Fix red overlay artifact on NVIDIA GPUs:
asura_wrath_recomp --vulkan_device=1 --render_target_path_vulkan=fsiSwitch back to host framebuffers:
asura_wrath_recomp --render_target_path_vulkan=fbo- Powered by ReXGlue (https://github.com/rexglue/rexglue-sdk), an open-source static recompilation framework for Xbox 360 software.
- UI touch controls made possible by using kenney.nl Xbox gamepad assets (https://kenney.nl/assets/input-prompts)
- Had to use FSI over FBO to avoid red artifacts (performance loss / stutters due to on-demand texture / shader compilation - also seen in https://github.com/rexglue/rexglue-sdk/blob/71782a3bc15cd1994381757fae7d616242f22e6a/src/graphics/vulkan/render_target_cache.cpp#L44-L63)
- Add touch controls for Android (?)
- Improve performance
- Make DLCs work
- Test for Android (?)
- Test for Windows (?)
- Make consistent builds
- Make it easier to build & run