
Asura's Wrath
Port nativo de Asura's Wrath para PC.
Asura's Wrath
Port nativo basado en su ficha de origen.
README del repositorio
Asura's Wrath Recompiled
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
1. Requirements
- 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.
2. Setup
Clone Repository
git clone --recursive https://github.com/PauloUbirajara/asuras-wrath-recomp.git
cd asuras-wrath-recomp
3. Build
Requires the .iso contents in extracted/ to build.
Option A: Using CMake Presets (Linux / Windows / Android)
Linux
cmake --preset linux-amd64-release
cmake --build out/build/linux-amd64-release --parallel
Windows
cmake --preset win-amd64-release
cmake --build out/build/win-amd64-release --parallel
Android
cmake --preset android-aarch64-release
cmake --build out/build/android-aarch64-release --parallel
Option B: Using Build Scripts
Linux
# 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
Windows
# 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
Android
# Build release APK
./build_android.sh
# Build debug APK
./build_android.sh --debug
# out/dist/asura_wrath_recomp_android.apk
4. Game Setup
In 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/game
Available 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) |
5. Run
Expected Folder Structure Before Running
Linux
├── asura_wrath_recomp # Executable
├── extracted/ # .iso contents
├── librexgpu-xenos.so
├── librexruntime.so
└── libTracyClient.so
Windows
├── asura_wrath_recomp.exe # Executable
├── extracted/ # .iso contents
├── rexgpu-xenos.dll
├── rexruntime.dll
└── TracyClient.dll
Save Locations
| OS | Location |
|---|---|
| Linux | ~/.local/share/asura_wrath_recomp |
| Windows | %USERPROFILE%\Documents\asura_wrath_recomp\ |
| Android | <user picks the save location> |
Linux
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=1920
Windows
asura_wrath_recomp.exe
Android
# 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/.MainActivity
6. Custom Run Flags
Custom Backend
asura_wrath_recomp.exe --gpu_backend=vulkan
asura_wrath_recomp.exe --gpu_backend=d3d12
Custom Resolution
asura_wrath_recomp --window_width=1920 --window_height=1080
Selecting GPU Device
List 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=1
Render Target Path (fsi vs fbo)
fbo: 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=fsi
Switch back to host framebuffers:
asura_wrath_recomp --render_target_path_vulkan=fbo
7. Credits
- 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)
8. Issues
- 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)
9. TODO
- 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
Comentarios (0)
Inicia sesión para dejar un comentario.
Sé el primero en comentar sobre este juego.
