mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
Re-audited the M-28 bgTestRayIntersectionInRoom GBI-parser port (bg.c): - G_TRI1 (w1>>16/8/0 & 0xff /10) and all 12 G_TRI4 nibble recoveries cross-checked twice against the N64 #else path and the raw BE-word bit layout -- both CORRECT, no change. - BUG: vtxoff read gdl->dma.par & 0xf. The PC Gdma_le shim maps .par to bits 0-23 of word0 (packed length, 16-aligned) not the N64 byte-1 params field at bits 16-23, so vtxoff was silently 0 -> wrong vtxbase[idx] for any G_VTX batch with v0 != 0. Now ((u32)gdl->words.w0 >> 16) & 0xf. - Sibling ported: bgTestBulletHitBackground tail (post-hit G_SETTILE back-scan for tileformat/tilesize) was itself an unported raw ((u8*)gdl)[0]/[1] + 64-bit words.w0<<11>>30 parser over the same D85-widened 16-byte room DL. #ifdef PORT: opcode from bits 24-31, byte1 from bits 16-23, (u32)-forced 32-bit width for the tilesize shift. N64 path kept under #else. - Diagnostic: GE_D154=1 logs the parsed cmd / vtx-index stream (call header + per-TRI1/TRI4 idx) for the first 64 invocations so the integrator/user can eyeball the parse. Verification is playtest-gated (shoot a wall/floor on an idle machine) -- the no-input level sweep never enters this function. Build green (ntsc-final, 242/242). ABI/GBI-parse only, no game-logic change. docs/PCPortResearch.md D154 + PORT-LEARNINGS §B updated.