mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
The D318/D320 guard freeze is not a platform-invariant lock. modelTickAnim folds numticks into one modelSetAnimFrame2WithChrStuff call, which only advances framea/frameb when floor(frame) crosses an integer. At 1 tick/frame (port at 60 fps) and attack speed 0.5-0.8, a pair left equal by the aim-hold endframe clamp is re-emitted stale after the endframe is raised, so the model pins forever. At >=2 ticks/frame (N64's normal regime) it cannot. - model.c (#ifdef PORT, Rule-2 sign-off): when the loop did not run and the current endframe no longer blocks the next frame, re-derive frameb as modelSetAnimFrame does. GE_D329=0 disables, GE_D329LOG=1 logs triggers. - Verified: lockstep clk=1 no longer pins (Facility ai_19, Control ai_9, WSL + native Windows, watchdog off); 0 triggers at clk=2; user playtest confirms N64-matching Ourumov timing. Bunker1 golden failure predates it (identical with the fix off). - d318bprobe (TEMP, env-gated): attack-state probe + GE_D318B_CLK lockstep. - d320repro: fix jump=<chr>,... parser (documented form never parsed). - findings D329 + D318/D320/D321 corrections, porting-notes D13.
14 lines
411 B
C
14 lines
411 B
C
/* d318bprobe.h -- D318/D320 boundary probe (M-199 step 2).
|
|
*
|
|
* Env-gated per-tick ground-truth logger for the aim-hold / derail /
|
|
* anim-pin state machine of chrlvTickAttack + chrlvTickAttackCommon.
|
|
* Read-only; inert without GE_D318B. TEMP: remove when D318/D320
|
|
* conclude (same class as d320repro.c).
|
|
*/
|
|
#ifndef D318BPROBE_H
|
|
#define D318BPROBE_H
|
|
|
|
void d318bProbeTick(void);
|
|
|
|
#endif /* D318BPROBE_H */
|