4.5 KiB
DEV TESTING BRANCH. THINGS WILL BREAK HERE
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 built on top of the ReXGlue SDK. The Xbox 360 PowerPC game code is statically recompiled to x86-64, while visible rendering currently remains authoritative in the vendored RexGlue/Xenia graphics backend.
The AC6-specific graphics layer in this repo is now focused on:
- frame capture and diagnostics
- swap-path inspection and overlay reporting
- backend-fix routing for AC6-specific rendering issues
- future selective override and modding hooks
The legacy AC6 replay renderer is still present as experimental tooling, but it is not the default render path and it does not hijack presentation unless ac6_graphics_mode=legacy_replay_experimental and ac6_experimental_replay_present=true.
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.
Build
Option A: Automatic Setup (Recommended)
You can use the automated build script which handles environment setup, ISO extraction, and the multi-step CMake build:
- Place your legally obtained Ace Combat 6 ISO in the repository root directory.
- Run
setup_and_build.bat. The script will automatically locate Visual Studio, extract the assets, run codegen, and build the runtime using the MSVC backend. - Once completed, copy the compiled executable and default config to the root directory to run:
Copy-Item out/build/win-amd64-relwithdebinfo/ac6recomp.exe . -Force Copy-Item out/build/win-amd64-relwithdebinfo/ac6recomp.toml . -Force - Run
ac6recomp.exedirectly from the root directory. - Optionally create a shortcut to the executable file.
Option B: Manual Build
cmake --preset win-amd64-relwithdebinfo
cmake --build --preset win-amd64-relwithdebinfo --target ac6recomp_codegen
cmake --preset win-amd64-relwithdebinfo
cmake --build --preset win-amd64-relwithdebinfo
The executable is placed at out/build/win-amd64-relwithdebinfo/ac6recomp.exe.
On Windows, use the preset commands above rather than plain cmake -L in the repo root. If you previously configured from an x86 Visual Studio prompt or with the wrong compiler on PATH, delete out/build/win-amd64-relwithdebinfo and re-run the preset from a normal 64-bit PowerShell/CMD window or an x64 Native Tools prompt.
Recommended Configuration Tweaks
Create or modify ac6recomp.toml in your out or root directory with these settings to optimize your gameplay experience:
# Play in Fullscreen
fullscreen = true
# (Forces point lists to expand to triangle strips in the VS, bypassing deprecated GPU point-sprite limits)
d3d12_expand_point_sprites_in_vs = true
# Eliminate Microstutters
# (Decouples presentation from UI event loop thread and enables G-Sync/FreeSync VRR tearing support)
host_present_from_non_ui_thread = true
d3d12_allow_variable_refresh_rate_and_tearing = true
d3d12_low_latency_swap_chain = true
d3d12_max_frame_latency = 1
Modding Docs
Runtime Defaults
The default AC6 graphics configuration after this pivot is:
ac6_native_graphics_enabled=trueac6_graphics_mode=hybrid_backend_fixesac6_render_capture=trueac6_experimental_replay_present=false
That means the RexGlue/Xenia D3D12 backend remains the visible renderer by default, while AC6-specific analysis and diagnostics stay active.
Project layout
AC6_recomp/
|- src/
| |- ac6_backend_fixes/ AC6-specific backend diagnostics and fix routing
| |- ac6_native_graphics.* AC6 frame-boundary analysis and overlay status
| |- ac6_native_renderer/ Experimental replay renderer and research tooling
| |- d3d_hooks.* Guest D3D capture and shadow-state hooks
| `- render_hooks.* Timing and frame pacing hooks
|- thirdparty/rexglue-sdk/ Vendored RexGlue SDK
|- generated/ Generated recomp sources
|- assets/ Local game files, not kept in repo
`- docs/RENDERER_ARCHITECTURE.txt
License
See LICENSE.