Skip to content

Repository files navigation

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.

cover

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 .iso contents.
  • 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


8. Issues


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

About

Recomp of Asura's Wrath using RexGlue for PC (wip)

Topics

Resources

Stars

8 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages