Fix frandom

Mario Party 7 left a copy of the function which revealed that it took a parameter
This commit is contained in:
gamemasterplc 2024-01-15 19:32:19 -06:00
parent 8c72dd1db5
commit 38ddfa01fc

View file

@ -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;
}