From 38ddfa01fc051cadbd16b3968608f9fd68e700e2 Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Mon, 15 Jan 2024 19:32:19 -0600 Subject: [PATCH] Fix frandom Mario Party 7 left a copy of the function which revealed that it took a parameter --- src/game/frand.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/game/frand.c b/src/game/frand.c index ca352d6d..69e83264 100644 --- a/src/game/frand.c +++ b/src/game/frand.c @@ -2,26 +2,25 @@ static u32 frand_seed; -static inline u32 frandom(void) +static inline u32 frandom(u32 param) { - u32 rand = frand_seed; s32 rand2, rand3; - if (rand == 0) { - rand = rand8(); - rand = rand ^ (s64)OSGetTime(); - rand ^= 0xD826BC89; + if (param == 0) { + param = rand8(); + param = param ^ (s64)OSGetTime(); + param ^= 0xD826BC89; } - rand2 = rand / (u32)0x1F31D; - rand3 = rand - (rand2 * 0x1F31D); - rand = rand2 * 0xB14; - rand = rand - rand3 * 0x41A7; - return rand; + rand2 = param / (u32)0x1F31D; + rand3 = param - (rand2 * 0x1F31D); + param = rand2 * 0xB14; + param = param - rand3 * 0x41A7; + return param; } u32 frand(void) { - return frand_seed = frandom(); + return frand_seed = frandom(frand_seed); } f32 frandf(void) { @@ -34,7 +33,7 @@ f32 frandf(void) { u32 frandmod(u32 arg0) { u32 ret; - frand_seed = frandom(); + frand_seed = frandom(frand_seed); ret = (frand_seed & 0x7FFFFFFF)%arg0; return ret; } \ No newline at end of file