Tekken 6 Recomp

Tekken 6 Recomp is a Windows port of Tekken 6 that allows users to press F3 to show or hide the FPS and frame-time overlay.

README

Tekken 6 Recomp

Static recompiler project for the Xbox 360 release of Tekken 6. Game data and generated code come from a user-provided XEX and are kept out of version control.

Windows build

For a Linux-hosted Windows build, use an extracted LLVM-MinGW distribution. Initialize the SDK submodule and apply the repository patch before configuring the native SDK. Generate guest code from your own game XEX, then configure the Windows build:

git submodule update --init --recursive
python3 tools/apply_rexglue_patches.py

cmake -S third_party/rexglue-sdk -B build/sdk-native -G Ninja \
  -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
  -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS=-mssse3 \
  -DREXGLUE_ENABLE_TRACY=OFF -DREXGLUE_ENABLE_PERF_COUNTERS=OFF
cmake --build build/sdk-native --target rexglue --parallel 3
third_party/rexglue-sdk/out/linux-amd64/rexglue codegen tekken6_manifest.toml

cmake -S . -B build/windows-llvm -G Ninja \
  -DCMAKE_TOOLCHAIN_FILE=cmake/windows-clang.cmake \
  -DLLVM_MINGW_ROOT=/path/to/extracted/llvm-mingw \
  -DCMAKE_BUILD_TYPE=Release -DTEKKEN6_USE_PREGENERATED_CODE=ON \
  -DREXGLUE_USE_D3D12=ON -DREXGLUE_USE_VULKAN=ON \
  -DREXGLUE_ENABLE_TRACY=OFF -DREXGLUE_ENABLE_PERF_COUNTERS=OFF \
  -DREXGLUE_RECOMP_DEBUG_INFO=none
cmake --build build/windows-llvm --target tekken6 tekken6_low_overhead \
  tekken6_late_depth tekken6_fused_resolve tekken6_vulkan \
  tekken6_vulkan_fbo --parallel 2

python3 tools/package_windows.py --build-dir build/windows-llvm \
  --game-root /path/to/game --output /path/to/windows-package \
  --llvm-mingw-root /path/to/extracted/llvm-mingw

The package tool checks PE imports, stages required compiler runtime DLLs, and writes a build-info.json manifest with source revisions and binary hashes. SDK changes are maintained in the project patch. CMake defaults to Release when no build type is selected. Generated guest code uses FMA3 by default for faster explicit fused operations; the resulting executable requires an FMA3-capable CPU. Set -DTEKKEN6_ENABLE_FMA3=OFF for a portable build.

Portable ISO builder

The release can include a self-contained Tekken 6 Builder.exe beside its builder folder. Players extract the complete release, choose their own ISO with the Windows file picker, select one or more renderer checkboxes, and pick an output folder. The D3D12 ROV option is checked by default and is labeled as the widest-compatibility choice. No compiler installation or network access is needed on the player's PC. The ISO and its game files are never included in the builder release.

To assemble that release folder, first build the Windows GUI and XDVDFS helper, then provide LLVM-MinGW 20260908 MSVCRT x64 (Clang 23.1.1), portable CMake, Ninja, and the Python embeddable package. The bundled compiler's fixed capabilities are supplied by cmake/windows-portable-capabilities.cmake so players do not repeat the compiler feature probes.

cmake --build build/windows-llvm --target tekken6_builder xdvdfs_tool --parallel "$(nproc)"
python3 tools/package_portable_builder.py \
  --builder-exe build/windows-llvm/tekken6_builder.exe \
  --llvm-mingw-root /path/to/llvm-mingw \
  --cmake-root /path/to/cmake \
  --ninja /path/to/ninja.exe \
  --python-root /path/to/python-embeddable \
  --xdvdfs-tool build/windows-llvm/tools/xdvdfs/xdvdfs_tool.exe \
  --output build/Tekken6-Builder-Windows

Release versions are set in VERSION.txt; the builder window, Windows file details, and package manifests use that version. For 0.9.4, archive the complete build/Tekken6-Builder-Windows folder as Tekken6-Builder-Windows-0.9.4.zip. Keep Tekken 6 Builder.exe and its builder folder together. The folder contains the pinned project sources and build tools; the game itself is extracted from the player's ISO when they run the builder. Project sources stay in one archive to reduce the number of files in the initial unzip; the builder unpacks them automatically when the first build starts.

Game compilation uses the available CPU threads, limited by available memory. After a successful build, temporary sources, extracted game copies, and compiler outputs are deleted automatically. The activity indicator keeps animating while the build runs, and the Build button stays disabled after completion.

Press F3 in game to show or hide the FPS and frame-time overlay. It reports guest frame swaps independently of the host's overlay or presentation rate. Routine logs are disabled in the Windows launcher. Unhandled crashes write crash.txt and crash.dmp under crashes/<run>/.

The startup chooser offers internal 3D resolutions from 640x360 through the original 1024x576. It also enables a 512x512 size for the 1024x1024 offscreen target by default; this can soften shadows. Uncheck the option to keep the original offscreen size.

Rendering paths

tekken6.exe selects D3D12 ROV. The runtime includes no-blend shader specialization, ROV sample-count variants, and direct RGBA8 packing for known targets. Unsupported states retain the general shader path. Late-depth and fused RGBA8 resolves are available through their optional launchers.

tekken6_vulkan.exe selects Vulkan fragment shader interlock (FSI). It requires a Vulkan device and driver that expose fragment shader interlock. The explicit request fails if the extension is unavailable. tekken6_vulkan_fbo.exe selects the experimental framebuffer path, which does not require interlock.

The launcher keeps user saves, shader caches, and crash reports in the package directory. Game files and generated recompilation sources are local inputs and must not be committed.