forked from Ports/goldeneye-pc-port
fix(ci): revert GE-ENV-PROBES.md rows for uncommitted D236 probes
The v0.2.1 docs commit (572ab7bf) added GE-ENV-PROBES.md rows for the
D266-D280 tree-investigation probes, but that probe code itself was
deliberately left uncommitted (still mid-investigation, unswept). CI's
tools_pc/gen_env_probes.py --check caught the mismatch: 13 documented
vars with no live getenv() site in the committed tree. Reverting the
doc rows to match what's actually committed; they'll return together
with the probe code once the D236 investigation lands.
Claude-Session: https://claude.ai/code/session_01KwZViAFaXua3PKgHHjNgvi
This commit is contained in:
1 parent
572ab7bf5b
commit
06b675b5e8
1 file changed
+2
-14
@@ -38,11 +38,7 @@ Two classes:
|
||||
| `GE_VOICEDUMP` | `port/src/mixer.c` (`aEnvMixerImpl`) | Dumps each voice's resampled mono stream (post-resample/pre-envelope, i.e. the env-mixer input) to `voicedump.raw` as records of `[u32 stateAddr][u32 nSamples][u64 us][s16 × n]`. **The µs stamp is when the block was MIXED — records are rendered ahead, so a record's samples END at its stamp** (M-69: treating stamps as start offsets misplaces content by up to one ~33 ms block). `stateAddr` = the env-mixer state address from `[VOICEMAP]`. Used with `scratchpad/exact_match.py` for full-corpus per-voice sample verification. | **live** (D202) |
|
||||
| `GE_MIXERTRACE` | `port/src/mixer.c`, `src/audi.c` (`amDmaCallback`), `src/libultra/audio/load.c` (`_decodeChunk`, `alLoadParam`) | Per-opcode mixer trace to `mixertrace.log` (DMEM addresses, ADPCM books, decoded frames, `[DMAREQ]`/`[DMAHIT]`/`[DMAMISS]`/`[BINDTABLE]`). **WARNING: unbuffered per-opcode `fprintf`, ~25 MB/min. It slows the process enough to starve the audio thread — M-63 measured "audio at 13 % of real time" that was entirely this probe's own artifact. NEVER use it for timing-sensitive measurement; use `GE_D204`.** Grep it, never read it whole. | **live** (D202) — timing-unsafe |
|
||||
| `GE_TEXPITCH` | `port/fast3d/gfx_pc.cpp:924` (`gfx_tex_pitch_fix`, cached) | `=0` disables the D183 defensive de-stride in `import_texture` (default on). RC2/RC3 texture-shear A/B knob. | **live** (RC3 not finished) |
|
||||
| `GE_TEXRAW` | `port/fast3d/gfx_pc.cpp:1079` | With `GE_TEXDUMP`, also dumps the raw pre-import source bytes (`texdump/rNNN_f…_s…_WxH.bin`) so a decode bug can be told from a source-data bug offline (D183). M-128 addition: for CI formats it also writes `texdump/rNNN_….pal` (512 B = 256 RGB555 entries) so CI images can be decoded to RGB offline. | **live** (RC3 not finished; D269) |
|
||||
| `GE_D266` | `port/fast3d/gfx_pc.cpp` (`gfx_sp_tri1`, `#ifdef PORT`) | D236/D265 wall, 2nd pass: tri-time census of alpha-bearing draws (tile fmt / line-width / RM class). Found zero IA4 draws from the Surface 1 boot camera over 1.5M tris — killed the D265 class-(b) attribution at that viewpoint. | **live** (D269 open — investigation instrument) |
|
||||
| `GE_D266W` | `port/fast3d/gfx_pc.cpp` (`gfx_sp_tri1`, `#ifdef PORT`) | D269 band-gated all-format tracker: every draw class whose projected vertices fall in the top 3–9% of the viewport (the measured stripe band), logging fmt/line-width/oml/omh/zmode/cyc/blender/imgseq + first-vertex screen position. Identified the wall as CI8 32×32, two classes per room stream (OPA oml=0xc4112078 / XLU oml=0xc41049d8). Caveat: imgseq can be stale on texture-cache hits (stamp is bypassed — see D267); only the first vertex's position is logged (projected quad extent still owed). | **live** (D269 open — investigation instrument) |
|
||||
| `GE_D267` | `port/fast3d/gfx_pc.cpp` (`import_texture_ia8`, `#ifdef PORT`) | D267: PPM dump + alpha histogram for 32px-wide IA8 strips, plus per-tile-slot upload-sequence tracking (`d267_seq` / `d267_slot_img[128]`, stamped in the `import_texture()` dispatch) so tri-time probes can name the uploaded image a draw uses. Dumps to `scratch/d267_ia8_tile0_seq*.ppm`. | **live** (D269 open — investigation instrument) |
|
||||
| `GE_D268_FORCEA` | `port/fast3d/gfx_pc.cpp` (`import_texture_ia8`, `#ifdef PORT`) | D268 A/B knob: forces every IA8 texel alpha to the given value (0 or 15). Proved the texel-alpha blend pipeline works end-to-end (band vanishes at 0, solidifies at F) — the wall is not a broken blend path. | **live** (D269 open — A/B knob) |
|
||||
| `GE_TEXRAW` | `port/fast3d/gfx_pc.cpp:1079` | With `GE_TEXDUMP`, also dumps the raw pre-import source bytes (`texdump/rNNN_f…_s…_WxH.bin`) so a decode bug can be told from a source-data bug offline (D183). | **live** (RC3 not finished) |
|
||||
| `GE_D219RAW` | `src/game/image.c` (`texReadUncompressed`/`texChannelsToPixels`, `#ifdef PORT`) | Diagnostic-only, print-only (no behavior change): logs the runtime texture decompressor's bitstream header (texnum/format/width/height/compmethod) for every non-zlib wide-pixel image, plus a dump of the first row of decoded texels exactly as stored in the pool (post-`PORT_PIXEL16`, i.e. byte-swapped for the 16-bit family) for RGBA16/RGB15/IA16. No texnum filter — lets any suspect texture be cross-referenced against the offline ROM census (`scratch/d219_census.txt`) without narrowing by hand. | **live** (D219, closed — kept for future runtime-decoder triage) |
|
||||
| `GE_WRAPFIX` | `port/fast3d/gfx_pc.cpp:3166` (`gfx_set_wrap_fix`) | RC3 test override for the `Video.WrapFix` D74/D167 wrap-block path (`atoi != 0` wins over the ini). | **live** (RC3 not finished) |
|
||||
| `GE_SAVELOG` | `src/game/file.c:46`, `src/game/file2.c:16` (`SAVELOG` macro), `src/boss.c:749`, `src/game/objective_status.c:297,343` | Traces the campaign save/unlock chain (objective completion → `end_of_mission_briefing` → `fileWriteSave` → EEPROM). Used to confirm D157. `g_savelogObjOnce` gates the per-criterion dump to the `bossReturnTitleStage` call. | **live** (strip once a few more level boundaries are playtested) |
|
||||
@@ -84,15 +80,7 @@ Two classes:
|
||||
| `GE_D88` | `src/game/prop.c:1367`, `src/game/stan.c:3090` | D88 `Usetup*Z` propDef stream | dead (D88 family closed; D88.4 resolved) |
|
||||
| `GE_D90` | remaining: `src/game/bondview2.c:2146`, `src/game/prop.c:1391` (bondview_r.c blocks stripped M-32, `49ce620a`) | D90 bondview / prop NULL trace | dead (D90 closed) — partially removed |
|
||||
| `GE_D96` | `src/game/chrprop.c:436,507` (cached `probe`) | D96 chrprop trace | dead (D96 closed) |
|
||||
| `GE_D104` | `src/game/bg.c:~663` (rate-limited, `d104c`) | Room-render-pass visibility probe: `curRoom`/`roomsDrawn`/`budget`/per-room bboxes. **Revived 2026-09-14 for D271** (added `hasPortals` + the two D271 degenerate-bounds counters to the same print line); original D104 depth-clear investigation itself is closed. | **live** (D271 fix applied, uncommitted — user visual check owed) |
|
||||
| `GE_D271` | `src/game/bg.c` (`sub_GAME_7F0B5864`, portal-bounds builder + degenerate check) | D271: per-point z/projection capture in the portal-bounds builder; counts "ordinary" (min>max, N64's own degenerate path) vs D106-fallback (now non-finite-only, `lim=1e38`) hits separately; dumps portal/rooms/points for the first 3 fallback hits (`D271 d106 …` / `D271 ptN …`); logs finite out-of-range bounds that now flow through to `bgRectIntersect` (`D271 oor-finite …`, budget 8). Post-fix state: `d106Fallback=0` on Surface 1 + BUNKER1; the oor-finite dumps are how the per-portal N64-clamp check was done (every culled portal's finite portion is far off-screen). | **live** (D271 fix applied, uncommitted — keep until user visual check lands) |
|
||||
| `GE_D272` | `port/fast3d/gfx_pc.cpp` (`gfx_sp_tri1` + `import_texture_ci8`) | D272: per-card S/T audit for D236's two wall-card classes only (oml low-24 `0x112078`/`0x1049d8`, **now also gated on `fmt==CI/siz==8b`, M-132** — the oml match alone lets an unrelated fmt=3 class into the budget). Dumps per-tri tile fmt/siz/wh/mask/shift/UV-window + all three vertices' UV+screen+z/w (texel/NDC units) for the first 200 matching band tris (`D272[...]`); a one-shot-per-seq sampler-state line (`D272S`: cms/cmt/tex_lod/window); every CI8 upload's genmip/dims (`D272U`) and, for 32×32 uploads, the raw TLUT (`D272P`). All four lines now also carry `addr=%p` (M-132, see the `d267_slot_addr` row below) — the reliable identity field, not `seq`. Proved distinct card instances carry distinct (not identical) UV, the XLU class wraps its tile ~4.5×, mips are generated (`genmip=1`) and enabled (`tex_lod=1`) for the real wall-card tile with `GL_REPEAT` wrap (`cms=cmt=0`). | **live** (D236 open — investigation instrument) |
|
||||
| *(no env var — always-on when `#ifdef PORT`)* | `port/fast3d/gfx_pc.cpp` (`import_texture`, `d267_slot_addr[128]`) | D274 (M-132): companion to `d267_slot_img`/D267 — stamped **unconditionally**, before the texture-cache-hit early return, so it always holds the real source address of whatever is currently bound to a TMEM slot (D267's `seq` stamp is stale on a cache hit; confirmed with hard evidence: same `seq` → two different `addr` within one run). Read by the `GE_D272`-family logs' `addr=` field. Not itself env-gated; negligible cost (one pointer store). | **live** |
|
||||
| `GE_D270PIX` | `port/fast3d/gfx_pc.cpp` (`gfx_sp_tri1`, pixel-attribution probe) | D270 (backfilled)/D275: `"x0,y0[;x1,y1;...]"` (normalized 0..1, top-left origin; **up to 8 points as of D275/M-133, was single-point**) — logs every triangle covering any listed point (`D270P[ptN][i] pix=(x,y) oml=... fmt=... z/w=(...) fog=(...) addr=...`, budget 2048/point). Offline: group by point + `oml`, the min `z/w` (excluding the sky quad's construction-mandated `z/w=0`) is the front-most painter. Used by D276 to identify the weave's real painter class. | **live** (D236 investigation instrument) |
|
||||
| `GE_D270KEEPOML` / `GE_D270SKIPOML` / `GE_D270SKIP` / `GE_D270KILLALL` | `port/fast3d/gfx_pc.cpp` (`gfx_sp_tri1`, A/B isolation hooks) | D270 (backfilled): drop-by-`oml`(low-24-bit)/`fmt` A/B rules for isolating a draw class. `GE_D270KEEPOML` **gained a "kept N tris" counter (D275/M-133)** — was silent, so a black capture couldn't be told apart from a genuine render bug; now logs `D270KEEPOML: kept tri #N` for the first 4 + every 5000th. **Caveat: never combine with `GE_D266W` in the same run — documented heartbeat hang.** Class-isolation A/B attempted in D274 (inconclusive, pre-counter) — re-run with the counter once a target class is confirmed (D276). | **live** (D236 investigation instrument) |
|
||||
| `GE_D270FOG` | `port/fast3d/gfx_pc.cpp` (near frame-counter decl) | D270 (backfilled): logs every `G_SETFOGCOLOR` change with frame number. Used in the archived third pass to prove no bright fog color exists in a ~1300-frame Surface 1 run (all dark blue-gray/black). | **live** |
|
||||
| `GE_TEXRAW` cap | `port/fast3d/gfx_pc.cpp` (`import_texture`, raw-dump gate) | D270 (backfilled): the `tdc<=600` raw-dump cap (was 400) — raised to reach the wall cards' upload index within a normal boot-camera capture. Fire-particle images (`is_fire_bytes`) are exempt regardless of the cap (D219). | **live** |
|
||||
| `GE_D273` | `port/fast3d/gfx_pc.cpp` (`palette_to_rgba32`) | D273: A/B switch for CI4/CI8 palette-entry decode — standard N64 ARGB1555 (`a=15,r=14:10,g=9:5,b=4:0`) vs. the inherited PD-shifted layout (`a=bit0,r=15:11,g=10:6,b=5:1`), applied unconditionally regardless of `palette_fmt`. Pre-existing/uncommitted, undocumented until M-131; tested against a user-supplied N64 reference screenshot and **ruled out** for D236 (wall pattern unchanged; corrupts unrelated CI8 textures instead). Do not enable. | **live** (probe only; theory ruled out for D236, kept for reference) |
|
||||
| `GE_D104` | `src/game/bg.c:654` (rate-limited, `d104c`) | D104 depth-clear trace | dead (D104 closed) |
|
||||
| `GE_D71LOG` | `port/fast3d/gfx_pc.cpp:645` | D71 fast3d trace | dead (D71 closed) |
|
||||
| `GE_D75` | `src/game/title.c` `sub_GAME_7F007F30` (capped 8) | D75 Bug 2 gun-barrel model probe: logs `chrModelInstance`/`gunModelInstance` ptr+obj+numMatrices, `render_pos`, `renderData.mtxlist`, `g_GfxMemPos`, `osVirtualToPhysical(render_pos)` | **LIVE** (D75 Bug 2 OPEN — see §F "D75 Bug 2 — RUNTIME PROBE") |
|
||||
|
||||
|
||||
Reference in new issue
Block a user