mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
Prepare repository for public release
- README: attract-mode stills + demo GIF as the hero row, status/warning callouts, metrics table, "Contents" index, doc-index table; simplified the two-agent workflow diagram (LR -> TD, fewer edges) for GitHub web - Table-of-contents indexes added to internals.md, porting-notes.md, agentic-development.md, AUDIO-PLAN.md - CI: add Windows/MSYS2 build job, minimal token (contents: read), persist-credentials: false, concurrency group; run on main + master. validate job regenerates the US ROM-asset symbol file only and configures ntsc-final (PAL/JP need a region ROM; no ROM is used in CI) - .github: SECURITY.md, issue forms + chooser config, PR template, labels.yml, dependabot (Actions, monthly) - Do not track the proprietary SGI IRIX IDO toolchain or SGIImageViewer.exe; document in SetupGuide.md / building.md how to obtain IDO for N64 ROM builds (the PC port does not need it) - Stop tracking two committed *.pyc files; drop stale screenshots and a redundant .gitignore line; misc doc cross-reference fixes Claude-Session: https://claude.ai/code/session_01GULf6knbsqfsnW39tMr9WT
This commit is contained in:
1 parent
5baa53eb61
commit
4ca11e4386
32 files changed
+573
-154
No files matched your search
+20
-4
@@ -1,13 +1,29 @@
|
||||
# Porting notes — recurring N64→PC bug classes
|
||||
|
||||
A one-screen field guide to the bug classes that keep recurring when running
|
||||
big-endian 32-bit N64 game code, unmodified, on a little-endian 64-bit host.
|
||||
Each entry cites a `Dxx` label; the full evidence and fix for that instance
|
||||
live in [`dev/findings.md`](dev/findings.md) under the same label.
|
||||
A field guide to the bug classes that keep recurring when running big-endian
|
||||
32-bit N64 game code, unmodified, on a little-endian 64-bit host. Terse by
|
||||
design — each entry compresses a full investigation to a symptom, a fix, and a
|
||||
grep heuristic for finding siblings. Each entry cites a `Dxx` label; the full
|
||||
evidence and fix for that instance live in [`dev/findings.md`](dev/findings.md)
|
||||
under the same label. Skim the section headers; read the classes relevant to
|
||||
the task at hand.
|
||||
|
||||
If you are debugging a crash in this port, read this first — the odds are
|
||||
good that you are looking at one of these.
|
||||
|
||||
## Contents
|
||||
|
||||
- [A. Pointer-width struct growth (32→64) — the dominant class](#a-pointer-width-struct-growth-3264--the-dominant-class)
|
||||
- [B. 16-byte PC `Gfx` / `Vtx` vs 8-byte N64](#b-16-byte-pc-gfx--vtx-vs-8-byte-n64)
|
||||
- [C. Big-endian rodata / ROM data read on little-endian PC](#c-big-endian-rodata--rom-data-read-on-little-endian-pc)
|
||||
- [C2. Port-layer / SDL shims](#c2-port-layer--sdl-shims)
|
||||
- [D. N64 hardware idioms fast3d does not emulate](#d-n64-hardware-idioms-fast3d-does-not-emulate)
|
||||
- [D2. The HUD/model "X-mirror" — RESOLVED](#d2-the-hudmodel-x-mirror-d114d116--resolved-it-was-an-upside-down-capture)
|
||||
- [D3. GCC/mingw makes an all-non-negative `enum` UNSIGNED](#d3-gccmingw-makes-an-all-non-negative-enum-unsigned)
|
||||
- [D4. N64 "interrupts off" must be a real lock on PC](#d4-n64-interrupts-off-is-not-free-on-pc--it-must-be-a-real-lock)
|
||||
- [D5. Loop bounds that assume linker adjacency of two globals](#d5-loop-bounds-that-assume-linker-adjacency-of-two-file-scope-globals)
|
||||
- [E. Process / method notes](#e-process--method-notes)
|
||||
|
||||
## A. Pointer-width struct growth (32→64) — the dominant class
|
||||
|
||||
A decomp struct with pointer fields, or one pun-allocated into a fixed
|
||||
|
||||
Reference in new issue
Block a user