From 32b2e9c28e50fe3bce0736b5ef9aa41d00c1176a Mon Sep 17 00:00:00 2001 From: fgsfds Date: Tue, 14 Nov 2023 23:58:40 +0100 Subject: [PATCH] port: fix sliding doors exploding at non-60fps framerates --- src/game/propobj.c | 9 +++++++++ src/include/types.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/game/propobj.c b/src/game/propobj.c index 2f111e6d0..3ba8b6dab 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -7671,7 +7671,12 @@ void doorTick(struct prop *doorprop) } // Update frac +#ifdef PLATFORM_N64 if (door->lastcalc60 < g_Vars.lvframe60 || g_Vars.lvupdate240 == 0) { +#else + // lastcalc60 actually stores lvframe240 + if (door->lastcalc60 < g_Vars.lvframe240 || g_Vars.lvupdate240 == 0) { +#endif doorsCalcFrac(door); } @@ -20333,7 +20338,11 @@ void doorsCalcFrac(struct doorobj *door) func0f08d460(loopdoor); } +#ifdef PLATFORM_N64 loopdoor->lastcalc60 = g_Vars.lvframe60; +#else + loopdoor->lastcalc60 = g_Vars.lvframe240; // actually use the 240hz counter for higher framerates +#endif loopdoor = loopdoor->sibling; if (loopdoor == door) { diff --git a/src/include/types.h b/src/include/types.h index 9917f21f7..171b0eda7 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -1523,7 +1523,7 @@ struct doorobj { // objtype 0x01 /*0xc4*/ s16 portalnum; /*0xc6*/ s8 soundtype; /*0xc7*/ s8 fadetime60; // counts down - /*0xc8*/ s32 lastcalc60; + /*0xc8*/ s32 lastcalc60; // port: actually stores 240hz frame number /*0xcc*/ u8 laserfade; /*0xcd*/ u8 unusedmaybe[3]; /*0xd0*/ u8 shadeinfo1[4]; // player 1