- Resolve merge conflicts in CMakeLists.txt, .gitignore, and all src/ files, keeping the HEAD (native renderer) versions throughout - Remove stale SDK alternate-tree ref (rexglue-sdk~6e0ca2f) from index - Drop scratch files: 'New Text Document.txt', *.bak - Rewrite README with full setup instructions, prereqs table, build preset table, run command, project layout overview, and Linux section
AC6Recomp
Caution
This project is still work in progress. It can boot and run in-game, but bugs, crashes, and missing functionality should be expected.
A native PC port of Ace Combat 6: Fires of Liberation (Xbox 360), built on top of the ReXGlue SDK. The Xbox 360 PowerPC binary is statically recompiled to x86-64 so the original game logic runs natively on your host CPU, with a fully native D3D12/Vulkan renderer replacing the original Xenos GPU pipeline.
Repository policy
This repository contains source code only.
Do not commit or redistribute:
- retail game data
default.xex- disc images, packages, title updates, or firmware files
- console keys or any other proprietary Microsoft / publisher material
Users must supply their own legally obtained game files locally.
Prerequisites
| Tool | Version | Notes |
|---|---|---|
| CMake | 3.25+ | |
| Ninja | any recent | required generator |
| Clang/LLVM | any recent | clang / clang++ must be on PATH |
| Windows SDK | 10.0.19041+ | D3D12 headers (Windows only) |
Note
The Linux preset uses
clang-20/clang++-20directly. Install the versioned binaries via your distro's package manager (apt install clang-20) or via the LLVM APT repository.
Acquiring the game files
- Obtain the original Xbox 360 disc image (ISO) by dumping your own disc.
Guides and tools: consolemods.org – ISO Extraction & Repacking - Extract the XEX and game data from the ISO.
- Place the resulting files inside the
assets/directory (created manually — it is git-ignored):
assets/
default.xex ← required by the codegen step
media/ ← game data (audio, video, maps, …)
…
Clone
git clone https://github.com/sal063/AC6_recomp.git
cd AC6_recomp
Note
The ReXGlue SDK (
thirdparty/rexglue-sdk/) is vendored directly in the repository. No submodule init is needed.
Build
1 — Generate the recompiled code (first time, and after updating default.xex)
cmake --preset win-amd64-relwithdebinfo
cmake --build --preset win-amd64-relwithdebinfo --target ac6recomp_codegen
This step reads assets/default.xex, lifts all PowerPC instructions to C++, and writes the output to generated/. It can take a few minutes.
2 — Build the runtime
cmake --build --preset win-amd64-relwithdebinfo
The executable is placed at:
out/build/win-amd64-relwithdebinfo/ac6recomp.exe
Tip
RelWithDebInfois the recommended preset — it gives near-release performance with symbols intact for debugging. A fullReleasebuild disables assertions and can be used for distribution.
Available presets
| Preset | Platform | Build type |
|---|---|---|
win-amd64-debug |
Windows | Debug |
win-amd64-release |
Windows | Release |
win-amd64-relwithdebinfo |
Windows | RelWithDebInfo ✅ recommended |
linux-amd64-debug |
Linux | Debug |
linux-amd64-release |
Linux | Release |
linux-amd64-relwithdebinfo |
Linux | RelWithDebInfo |
Run
./out/build/win-amd64-relwithdebinfo/ac6recomp assets
The single argument is the path to the directory containing your game files (assets/ by default). The runtime resolves all paths relative to it.
Linux
Substitute win-amd64-relwithdebinfo with linux-amd64-relwithdebinfo in every command above.
cmake --preset linux-amd64-relwithdebinfo
cmake --build --preset linux-amd64-relwithdebinfo --target ac6recomp_codegen
cmake --build --preset linux-amd64-relwithdebinfo
./out/build/linux-amd64-relwithdebinfo/ac6recomp assets
Project layout
AC6_recomp/
├── src/ Host-side runtime & renderer
│ ├── main.cpp
│ ├── ac6_native_graphics.* Xenon → native GPU command translation
│ ├── ac6_native_renderer/ Native rendering backend (D3D12 / Vulkan)
│ │ ├── backends/ Per-API backend implementations
│ │ ├── frame_plan.* Frame dependency graph construction
│ │ ├── frame_scheduler.* CPU/GPU timeline management
│ │ ├── native_renderer.* Top-level renderer orchestration
│ │ └── render_device.* Device abstraction layer
│ └── d3d_hooks.* Low-level D3D intercept layer
├── thirdparty/rexglue-sdk/ ReXGlue SDK (vendored)
├── assets/ ← NOT in repo; place your game files here
├── generated/ ← NOT in repo; output of codegen step
├── CMakeLists.txt
└── CMakePresets.json
License
See LICENSE.