mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
D140 (src/game/bondview.h, bondview2.c): pause-menu crash in bondviewRenderWatch -> bondviewTransformManyPosToViewMatrix(field_23C=NULL). player +0x230 is a struct Model + RW pool punned into a 0x184-byte field run; field_23C/watch_scale_destination/pause_watch_related_adjust alias .render_pos/.scale/.animframe1. PC sizeof(struct Model) grows -> aliases break -> NULL render_pos. Fix: real inline struct Model + u32 watchRwPool[192] under #ifdef PORT; named reads redirect via GE_WATCH_* macros (N64 #else verbatim). D141 (src/game/gunfire.c): crash D140 exposed. set_enviro_fog_for_items_in_solo_watch_menu walks bodymodel->Switches[] (ModelNode* array) with raw byte offsets +0x48/+0x5c, j+=4 -> PC 8-byte stride reads garbage -> AV in modelGetNodeRwData. #ifdef PORT uses Switches[18 + (j>>2)] / Switches[23 + (j>>2)]. D118d (src/game/options.c): watch inventory list over-scrolls with keyboard W/S (one press skips several items). GE fast-scroll is a raw per-frame level check (joyGetStickY < -0x46); digital pads sit at max every frame. #ifdef PORT drops the stick term -> nav via the latched single-step path. Feel unverified headlessly. Verified: build green (ntsc-final); -level_09 framediff 3/3, -level_20 crash-free (unregressed).