mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
PC port: phase 1.5 — handoff notes updated for D33 implementation session
Record ROM-dump verification (No-Intro [!] byte-identical, CRCs re-checked) in AGENTS.md phase status, PCPortResearch §H state, and HANDOFF current state, so the next session starts from a verified foundation.
This commit is contained in:
1 parent
bd56cff073
commit
b3000825f2
3 files changed
+10
-1
No files matched your search
@@ -47,7 +47,7 @@ Run `/linkcheck` for this sweep. Record new findings in `docs/PCPortResearch.md`
|
||||
- **Phase 0 (scaffolding):** done, committed.
|
||||
- **Compile+link milestone:** all ~235 TUs compile and `ge007.x86_64.exe` links clean (`ninja ge007 -k 0`, 236/236). Findings D7–D17 in `docs/PCPortResearch.md` §11; asset stubs in `port/src/assetstubs.c`, fast3d no-ops in `port/src/gfxstub.c` (delete when real fast3d lands).
|
||||
- **Phase 1 (boot to window):** done — ROM loads/validates/maps at cart base 0x10000000 (`romdata.c`), SDL2 window + GL clear loop (`video.c`), absolute asset symbols from `scripts/gen_romassets.py` → `port/src/romassets_<r>.s` (findings D18–D23).
|
||||
- **Phase 1.5 (boot to first frame):** IN PROGRESS — mainThread runs through `bossInitMainthreadData()`; D31 (langInit file-load SIGSEGV) fixed via real-zlib decompression (`port/src/rzdecomp.c`, replaces the excluded `src/game/decompress.c`+`zlib.c`). Current blocker is **D32** (ROM-struct pointer-width): Part A (u32 layout in `ModelAnimation`) done; Part B **root-caused (D33)** — the ROM stores structured fields big-endian (per-field load-time fixup needed) + an x86-64 loop-stride bug in `expand_ani_table_entries`; fix designed, implementation next. Recurring sub-task: ABI/layout fixes per the D32 procedure (§H) as more asset loading is reached.
|
||||
- **Phase 1.5 (boot to first frame):** IN PROGRESS — mainThread runs through `bossInitMainthreadData()`; D31 (langInit file-load SIGSEGV) fixed via real-zlib decompression (`port/src/rzdecomp.c`, replaces the excluded `src/game/decompress.c`+`zlib.c`). Current blocker is **D32** (ROM-struct pointer-width): Part A (u32 layout in `ModelAnimation`) done; Part B **root-caused (D33)** — the ROM stores structured fields big-endian (per-field load-time fixup needed) + an x86-64 loop-stride bug in `expand_ani_table_entries`; fix designed, implementation next. ROM dump verified against the No-Intro good dump (byte-identical, header CRCs re-checked — `tools_pc/romverify.c`). Recurring sub-task: ABI/layout fixes per the D32 procedure (§H) as more asset loading is reached.
|
||||
- **Phase 2 (rendering):** bring in PD fast3d (replaces `port/src/gfxstub.c`), verify custom CC/RM modes against `gmain.s`, port the scheduler; replace asset stubs with ROM-backed data (D16). Assumes ABI-clean data loading from Phase 1.5.
|
||||
- **Phase 3 (audio + input):** libaudio → SDL; decide the ASP strategy (C2: `aspMain*` dummies in `ucode.c`).
|
||||
- **Phase 4 (saves + polish):** file-backed EEPROM; PFS/motor already no-op stubs.
|
||||
@@ -24,6 +24,10 @@ when the user is back: a booting game.
|
||||
- Region macros in `CMakeLists.txt` must mirror the N64 Makefile exactly.
|
||||
|
||||
## Current state (verified this session)
|
||||
- **ROM dump verified:** the No-Intro good dump `GoldenEye 007 (U) [!].z64` is
|
||||
byte-identical to both dev ROM copies and its header CRCs re-compute clean
|
||||
(`tools_pc/romverify.c`). Fingerprint + provenance in Environment below —
|
||||
trust it, don't re-verify.
|
||||
- **D31 FIXED:** langInit file-load crash gone (real-zlib `decompressdata` in
|
||||
`port/src/rzdecomp.c`). mainThread boots into `bossInitMainthreadData()`.
|
||||
- **D32 Part A DONE:** `ModelAnimation` pointer fields → `u32` (N64 layout, sizeof 64).
|
||||
|
||||
@@ -1106,6 +1106,11 @@ big-endian byte order — a per-field endianness fixup is required at load time;
|
||||
8 bytes/iter, rebasing only even-indexed entries). The fix design is complete
|
||||
and validated against all 173 ROM entries; **implementation is the immediate
|
||||
task** (three small edits — see D33 "Fix design"). No frames rendered yet.
|
||||
**ROM provenance locked:** the working ROM is byte-identical to the No-Intro
|
||||
good dump `GoldenEye 007 (U) [!].z64` (MD5 `70c525880240c1e838b8b1be35666c3b`,
|
||||
0xC00000 bytes, country 'E'); embedded header CRCs DCBC50D1/09FD1AA3
|
||||
re-computed and matched via `tools/n64cksum.c`'s CIC-6102 routine — see
|
||||
`tools_pc/romverify.c` (one-shot re-check) and docs/HANDOFF.md Environment.
|
||||
|
||||
**D32 repeatable fix procedure** (apply to any ROM-serialized struct that faults
|
||||
on a pointer-field read):
|
||||
|
||||
Reference in new issue
Block a user