Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions config/YFEE01/arm9/delinks.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ src/fade.cpp:
.text start:0x0201bc28 end:0x0201db38
.data start:0x020ce8f4 end:0x020ce974

src/random.cpp:
.text start:0x0201ff20 end:0x02020034

src/gamectrl.cpp:
.text start:0x020217b4 end:0x02022f4c
.data start:0x020cec44 end:0x020cf650
Expand Down
10 changes: 5 additions & 5 deletions config/YFEE01/arm9/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1129,10 +1129,10 @@ func_0201fe40 kind:function(arm,size=0x2c) addr:0x0201fe40
func_0201fe6c kind:function(arm,size=0x54) addr:0x0201fe6c
LoadTexturePalette kind:function(arm,size=0x24) addr:0x0201fec0
func_0201fee4 kind:function(arm,size=0x3c) addr:0x0201fee4
func_0201ff20 kind:function(arm,size=0x90) addr:0x0201ff20
func_0201ffb0 kind:function(arm,size=0x10) addr:0x0201ffb0
func_0201ffc0 kind:function(arm,size=0x10) addr:0x0201ffc0
func_0201ffd0 kind:function(arm,size=0x3c) addr:0x0201ffd0
Random_Init kind:function(arm,size=0x90) addr:0x0201ff20
Random_SetState kind:function(arm,size=0x10) addr:0x0201ffb0
Random_GetState kind:function(arm,size=0x10) addr:0x0201ffc0
Random_Next kind:function(arm,size=0x3c) addr:0x0201ffd0
RollRN kind:function(arm,size=0x28) addr:0x0202000c
func_02020034 kind:function(arm,size=0x84) addr:0x02020034
func_020200b8 kind:function(arm,size=0x50) addr:0x020200b8
Expand Down Expand Up @@ -8559,7 +8559,7 @@ data_02194b2a kind:bss addr:0x02194b2a
data_02194b2c kind:bss addr:0x02194b2c
data_02195778 kind:bss addr:0x02195778
data_02196b2c kind:bss addr:0x02196b2c
data_02196e04 kind:bss addr:0x02196e04
gRandomSt kind:bss addr:0x02196e04
data_02196e0c kind:bss addr:0x02196e0c
data_02196f0c kind:bss addr:0x02196f0c
data_02196f10 kind:bss addr:0x02196f10
Expand Down
2 changes: 1 addition & 1 deletion include/unknown_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -2902,7 +2902,7 @@ extern struct ProcCmd data_020cec14[];
// extern ??? data_02194b2c
// extern ??? data_02195778
// extern ??? data_02196b2c
// extern ??? data_02196e04
// extern ??? gRandomSt
// extern ??? data_02196e0c
// extern ??? data_02196f0c
// extern ??? data_02196f10
Expand Down
8 changes: 4 additions & 4 deletions include/unknown_funcs.h
Original file line number Diff line number Diff line change
Expand Up @@ -1150,10 +1150,10 @@ EC void LoadTextureImage(void *, u32, u32);
// EC ??? func_0201fe6c
EC void LoadTexturePalette(void *, u32, u32);
// EC ??? func_0201fee4
EC void func_0201ff20(void);
// EC ??? func_0201ffb0
EC s32 func_0201ffc0(void);
EC u32 func_0201ffd0(void);
EC void Random_Init(void);
// EC ??? Random_SetState
EC s32 Random_GetState(void);
EC u32 Random_Next(void);
EC s32 RollRN(s32, s32);
// EC ??? func_02020034
// EC ??? func_020200b8
Expand Down
4 changes: 2 additions & 2 deletions src/face.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -578,7 +578,7 @@ void Face::DrawBlink(void)
return;
}

EC u32 func_0201ffd0(void);
EC u32 Random_Next(void);

void Face::UpdateMouth(void)
{
Expand Down Expand Up @@ -620,7 +620,7 @@ void Face::UpdateMouth(void)
return;
}

this->mouthCnt = (func_0201ffd0() & 7) + 1;
this->mouthCnt = (Random_Next() & 7) + 1;
this->mouthState = (this->mouthState + 1) & 3;

return;
Expand Down
4 changes: 2 additions & 2 deletions src/gamectrl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1142,7 +1142,7 @@ EC void func_0202272c(ProcPtr proc)
data_02196f0c->state &= ~0x20000;
data_02196f0c->state &= ~0x100000;

data_02196f20->unk_194 = func_0201ffc0();
data_02196f20->unk_194 = Random_GetState();

return;
}
Expand Down Expand Up @@ -1370,7 +1370,7 @@ EC void func_02022bb0(ProcPtr proc)
gSoundManager->unk_a4->vfunc_3c(0x10, 0x48, 0);
}

func_0201ffd0();
Random_Next();

return;
}
Expand Down
2 changes: 1 addition & 1 deletion src/hardware.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ void System_Init(void)
func_0200eecc();
func_0201f3dc();
rtc_init();
func_0201ff20();
Random_Init();
func_020217b4();

tmp = gpActiveScreenSt;
Expand Down
2 changes: 1 addition & 1 deletion src/ov000/arena.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ u8 * arena::Arena::_021d80a4(Unit * unit, s32 arg_2)
break;

case 4:
if ((func_0201ffd0() & 1) != 0)
if ((Random_Next() & 1) != 0)
{
uVar1 = 4;
}
Expand Down
6 changes: 3 additions & 3 deletions src/ov000/map_sequence.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4691,7 +4691,7 @@ EC void func_ov000_021af044(map::ProcLink * param_1)
}

EC BOOL func_02012b8c(s32, void *);
EC void func_0201ffb0(s32);
EC void Random_SetState(s32);

EC void func_ov000_021af1bc(map::ProcLink * param_1)
{
Expand Down Expand Up @@ -4743,7 +4743,7 @@ EC void func_ov000_021af1bc(map::ProcLink * param_1)
gMapStateManager->cursor->isVisible = 0;
param_1->unk_3c = 0;
Proc_Goto(gMapLinkProc, 1, 0);
func_0201ffb0(gActionSt->unk_14);
Random_SetState(gActionSt->unk_14);
func_020a58b8(gActionSt, gMapStateManager->unk_08, 0x14);
return;
}
Expand Down Expand Up @@ -5085,7 +5085,7 @@ EC void ProcMind_ov000_021af79c(ProcEx * proc)
delete tempAction;
}

gActionSt->unk_14 = func_0201ffc0();
gActionSt->unk_14 = Random_GetState();

unit = GetUnit(gActionSt->unitId);

Expand Down
76 changes: 76 additions & 0 deletions src/random.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#include "global.h"

struct RandomState
{
/* 00 */ s32 unk_00; // unused??
/* 04 */ u32 state;
};

extern struct RandomState gRandomSt;

struct UnkStruct_Func_020ac374
{
/* 00 */ s32 unk_00;
/* 04 */ s32 unk_04;
/* 08 */ s32 unk_08;
/* 0C */ s32 unk_0c;
};

struct UnkStruct_Func_020ac420
{
/* 00 */ s32 unk_00;
/* 04 */ s32 unk_04;
/* 08 */ s32 unk_08;
};

EC s32 func_020ac374(struct UnkStruct_Func_020ac374 *);
EC s32 func_020ac420(struct UnkStruct_Func_020ac420 *);

EC void Random_Init(void)
{
struct UnkStruct_Func_020ac374 a;
struct UnkStruct_Func_020ac420 b;
s32 state;

if (func_020ac374(&a) == 0 && func_020ac420(&b) == 0)
{
state = a.unk_00 * 12 + a.unk_04;
state = state * 30 + a.unk_08;
state = state * 24 + b.unk_00;
state = state * 60 + b.unk_04;
state = state * 60 + b.unk_08;

gRandomSt.state = state;

return;
}

gRandomSt.state = 0x12345678;

return;
}

EC void Random_SetState(u32 state)
{
gRandomSt.state = state;
return;
}

EC u32 Random_GetState(void)
{
return gRandomSt.state;
}

EC u32 Random_Next(void)
{
u32 rand = gRandomSt.state ^ (0x65AC9365 >> (gRandomSt.state & 3));
gRandomSt.state = (rand >> 4) ^ (rand >> 3) ^ (rand << 3) ^ (rand << 4) ^ rand;
return gRandomSt.state & 0x7FFFFFFF;
}

EC s32 IntSys_Mod(s32, s32);

EC s32 RollRN(s32 param_1, s32 param_2)
{
return param_1 + IntSys_Mod(Random_Next() & 0x7fffffff, (param_2 - param_1) + 1);
}
Loading