summaryrefslogtreecommitdiff
path: root/arm9/modules/52/src/module_52.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules/52/src/module_52.c')
-rw-r--r--arm9/modules/52/src/module_52.c643
1 files changed, 643 insertions, 0 deletions
diff --git a/arm9/modules/52/src/module_52.c b/arm9/modules/52/src/module_52.c
new file mode 100644
index 00000000..766d5169
--- /dev/null
+++ b/arm9/modules/52/src/module_52.c
@@ -0,0 +1,643 @@
+#include "module_52.h"
+
+extern struct Unk21DBE18 UNK_020FD144;
+extern struct Unk21DBE18 UNK_020F2B7C;
+extern struct Unk21DBE18 UNK_020F2B8C;
+
+extern void FUN_0201681C(u32 param0, u32 heap_id, u32 param2);
+extern int FUN_020168D0(u32 heap_id);
+extern void FUN_02015E3C(struct IGT *igt);
+extern void FUN_0206007C(struct SaveBlock2 *sav2);
+extern int FUN_02053678(u32 random, u32 gender, u32 param2);
+extern void FUN_020250C4(void *sav_ptr, u32 heap_id, const u8 param2[], u32 param3);
+extern void FUN_020377E0(struct SaveBlock2 *sav2);
+extern void FUN_0205ECD4(struct ScriptState *script_state);
+
+THUMB_FUNC int MOD52_021D74E0()
+{
+ FUN_0201681C(3, 0x4d, 2 << 16);
+ InitializeMainRNG();
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D74F8(struct UnkStruct_02006234 *param0)
+{
+ struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
+
+ MOD52_021D769C(0x4d, sav2);
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D750C()
+{
+ FUN_020168D0(0x4d);
+ RegisterMainOverlay(0XFFFFFFFF, &UNK_020FD144);
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D7528()
+{
+ FUN_0201681C(3, 0x4d, 2 << 16);
+ InitializeMainRNG();
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D7540(struct UnkStruct_02006234 *param0)
+{
+ struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
+
+ MOD52_021D7604(0x4d, sav2, 1);
+ struct IGT *igt = Sav2_PlayerData_GetIGTAddr(sav2);
+ FUN_02015E3C(igt);
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D7560()
+{
+ FUN_020168D0(0x4d);
+ RegisterMainOverlay(0xFFFFFFFF, &UNK_020F2B7C);
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D757C()
+{
+ FUN_0201681C(3, 0x4d, 2 << 16);
+ InitializeMainRNG();
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D7594(struct UnkStruct_02006234 *param0)
+{
+ struct SaveBlock2 *sav2 = (struct SaveBlock2 *)OverlayManager_GetField18(param0)[2]; // weird
+
+ struct SavSysInfo *sav2_info = Sav2_SysInfo_get(sav2);
+
+ MOD52_021D7688(0x4d, sav2);
+ Options_SetButtonModeOnMain(sav2, 0);
+
+ if (!Sav2_SysInfo_MacAddressIsMine(sav2_info) || !Sav2_SysInfo_RTCOffsetIsMine(sav2_info))
+ {
+ FUN_020238A4(Sav2_SysInfo_RTC_get(sav2));
+ Sav2_SysInfo_InitFromSystem(sav2_info);
+ }
+
+ FUN_02015E3C(Sav2_PlayerData_GetIGTAddr(sav2));
+
+ return 1;
+}
+
+THUMB_FUNC int MOD52_021D75E8()
+{
+ FUN_020168D0(0x4d);
+ RegisterMainOverlay(0XFFFFFFFF, &UNK_020F2B8C);
+
+ return 1;
+}
+
+THUMB_FUNC void MOD52_021D7604(u32 heap_id, struct SaveBlock2 *sav2, BOOL set_trainerid)
+{
+ Sav2_SysInfo_InitFromSystem(Sav2_SysInfo_get(sav2));
+ Sav2_SysInfo_RTC_init(Sav2_SysInfo_RTC_get(sav2));
+
+ struct UnkSaveStruct_020286F8 *unk_sav2 = FUN_0202881C(sav2);
+
+ FUN_02028788(unk_sav2, 1, MTRandom());
+ FUN_0206007C(sav2);
+
+ struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2);
+ u32 trainerid = MTRandom();
+
+ if (set_trainerid)
+ {
+ PlayerProfile_SetTrainerID(player_data, trainerid);
+ }
+
+ u32 gender = PlayerProfile_GetTrainerGender(player_data);
+ int avatar = FUN_02053678(trainerid, gender, 0);
+
+ PlayerProfile_SetAvatar(player_data, (u8)avatar);
+
+ FUN_020250C4(FUN_02024ECC(sav2), heap_id, MOD52_021D76F8, 0x76);
+}
+
+THUMB_FUNC void MOD52_021D7688(u32 unused UNUSED, struct SaveBlock2 *sav2)
+{
+ if (FUN_020226FC(sav2))
+ {
+ return;
+ }
+
+ OS_ResetSystem(0);
+}
+
+THUMB_FUNC void MOD52_021D769C(u32 unused UNUSED, struct SaveBlock2 *sav2)
+{
+ Sav2_InitDynamicRegion(sav2);
+ FUN_020377E0(sav2);
+ struct PlayerData *player_data = Sav2_PlayerData_GetProfileAddr(sav2);
+ PlayerProfile_SetMoney(player_data, 3000);
+ FUN_0205ECD4(SavArray_Flags_get(sav2));
+}
+
+const struct MOD52_Struct MOD52_021D76C8 = {
+ MOD52_021D757C,
+ MOD52_021D7594,
+ MOD52_021D75E8,
+ 0xFFFFFFFF,
+};
+
+const struct MOD52_Struct MOD52_021D76D8 = {
+ MOD52_021D7528,
+ MOD52_021D7540,
+ MOD52_021D7560,
+ 0xFFFFFFFF,
+};
+
+const struct MOD52_Struct MOD52_021D76E8 = {
+ MOD52_021D74E0,
+ MOD52_021D74F8,
+ MOD52_021D750C,
+ 0xFFFFFFFF,
+};
+
+const u8 MOD52_021D76F8[] = {
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA7,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA7,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9B,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0x9A,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9C,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9F,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x99,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x99,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA4,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA0,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA2,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x99,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA3,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x99,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9D,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9C,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9C,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA2,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA3,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x95,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x96,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA0,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA1,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x98,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9C,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9F,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA8,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0x9A,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x97,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA1,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA0,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA1,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA2,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9E,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xA5,
+ 0x00,
+ 0x03,
+ 0x00,
+ 0xA6,
+ 0x00,
+ 0x03,
+ 0x00,
+ 0xA7,
+ 0x00,
+ 0x03,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xA9,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAC,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAE,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9D,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0x9A,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAB,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAA,
+ 0x00,
+ 0x02,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+ 0xAD,
+ 0x00,
+ 0x01,
+ 0x00,
+}; \ No newline at end of file