Files
goldeneye-pc-port/docs
James DansereauandClaude Sonnet 5 12e957347c D69.1: bg/stan format spec + StandTile/bg_room_data ABI layout fixes (D78-D82)
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
2026-08-27 20:22:08 -04:00
..
2026-08-17 13:48:42 -04:00