Files
AC6_recomp/README.md
T

112 lines
4.5 KiB
Markdown

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](https://github.com/rexglue/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:
1. Place your legally obtained **Ace Combat 6 ISO** in the repository root directory.
2. 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.
3. Once completed, copy the compiled executable and default config to the root directory to run:
```powershell
Copy-Item out/build/win-amd64-relwithdebinfo/ac6recomp.exe . -Force
Copy-Item out/build/win-amd64-relwithdebinfo/ac6recomp.toml . -Force
```
4. Run `ac6recomp.exe` directly from the root directory.
5. Optionally create a shortcut to the executable file.
### Option B: Manual Build
```bash
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:
```toml
# 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
- [Texture Swap Modding Guide](docs/TEXTURE_SWAP_MODDING_GUIDE.txt)
- [Texture Swap Reference](docs/TEXTURE_SWAPS.txt)
## Runtime Defaults
The default AC6 graphics configuration after this pivot is:
- `ac6_native_graphics_enabled=true`
- `ac6_graphics_mode=hybrid_backend_fixes`
- `ac6_render_capture=true`
- `ac6_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
```text
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](LICENSE).