Files
totk-pc-recomp/AGENTS.md
T
Valiantsin DzerakhandClaude Opus 5.5 8ea1b5721f Update the remaining explanatory files: issue form, contributing, maxwell sources, settings example, comment rule
The bug form asks for the version on the settings menu's title line instead of the window title, which has none,
points to Copy system info and to logs\totk.log. CONTRIBUTING lists the lifter's differential tests and the commit
message style for pull requests. docs/maxwell.md cites nxnative's notes by name, since nxnative rewrote them and the
line numbers pointed nowhere, and pins the MacNativeGames shorthand to the commit its line numbers were read at.
totk.ini.example gains menu_lang and input_record and points to the menu's Advanced tab for the other keys. AGENTS.md
asks comments to cite upstream code by project, file and function. README: Linux and the Steam Deck are the platforms
planned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 13:12:37 +03:00

2.5 KiB

TotK Recomp

Static recompilation of Tears of the Kingdom (Switch, ARM64) into a native Windows x86-64 exe with a Vulkan renderer. Design: docs/architecture.md. Toolchain, build commands and tests: docs/building.md.

Game content boundary

This repository is public. Game data lives outside it and every derived file stays in ignored folders.

  • The user's game and key paths are in config.local.toml (ignored). Pass the keys file path to tools; the tools read it themselves. Key values stay out of your output, logs, commands and files.
  • Everything extracted or generated goes under build/ or generated/.
  • Every file the code generator emits carries the marker defined as GENERATED_MARKER in tools/check_content.py.
  • Run python tools/check_content.py --staged before proposing a commit. It is the same check CI runs.

Reusing code

refs/ holds the upstream checkouts (tools/fetch_refs.sh recreates it). Read-only.

  • Copy only MIT, BSD, ISC, zlib or Apache-2.0 code, keep its header, and add a row to THIRD_PARTY_NOTICES.md.
  • yuzu, suyu, OpenSmash-Ultimate and other GPL code: read for behaviour, write our own.
  • tools/vendor/ stays byte-identical to upstream; Windows changes go in tools/extract.py.

Code

  • Build C with MSYS2 UCRT64 Clang (C:\msys64\ucrt64\bin). Generated C uses GNU extensions, so cl.exe is out. Call Ninja from that directory by full path or put it first on PATH.
  • Two Python environments: .venv (3.12) for the lifter and the build, .venv-py314 for the extraction and shader scripts, which need compression.zstd.
  • Generated C is never edited by hand: change the generator (recomp/).
  • Every lifter change passes the differential tests against Unicorn (docs/building.md, "Checks"). After changing recomp/jumptables.py, tests\jumptables_check.py reports 0 disagreements on 1.2.1 and 1.4.3.
  • recomp/layout.py alone decides module bases.
  • Graphics bugs: docs/maxwell.md lists the Maxwell behaviour the Vulkan path must match and the TotK bugs other ports fixed.
  • Comments say what the code does and why, in words that stand on their own. Cite our code by file plus function (a line number may follow as a hint) and upstream code by project, file and function: refs/ moves, so its line numbers rot. Commit hashes belong to the attribution of copied code.

Writing

Code, comments, docs and commit messages are in English. Commit messages are plain sentences without type prefixes.