diff options
Diffstat (limited to 'arm9/modules/52/src/module_52.c')
-rw-r--r-- | arm9/modules/52/src/module_52.c | 643 |
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 |