1:1 source port of the engine and game code; Windows build and system layer; docs. No game files or SDK headers.

This commit is contained in:
CRTkafa 2026-10-22 16:30:40 +08:00
parent c3b032a45a
commit 0ecb47e9cb
3871 changed files with 91080 additions and 1640063 deletions

32
docs/port/AGENT-BRIEF.md Normal file
View file

@ -0,0 +1,32 @@
# Brief for porting agents (Windows host, 2026-10-22)
Read `docs/port/HANDOFF.md` and `docs/port/PORTING.md` first; this file only lists the Windows differences and the rules
for parallel agents.
## Tools on this Windows PC
- Whole-tree check: `bash tools/port/check_all.sh [--mac]`.
- Decompile lookup: `export PATH=~/bin:$PATH; python tools/port/fn.py 'Class::Method'` (use `python`, not `python3`;
`~/bin/c++filt.exe` is installed). Data: `python tools/port/readdata.py SYMBOL N FMT`. `parity-out/` is already here.
- Compile check (step 5) runs on the MacBook because the headers need Apple frameworks:
`tools/port/check_mac.sh port/game/X.cpp [more files]` -> prints `CHECK-OK` or the first errors per file. It syncs
`port/` to `~/choc3-check` on `ssh mac` (one ssh connection per call, ~3 s). Never run anything else on the Mac.
- Generated headers (`defaultfont.h` etc.) are already in the tree and gitignored. Do not commit them.
- Reference headers: `choc3/cpp_src/<Class>.h` (shipped originals, copied to `port/game/`); ported engine headers in
`port/include/pf`; DWARF layouts in `docs/port/types/pflib_types.txt`.
## Rules (the owner's, strict)
- 1:1 port: every function from the GAME decompile (the shipped binary wins over the SDK debug build), cited
`// game @0x... sdk @0x...` (game-only classes: `game @` only). No guessed constants, no hand-placed coordinates,
no behaviour added, no cleanup that changes results. Read both decompiles branch by branch before and after writing.
- Do not mark anything "playable"/"ready". No emulator/Wine runs, no sound, no apps launched, no simulator.
- Own only the files of your package. Other agents run in parallel in the same checkout: never edit, reformat, stash,
reset, checkout or delete files that are not yours, never touch `docs/port/MANIFEST.tsv` (the lead recomputes it).
Shared headers (`port/include/pf/*`): a minimal fix needed by your class is allowed, but re-run
`tools/port/check_mac.sh` on the whole tree before committing it and mention it in your report.
- Commit locally only (never push), as you finish each class: `git add <your files>` then
`git commit -m "1:1 port: <classes>"` (identity is already `CRT <hi@crt.fyi>`; NO Co-Authored-By, no AI
attribution; if `.git/index.lock` exists wait 5 s and retry). Commit messages never mention game names beyond the
class names.
- Every check must pass `tools/port/check_mac.sh <your files>` = `CHECK-OK` before the commit.
- Report: classes finished, function counts, any decision or header fix, anything you could not port and why.
Keep the report under 300 words.