mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
Docs-of-record for the D69 stage-load milestone (docs/PCPortResearch.md D78-D82): decoded bg/*.seg (header/room/envdata/portal tables) and Tbg_*_stanZ (prefix offset-array + StandTile records) formats, plus two struct-layout ABI fixes required before any byte-swap conversion can work: - D78: StandTile's `u32 id:24` + non-bitfield `u8 room` packs into one 4-byte word on N64/MIPS-GCC (8-byte tile header) but never shares storage on x86 GCC (10-byte header), silently misaligning every mid/tail/points field read on PC regardless of endianness. `id` is provably dead code (no reads/writes anywhere) so it's widened to a 3-byte array under #ifdef PORT, restoring the exact N64 stride. - D79: bg_room_data's 3 `void *` offset fields are never dereferenced (grep-verified, always used as plain u32 arithmetic) but silently grow the 24-byte N64 room record to 40 bytes on x86-64. Declared `u32` under #ifdef PORT instead -- size-preserving, no behavior change. Both are narrow, individually-documented #ifdef PORT layout exceptions per AGENTS.md non-negotiable #2 (same class as D53.1/D53.2/D66). Adds docs/BRIEF-D69-stage-load.md (milestone brief) for reference. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C3xib6jjMV8o2iE4JfixAo