forked from Ports/goldeneye-pc-port
docs: Pages site cleanup step 1 - curated publish set + cross-link fixes (#51)
* docs: step 1 of the docs/site cleanup - whitelist Pages site config, fix cross-links to excluded docs, drop game-behavior-reference index bullet Publish only the curated set (index/building/internals/porting-notes/ dev-process/agentic-development); everything else under docs/ stays in the repo but out of the Pages build and sitemap. Cross-links from the published pages to excluded docs now point at GitHub blob URLs so they still resolve. No content rewrite yet -- steps 2-5 (README update, per- page descriptions, light copy passes, repo hygiene) remain. Claude-Session: https://claude.ai/code/session_016TaKy6AAsVUTfjkhrX6CjG * docs(dev-process): add §6 -- keep PR/git-history noise low Squash-merge single-purpose/docs PRs, batch same-session docs updates into one branch instead of one-PR-per-finding, keep unrelated housekeeping off active branches, declare stacked-PR dependencies, and triage the open-PR list every session -- close stale PRs (superseded by newer main content) rather than force-merging or endlessly rebasing them. Prompted by this session's PR #26: real conflicts against main because D191/D193/D149 were all fixed/closed since it was opened; closed rather than rebased.
This commit is contained in:
1 parent
b577008543
commit
4d45e78176
7 files changed
+94
-33
No files matched your search
+42
-22
@@ -3,8 +3,8 @@
|
|||||||
title: GoldenEye 007 PC Port
|
title: GoldenEye 007 PC Port
|
||||||
description: >-
|
description: >-
|
||||||
A native PC port of the original Nintendo 64 GoldenEye 007, built from its
|
A native PC port of the original Nintendo 64 GoldenEye 007, built from its
|
||||||
decompiled source, and a case study in AI-agent collaboration on a large
|
decompiled source with a software RSP — plus the engineering record:
|
||||||
low-level codebase.
|
internals, porting notes, and the two-agent development workflow.
|
||||||
theme: jekyll-theme-cayman
|
theme: jekyll-theme-cayman
|
||||||
show_downloads: false
|
show_downloads: false
|
||||||
|
|
||||||
@@ -26,26 +26,46 @@ plugins:
|
|||||||
- jekyll-sitemap
|
- jekyll-sitemap
|
||||||
|
|
||||||
# jekyll-relative-links (on by default for Pages) rewrites the .md links in
|
# jekyll-relative-links (on by default for Pages) rewrites the .md links in
|
||||||
# these docs to .html so cross-links work on the published site.
|
# these docs to .html so cross-links work on the published site. Links that
|
||||||
|
# must reach docs kept out of the site build point at the GitHub blob URL
|
||||||
|
# instead, so they resolve from the published pages too.
|
||||||
|
|
||||||
# Rolling local working files - not useful as published pages.
|
# ---------------------------------------------------------------------------
|
||||||
|
# The site publishes a small curated set (see docs/dev/notes/DE-SLOP-DOCS-PLAN.md):
|
||||||
|
# index.md, building.md, internals.md, porting-notes.md, dev-process.md,
|
||||||
|
# dev/agentic-development.md
|
||||||
|
# Everything else under docs/ is working material - the finding log, level
|
||||||
|
# status, backlogs, plans, inherited decomp guides. It stays in the repo (and
|
||||||
|
# on GitHub) but is excluded from the site build so it never shows up as a
|
||||||
|
# published page or in sitemap.xml.
|
||||||
exclude:
|
exclude:
|
||||||
|
- BACKLOG.md
|
||||||
- HANDOFF.md
|
- HANDOFF.md
|
||||||
|
- SetupGuide.md
|
||||||
# Keep the raw engineering record (finding log, per-level status, triage
|
- StructureGuide.md
|
||||||
# notes, backlogs) out of sitemap.xml so search engines aren't steered at it.
|
- StyleGuide.md
|
||||||
# The pages still build and stay reachable from cross-links; the two dev/
|
- dev/AUDIO-PLAN.md
|
||||||
# docs that are linked from the site index are kept in.
|
- dev/AUDIT-M6-player-offsets.md
|
||||||
defaults:
|
- dev/D172-PARTICLE-COLOR-RESEARCH.md
|
||||||
- scope:
|
- dev/D176a-SKY-NOTES.md
|
||||||
path: "dev"
|
- dev/GE-ENV-PROBES.md
|
||||||
values:
|
- dev/GRAPHICS-BACKLOG.md
|
||||||
sitemap: false
|
- dev/HANDOFF-ARCHIVE.md
|
||||||
- scope:
|
- dev/LEVEL-OBJECTIVES.md
|
||||||
path: "dev/agentic-development.md"
|
- dev/LEVEL-PLAYTEST.md
|
||||||
values:
|
- dev/LEVEL-STATUS.md
|
||||||
sitemap: true
|
- dev/LINUX-PORT.md
|
||||||
- scope:
|
- dev/M-35-PLAYTEST-CHECKLIST.md
|
||||||
path: "dev/game-behavior-reference.md"
|
- dev/M-35-QOL-REVIEW.md
|
||||||
values:
|
- dev/M-36-TRIAGE.md
|
||||||
sitemap: true
|
- dev/MODERN-PORT-FEATURES-BACKLOG.md
|
||||||
|
- dev/OPTIONS-MENU-PLAN.md
|
||||||
|
- dev/QOL-INVENTORY.md
|
||||||
|
- dev/TEXTURE-GLITCH-ANALYSIS.md
|
||||||
|
- dev/UNLOCKED-FPS-PLAN.md
|
||||||
|
- dev/VIEWMODEL-RESEARCH.md
|
||||||
|
- dev/WIDESCREEN-FOV-PLAN.md
|
||||||
|
- dev/findings-index.csv
|
||||||
|
- dev/findings.md
|
||||||
|
- dev/game-behavior-reference.md
|
||||||
|
- dev/release-dropin-rom-plan.md
|
||||||
+4
-4
@@ -43,9 +43,9 @@ binutils), `make`, `git`, and `python3`. They build a small host-compiled
|
|||||||
`tools/extractor` and slice blobs straight out of the ROM — **no IDO / IRIX
|
`tools/extractor` and slice blobs straight out of the ROM — **no IDO / IRIX
|
||||||
toolchain is involved in extraction or in the PC build.** (The IDO toolchain is
|
toolchain is involved in extraction or in the PC build.** (The IDO toolchain is
|
||||||
only needed to build the N64 ROM itself, and its proprietary SGI binaries are
|
only needed to build the N64 ROM itself, and its proprietary SGI binaries are
|
||||||
not distributed here — see [`SetupGuide.md`](SetupGuide.md) "Recompile IDO".)
|
not distributed here — see [`SetupGuide.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/SetupGuide.md) "Recompile IDO".)
|
||||||
On Windows this is easiest under WSL or a Linux VM. Full details and
|
On Windows this is easiest under WSL or a Linux VM. Full details and
|
||||||
alternatives (Docker) are in [`SetupGuide.md`](SetupGuide.md).
|
alternatives (Docker) are in [`SetupGuide.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/SetupGuide.md).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ and run:
|
|||||||
(US extraction is a prerequisite for the others.)
|
(US extraction is a prerequisite for the others.)
|
||||||
|
|
||||||
This populates `assets/` with the generated `.bin` blobs the build needs. See
|
This populates `assets/` with the generated `.bin` blobs the build needs. See
|
||||||
[`SetupGuide.md`](SetupGuide.md) for the in-depth build/asset pipeline.
|
[`SetupGuide.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/SetupGuide.md) for the in-depth build/asset pipeline.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -158,4 +158,4 @@ runtime. `ge007.ini` is written under `data/` on first launch.
|
|||||||
| `GE_PCDUMP="first-last:step"` | dump rendered frames as PPM (debugging) |
|
| `GE_PCDUMP="first-last:step"` | dump rendered frames as PPM (debugging) |
|
||||||
|
|
||||||
More diagnostic switches are cataloged in
|
More diagnostic switches are cataloged in
|
||||||
[`dev/GE-ENV-PROBES.md`](dev/GE-ENV-PROBES.md).
|
[`dev/GE-ENV-PROBES.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/GE-ENV-PROBES.md).
|
||||||
+40
-1
@@ -41,7 +41,8 @@ more room.
|
|||||||
Lewis's agents recorded generalisable IDO quirks in a learnings file; later
|
Lewis's agents recorded generalisable IDO quirks in a learnings file; later
|
||||||
agents read it and did better. Our equivalent is
|
agents read it and did better. Our equivalent is
|
||||||
[`porting-notes.md`](porting-notes.md) — the recurring N64→PC bug classes,
|
[`porting-notes.md`](porting-notes.md) — the recurring N64→PC bug classes,
|
||||||
each entry a terse index into the full [`dev/findings.md`](dev/findings.md)
|
each entry a terse index into the full
|
||||||
|
[`dev/findings.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/findings.md)
|
||||||
log. Every investigation brief links it, and every investigation ends by
|
log. Every investigation brief links it, and every investigation ends by
|
||||||
appending any new generalisable quirk.
|
appending any new generalisable quirk.
|
||||||
|
|
||||||
@@ -91,6 +92,44 @@ Then hand the agent the *findings*, not just the problem.
|
|||||||
inverted here — the hard part is identifying the implicit hardware/ABI
|
inverted here — the hard part is identifying the implicit hardware/ABI
|
||||||
contract the already-readable C depends on.
|
contract the already-readable C depends on.
|
||||||
|
|
||||||
|
## 6. Keep PR/git-history noise low
|
||||||
|
|
||||||
|
A session produces a lot of small, independently-verifiable units of work —
|
||||||
|
one Dxx row, one docs pass, one mechanical fix. Left unmanaged that turns
|
||||||
|
into a pile of small open PRs that's harder to review than the work
|
||||||
|
justifies. Rules:
|
||||||
|
|
||||||
|
- **Squash-merge single-purpose and docs-only PRs.** The repo has squash
|
||||||
|
merge enabled; use it (`gh pr merge --squash --delete-branch`) for anything
|
||||||
|
whose in-branch commit history (iteration, probe-add, probe-strip) isn't
|
||||||
|
itself useful to keep — which is most PRs. Reserve a plain merge commit for
|
||||||
|
a PR whose individual commits are each a distinct, reviewable unit someone
|
||||||
|
might want to `git revert` independently (e.g. this session's PR #50: a
|
||||||
|
fix commit + a separate analysis-only commit).
|
||||||
|
- **Batch same-session, same-flavor docs updates into one PR/branch**
|
||||||
|
instead of opening a new PR per finding row. A runtime re-check that
|
||||||
|
updates one `findings.md` row (like #48) doesn't need its own PR if
|
||||||
|
another docs-only branch is already open in the same session — fold it in.
|
||||||
|
Only split into separate PRs when the pieces have genuinely different
|
||||||
|
review/merge timing (e.g. one needs a human playtest, the other doesn't).
|
||||||
|
- **A branch takes only the change it's named for.** Don't let unrelated
|
||||||
|
housekeeping (a stray gitignore fix, a config tweak) ride along on an
|
||||||
|
active feature/fix branch just because it's the one checked out — cut a
|
||||||
|
separate branch, even for a one-line change.
|
||||||
|
- **Stacked PRs declare the dependency in the title/body** ("step 2 of N,
|
||||||
|
step 1 is #N") and get rebased/merged in order promptly — don't let a
|
||||||
|
later step sit open so long the earlier step's content drifts under it.
|
||||||
|
- **Triage the open-PR list at least once a session**, ordered by
|
||||||
|
time-to-close (docs-only and non-draft first, human-playtest-gated last).
|
||||||
|
A PR idle long enough that `main` has moved past the finding rows it
|
||||||
|
touches is **stale, not just old** — check for real textual conflict
|
||||||
|
(`git merge-tree`), not just calendar age. If `main` already has more
|
||||||
|
current information than the PR (a bug the PR still lists `OPEN` that's
|
||||||
|
since been fixed and verified), **close it rather than force a merge or
|
||||||
|
spend a cycle rebasing it** — re-derive only whatever part of its content
|
||||||
|
is still true as a fresh, small PR against current `main`. Merging stale
|
||||||
|
content back over newer information is a regression, not a save.
|
||||||
|
|
||||||
## Investigation-brief template
|
## Investigation-brief template
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ issues still outstanding.
|
|||||||
|---|---|
|
|---|---|
|
||||||
| Calendar time | 16 days (16 Aug – 1 Sep 2026), one person part-time |
|
| Calendar time | 16 days (16 Aug – 1 Sep 2026), one person part-time |
|
||||||
| Commits on the port | ~223 |
|
| Commits on the port | ~223 |
|
||||||
| Root-caused bugs logged | 162 (`D1`–`D169` in [`findings.md`](findings.md); some later merged or withdrawn) |
|
| Root-caused bugs logged | 162 (`D1`–`D169` in [`findings.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/findings.md); some later merged or withdrawn) |
|
||||||
| Handoff sessions | ~33 (`M-2` … `M-33`) |
|
| Handoff sessions | ~33 (`M-2` … `M-33`) |
|
||||||
| Game-source files given `#ifdef PORT` ABI edits | 63 files, 241 blocks |
|
| Game-source files given `#ifdef PORT` ABI edits | 63 files, 241 blocks |
|
||||||
| New port-layer / tooling files | 128 |
|
| New port-layer / tooling files | 128 |
|
||||||
@@ -261,4 +261,5 @@ Honest notes, for anyone weighing whether this transfers.
|
|||||||
|
|
||||||
**Still outstanding** (parked below crash/level work): audio is not
|
**Still outstanding** (parked below crash/level work): audio is not
|
||||||
implemented; several front-end 3D transforms and some text rendering are
|
implemented; several front-end 3D transforms and some text rendering are
|
||||||
wrong. See [`GRAPHICS-BACKLOG.md`](GRAPHICS-BACKLOG.md).
|
wrong. See
|
||||||
|
[`GRAPHICS-BACKLOG.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/GRAPHICS-BACKLOG.md).
|
||||||
@@ -30,5 +30,4 @@ and cutscenes are rough.
|
|||||||
- **[Development process](dev-process.md)** — how work was scoped, partitioned, and budgeted across agents; the finding-log discipline.
|
- **[Development process](dev-process.md)** — how work was scoped, partitioned, and budgeted across agents; the finding-log discipline.
|
||||||
- **[Internals](internals.md)** — architecture, the software RSP-emulation approach, GoldenEye-vs-Perfect-Dark engine differences, the phased plan.
|
- **[Internals](internals.md)** — architecture, the software RSP-emulation approach, GoldenEye-vs-Perfect-Dark engine differences, the phased plan.
|
||||||
- **[Porting notes](porting-notes.md)** — the recurring Nintendo 64 → PC bug classes hit during the port, with fixes.
|
- **[Porting notes](porting-notes.md)** — the recurring Nintendo 64 → PC bug classes hit during the port, with fixes.
|
||||||
- **[Game-behavior reference](dev/game-behavior-reference.md)** — how the retail N64 game is meant to behave: combat/AI model, difficulty scaling, per-level objectives, timers, weapon data, and the original game's known quirks.
|
|
||||||
- **[Building](building.md)** — full build and asset-extraction guide.
|
- **[Building](building.md)** — full build and asset-extraction guide.
|
||||||
+3
-2
@@ -5,8 +5,9 @@
|
|||||||
> external references. The phased plan in section 8 is largely done through
|
> external references. The phased plan in section 8 is largely done through
|
||||||
> Phase 2 — for current status see the
|
> Phase 2 — for current status see the
|
||||||
> [README](https://github.com/jkdansereau/goldeneye-pc-port#status) and
|
> [README](https://github.com/jkdansereau/goldeneye-pc-port#status) and
|
||||||
> [`dev/LEVEL-STATUS.md`](dev/LEVEL-STATUS.md); for the blow-by-blow finding
|
> [`dev/LEVEL-STATUS.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/LEVEL-STATUS.md);
|
||||||
> log see [`dev/findings.md`](dev/findings.md).
|
> for the blow-by-blow finding log see
|
||||||
|
> [`dev/findings.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/findings.md).
|
||||||
|
|
||||||
This document captures the research done to plan a PC port of
|
This document captures the research done to plan a PC port of
|
||||||
GoldenEye 007, based on the decompilation this repository is forked from
|
GoldenEye 007, based on the decompilation this repository is forked from
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ 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
|
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
|
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
|
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)
|
evidence and fix for that instance live in
|
||||||
|
[`dev/findings.md`](https://github.com/jkdansereau/goldeneye-pc-port/blob/main/docs/dev/findings.md)
|
||||||
under the same label. Skim the section headers; read the classes relevant to
|
under the same label. Skim the section headers; read the classes relevant to
|
||||||
the task at hand.
|
the task at hand.
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user