From 053d6172e5c46235386faa8fa77f10a808fa888e Mon Sep 17 00:00:00 2001 From: Raf <> Date: Tue, 19 Sep 2023 00:59:09 +0800 Subject: [PATCH 1/4] bug fix: hoverbike jittering --- src/game/propobj.c | 5 ++++- src/game/timing.c | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/game/propobj.c b/src/game/propobj.c index e5a96f5b4..3a7d9ae01 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -5218,7 +5218,10 @@ void hovTick(struct defaultobj *obj, struct hov *hov) f32 ymax; f32 ymin; - if (g_Vars.lvframe60 > hov->prevframe60) { +#ifdef PLATFORM_N64 + if (g_Vars.lvframe60 > hov->prevframe60) +#endif + { prop = obj->prop; bbox = objFindBboxRodata(obj); type = &g_HovTypes[hov->type]; diff --git a/src/game/timing.c b/src/game/timing.c index 3739af362..a3589649b 100644 --- a/src/game/timing.c +++ b/src/game/timing.c @@ -39,8 +39,8 @@ void frametimeCalculate(void) diffframet = count - g_Vars.thisframestartt; g_Vars.diffframet = diffframet; - diffframe60 = (g_Vars.lostframetime60t + diffframet + CYCLES_PER_FRAME / 2) / CYCLES_PER_FRAME; - diffframe240 = (g_Vars.lostframetime240t + diffframet + CYCLES_PER_FRAME / 2 / 4) / (CYCLES_PER_FRAME / 4); + diffframe60 = (diffframet + CYCLES_PER_FRAME / 2) / CYCLES_PER_FRAME; + diffframe240 = (diffframet + CYCLES_PER_FRAME / 2 / 4) / (CYCLES_PER_FRAME / 4); } while (diffframe60 < g_Vars.mininc60); g_Vars.lostframetime60t = g_Vars.lostframetime60t + diffframet - diffframe60 * CYCLES_PER_FRAME; From 89a33774565e5f1f45469c52aa03bd8c69f955fc Mon Sep 17 00:00:00 2001 From: Raf <> Date: Tue, 19 Sep 2023 01:13:29 +0800 Subject: [PATCH 2/4] bug fix: hoverbike jittering - forgot to remove a term from the expression --- src/game/timing.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/timing.c b/src/game/timing.c index a3589649b..6e67af56b 100644 --- a/src/game/timing.c +++ b/src/game/timing.c @@ -39,8 +39,8 @@ void frametimeCalculate(void) diffframet = count - g_Vars.thisframestartt; g_Vars.diffframet = diffframet; - diffframe60 = (diffframet + CYCLES_PER_FRAME / 2) / CYCLES_PER_FRAME; - diffframe240 = (diffframet + CYCLES_PER_FRAME / 2 / 4) / (CYCLES_PER_FRAME / 4); + diffframe60 = diffframet / CYCLES_PER_FRAME; + diffframe240 = diffframet / (CYCLES_PER_FRAME / 4); } while (diffframe60 < g_Vars.mininc60); g_Vars.lostframetime60t = g_Vars.lostframetime60t + diffframet - diffframe60 * CYCLES_PER_FRAME; From 13a6cc1c286d2c3849f536c06a4ac92d21d80576 Mon Sep 17 00:00:00 2001 From: Raf <> Date: Tue, 19 Sep 2023 03:12:30 +0800 Subject: [PATCH 3/4] bug fix: hoverbike jittering - revert changes to frametimeCalculate() --- src/game/timing.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game/timing.c b/src/game/timing.c index 6e67af56b..3739af362 100644 --- a/src/game/timing.c +++ b/src/game/timing.c @@ -39,8 +39,8 @@ void frametimeCalculate(void) diffframet = count - g_Vars.thisframestartt; g_Vars.diffframet = diffframet; - diffframe60 = diffframet / CYCLES_PER_FRAME; - diffframe240 = diffframet / (CYCLES_PER_FRAME / 4); + diffframe60 = (g_Vars.lostframetime60t + diffframet + CYCLES_PER_FRAME / 2) / CYCLES_PER_FRAME; + diffframe240 = (g_Vars.lostframetime240t + diffframet + CYCLES_PER_FRAME / 2 / 4) / (CYCLES_PER_FRAME / 4); } while (diffframe60 < g_Vars.mininc60); g_Vars.lostframetime60t = g_Vars.lostframetime60t + diffframet - diffframe60 * CYCLES_PER_FRAME; From e92f556cf9cf385960f0581de37ee506831287ac Mon Sep 17 00:00:00 2001 From: Raf <> Date: Tue, 19 Sep 2023 04:07:28 +0800 Subject: [PATCH 4/4] bug fix: hoverbike jittering - also remove redundant condition from hovUpdateGround() --- src/game/propobj.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/game/propobj.c b/src/game/propobj.c index 3a7d9ae01..1ea93fe91 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -5170,7 +5170,10 @@ void hovUpdateGround(struct defaultobj *obj, struct hov *hov, struct coord *pos, RoomNum testrooms[8]; struct coord testpos; - if (g_Vars.lvframe60 > hov->prevframe60) { +#ifdef PLATFORM_N64 + if (g_Vars.lvframe60 > hov->prevframe60) +#endif + { testpos.x = pos->x; testpos.y = pos->y - 50; testpos.z = pos->z;