forked from Ports/goldeneye-pc-port
- 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
41 lines
1.8 KiB
Markdown
41 lines
1.8 KiB
Markdown
# Contributing
|
|
|
|
Thanks for your interest. This is a small hobby project; issues and pull
|
|
requests are welcome, but please read the ground rules first — they are what
|
|
keep the port faithful to the original game.
|
|
|
|
## Ground rules
|
|
|
|
1. **The decompilation is not modified for the port.** Everything under `src/`
|
|
and `include/` is compiled unmodified. `Makefile`, `tools/`, `rsp/`, `ld/`
|
|
belong to the N64 build and are never touched for PC work. If PC code seems
|
|
to need a behavioural change in the game, the fix belongs in `port/`.
|
|
|
|
2. **Narrow ABI exception.** The 32→64-bit transition forces a small class of
|
|
mechanical, semantics-preserving edits to ROM-serialized structs (storing an
|
|
embedded 32-bit pointer as `u32` and casting at the use site). These are
|
|
allowed, must be guarded with `#ifdef PORT`, must change no behaviour, and
|
|
must be documented. See `docs/porting-notes.md` for the catalogue of
|
|
patterns.
|
|
|
|
3. **Region macros mirror the Makefile.** `CMakeLists.txt` `REGION_DEFS` must
|
|
match the N64 `Makefile`'s per-region macro set exactly.
|
|
|
|
4. **Verify before you push.** A build-affecting change needs, at minimum, a
|
|
clean configure + build for `ntsc-final` and a crash-free run of one level
|
|
(`./build-pc/ge007.x86_64 -level_09`).
|
|
|
|
## Style
|
|
|
|
- C/C++ formatting follows `.clang-format` and `.editorconfig` in the repo
|
|
root. Match the surrounding code.
|
|
- Port-layer code is plain C11 / C++17, SDL2 + OpenGL, no extra dependencies.
|
|
- Keep commits focused and describe *why*, not just *what*.
|
|
|
|
## Where to look
|
|
|
|
- `docs/internals.md` — how the port is structured.
|
|
- `docs/porting-notes.md` — the recurring bug classes. Check here before
|
|
debugging a crash; you are likely looking at a known pattern.
|
|
- `docs/dev/` — the full finding log and per-level status.
|