mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
d439dfeaeb001e30ef1456f4c94cf93dd0d263fc
stackpad2[-8] negative stack write -> crash on fire
gunUpdateAndFire's KF7 branch (`mdlhdr->Skeleton == &skeleton_gun_kf7`) does `((f32*)stackpad2)[-8] = ...` then reads it back into matrix_scalar_multiply -- a decomp register-allocation stackpad: a scratch f32 the N64 compiler placed 32 bytes below the `u8 stackpad2[4]` local. GCC's x86-64 stack layout is different, so the negative index scribbles into an unrelated stack slot (return-address / saved-reg area) -> 0xc000001d illegal-instruction the moment you fire a KF7. Found via scripted-input (walk+fire) testing: 12 campaign levels survived a firefight script, Caverns (-level_39) crashed reproducibly on a settled machine at gunfire.c:817. addr2line -> gunUpdateAndFire. The KF7 is a common campaign weapon (Facility/Surface/Caverns guards) so this would hit the user early. Fix: real `f32 kf7_flashscale` local under #ifdef PORT; N64 stackpad expression kept under #else. Caverns now survives repeated fire to frame 1500+; -level_09 unregressed. PORT-LEARNINGS §A (stackpad hazard).
Goldeneye 007
About this repository
This is a WIP decompilation of Goldeneye 007!
It builds the following ROMs:
- ge007.u.z64
sha1: abe01e4aeb033b6c0836819f549c791b26cfde83 - ge007.j.z64
sha1: 2a5dade32f7fad6c73c659d2026994632c1b3174 - ge007.e.z64
sha1: 167c3c433dec1f1eb921736f7d53fac8cb45ee31
Note: This repository does not include all assets necessary for compiling the ROMs. A prior copy of the game is required to extract the assets.
Documentation
- Setup Guide: useful information about installing the necessary dependencies and how to use it
- Structure Guide: learn more about the project structure of this repository
- Style Guide: code style conventions if you want to contribute code
Languages
C
92.9%
C++
2.8%
Python
1.8%
Assembly
1.2%
HTML
0.4%
Other
0.7%