From 9bff34f5ed78da1c6dea8e6a5a19458160616029 Mon Sep 17 00:00:00 2001 From: tgsm Date: Wed, 31 Mar 2021 09:47:13 -0400 Subject: Decompile scrcmd_13 --- arm9/src/scrcmd_13.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 arm9/src/scrcmd_13.c (limited to 'arm9/src') diff --git a/arm9/src/scrcmd_13.c b/arm9/src/scrcmd_13.c new file mode 100644 index 00000000..3b21facc --- /dev/null +++ b/arm9/src/scrcmd_13.c @@ -0,0 +1,111 @@ +#include "scrcmd.h" +#include "event_data.h" +#include "heap.h" +#include "pokedex.h" +#include "pokemon_storage_system.h" +#include "unk_0202C144.h" + +extern struct PCStorage* GetStoragePCPointer(struct SaveBlock2* sav2); +extern void* FUN_02022528(struct SaveBlock2* sav2); +extern void FUN_0202BEDC(struct Pokemon* pokemon); +extern void FUN_0202BFD8(void* a0, s32 a1, struct Pokemon* pokemon); +extern u16 FUN_0202C000(struct Pokemon* pokemon); +extern void FUN_0204B9EC(struct UnkSavStruct80*); +extern u32 FUN_0204BA1C(struct UnkSavStruct80*); +extern u16 FUN_0204BAC4(struct UnkSavStruct80*); +extern u16 FUN_0204BAD4(struct UnkSavStruct80*); +extern u16 FUN_0204BAE4(struct UnkSavStruct80*); +extern void FUN_0205F224(struct ScriptState* state); +extern void FUN_0205F234(struct ScriptState* state); +extern void FUN_0208089C(struct Pokemon* pokemon, struct PlayerData* player, u32 a2, u32 a3, u32 heap_id); + +THUMB_FUNC BOOL ScrCmd_Unk0253(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + if (unk == 0) + { + FUN_0205F224(state); + FUN_0204B9EC(ctx->unk80); + } + else if (unk == 1) + { + FUN_0205F234(state); + FUN_0204BA1C(ctx->unk80); + } + else + { + GF_ASSERT(FALSE); + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0254(struct ScriptContext* ctx) +{ + void* unk = FUN_02022528(ctx->unk80->saveBlock2); + struct Pokemon* pokemon = AllocMonZeroed(32); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u16 eggs = FUN_0202C000(unk); + if (eggs == 6) { + *ret_ptr = 1; + } else { + *ret_ptr = 0; + } + + FreeToHeap(pokemon); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0255(struct ScriptContext* ctx) +{ + void* unk = FUN_02022528(ctx->unk80->saveBlock2); + struct PCStorage* pc = GetStoragePCPointer(ctx->unk80->saveBlock2); + struct Pokemon* pokemon = AllocMonZeroed(32); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2); // unused + + for (s32 i = 0; i < PARTY_SIZE; i++) + { + FUN_0202BFD8(unk, i, pokemon); + FUN_0208089C(pokemon, player, 2, 0, 32); + + struct BoxPokemon* box_mon = FUN_020690E4(pokemon); + GF_ASSERT(PCStorage_PlaceMonInFirstEmptySlotInAnyBox(pc, box_mon)); + + FUN_0202C144(ctx->unk80->saveBlock2, pokemon); + } + + FreeToHeap(pokemon); + FUN_0202BEDC(unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0256(struct ScriptContext* ctx) +{ + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + switch (unk) + { + case 0: + *ret_ptr = FUN_0204BAC4(ctx->unk80); + break; + case 1: + *ret_ptr = FUN_0204BAD4(ctx->unk80); + break; + case 2: + *ret_ptr = FUN_0204BAE4(ctx->unk80); + break; + case 3: + // For some reason, mwcc puts the FUN_0204BAD4 call before the FUN_0204BAC4 and FUN_0204BAE4 calls. + *ret_ptr = (u16)(FUN_0204BAC4(ctx->unk80) + FUN_0204BAE4(ctx->unk80) + FUN_0204BAD4(ctx->unk80)); + break; + } + + return FALSE; +} -- cgit v1.2.3 From 8958487e95618eaea84f4aaa02f68d3ef467a874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 11:57:44 +0200 Subject: decomp unk_0205FA2C.s --- arm9/src/unk_0205FA2C.c | 595 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 595 insertions(+) create mode 100644 arm9/src/unk_0205FA2C.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c new file mode 100644 index 00000000..e5c717b8 --- /dev/null +++ b/arm9/src/unk_0205FA2C.c @@ -0,0 +1,595 @@ +#include "unk_0205FA2C.h" + +extern void *UNK_020F96DC; +extern void *UNK_020FA6E8; +extern u32 FUN_02079C70(struct SaveBlock2 *sav2); +extern void FUN_0207B000(void *ptr, u8 param1[12]); +extern void FUN_0207C2A4(void *ptr, struct PlayerData *player_data); +extern u32 FUN_0203384C(u32 param0); +extern u32 FUN_02038790(u32 *param0, u16 param1, u16 param2); +extern u16 *GetVarPointer(void *arg, u16); +extern u32 FUN_02031190(); +extern u32 FUN_020316E0(u32 param0); +extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1); +extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u32 param1); +extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u32 param1); +extern void FUN_0202A5CC(u32 param0, u32 param1); +extern u32 FUN_0202A5D0(u32 param0); +extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1); +extern u32 FUN_0202A8D8(struct SaveBlock2 *sav2); +extern u32 FUN_0202A578(u32 param0, u32 param1, u32 param2); +extern u32 FUN_02026CC4(struct SaveBlock2 *sav2); +extern u32 FUN_02025D94(u32 param0, u32 param1); +extern u32 FUN_0202A8CC(struct SaveBlock2 *sav2); +extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2); +extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2); +extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); + +struct UnkStruct3 +{ + /* 0x00 */ struct PlayerParty *player_party; + /* 0x04 */ struct Bag *bag; + u32 unk08; + /* 0x0c */ struct Options *options; + u32 unk10[4]; + u8 unk20; + u8 unk21; + u8 unk22; + u8 unk23; + u32 unk24[2]; + u8 unk2c[6]; + u8 unk32:4; + u8 unk322:4; + u8 unk33; + u32 unk34[3]; +}; + +THUMB_FUNC u32 FUN_0205FA2C(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id) +{ + struct UnkStruct3 *ptr = + (struct UnkStruct3 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct3)); + + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct3)); + + ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); + + ptr->player_party = SavArray_PlayerParty_get(sav2); + + ptr->bag = Sav2_Bag_get(sav2); + + ptr->unk21 = 0; + ptr->unk20 = param0[8]; + ptr->unk32 = param0[10]; + ptr->unk322 = param0[11]; + ptr->unk33 = param0[0xc]; + ptr->unk22 = param0[0xd]; + + for (u8 i = 0; i < 6; i++) + { + ptr->unk2c[i] = param0[i + 0xe]; + + } + + + FUN_020373D4(param1, &UNK_020F96DC, ptr); + + *((u32 **)param0)[5] = ptr; + + return 1; +} + +THUMB_FUNC u32 FUN_0205FAD8(u8 *param0, void *param1) +{ + if (FUN_0204647C(param1)) + { + return 1; + } + + void *ptr = *((u32 **)param0)[5]; + + u8 r1 = *(u8 *)(ptr + 0x22); + if (r1 != 6) + { + if (r1 == 7) + { + ((u32 *)param0)[0] = 0; + return 4; + } + } + else + { + ((u32 *)param0)[0] = 1; + return 4; + } + + MI_CpuCopy8(ptr + 0x2c, param0 + 0xe, 6); + + param0[0xd] = *(u8 *)(ptr + 0x22); + FreeToHeap(ptr); + + *((u32 **)param0)[5] = 0; + + return 2; +} + + +struct UnkStruct4 { + /* 0x00 */ struct PlayerData *player_data; + /* 0x04 */ struct Options *options; + u32 unk08; + u32 unk0c; + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; + u8 unk14; + u8 unk15[3]; + u16 unk18; + u16 unk1a; + u32 unk1c; + u32 unk20; + u32 unk24; + u32 unk28; + u32 unk2c; + +}; + +THUMB_FUNC u32 FUN_0205FB34(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id) +{ + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); + + struct UnkStruct4 *ptr = (struct UnkStruct4 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct4)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct4)); + + ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); + ptr->player_data = SavArray_PlayerParty_get(sav2); + ptr->unk1c = FUN_0206BB28(sav2); + ptr->unk2c = FUN_02079C70(sav2); + + ptr->unk11 = 1; + ptr->unk14 = param0[0xd]; + + ptr->unk13 = GetPartyCount(*(u32 *)ptr); + + ptr->unk18 = 0; + ptr->unk12 = param0[9]; + + ptr->unk20 = FUN_0202A918(sav2); + + FUN_0207B000(ptr, UNK_020F7454); + + FUN_0207C2A4(ptr, Sav2_PlayerData_GetProfileAddr(sav2)); + + FUN_020373D4(param1, &UNK_020FA6E8, ptr); + + *((u32 **)param0)[5] = ptr; + + return 3; +} + +THUMB_FUNC u32 FUN_0205FBC0(u8 ***param0, void *param1) +{ + if (FUN_0204647C(param1)) + { + return 3; + } + + u8 *r0 = param0[5][0]; + ((u8 *)param0)[0xd] = r0[20]; + FreeToHeap(r0); + + param0[5][0] = 0; + + return 0; +} + +THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0); + switch (sav2->unk_00004) + { + case 0: + sav2->unk_00004 = FUN_0205FA2C((u8 *)sav2, res, 0xb); + break; + case 1: + sav2->unk_00004 = FUN_0205FAD8((u8 *)sav2, res); + break; + case 2: + sav2->unk_00004 = FUN_0205FB34((u8 *)sav2, res, 0xb); + break; + case 3: + sav2->unk_00004 = FUN_0205FBC0((u8 ***)sav2, res); + break; + case 4: + FreeToHeap(sav2); + return 1; + } + + return 0; +} + +struct UnkStruct1 +{ + u32 unk00; + u32 unk04; + u8 unk08; + u8 unk09; + u8 unk0a; + u8 unk0b; + u8 unk0c; + u8 unk0d; + u16 unk0e; + u32 unk10; + u32 unk14; +}; + +THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, + u32 param1, + u8 param2, + u8 param3, + u8 param4, + u8 param5, + u8 param6, + u8 param7) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + + struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xb, sizeof(struct UnkStruct1)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct1)); + ptr->unk08 = param2; + ptr->unk09 = param3; + + ptr->unk0a = param4; + ptr->unk0b = param5; + ptr->unk0c = param6; + ptr->unk0d = param7; + ptr->unk14 = param1; + + FUN_0204640C(res->unk10, &FUN_0205FBE8, (u32 *)ptr); +} + +THUMB_FUNC u32 FUN_0205FC9C(u16 *param0, u32 *param1) +{ + if (FUN_0203384C(param1[3])) + { + + ((u32 *)param0)[2] = FUN_02038790(param1, param0[9], param0[10]); + return 1; + } + + ((u32 *)param0)[0] = 1; + return 2; +} + +THUMB_FUNC u32 FUN_0205FCC4(u32 **param0, void *param1) +{ + if (FUN_0204647C(param1)) + { + return 1; + } + + param0[0] = param0[2][8]; + FreeToHeap(param0[2]); + + return 2; +} + +THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0); + + switch (sav2->unk_00004) + { + case 0: + sav2->unk_00004 = FUN_0205FC9C((u16 *)sav2, (u32 *)res); + break; + case 1: + sav2->unk_00004 = FUN_0205FCC4((u32 **)sav2, (void *)res); + break; + case 2: + u16 *var = GetVarPointer(res, ((u16 *)sav2)[8]); + *var = sav2->flashOkay; + FreeToHeap(sav2); + + return 1; + } + + return 0; +} + +struct UnkStruct2 +{ + u32 unk00; + u32 unk04; + u8 unk08; + u8 unk09; + u8 unk0a; + u8 unk0b; + u8 unk0c; + u8 unk0d; + u16 unk0e; + u16 unk10; + u16 unk12; + u16 unk14; + u16 unk16; +}; + +THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkStruct2 *ptr = (struct UnkStruct2 *)AllocFromHeap(0xb, sizeof(struct UnkStruct2)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct2)); + + ptr->unk12 = param1; + ptr->unk14 = param3; + ptr->unk10 = param2; + + FUN_0204640C(res->unk10, &FUN_0205FCE8, (u32 *)ptr); +} + +THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + u16 *res2 = (u16 *)FUN_0204652C(param0); + u32 res3 = FUN_020316E0(1 - FUN_02031190()); + if (res3 == 0) + { + return 0; + } + + u16 *var = GetVarPointer(res, res2[1]); + switch (res2[0]) + { + case 0: + *var = MOD06_02244660(res, res3); + break; + case 1: + *var = MOD06_022446BC(res, res3); + + break; + case 2: + *var = MOD06_022446E0(res, res3); + + break; + } + + FreeToHeap(res2); + + return 1; +} + +THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2) +{ + struct UnkStruct_0204639C *res = FUN_02046528(param0); + + u16 *ptr = AllocFromHeap(0xb, 2 * sizeof(u16)); + MI_CpuFill8(ptr, 0, 2 * sizeof(u16)); + + ptr[0] = param1; + ptr[1] = param2; + + FUN_0204640C(res->unk10, &FUN_0205FD70, ptr); +} + +THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) +{ + + u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35); + if (res < 20) + { + return 0; + } + + u32 res2 = FUN_0202A8D8(sav2); + + u8 res3 = FUN_0202A578(res2, 0xd, 0); + u8 res4 = FUN_0202A578(res2, 0, 0); + u8 res5 = FUN_0202A578(res2, 1, 0); + + u8 res6 = FUN_0202A578(res2, 0xe, 0); + u8 res7 = FUN_0202A578(res2, 2, 0); + u8 res8 = FUN_0202A578(res2, 3, 0); + + if (res3 != 0 && res4 != 0 && res5 != 0) + { + return 0; + } + + u32 res9 = FUN_02026CC4(sav2); + if (res3 == 0) + { + if (FUN_02025D94(res9, 0x55) != 0) + { + FUN_0202A578(res2, 0xd, 1); + return 1; + } + + if (res6 == 0) + { + FUN_0202A578(res2, 0xe, 1); + } + + return 4; + } + + if (res < 50) + { + return 0; + } + + if (res4 == 0) + { + if (FUN_02025D94(res9, 0x56) != 0) + { + FUN_0202A578(res2, 0, 1); + return 2; + } + + if (res7 == 0) + { + FUN_0202A578(res2, 2, 1); + } + + return 4; + } + + if (res < 100 || res5 != 0) + { + return 0; + } + + if (FUN_02025D94(res9, 0x57) != 0) + { + FUN_0202A578(res2, 1, 1); + return 3; + } + + if (res8 == 0) + { + FUN_0202A578(res2, 3, 1); + } + + return 4; +} + +THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) +{ + u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35); + if (res < 20) + { + return 0; + } + + u32 res2 = FUN_0202A8D8(sav2); + + u8 res3 = FUN_0202A578(res2, 0xd, 0); + u8 res4 = FUN_0202A578(res2, 0, 0); + u8 res5 = FUN_0202A578(res2, 1, 0); + + u8 res6 = FUN_0202A578(res2, 0xe, 0); + u8 res7 = FUN_0202A578(res2, 2, 0); + u8 res8 = FUN_0202A578(res2, 3, 0); + + if (res3 != 0 && res4 != 0 && res5 != 0) + { + return 0; + } + + if (res3 == 0) + { + if (res6 != 0) + { + return 4; + } + + return 1; + } + + if (res < 50) + { + return 0; + } + + if (res4 == 0) + { + if (res7 != 0) + { + return 5; + } + + return 2; + } + + if (res < 100) + { + return 0; + } + + if (res5 != 0) + { + return 0; + } + + if (res8 != 0) + { + return 6; + } + + return 3; +} + +THUMB_FUNC void FUN_02060044(u16 **param0, u32 *param1) +{ + u16 *ptr = param0[42]; + + ptr[18] += param1[0]; + ptr[20] += param1[1]; + ptr[19] += param1[2]; +} + +THUMB_FUNC u32 FUN_02060064(u32 param0) +{ + return param0 * 0x02E90EDD + 1; +} + +THUMB_FUNC u32 FUN_02060070(u32 param0) +{ + return param0 * 0x5D588B65 + 1; +} + +THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2) +{ + u32 res = FUN_02060070(FUN_020287A4(FUN_0202881C(sav2))); + + FUN_0202A5CC(FUN_0202A8D8(sav2), res); + + return res; +} + +THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2) +{ + u32 res = FUN_0202A8D8(sav2); + + u32 res2 = FUN_02060070(FUN_0202A5D0(res)); + + FUN_0202A5CC(res, res2); + u32 res3 = FUN_02060064(res2); + + FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3); + + return res3; +} + +THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2) +{ + u32 res = FUN_0202A8D8(sav2); + + u32 res2 = FUN_0202A8CC(sav2); + + u32 res3 = FUN_02060064(FUN_0202A5D0(res)); + + int i = 0; + int res4 = FUN_0202A538(res, FUN_0202A240(res2, 0, 0), 0) * 0x18; + + for (i = 0; i < res4; i++) + { + res3 = FUN_02060064(res3); + } + + FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3); + + return res3; +} + +THUMB_FUNC BOOL FUN_02060144(u32 **param0) +{ + if (param0[7][0] == 0x1ED) + { + return TRUE; + } + + return FALSE; +} -- cgit v1.2.3 From b20e00af7417022971bdf37870b66ccb8d3c52a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 15:11:23 +0200 Subject: better structs and signatures --- arm9/src/unk_0205FA2C.c | 245 ++++++++++++++++++------------------------------ arm9/src/unk_0206BB28.c | 6 +- 2 files changed, 94 insertions(+), 157 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index e5c717b8..dde83a06 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -3,11 +3,11 @@ extern void *UNK_020F96DC; extern void *UNK_020FA6E8; extern u32 FUN_02079C70(struct SaveBlock2 *sav2); -extern void FUN_0207B000(void *ptr, u8 param1[12]); -extern void FUN_0207C2A4(void *ptr, struct PlayerData *player_data); -extern u32 FUN_0203384C(u32 param0); -extern u32 FUN_02038790(u32 *param0, u16 param1, u16 param2); -extern u16 *GetVarPointer(void *arg, u16); +extern void FUN_0207B000(struct UnkPlayerStruct2_0205FA2C *ptr, const u8 param1[12]); +extern void FUN_0207C2A4(struct UnkPlayerStruct2_0205FA2C *ptr, struct PlayerData *player_data); +extern u32 FUN_0203384C(u32 *param0); +extern u32 *FUN_02038790(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); +extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16); extern u32 FUN_02031190(); extern u32 FUN_020316E0(u32 param0); extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1); @@ -25,32 +25,15 @@ extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2); extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2); extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); -struct UnkStruct3 -{ - /* 0x00 */ struct PlayerParty *player_party; - /* 0x04 */ struct Bag *bag; - u32 unk08; - /* 0x0c */ struct Options *options; - u32 unk10[4]; - u8 unk20; - u8 unk21; - u8 unk22; - u8 unk23; - u32 unk24[2]; - u8 unk2c[6]; - u8 unk32:4; - u8 unk322:4; - u8 unk33; - u32 unk34[3]; -}; - -THUMB_FUNC u32 FUN_0205FA2C(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id) + + +THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { - struct UnkStruct3 *ptr = - (struct UnkStruct3 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct3)); + struct UnkPlayerStruct1_0205FA2C *ptr = + (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C)); struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct3)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct1_0205FA2C)); ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); @@ -59,101 +42,83 @@ THUMB_FUNC u32 FUN_0205FA2C(u8 *param0, struct UnkStruct_0204639C *param1, u32 h ptr->bag = Sav2_Bag_get(sav2); ptr->unk21 = 0; - ptr->unk20 = param0[8]; - ptr->unk32 = param0[10]; - ptr->unk322 = param0[11]; - ptr->unk33 = param0[0xc]; - ptr->unk22 = param0[0xd]; + ptr->unk20 = param0->unk08; + ptr->unk32 = param0->unk0a; + ptr->unk322 = param0->unk0b; + ptr->unk33 = param0->unk0c; + ptr->unk22 = param0->unk0d; for (u8 i = 0; i < 6; i++) { - ptr->unk2c[i] = param0[i + 0xe]; + ptr->unk2c[i] = param0->unk0e[i]; } - FUN_020373D4(param1, &UNK_020F96DC, ptr); + FUN_020373D4(param1, (u32)&UNK_020F96DC, (u32)ptr); - *((u32 **)param0)[5] = ptr; + *param0->unk14 = ptr; return 1; } -THUMB_FUNC u32 FUN_0205FAD8(u8 *param0, void *param1) +THUMB_FUNC u32 FUN_0205FAD8(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { return 1; } - void *ptr = *((u32 **)param0)[5]; + struct UnkPlayerStruct1_0205FA2C *ptr = (struct UnkPlayerStruct1_0205FA2C *)*param0->unk14; - u8 r1 = *(u8 *)(ptr + 0x22); + u8 r1 = ptr->unk22; if (r1 != 6) { if (r1 == 7) { - ((u32 *)param0)[0] = 0; + param0->unk00 = 0; return 4; } } else { - ((u32 *)param0)[0] = 1; + param0->unk00 = 1; return 4; } - MI_CpuCopy8(ptr + 0x2c, param0 + 0xe, 6); + MI_CpuCopy8(ptr->unk2c, param0->unk0e, 6); - param0[0xd] = *(u8 *)(ptr + 0x22); + param0->unk0d = ptr->unk22; FreeToHeap(ptr); - *((u32 **)param0)[5] = 0; + *param0->unk14 = NULL; return 2; } -struct UnkStruct4 { - /* 0x00 */ struct PlayerData *player_data; - /* 0x04 */ struct Options *options; - u32 unk08; - u32 unk0c; - u8 unk10; - u8 unk11; - u8 unk12; - u8 unk13; - u8 unk14; - u8 unk15[3]; - u16 unk18; - u16 unk1a; - u32 unk1c; - u32 unk20; - u32 unk24; - u32 unk28; - u32 unk2c; - -}; - -THUMB_FUNC u32 FUN_0205FB34(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id) + + + +THUMB_FUNC u32 FUN_0205FB34(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); - struct UnkStruct4 *ptr = (struct UnkStruct4 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct4)); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct4)); + struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct2_0205FA2C)); ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); - ptr->player_data = SavArray_PlayerParty_get(sav2); - ptr->unk1c = FUN_0206BB28(sav2); + ptr->player_party = SavArray_PlayerParty_get(sav2); + ptr->IsNatDex = SavArray_IsNatDexEnabled(sav2); ptr->unk2c = FUN_02079C70(sav2); ptr->unk11 = 1; - ptr->unk14 = param0[0xd]; + ptr->unk14 = param0->unk0d; - ptr->unk13 = GetPartyCount(*(u32 *)ptr); + ptr->party_count = (u8)GetPartyCount(ptr->player_party); ptr->unk18 = 0; - ptr->unk12 = param0[9]; + ptr->unk12 = param0->unk09; ptr->unk20 = FUN_0202A918(sav2); @@ -161,25 +126,25 @@ THUMB_FUNC u32 FUN_0205FB34(u8 *param0, struct UnkStruct_0204639C *param1, u32 h FUN_0207C2A4(ptr, Sav2_PlayerData_GetProfileAddr(sav2)); - FUN_020373D4(param1, &UNK_020FA6E8, ptr); + FUN_020373D4(param1, (u32)&UNK_020FA6E8, (u32)ptr); - *((u32 **)param0)[5] = ptr; + *param0->unk14 = ptr; return 3; } -THUMB_FUNC u32 FUN_0205FBC0(u8 ***param0, void *param1) +THUMB_FUNC u32 FUN_0205FBC0(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { return 3; } - u8 *r0 = param0[5][0]; - ((u8 *)param0)[0xd] = r0[20]; - FreeToHeap(r0); + struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)*param0->unk14; + param0->unk0d = ptr->unk14; + FreeToHeap(ptr); - param0[5][0] = 0; + *param0->unk14 = NULL; return 0; } @@ -187,46 +152,32 @@ THUMB_FUNC u32 FUN_0205FBC0(u8 ***param0, void *param1) THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0); - switch (sav2->unk_00004) + struct UnkCallbackStruct1_0205FA2C *res2 = (struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0); + switch (res2->unk04) { case 0: - sav2->unk_00004 = FUN_0205FA2C((u8 *)sav2, res, 0xb); + res2->unk04 = FUN_0205FA2C(res2, res, 0xb); break; case 1: - sav2->unk_00004 = FUN_0205FAD8((u8 *)sav2, res); + res2->unk04 = FUN_0205FAD8(res2, res); break; case 2: - sav2->unk_00004 = FUN_0205FB34((u8 *)sav2, res, 0xb); + res2->unk04 = FUN_0205FB34(res2, res, 0xb); break; case 3: - sav2->unk_00004 = FUN_0205FBC0((u8 ***)sav2, res); + res2->unk04 = FUN_0205FBC0(res2, res); break; case 4: - FreeToHeap(sav2); + FreeToHeap(res2); return 1; } return 0; } -struct UnkStruct1 -{ - u32 unk00; - u32 unk04; - u8 unk08; - u8 unk09; - u8 unk0a; - u8 unk0b; - u8 unk0c; - u8 unk0d; - u16 unk0e; - u32 unk10; - u32 unk14; -}; THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, - u32 param1, + void **param1, u8 param2, u8 param3, u8 param4, @@ -236,11 +187,11 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xb, sizeof(struct UnkStruct1)); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct1)); + struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap(0xb, sizeof(struct UnkCallbackStruct1_0205FA2C)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct1_0205FA2C)); + ptr->unk08 = param2; ptr->unk09 = param3; - ptr->unk0a = param4; ptr->unk0b = param5; ptr->unk0c = param6; @@ -250,28 +201,29 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, FUN_0204640C(res->unk10, &FUN_0205FBE8, (u32 *)ptr); } -THUMB_FUNC u32 FUN_0205FC9C(u16 *param0, u32 *param1) + +THUMB_FUNC u32 FUN_0205FC9C(struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) { - if (FUN_0203384C(param1[3])) + if (FUN_0203384C(param1->unkC)) { - ((u32 *)param0)[2] = FUN_02038790(param1, param0[9], param0[10]); + param0->unk08 = FUN_02038790(param1, param0->unk12, param0->unk14); return 1; } - ((u32 *)param0)[0] = 1; + param0->unk00 = 1; return 2; } -THUMB_FUNC u32 FUN_0205FCC4(u32 **param0, void *param1) +THUMB_FUNC u32 FUN_0205FCC4(struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { return 1; } - param0[0] = param0[2][8]; - FreeToHeap(param0[2]); + param0->unk00 = param0->unk08[8]; + FreeToHeap(param0->unk08); return 2; } @@ -279,20 +231,20 @@ THUMB_FUNC u32 FUN_0205FCC4(u32 **param0, void *param1) THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0); + struct UnkCallbackStruct2_0205FA2C *res2 = (struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0); - switch (sav2->unk_00004) + switch (res2->unk04) { case 0: - sav2->unk_00004 = FUN_0205FC9C((u16 *)sav2, (u32 *)res); + res2->unk04 = FUN_0205FC9C(res2, res); break; case 1: - sav2->unk_00004 = FUN_0205FCC4((u32 **)sav2, (void *)res); + res2->unk04 = FUN_0205FCC4(res2, res); break; case 2: - u16 *var = GetVarPointer(res, ((u16 *)sav2)[8]); - *var = sav2->flashOkay; - FreeToHeap(sav2); + u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2->unk10); + *var = (u16)res2->unk00; + FreeToHeap(res2); return 1; } @@ -300,28 +252,13 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) return 0; } -struct UnkStruct2 -{ - u32 unk00; - u32 unk04; - u8 unk08; - u8 unk09; - u8 unk0a; - u8 unk0b; - u8 unk0c; - u8 unk0d; - u16 unk0e; - u16 unk10; - u16 unk12; - u16 unk14; - u16 unk16; -}; + THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkStruct2 *ptr = (struct UnkStruct2 *)AllocFromHeap(0xb, sizeof(struct UnkStruct2)); - MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct2)); + struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap(0xb, sizeof(struct UnkCallbackStruct2_0205FA2C)); + MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct2_0205FA2C)); ptr->unk12 = param1; ptr->unk14 = param3; @@ -340,7 +277,7 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) return 0; } - u16 *var = GetVarPointer(res, res2[1]); + u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2[1]); switch (res2[0]) { case 0: @@ -371,13 +308,13 @@ THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 ptr[0] = param1; ptr[1] = param2; - FUN_0204640C(res->unk10, &FUN_0205FD70, ptr); + FUN_0204640C(res->unk10, &FUN_0205FD70, (u32 *)ptr); } THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) { - u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35); + u16 res = (u16)FUN_0202A150(FUN_02029FC8(sav2), 0x35); if (res < 20) { return 0; @@ -385,13 +322,13 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) u32 res2 = FUN_0202A8D8(sav2); - u8 res3 = FUN_0202A578(res2, 0xd, 0); - u8 res4 = FUN_0202A578(res2, 0, 0); - u8 res5 = FUN_0202A578(res2, 1, 0); + u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0); + u8 res4 = (u8)FUN_0202A578(res2, 0, 0); + u8 res5 = (u8)FUN_0202A578(res2, 1, 0); - u8 res6 = FUN_0202A578(res2, 0xe, 0); - u8 res7 = FUN_0202A578(res2, 2, 0); - u8 res8 = FUN_0202A578(res2, 3, 0); + u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0); + u8 res7 = (u8)FUN_0202A578(res2, 2, 0); + u8 res8 = (u8)FUN_0202A578(res2, 3, 0); if (res3 != 0 && res4 != 0 && res5 != 0) { @@ -457,7 +394,7 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) { - u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35); + u16 res = (u16)FUN_0202A150(FUN_02029FC8(sav2), 0x35); if (res < 20) { return 0; @@ -465,13 +402,13 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) u32 res2 = FUN_0202A8D8(sav2); - u8 res3 = FUN_0202A578(res2, 0xd, 0); - u8 res4 = FUN_0202A578(res2, 0, 0); - u8 res5 = FUN_0202A578(res2, 1, 0); + u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0); + u8 res4 = (u8)FUN_0202A578(res2, 0, 0); + u8 res5 = (u8)FUN_0202A578(res2, 1, 0); - u8 res6 = FUN_0202A578(res2, 0xe, 0); - u8 res7 = FUN_0202A578(res2, 2, 0); - u8 res8 = FUN_0202A578(res2, 3, 0); + u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0); + u8 res7 = (u8)FUN_0202A578(res2, 2, 0); + u8 res8 = (u8)FUN_0202A578(res2, 3, 0); if (res3 != 0 && res4 != 0 && res5 != 0) { @@ -572,7 +509,7 @@ THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2) u32 res3 = FUN_02060064(FUN_0202A5D0(res)); int i = 0; - int res4 = FUN_0202A538(res, FUN_0202A240(res2, 0, 0), 0) * 0x18; + int res4 = FUN_0202A538(res, (u16)FUN_0202A240(res2, 0, 0), 0) * 0x18; for (i = 0; i < res4; i++) { diff --git a/arm9/src/unk_0206BB28.c b/arm9/src/unk_0206BB28.c index baaecc6a..e7c12793 100644 --- a/arm9/src/unk_0206BB28.c +++ b/arm9/src/unk_0206BB28.c @@ -6,12 +6,12 @@ #pragma thumb on -BOOL FUN_0206BB28(struct SaveBlock2 * sav2) +BOOL SavArray_IsNatDexEnabled(struct SaveBlock2 * sav2) { - return FUN_0206BB34(Sav2_Pokedex_get(sav2)); + return Pokedex_IsNatDexEnabled(Sav2_Pokedex_get(sav2)); } -BOOL FUN_0206BB34(struct Pokedex * pokedex) +BOOL Pokedex_IsNatDexEnabled(struct Pokedex * pokedex) { return Pokedex_GetNatDexFlag(pokedex) == TRUE; } -- cgit v1.2.3 From 44a082830ef1aaff60449d9dc2b01fdcf8300e7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 15:18:24 +0200 Subject: remove extern declaration --- arm9/src/unk_0205FA2C.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'arm9/src') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index dde83a06..25411c1a 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -27,6 +27,23 @@ extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); + +const u8 UNK_020F7454[] = { + 0x00, + 0x01, + 0x02, + 0x04, + 0x03, + 0x05, + 0x06, + 0x07, + 0x08, + 0x00, + 0x00, + 0x00, +}; + + THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { struct UnkPlayerStruct1_0205FA2C *ptr = -- cgit v1.2.3 From c54ec6c98fa9ac1affed7fb1233e9b9aa84a27c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 18:10:46 +0200 Subject: run clang-format --- arm9/src/unk_0205FA2C.c | 51 +++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 27 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 25411c1a..93bd2e4e 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -25,9 +25,6 @@ extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2); extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2); extern int FUN_0202A538(u32 param0, u16 param1, u32 param2); - - - const u8 UNK_020F7454[] = { 0x00, 0x01, @@ -43,11 +40,11 @@ const u8 UNK_020F7454[] = { 0x00, }; - -THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) +THUMB_FUNC u32 FUN_0205FA2C( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { - struct UnkPlayerStruct1_0205FA2C *ptr = - (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C)); + struct UnkPlayerStruct1_0205FA2C *ptr = (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd( + heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C)); struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct1_0205FA2C)); @@ -68,9 +65,7 @@ THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct U for (u8 i = 0; i < 6; i++) { ptr->unk2c[i] = param0->unk0e[i]; - } - FUN_020373D4(param1, (u32)&UNK_020F96DC, (u32)ptr); @@ -79,7 +74,8 @@ THUMB_FUNC u32 FUN_0205FA2C(struct UnkCallbackStruct1_0205FA2C *param0, struct U return 1; } -THUMB_FUNC u32 FUN_0205FAD8(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) +THUMB_FUNC u32 FUN_0205FAD8( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { @@ -113,15 +109,13 @@ THUMB_FUNC u32 FUN_0205FAD8(struct UnkCallbackStruct1_0205FA2C *param0, struct U return 2; } - - - - -THUMB_FUNC u32 FUN_0205FB34(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) +THUMB_FUNC u32 FUN_0205FB34( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) { struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); - struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C)); + struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd( + heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C)); MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct2_0205FA2C)); ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); @@ -150,7 +144,8 @@ THUMB_FUNC u32 FUN_0205FB34(struct UnkCallbackStruct1_0205FA2C *param0, struct U return 3; } -THUMB_FUNC u32 FUN_0205FBC0(struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) +THUMB_FUNC u32 FUN_0205FBC0( + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { @@ -169,7 +164,8 @@ THUMB_FUNC u32 FUN_0205FBC0(struct UnkCallbackStruct1_0205FA2C *param0, struct U THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkCallbackStruct1_0205FA2C *res2 = (struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0); + struct UnkCallbackStruct1_0205FA2C *res2 = + (struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0); switch (res2->unk04) { case 0: @@ -192,7 +188,6 @@ THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) return 0; } - THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, void **param1, u8 param2, @@ -204,7 +199,8 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap(0xb, sizeof(struct UnkCallbackStruct1_0205FA2C)); + struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap( + 0xb, sizeof(struct UnkCallbackStruct1_0205FA2C)); MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct1_0205FA2C)); ptr->unk08 = param2; @@ -218,8 +214,8 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, FUN_0204640C(res->unk10, &FUN_0205FBE8, (u32 *)ptr); } - -THUMB_FUNC u32 FUN_0205FC9C(struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) +THUMB_FUNC u32 FUN_0205FC9C( + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0203384C(param1->unkC)) { @@ -232,7 +228,8 @@ THUMB_FUNC u32 FUN_0205FC9C(struct UnkCallbackStruct2_0205FA2C *param0, struct U return 2; } -THUMB_FUNC u32 FUN_0205FCC4(struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) +THUMB_FUNC u32 FUN_0205FCC4( + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) { if (FUN_0204647C(param1)) { @@ -248,7 +245,8 @@ THUMB_FUNC u32 FUN_0205FCC4(struct UnkCallbackStruct2_0205FA2C *param0, struct U THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkCallbackStruct2_0205FA2C *res2 = (struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0); + struct UnkCallbackStruct2_0205FA2C *res2 = + (struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0); switch (res2->unk04) { @@ -269,12 +267,11 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) return 0; } - - THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3) { struct UnkStruct_0204639C *res = FUN_02046528(param0); - struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap(0xb, sizeof(struct UnkCallbackStruct2_0205FA2C)); + struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap( + 0xb, sizeof(struct UnkCallbackStruct2_0205FA2C)); MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct2_0205FA2C)); ptr->unk12 = param1; -- cgit v1.2.3 From cc54fce78c69e0646ed6d128eadbbfc21c1e0143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 20:35:31 +0200 Subject: remove unnecessary padding --- arm9/src/unk_0205FA2C.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 93bd2e4e..3d74a9c8 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -35,9 +35,6 @@ const u8 UNK_020F7454[] = { 0x06, 0x07, 0x08, - 0x00, - 0x00, - 0x00, }; THUMB_FUNC u32 FUN_0205FA2C( -- cgit v1.2.3 From 72ecd04439857ccf7a07d8142d9d2bf50af13747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 3 Apr 2021 20:35:56 +0200 Subject: replace hard-coded number with constant --- arm9/src/unk_0205FA2C.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 3d74a9c8..7bcdf950 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -534,7 +534,7 @@ THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2) THUMB_FUNC BOOL FUN_02060144(u32 **param0) { - if (param0[7][0] == 0x1ED) + if (param0[7][0] == SPECIES_ARCEUS) { return TRUE; } -- cgit v1.2.3 From 8132e1e5678b0bde7421acf7600c223854fe7c01 Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 5 Apr 2021 12:41:20 -0400 Subject: Decompile scrcmd_16 -> scrcmd_daycare --- arm9/src/scrcmd_daycare.c | 192 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 arm9/src/scrcmd_daycare.c (limited to 'arm9/src') diff --git a/arm9/src/scrcmd_daycare.c b/arm9/src/scrcmd_daycare.c new file mode 100644 index 00000000..4e2f925e --- /dev/null +++ b/arm9/src/scrcmd_daycare.c @@ -0,0 +1,192 @@ +#include "scrcmd.h" +#include "daycare.h" +#include "party.h" +#include "script_buffers.h" + +extern void* FUN_02039438(struct UnkSavStruct80*, int idx); + +extern void MOD05_021EC57C(struct PlayerParty* party, u8 idx, struct DayCare* daycare, struct SaveBlock2* sav2); +extern u16 MOD05_021EC71C(struct PlayerParty* party, struct ScrStrBufs* mgr, struct DayCare* daycare, u8 idx); +extern u16 MOD05_021EC854(struct DayCare* daycare, u8 idx, struct ScrStrBufs* mgr); +extern u8 MOD05_021EC864(struct DayCare* daycare, int idx, struct ScrStrBufs* mgr); +extern void MOD05_021ECD64(struct DayCare* daycare); +extern void MOD05_DayCare_GiveEggToPlayer(struct DayCare* daycare, struct PlayerParty* party, struct PlayerData* player); +extern void MOD05_021ED4E0(struct DayCare* daycare, struct ScrStrBufs* mgr); +extern void MOD05_021ED52C(struct DayCare* daycare, u8 idx1, u8 idx2, u8 idx3, u8 idx4, struct ScrStrBufs* mgr); +extern u16 MOD05_021ED5C4(struct PlayerParty* party, int idx, struct ScrStrBufs* mgr); +extern u16 MOD05_021ED5EC(struct DayCare* daycare); +extern u32 MOD05_021ED644(struct DayCare* daycare); + +THUMB_FUNC BOOL ScrCmd_Unk016D(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + struct DayCare* daycare = Sav2_DayCare_get(sav2); + + MOD05_021ED4E0(daycare, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk016E(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct SaveBlock2* sav2 = sav_ptr->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = MOD05_021ED5EC(daycare); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A8(struct ScriptContext* ctx) +{ + struct DayCare* daycare = SavArray_get(ctx->unk80->saveBlock2, 8); + MOD05_021ECD64(daycare); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A9(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct DayCare* daycare = SavArray_get(sav_ptr->saveBlock2, 8); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(ctx->unk80); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(sav2); + + MOD05_DayCare_GiveEggToPlayer(daycare, party, player); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A4(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + struct SaveBlock2* sav2 = sav_ptr->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + + *ret_ptr = MOD05_021EC71C(party, *mgr, daycare, (u8)idx); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01AA(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + struct SaveBlock2* sav2 = sav_ptr->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = MOD05_021EC854(daycare, (u8)idx, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01AE(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = MOD05_021EC864(daycare, idx, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01AF(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u16 unused = ScriptReadHalfword(ctx); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + + *ret_ptr = MOD05_021ED5C4(party, idx, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01B0(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct SaveBlock2* sav2 = sav_ptr->saveBlock2; + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct DayCare* daycare = SavArray_get(sav2, 8); + + MOD05_021EC57C(party, (u8)idx, daycare, sav2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01BC(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u16 idx1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx3 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx4 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = Sav2_DayCare_get(sav2); + + MOD05_021ED52C(daycare, (u8)idx1, (u8)idx2, (u8)idx3, (u8)idx4, *mgr); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01BE(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = (u16)MOD05_021ED644(daycare); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01BF(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct DayCare* daycare = SavArray_get(sav2, 8); + + *ret_ptr = (u16)Sav2_DayCare_GetEggPID(daycare); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A5(struct ScriptContext* ctx) +{ + u16* unused = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A6(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01A7(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01AD(struct ScriptContext* ctx) +{ + u16* unused = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + return FALSE; +} -- cgit v1.2.3 From 3f493d7ab6c45e17e515fd9901450935a6a08f14 Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 5 Apr 2021 20:55:25 -0400 Subject: Decompile scrcmd_11 --- arm9/src/scrcmd_11.c | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 arm9/src/scrcmd_11.c (limited to 'arm9/src') diff --git a/arm9/src/scrcmd_11.c b/arm9/src/scrcmd_11.c new file mode 100644 index 00000000..8553adfa --- /dev/null +++ b/arm9/src/scrcmd_11.c @@ -0,0 +1,120 @@ +#include "scrcmd.h" +#include "unk_02029FB0.h" + +extern void* FUN_02039438(struct UnkSavStruct80*, int idx); + +extern void FUN_0202A0E8(struct UnkStruct_02029FB0*, int); +extern void FUN_0202A170(struct UnkStruct_02029FB0*, int); +extern u8 FUN_0204B5FC(struct UnkSavStruct80*, void*); +extern void FUN_0204B57C(struct UnkSavStruct80*, void*, int); +extern u16 FUN_0204B63C(struct UnkSavStruct80*, void*); +extern u16 FUN_0204B660(struct UnkSavStruct80*, void*); +extern u16 FUN_0204B684(struct UnkSavStruct80*, void*); +extern u16 FUN_0204B6A4(struct UnkSavStruct80*, void*); +extern void FUN_0204B9CC(struct UnkSavStruct80*); +extern void FUN_0204B5A8(struct UnkSavStruct80*, void*, u16); +extern void FUN_0204B9A0(struct UnkSavStruct80*); +extern void FUN_0204B4FC(struct UnkSavStruct80*, void*); + +THUMB_FUNC BOOL ScrCmd_Unk017D(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void** unk = FUN_02039438(ctx->unk80, 10); + + *ret_ptr = FUN_0204B5FC(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk017E(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = FUN_0204B63C(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk017F(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = FUN_0204B660(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0180(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = FUN_0204B684(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0181(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = FUN_0204B6A4(ctx->unk80, *unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0182(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_0204B57C(ctx->unk80, *unk, unk2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0183(struct ScriptContext* ctx) +{ + void** unk = FUN_02039438(ctx->unk80, 10); + struct UnkStruct_02029FB0* unk2 = FUN_02029FC8(ctx->unk80->saveBlock2); + u16 unk3 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_0204B5A8(ctx->unk80, *unk, unk3); + FUN_0202A0E8(unk2, 3); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0184(struct ScriptContext* ctx) +{ + u16 unk = ScriptReadHalfword(ctx); + + switch (unk) + { + case 0: + FUN_0204B9A0(ctx->unk80); + break; + case 1: + FUN_0204B9CC(ctx->unk80); + break; + default: + GF_ASSERT(FALSE); + break; + } + + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0185(struct ScriptContext* ctx) +{ + struct UnkStruct_02029FB0* unk = FUN_02029FC8(ctx->unk80->saveBlock2); + void** unk2 = FUN_02039438(ctx->unk80, 10); + + FUN_0204B4FC(ctx->unk80, *unk2); + FUN_0202A170(unk, 0); + + return FALSE; +} -- cgit v1.2.3 From a4a5cc6169360abd5687cbf39b9fa6bd3fb7ca5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Wed, 7 Apr 2021 21:47:39 +0200 Subject: decomp start of unk_0202F150.s --- arm9/src/unk_0202F150_c.c | 417 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 417 insertions(+) create mode 100644 arm9/src/unk_0202F150_c.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c new file mode 100644 index 00000000..e618469a --- /dev/null +++ b/arm9/src/unk_0202F150_c.c @@ -0,0 +1,417 @@ +#include "global.h" +#include "MI_memory.h" +#include "heap.h" + +struct +{ + u8 unk00; + struct UnkStruct1 *unk04; +} UNK_021C59F4; + +// struct UnkStruct2 { +// u8 unk00; +// u8 unk01; +// }; + +u8 UNK_02105D58 = 4; +u8 UNK_02105D59 = 4; + +extern int FUN_02033534(); +extern u32 FUN_0202D858(u16 param0); +extern void FUN_02031480(u32 param0); +extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202F2F0(); +extern void FUN_020312BC(u32 param0); +extern void FUN_0202FB20(); + +extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); +extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); + +extern void FUN_0202D804(u32 *param0); +extern u32 FUN_02030E7C(u16 param0); + +struct UnkStruct1 +{ + u8 unk000[38]; + u8 unk026[38]; + u8 unk04c[264]; + u8 unk154[192]; + u8 unk214[192]; + u8 unk2D4[384]; + u32 unk454; + u32 unk458; + u32 unk45C; + u32 unk460; + u32 unk464; + u8 unk468[0x8]; + u32 unk470; + u8 unk474[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk47C[8]; + u32 unk4DC; + u8 unk4E0[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk4E8[8]; + u32 unk548; + u8 unk54C[32]; + u8 unk56C[32]; + struct + { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; + u8 unk0b; + } unk58C[8]; + u32 unk5EC; + u32 unk5F0; + u16 unk5F4; + u8 unk5F6; + u8 unk5F7; + u32 unk5F8; + u8 unk5FC[0x14]; + u16 unk610[8]; + u8 unk620[0xc]; + u8 unk62C; + u8 unk62D; + u8 unk62E[0x2]; + u32 unk630; + u32 unk634; + u32 unk638[8]; + u32 unk658; + u16 unk65C; + u8 unk65E; + u8 unk65F[8]; + u8 unk667[8]; + u8 unk66F[8]; + u8 unk677[4]; + u8 unk67B[0x2]; + u8 unk67D; + u8 unk67E; + u8 unk67F; + u8 unk680; + u8 unk681; + u8 unk682; + u8 unk683; + u8 unk684; + u8 unk685; + u8 unk686; + u8 unk687; + u8 unk688; + u8 unk689[0x3]; +}; + +THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) +{ + u32 r4 = 0; + UNK_021C59F4.unk00 = 0; + if (param0 != 0) + { + u32 res = FUN_0202D858(FUN_02033534()) + 1; + + if (UNK_021C59F4.unk04 != 0) + { + return 1; + } + + FUN_02031480(0xf); + struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, 0x68C); + UNK_021C59F4.unk04 = ptr; + MI_CpuFill8(ptr, 0, 0x68C); + + UNK_021C59F4.unk04->unk658 = param1 + 0x40; + UNK_021C59F4.unk04->unk67D = 0; + UNK_021C59F4.unk04->unk67E = 0x1b; + + UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); + + UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + if (FUN_02033534() == 0xa) + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); + } + else + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); + } + } + else + { + + r4 = 1; + if (UNK_021C59F4.unk04 == 0) + { + ErrorHandling(); + } + } + + UNK_021C59F4.unk04->unk65C = 0; + + for (int i = 0; i < 4; i++) + { + UNK_021C59F4.unk04->unk677[i] = 0xff; + } + + if (r4 == 0) + { + FUN_0202F2F0(); + } + + FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + + if (r4 == 0) + { + u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); + + UNK_021C59F4.unk04->unk548 = res2; + } + + UNK_021C59F4.unk04->unk687 = 0; + + return 1; +} + +THUMB_FUNC void FUN_0202F2F0() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + UNK_021C59F4.unk04->unk67F = 0; + UNK_021C59F4.unk04->unk680 = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[i] = 0xee; + UNK_021C59F4.unk04->unk214[i] = 0xee; + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + + UNK_021C59F4.unk04->unk000[0] = 0xff; + UNK_021C59F4.unk04->unk026[0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[i] = 0xee; + UNK_021C59F4.unk04->unk026[i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + + UNK_021C59F4.unk04->unk638[i] = 0; + } + + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + UNK_02105D59 = 4; + UNK_02105D58 = 4; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F5A4() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[i] = 0xee; + UNK_021C59F4.unk04->unk214[i] = 0xee; + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + + UNK_021C59F4.unk04->unk000[0] = 0xff; + UNK_021C59F4.unk04->unk026[0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[i] = 0xee; + UNK_021C59F4.unk04->unk026[i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + } + + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F820(u32 param0) +{ + UNK_021C59F4.unk04->unk65F[param0] = 0; + + UNK_021C59F4.unk04->unk667[param0] = 1; + + UNK_021C59F4.unk04->unk638[param0] = 0; + + UNK_021C59F4.unk04->unk66F[param0] = 1; + + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], + UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], + UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; + UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; +} + +extern u32 FUN_02031280(); + +THUMB_FUNC void FUN_0202F8D4() +{ + for (int i = 1; i < 8; i++) + { + if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + { + FUN_0202F820(i); + } + } +} + +THUMB_FUNC void FUN_0202F910(u32 param0) +{ + FUN_0202F820(param0); +} + +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(u32)); + +THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) +{ + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E5F8(param0, param1, param3); + FUN_0202D330(FUN_0202F910); + } + + FUN_0202F150(param0, param2); + + return ret; +} \ No newline at end of file -- cgit v1.2.3 From c0dc03771119177fed8cf15d12bebcc1b3aa9206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Thu, 8 Apr 2021 22:26:10 +0200 Subject: first nonmatching --- arm9/src/unk_0202F150_c.c | 549 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 529 insertions(+), 20 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c index e618469a..b0a249cf 100644 --- a/arm9/src/unk_0202F150_c.c +++ b/arm9/src/unk_0202F150_c.c @@ -1,6 +1,7 @@ #include "global.h" #include "MI_memory.h" #include "heap.h" +#include "main.h" struct { @@ -17,7 +18,7 @@ u8 UNK_02105D58 = 4; u8 UNK_02105D59 = 4; extern int FUN_02033534(); -extern u32 FUN_0202D858(u16 param0); +extern int FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); extern void FUN_0202F2F0(); @@ -32,11 +33,11 @@ extern u32 FUN_02030E7C(u16 param0); struct UnkStruct1 { - u8 unk000[38]; - u8 unk026[38]; + u8 unk000[2][38]; + // u8 unk026[38]; u8 unk04c[264]; - u8 unk154[192]; - u8 unk214[192]; + u8 unk154[2][192]; + // u8 unk214[192]; u8 unk2D4[384]; u32 unk454; u32 unk458; @@ -79,7 +80,9 @@ struct UnkStruct1 u32 unk5F8; u8 unk5FC[0x14]; u16 unk610[8]; - u8 unk620[0xc]; + u8 unk620[0x8]; + u16 unk628; + u8 unk62A[0x2]; u8 unk62C; u8 unk62D; u8 unk62E[0x2]; @@ -106,7 +109,9 @@ struct UnkStruct1 u8 unk686; u8 unk687; u8 unk688; - u8 unk689[0x3]; + u8 unk689; + u8 unk68A; + u8 unk68B; }; THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) @@ -219,20 +224,20 @@ THUMB_FUNC void FUN_0202F2F0() for (i = 0; i < 0xc0; i++) { - UNK_021C59F4.unk04->unk154[i] = 0xee; - UNK_021C59F4.unk04->unk214[i] = 0xee; + UNK_021C59F4.unk04->unk154[0][i] = 0xee; + UNK_021C59F4.unk04->unk154[1][i] = 0xee; } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); - UNK_021C59F4.unk04->unk000[0] = 0xff; - UNK_021C59F4.unk04->unk026[0] = 0xff; + UNK_021C59F4.unk04->unk000[0][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; for (i = 1; i < 0x26; i++) { - UNK_021C59F4.unk04->unk000[i] = 0xee; - UNK_021C59F4.unk04->unk026[i] = 0xee; + UNK_021C59F4.unk04->unk000[0][i] = 0xee; + UNK_021C59F4.unk04->unk000[1][i] = 0xee; } MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); @@ -307,20 +312,20 @@ THUMB_FUNC void FUN_0202F5A4() for (i = 0; i < 0xc0; i++) { - UNK_021C59F4.unk04->unk154[i] = 0xee; - UNK_021C59F4.unk04->unk214[i] = 0xee; + UNK_021C59F4.unk04->unk154[0][i] = 0xee; + UNK_021C59F4.unk04->unk154[1][i] = 0xee; } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); - UNK_021C59F4.unk04->unk000[0] = 0xff; - UNK_021C59F4.unk04->unk026[0] = 0xff; + UNK_021C59F4.unk04->unk000[0][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; for (i = 1; i < 0x26; i++) { - UNK_021C59F4.unk04->unk000[i] = 0xee; - UNK_021C59F4.unk04->unk026[i] = 0xee; + UNK_021C59F4.unk04->unk000[0][i] = 0xee; + UNK_021C59F4.unk04->unk000[1][i] = 0xee; } MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); @@ -414,4 +419,508 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) FUN_0202F150(param0, param2); return ret; -} \ No newline at end of file +} + +extern u32 FUN_0202E66C(u32 param0, u32 param1); + +THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E66C(param0, param1); + } + + FUN_0202F150(param0, param2); + + UNK_02105D58 = 4; + + return ret; +} + +extern u16 FUN_02031190(); +extern void FUN_02031088(); + + + + + +THUMB_FUNC void FUN_0202F984() { + u32 r4 = 0; + if (FUN_02031190() == 0 ) { + if (UNK_02105D59 != 4) { + return; + } + } else { + if (UNK_02105D58 != 4) { + return; + } + } + + if (UNK_021C59F4.unk04->unk67D == 2) { + UNK_021C59F4.unk04->unk67D = 0; + r4 = 1; + } + + if (UNK_021C59F4.unk04->unk67D == 3) { + UNK_021C59F4.unk04->unk67D = 1; + r4 = 1; + } + + if (r4 != 0) { + FUN_0202F5A4(); + } + FUN_02031088(); +} + + + + +THUMB_FUNC void FUN_0202F9E0(u32 param0) { + u8 r2 = UNK_021C59F4.unk04->unk67D; + if (r2 == 0 && param0 == 1) { + UNK_021C59F4.unk04->unk67D = 3; + } else if (r2 == 1 && param0 == 0) { + UNK_021C59F4.unk04->unk67D = 2; + } +} + + +THUMB_FUNC void FUN_0202FA10() { + FUN_0202F9E0(1); +} + + +THUMB_FUNC void FUN_0202FA1C() { + FUN_0202F9E0(0); +} + + + +THUMB_FUNC u8 FUN_0202FA28() { + u8 ret = UNK_021C59F4.unk04->unk67D; + if (ret == 2){ + return 1; + } else if (ret == 3) { + return 0; + } + + return ret; +} + +THUMB_FUNC u32 FUN_0202FA48() { + if (FUN_0202FA28() == 1) { + return 1; + } + + return 0; +} + +extern void MOD04_021D83C0(); +extern u32 FUN_0202E784(); +extern void FUN_020314D0(); +extern void FUN_0202DBA4(); +extern void FUN_0200CAB4(u32 param0); +extern void FUN_0202D824(u32 *param0); + +THUMB_FUNC void FUN_0202FA5C() { + u32 r4 = 0; + if (UNK_021C59F4.unk04 != 0) { + if (FUN_02033534() >= 0x13) { + MOD04_021D83C0(); + r4 = 1; + } else { + if (FUN_0202E784() != 0) { + r4 = 1; + } + } + } + + if (r4 != 0) { + FUN_020314D0(); + FUN_0202DBA4(); + UNK_021C59F4.unk00 = 0; + + FUN_0200CAB4(UNK_021C59F4.unk04->unk548); + UNK_021C59F4.unk04->unk548 = 0; + FreeToHeap(UNK_021C59F4.unk04->unk45C); + FreeToHeap(UNK_021C59F4.unk04->unk460); + FreeToHeap(UNK_021C59F4.unk04->unk458); + FreeToHeap(UNK_021C59F4.unk04->unk454); + FUN_0202D824(UNK_021C59F4.unk04->unk56C); + FUN_0202D824(UNK_021C59F4.unk04->unk54C); + FreeToHeap(UNK_021C59F4.unk04); + UNK_021C59F4.unk04 = NULL; + } +} + +extern u32 FUN_0202E9E8(u32 param0); + +THUMB_FUNC u32 FUN_0202FB18(u32 param0) { + return FUN_0202E9E8(param0); +} + + +extern void FUN_0203050C(); +extern void FUN_0202FEEC(); +extern u32 FUN_0202F03C(); +extern u32 FUN_0202EE24(); + + + +THUMB_FUNC void FUN_0202FB20() { + if (UNK_021C59F4.unk00 != 0) { + FUN_0203050C(); + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + FUN_0202FEEC(); + } + + UNK_021C59F4.unk00 = 0; + } +} + +THUMB_FUNC void FUN_0202FB58() { + if (FUN_0202F03C() != 0) { + if (FUN_02031190() == 0 ) { + if (FUN_0202EE24() == 0) { + FUN_0202FA5C(); + } + } else { + FUN_0202FA5C(); + } + } +} + +extern void FUN_02031CDC(); +extern void FUN_02030674(); +extern void FUN_0202FCCC(); +extern void FUN_02030DA4(); +extern void FUN_02030074(); +extern void FUN_02030DFC(); +extern void FUN_0202EBD0(u16 param0); +extern void FUN_0202ED70(u32 param0); +extern void FUN_020335F4(u32 param0); +extern void FUN_020315A4(); + + + +THUMB_FUNC u32 FUN_0202FB80() { + FUN_02031CDC(); + + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68A == 0) { + UNK_021C59F4.unk00 = 0; + FUN_0202F984(); + UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF; + FUN_02030674(); + FUN_0202FCCC(); + + UNK_021C59F4.unk04->unk628 &= 2<<0xe; + if (FUN_0202FA28() == 0) { + FUN_02030DA4(); + } + + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + FUN_02030074(); + } + + if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { + FUN_02030DFC(); + } + + UNK_021C59F4.unk00 = 1; + } + + + FUN_0202ED70(UNK_021C59F4.unk04->unk65C); + + if (FUN_02031190() == 0) { + FUN_0202F8D4(); + } + + FUN_0202FB58(); + } else { + FUN_0202ED70(0); + } + + + FUN_020335F4(0); + FUN_020315A4(); + + return 1; +} + + +THUMB_FUNC void FUN_0202FC60() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + FUN_0202F2F0(); + } + + UNK_021C59F4.unk00 = r4; +} + + +THUMB_FUNC void FUN_0202FC80() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk67D = 1; + FUN_0202F2F0(); + } + + UNK_021C59F4.unk00 = r4; +} + + +extern void FUN_0202E538(); + + +THUMB_FUNC void FUN_0202FCA8() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + FUN_0202F2F0(); + FUN_0202E538(); + } + + UNK_021C59F4.unk00 = r4; +} + + +extern u32 MOD04_021D78FC(void *param0, u32 param1); +extern u32 FUN_0202CBD4(); +extern u32 FUN_02030930(void *param0); + + + +THUMB_FUNC void FUN_0202FCCC() { + if (UNK_021C59F4.unk04->unk683 != 0 ) { + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + return; + } + + UNK_021C59F4.unk04->unk683 = 0; + return; + } + + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02031280() == 0) { + return; + } + } + + UNK_02105D58 = 0; + FUN_0203050C(); + if (UNK_02105D58 == 0) { + return; + } + + UNK_021C59F4.unk04->unk683 = 0; + return; + } + + + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk630 != 0){ + if ((int)UNK_021C59F4.unk04->unk634 > 3) { + return; + } + + if (UNK_02105D58 == 4) { + FUN_02030930(UNK_021C59F4.unk04); + UNK_02105D58 = 2; + } + } else { + if (UNK_02105D58 == 4) { + if (FUN_02030930(UNK_021C59F4.unk04) == 0) { + return; + } + + UNK_02105D58 = 2; + } + } + + + if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + return; + } + + UNK_02105D58 = 4; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02031280() == 0) { + return; + } + } + + if (UNK_02105D58 != 4) { + return; + } + + + + //nonmatching + if ((int)UNK_021C59F4.unk04->unk634 > 3) { + return; + } + + FUN_02030930(&UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]); + + FUN_02030930(&UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]); + + UNK_02105D58 = 0; + FUN_0203050C(); +} + +extern int FUN_02031228(u16 param0); +extern void FUN_0202D4BC(void *param0); +extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); + + + + + + +#ifdef NONMATCHING +THUMB_FUNC u32 FUN_0202FE2C(int param0) { + + // these 3 variables are shuffled on the stack, everything else matches + int st4 = 0; + int stc = FUN_02031228(FUN_02033534()); + int st8 = FUN_0202D858(FUN_02033534()) + 1; + + + for (int r7 = 0; r7 < st8 ; r7++) { + + FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]); + + if (FUN_02030E7C(r7) != 0) { + UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe; + } + + FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc); + + if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { + st4++; + } + } + + if (st4 == st8) { + return 0; + } + + return 1; +} +#else +THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + str r0, [sp, #0xc] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + mov r7, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _0202FED0 + ldr r0, [sp, #0x0] + mov r1, #0xc0 + add r6, r0, #0x0 + add r4, r7, #0x0 + add r5, r7, #0x0 + mul r6, r1 +_0202FE66: + ldr r0, =UNK_021C59F4 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + add r0, r1, r0 + add r0, r0, r4 + bl FUN_0202D4BC + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202FE90 + ldr r0, =UNK_021C59F4 + mov r1, #0xe + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r2, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + strb r1, [r2, r0] +_0202FE90: + ldr r0, =UNK_021C59F4 + mov r2, #0x55 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, r1, r2 + add r1, r1, r6 + ldr r2, [sp, #0xc] + add r0, r0, r4 + add r1, r1, r5 + bl FUN_0202D400 + ldr r0, =UNK_021C59F4 + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r1, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0xe + bne _0202FEC2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0202FEC2: + ldr r0, [sp, #0xc] + add r7, r7, #0x1 + add r5, r5, r0 + ldr r0, [sp, #0x8] + add r4, #0xc + cmp r7, r0 + blt _0202FE66 +_0202FED0: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + cmp r1, r0 + bne _0202FEDE + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202FEDE: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} +} +#endif + + + -- cgit v1.2.3 From cbe18ecb3e513a30da11aaef1ef22cd855c60d7a Mon Sep 17 00:00:00 2001 From: tgsm Date: Thu, 8 Apr 2021 21:31:13 -0400 Subject: Decompile scrcmd_4 -> scrcmd_names --- arm9/src/scrcmd_names.c | 540 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 540 insertions(+) create mode 100644 arm9/src/scrcmd_names.c (limited to 'arm9/src') diff --git a/arm9/src/scrcmd_names.c b/arm9/src/scrcmd_names.c new file mode 100644 index 00000000..cf721328 --- /dev/null +++ b/arm9/src/scrcmd_names.c @@ -0,0 +1,540 @@ +#include "scrcmd.h" +#include "event_data.h" +#include "itemtool.h" +#include "nutdata.h" +#include "party.h" +#include "player_data.h" +#include "script_buffers.h" +#include "unk_02024E64.h" +#include "unk_02064E4C.h" +#include "unk_0207FC5C.h" + +extern void* FUN_02039438(struct UnkSavStruct80* sav_ptr, int idx); + +extern u32 FUN_020536D0(u32 gender, u32 avatar, u32 a2); +extern u32 FUN_0205F388(struct ScriptState* state); +extern u32 FUN_0205F398(struct ScriptState* state); +extern struct PCStorage* GetStoragePCPointer(struct SaveBlock2* sav2); +extern u32 FUN_0205F3C0(struct ScriptState* state); +extern u32 FUN_02054C14(u32 number); + +THUMB_FUNC BOOL ScrCmd_GetPlayerName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(sav2); + + BufferPlayersName(*mgr, idx, player); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetRivalName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + + BufferRivalsName(*mgr, idx, sav_ptr->saveBlock2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetFriendName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + + BufferFriendsName(*mgr, idx, sav_ptr->saveBlock2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00D0(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct Pokemon* mon = GetPartyMonByIndex(party, mon_idx); + + BufferBoxMonSpeciesName(*mgr, idx, &mon->box); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetItemName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferItemName(*mgr, idx, item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetPocketName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 pocket = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferPocketName(*mgr, idx, pocket); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetTMHMMoveName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 tmhm = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 move = TMHMGetMove(tmhm); + + BufferMoveName(*mgr, idx, move); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetMoveName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 move = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferMoveName(*mgr, idx, move); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00D5(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u32 digits = FUN_02054C14(unk); + + BufferIntegerAsString(*mgr, idx, unk, digits, 1, TRUE); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0280(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u8 unk2 = ScriptReadByte(ctx); + u8 digits = ScriptReadByte(ctx); + if (unk2 == 0) + { + digits = (u8)FUN_02054C14(unk); + } + + BufferIntegerAsString(*mgr, idx, unk, digits, unk2, TRUE); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00D6(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx); + + BufferBoxMonNickname(*mgr, idx, &pokemon->box); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0251(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct PCStorage* pc = GetStoragePCPointer(sav_ptr->saveBlock2); + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 box_mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + s32 box_no = box_mon_idx / 30; + s32 slot_no = box_mon_idx % 30; + struct BoxPokemon* box_mon = PCStorage_GetMonByIndexPair(pc, box_no, slot_no); + + BufferBoxMonNickname(*mgr, idx, box_mon); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetPoketchAppName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 app = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferPoketchAppName(*mgr, idx, app); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetTrainerClassName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 trainer_class = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferTrainerClassName(*mgr, idx, trainer_class); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00D9(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(sav_ptr); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(sav2); + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u32 gender = PlayerProfile_GetTrainerGender(player); + u32 avatar = PlayerProfile_GetAvatar(player); + u32 trainer_class = FUN_020536D0(gender, avatar, 2); + + BufferTrainerClassNameWithArticle(*mgr, idx, trainer_class); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00DA(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 msg_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk1 = ScriptReadHalfword(ctx); + u8 unk2 = ScriptReadByte(ctx); + struct String* str = FUN_02040AE4(msg_no, 4); + + BufferString(*mgr, idx, str, unk1, unk2, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC struct String* FUN_02040AE4(u32 msg_no, u32 heap_id) +{ + struct MsgData* msg_data = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 362, heap_id); + struct String* ret = NewString_ReadMsgData(msg_data, msg_no); + DestroyMsgData(msg_data); + + return ret; +} + +THUMB_FUNC BOOL ScrCmd_Unk00DB(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u32 msg_no = FUN_0205F388(state); + struct String* str = FUN_02040AE4(msg_no, 4); + + BufferString(*mgr, idx, str, 0, 1, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00DC(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u32 msg_no = FUN_0205F398(state); + struct String* str = FUN_02040AE4(msg_no, 4); + + BufferString(*mgr, idx, str, 0, 1, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00DD(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u32 msg_no = FUN_0205F3C0(state); + struct String* str = FUN_02040AE4(msg_no, 4); + + BufferString(*mgr, idx, str, 0, 1, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetDecorationName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 decoration = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferDecorationName(*mgr, idx, decoration); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetUndergroundTrapName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 underground_trap = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferUndergroundTrapName(*mgr, idx, underground_trap); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetUndergroundItemName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 underground_item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferUndergroundItemName(*mgr, idx, underground_item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk00E2(struct ScriptContext* ctx) +{ + struct String* str = String_ctor(22, 4); + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 map_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_02064E60(map_no, 4, str); + BufferString(*mgr, idx, str, 0, 1, 2); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk017B(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 berry = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct String* nut_name = GetNutName((u16)(berry - FIRST_BERRY_IDX), 32); + + BufferString(*mgr, idx, nut_name, 0, unk < 2, 2); + String_dtor(nut_name); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetNatureName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 nature = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferNatureName(*mgr, idx, nature); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetFashionName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 fashion = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferFashionName(*mgr, idx, fashion); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0272(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct String* str = String_ctor(11, 11); + struct UnkStruct_02024E64* unk = FUN_02024EB4(ctx->unk80->saveBlock2); + u16* unk_buffer = FUN_02024F0C(unk); + + CopyU16ArrayToString(str, unk_buffer); + BufferString(*mgr, idx, str, 0, 0, gGameLanguage); + String_dtor(str); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetPokemonMoveName(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + struct ScrStrBufs** mgr = FUN_02039438(sav_ptr, 15); + u8 idx = ScriptReadByte(ctx); + u16 mon_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 mon_move_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + struct PlayerParty* party = SavArray_PlayerParty_get(sav_ptr->saveBlock2); + struct Pokemon* pokemon = GetPartyMonByIndex(party, mon_idx); + u16 move = (u16)GetMonData(pokemon, MON_DATA_MOVE1 + mon_move_idx, NULL); + + BufferMoveName(*mgr, idx, move); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0232(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u8 unk = (u8)VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 ribbon = (u16)FUN_0207FC5C(unk, 3); + + BufferRibbonNameOrDesc(*mgr, idx, ribbon); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetSealName(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 seal = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferSealName(*mgr, idx, (u16)(seal - 1)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetItemNameWithIndefArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferItemNameWithIndefArticle(*mgr, idx, item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetItemNamePlural(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferItemNamePlural(*mgr, idx, item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetDecorationNameWithArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 decoration = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferDecorationNameWithArticle(*mgr, idx, decoration); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetUndergroundTrapNameWithArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 underground_trap = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferUndergroundTrapNameWithArticle(*mgr, idx, underground_trap); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetUndergroundItemNameWithArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 underground_item = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferUndergroundItemNameWithArticle(*mgr, idx, underground_item); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02C9(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 species = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused1 = ScriptReadHalfword(ctx); + u8 unused2 = ScriptReadByte(ctx); + + BufferSpeciesNameWithArticle(*mgr, idx, species); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02CA(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u32 species = FUN_0205F3C0(state); + + BufferSpeciesNameWithArticle(*mgr, idx, species); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetFashionNameWithArticle(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 fashion = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferFashionNameWithArticle(*mgr, idx, fashion); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02CC(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 trainer_class = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferTrainerClassNameWithArticle(*mgr, idx, trainer_class); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetSealNamePlural(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + u16 seal = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferSealNamePlural(*mgr, idx, (u16)(seal - 1)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_CapitalizeFirstChar(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + u8 idx = ScriptReadByte(ctx); + + ScrStrBufs_UpperFirstChar(*mgr, idx); + + return FALSE; +} -- cgit v1.2.3 From 419991733b49432fbd2f130e960736469af85400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 9 Apr 2021 20:12:14 +0200 Subject: more decomp --- arm9/src/unk_0202F150_c.c | 368 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 366 insertions(+), 2 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c index b0a249cf..162761a8 100644 --- a/arm9/src/unk_0202F150_c.c +++ b/arm9/src/unk_0202F150_c.c @@ -14,8 +14,8 @@ struct // u8 unk01; // }; -u8 UNK_02105D58 = 4; -u8 UNK_02105D59 = 4; +vu8 UNK_02105D58 = 4; +vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern int FUN_0202D858(u16 param0); @@ -796,6 +796,7 @@ extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); +THUMB_FUNC u32 FUN_0202FE2C(int param0); #ifdef NONMATCHING THUMB_FUNC u32 FUN_0202FE2C(int param0) { @@ -923,4 +924,367 @@ _0202FEDE: #endif +extern void FUN_020304F0(u32 param0); +extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); +extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); + +THUMB_FUNC void FUN_0202FEEC() { + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { + return; + } + + int st0 = FUN_02031228(FUN_02033534()); + int r6 = FUN_0202D858(FUN_02033534())+1; + + if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + + UNK_02105D59++; + + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(UNK_021C59F4.unk04->unk680); + } + + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + UNK_02105D59--; + } + } + + int i; + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) != 0) { + UNK_021C59F4.unk04->unk638[i]++; + } else if (FUN_02031280() != 0 && i == 0) { + UNK_021C59F4.unk04->unk638[i]++; + } + } + + + FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); + + UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + } + + + + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + } + } + + + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + UNK_02105D59++; + } + } +} + + +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_02030A00(void *param0); + + + +THUMB_FUNC void FUN_02030074() { + if (UNK_021C59F4.unk04->unk683 != 0) { + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + FUN_0202FEEC(); + if (UNK_02105D59 == 2) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } + } + + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0) { + if (UNK_021C59F4.unk04->unk630 != 0) { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + + if (UNK_02105D59 == 4) { + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(0); + } + + UNK_02105D59 = 2; + } + } else { + if (UNK_02105D59 == 4 ) { + if (FUN_0202FA28() == 1) { + if (FUN_0202FE2C(0) == 0) { + return; + } + } + } + + + UNK_02105D59 = 2; + } + + + + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + return; + } + + UNK_02105D59 = 4; + UNK_021C59F4.unk04->unk638[0]++; + UNK_021C59F4.unk04->unk638[1]++; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + if (UNK_02105D59 == 4) { + for (int r4 = 1; r4 < 8; r4++) + { + if (FUN_02030E7C(r4) != 0) { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + return; + } + } else if (r4 == 0) { + if (FUN_02031280() != 0) { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + } + } + } + + + if (FUN_0202FA28() == 0) { + FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + } + + + UNK_02105D59 = 0; + FUN_0202FEEC(); + } + } +} + + + +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { + if (UNK_021C59F4.unk04->unk66F[0] != 0) { + UNK_021C59F4.unk04->unk634--; + UNK_021C59F4.unk04->unk66F[0] = 0; + return; + } + + FUN_0203026C(param0, param1, param2); +} + +extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); + + + +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { + UNK_021C59F4.unk04->unk634--; + if (param1 == 0) { + return; + } + + if (param1[0] == 0xb) { + if (FUN_0202FA28() == 1) { + return; + } + param1++; + } else { + if (FUN_0202FA28() == 0) { + return; + } + } + + + if (UNK_021C59F4.unk04->unk682 != 0) { + if ((param1[0] & 1) != 0) { + return; + } + } + + UNK_021C59F4.unk04->unk682 = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + int st4 = FUN_0202D858(FUN_02033534())+1; + + int r4 = 0; + while (r4 < st4) { + u32 new; + if (param1[0] == 0xff) { + new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; + + if (param1[0] == 0xff) { + param1 += r6; + } else if (param1[0] == 0xe){ + param1 += r6; + } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + param1 += r6; + } else { + param1++; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + + param1 += r6-1; + UNK_021C59F4.unk04->unk667[r4] = 0; + } + + + r4++; + } + + return; + } + + + UNK_021C59F4.unk04->unk65C = param1[1]; + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); +} + +extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); + + +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { + if (UNK_021C59F4.unk04->unk66F[param0] != 0) { + + UNK_021C59F4.unk04->unk638[param0]--; + UNK_021C59F4.unk04->unk66F[param0] = 0; + return; + } + + FUN_020303F4(param0, param1, param2); +} + +extern void FUN_020307E4(u8 *param0, u32 param1); +extern int FUN_0202D498(void *param0); + + + +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { + UNK_021C59F4.unk04->unk638[param0]--; + if (param1 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + return; + } + + UNK_021C59F4.unk04->unk667[param0] = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if ((param1[0] & 2) == 0) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + } + + UNK_021C59F4.unk04->unk65F[param0]++; + return; + } + + + FUN_020307E4(param1, param0); + + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + } +} + + +THUMB_FUNC void FUN_020304D4(u32 param0) { + if (param0 != 0) { + UNK_02105D58++; + return; + } + + ErrorHandling(); +} + +THUMB_FUNC void FUN_020304F0(u32 param0) { + if (param0 != 0) { + UNK_02105D59++; + return; + } + + ErrorHandling(); +} + +extern u16 FUN_0202CB8C(); + + +THUMB_FUNC void FUN_0203050C() { + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { + return; + } + + int r4 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + if (FUN_0202CBD4() != 4) { + return; + } + + if (FUN_02030E7C(FUN_02031190()) == 0) { + FUN_02031190(); + return; + } + + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + return; + } + + + if (FUN_02031190() != 0) { + UNK_02105D58++; + + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + UNK_02105D58--; + return; + } + + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if ((FUN_0202CB8C() & 0xFFFE) != 0) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + } +} \ No newline at end of file -- cgit v1.2.3 From f37e674e468b37a6f30abdbdf4f68ead98c3afb1 Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 9 Apr 2021 13:41:02 -0400 Subject: scrcmd_25: Fix naming --- arm9/src/scrcmd_25.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/scrcmd_25.c b/arm9/src/scrcmd_25.c index e3638675..5124ad9a 100644 --- a/arm9/src/scrcmd_25.c +++ b/arm9/src/scrcmd_25.c @@ -1,26 +1,26 @@ #include "scrcmd.h" -THUMB_FUNC BOOL ScrCmd_Unk02EF(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_Unk023F(struct ScriptContext * ctx) { #pragma unused(ctx) GF_ASSERT(FALSE); return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk02F0(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_Unk0240(struct ScriptContext * ctx) { #pragma unused(ctx) GF_ASSERT(FALSE); return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk02F1(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_Unk0241(struct ScriptContext * ctx) { #pragma unused(ctx) return FALSE; } -THUMB_FUNC BOOL ScrCmd_Unk02F2(struct ScriptContext * ctx) +THUMB_FUNC BOOL ScrCmd_Unk0242(struct ScriptContext * ctx) { #pragma unused(ctx) return FALSE; -- cgit v1.2.3 From 91ba9c6177680893e43d7f59a04858950aaf069a Mon Sep 17 00:00:00 2001 From: tgsm Date: Sat, 10 Apr 2021 00:24:56 -0400 Subject: Decompile scrcmd_23 --- arm9/src/scrcmd_23.c | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 arm9/src/scrcmd_23.c (limited to 'arm9/src') diff --git a/arm9/src/scrcmd_23.c b/arm9/src/scrcmd_23.c new file mode 100644 index 00000000..0c9907a5 --- /dev/null +++ b/arm9/src/scrcmd_23.c @@ -0,0 +1,169 @@ +#include "scrcmd.h" + +extern BOOL FUN_02025D6C(void*, u16); +extern BOOL FUN_02025D94(void*, u16); +extern BOOL FUN_02026298(void*, u16); +extern void* FUN_02026CC4(struct SaveBlock2* sav2); +extern BOOL FUN_020260C4(void*, u16, u16); + +THUMB_FUNC BOOL ScrCmd_Unk0083(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk2 = FUN_02026CC4(sav2); + + *ret_ptr = (u16)FUN_02025D6C(unk2, unk1); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0084(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0085(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk2 = FUN_02026CC4(sav2); + + *ret_ptr = (u16)FUN_02025D94(unk2, unk1); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0086(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0087(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk2 = FUN_02026CC4(sav2); + + *ret_ptr = (u16)FUN_02026298(unk2, unk1); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0088(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0089(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008A(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008B(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unused3 = FUN_02026CC4(sav2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008C(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008D(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008E(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk008F(struct ScriptContext* ctx) +{ + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + u16 unk1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk3 = FUN_02026CC4(sav2); + + *ret_ptr = (u16)FUN_020260C4(unk3, unk1, unk2); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0090(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0091(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0092(struct ScriptContext* ctx) +{ + u16 unused1 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unused2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + return FALSE; +} -- cgit v1.2.3 From 405d77ac981ce6ece1c529ab153543d118014661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:26:38 +0200 Subject: decomp finished --- arm9/src/unk_0202F150.c | 2382 +++++++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_0202F150_c.c | 1290 ------------------------ 2 files changed, 2382 insertions(+), 1290 deletions(-) create mode 100644 arm9/src/unk_0202F150.c delete mode 100644 arm9/src/unk_0202F150_c.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c new file mode 100644 index 00000000..dd86b10d --- /dev/null +++ b/arm9/src/unk_0202F150.c @@ -0,0 +1,2382 @@ +#include "global.h" +#include "MI_memory.h" +#include "heap.h" +#include "main.h" +#include "RTC_api.h" + +struct +{ + u8 unk00; + struct UnkStruct1 *unk04; +} UNK_021C59F4; + + +vu8 UNK_02105D58 = 4; +vu8 UNK_02105D59 = 4; + +extern int FUN_02033534(); +extern u32 FUN_0202D858(u16 param0); +extern void FUN_02031480(u32 param0); +extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202F2F0(); +extern void FUN_020312BC(u32 param0); +extern void FUN_0202FB20(); + +extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); +extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); + +extern void FUN_0202D804(u32 *param0); +extern u32 FUN_02030E7C(u16 param0); + +struct UnkStruct1 +{ + u8 unk000[2][38]; + u8 unk04c[264]; + u8 unk154[2][192]; + u8 unk2D4[384]; + u32 unk454; + u32 unk458; + u32 unk45C; + u32 unk460; + u32 unk464; + u8 unk468[0x8]; + u32 unk470; + u8 unk474[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk47C[8]; + u32 unk4DC; + u8 unk4E0[0x8]; + struct + { + u32 unk00; + u32 unk04; + u32 unk08; + } unk4E8[8]; + u32 unk548; + u8 unk54C[32]; + u8 unk56C[32]; + struct + { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; + u8 unk0b; + } unk58C[8]; + u32 unk5EC; + u32 unk5F0; + u16 unk5F4; + u8 unk5F6; + u8 unk5F7; + s64 unk5F8[3]; + u16 unk610[8]; + u8 unk620[0x8]; + u16 unk628; + u8 unk62A; + u8 unk62B; + u8 unk62C; + s8 unk62D; + u16 unk62E; + u32 unk630; + u32 unk634; + u32 unk638[8]; + u32 unk658; + u16 unk65C; + u8 unk65E; + u8 unk65F[8]; + u8 unk667[8]; + u8 unk66F[8]; + u8 unk677[4]; + u8 unk67B; + u8 unk67C; + u8 unk67D; + u8 unk67E; + u8 unk67F; + u8 unk680; + u8 unk681; + u8 unk682; + u8 unk683; + u8 unk684; + u8 unk685; + u8 unk686; + u8 unk687; + u8 unk688; + u8 unk689; + u8 unk68A; + u8 unk68B; +}; + +THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) +{ + u32 r4 = 0; + UNK_021C59F4.unk00 = 0; + if (param0 != 0) + { + u32 res = FUN_0202D858(FUN_02033534()) + 1; + + if (UNK_021C59F4.unk04 != 0) + { + return 1; + } + + FUN_02031480(0xf); + struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, sizeof(struct UnkStruct1)); + UNK_021C59F4.unk04 = ptr; + MI_CpuFill8(ptr, 0, 0x68C); + + UNK_021C59F4.unk04->unk658 = param1 + 0x40; + UNK_021C59F4.unk04->unk67D = 0; + UNK_021C59F4.unk04->unk67E = 0x1b; + + UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); + + UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); + + if (FUN_02033534() == 0xa) + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); + } + else + { + FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); + FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); + } + } + else + { + + r4 = 1; + if (UNK_021C59F4.unk04 == 0) + { + ErrorHandling(); + } + } + + UNK_021C59F4.unk04->unk65C = 0; + + for (int i = 0; i < 4; i++) + { + UNK_021C59F4.unk04->unk677[i] = 0xff; + } + + if (r4 == 0) + { + FUN_0202F2F0(); + } + + FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + + if (r4 == 0) + { + u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); + + UNK_021C59F4.unk04->unk548 = res2; + } + + UNK_021C59F4.unk04->unk687 = 0; + + return 1; +} + +THUMB_FUNC void FUN_0202F2F0() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + UNK_021C59F4.unk04->unk67F = 0; + UNK_021C59F4.unk04->unk680 = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[0][i] = 0xee; + UNK_021C59F4.unk04->unk154[1][i] = 0xee; + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + + UNK_021C59F4.unk04->unk000[0][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[0][i] = 0xee; + UNK_021C59F4.unk04->unk000[1][i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + + UNK_021C59F4.unk04->unk638[i] = 0; + } + + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + UNK_02105D59 = 4; + UNK_02105D58 = 4; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F5A4() +{ + UNK_021C59F4.unk04->unk62C = 0; + UNK_021C59F4.unk04->unk62D = 0; + + s32 res = FUN_0202D858(FUN_02033534()) + 1; + + MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); + + int i; + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], + UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); + + for (i = 0; i < res; i++) + { + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], + UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + + for (i = 0; i < 0xc0; i++) + { + UNK_021C59F4.unk04->unk154[0][i] = 0xee; + UNK_021C59F4.unk04->unk154[1][i] = 0xee; + } + + MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + + UNK_021C59F4.unk04->unk000[0][0] = 0xff; + UNK_021C59F4.unk04->unk000[1][0] = 0xff; + + for (i = 1; i < 0x26; i++) + { + UNK_021C59F4.unk04->unk000[0][i] = 0xee; + UNK_021C59F4.unk04->unk000[1][i] = 0xee; + } + + MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); + FUN_0202D394( + &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); + + UNK_021C59F4.unk04->unk684 = 0; + UNK_021C59F4.unk04->unk685 = 0; + + for (i = 0; i < 8; i++) + { + UNK_021C59F4.unk04->unk65F[i] = 0; + UNK_021C59F4.unk04->unk667[i] = 1; + UNK_021C59F4.unk04->unk66F[i] = 1; + UNK_021C59F4.unk04->unk610[i] = 0; + + UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[i].unk04 = 0; + UNK_021C59F4.unk04->unk58C[i].unk00 = 0; + } + + UNK_021C59F4.unk04->unk630 = 1; + UNK_021C59F4.unk04->unk5F6 = 0xee; + UNK_021C59F4.unk04->unk5F4 = 0xffff; + UNK_021C59F4.unk04->unk5F0 = 0; + UNK_021C59F4.unk04->unk5EC = 0; + UNK_021C59F4.unk04->unk682 = 1; + UNK_021C59F4.unk04->unk683 = 1; + + FUN_0202D804(UNK_021C59F4.unk04->unk54C); + FUN_0202D804(UNK_021C59F4.unk04->unk56C); + + UNK_021C59F4.unk04->unk688 = 0; +} + +THUMB_FUNC void FUN_0202F820(u32 param0) +{ + UNK_021C59F4.unk04->unk65F[param0] = 0; + + UNK_021C59F4.unk04->unk667[param0] = 1; + + UNK_021C59F4.unk04->unk638[param0] = 0; + + UNK_021C59F4.unk04->unk66F[param0] = 1; + + FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], + UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], + UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, + UNK_021C59F4.unk04->unk658); + + UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; + UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; + UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; + UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; +} + +extern u8 FUN_02031280(); + +THUMB_FUNC void FUN_0202F8D4() +{ + for (int i = 1; i < 8; i++) + { + if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + { + FUN_0202F820(i); + } + } +} + +THUMB_FUNC void FUN_0202F910(u32 param0) +{ + FUN_0202F820(param0); +} + +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(u32)); + +THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) +{ + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E5F8(param0, param1, param3); + FUN_0202D330(FUN_0202F910); + } + + FUN_0202F150(param0, param2); + + return ret; +} + +extern u32 FUN_0202E66C(u32 param0, u32 param1); + +THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { + u32 ret = 1; + if (FUN_02033534() < 0x13) + { + ret = FUN_0202E66C(param0, param1); + } + + FUN_0202F150(param0, param2); + + UNK_02105D58 = 4; + + return ret; +} + +extern u16 FUN_02031190(); +extern void FUN_02031088(); + + + + + +THUMB_FUNC void FUN_0202F984() { + u32 r4 = 0; + if (FUN_02031190() == 0 ) { + if (UNK_02105D59 != 4) { + return; + } + } else { + if (UNK_02105D58 != 4) { + return; + } + } + + if (UNK_021C59F4.unk04->unk67D == 2) { + UNK_021C59F4.unk04->unk67D = 0; + r4 = 1; + } + + if (UNK_021C59F4.unk04->unk67D == 3) { + UNK_021C59F4.unk04->unk67D = 1; + r4 = 1; + } + + if (r4 != 0) { + FUN_0202F5A4(); + } + FUN_02031088(); +} + + + + +THUMB_FUNC void FUN_0202F9E0(u32 param0) { + u8 r2 = UNK_021C59F4.unk04->unk67D; + if (r2 == 0 && param0 == 1) { + UNK_021C59F4.unk04->unk67D = 3; + } else if (r2 == 1 && param0 == 0) { + UNK_021C59F4.unk04->unk67D = 2; + } +} + + +THUMB_FUNC void FUN_0202FA10() { + FUN_0202F9E0(1); +} + + +THUMB_FUNC void FUN_0202FA1C() { + FUN_0202F9E0(0); +} + + + +THUMB_FUNC u8 FUN_0202FA28() { + u8 ret = UNK_021C59F4.unk04->unk67D; + if (ret == 2){ + return 1; + } else if (ret == 3) { + return 0; + } + + return ret; +} + +THUMB_FUNC u32 FUN_0202FA48() { + if (FUN_0202FA28() == 1) { + return 1; + } + + return 0; +} + +extern void MOD04_021D83C0(); +extern u32 FUN_0202E784(); +extern void FUN_020314D0(); +extern void FUN_0202DBA4(); +extern void FUN_0200CAB4(u32 param0); +extern void FUN_0202D824(u32 *param0); + +THUMB_FUNC void FUN_0202FA5C() { + u32 r4 = 0; + if (UNK_021C59F4.unk04 != 0) { + if (FUN_02033534() >= 0x13) { + MOD04_021D83C0(); + r4 = 1; + } else { + if (FUN_0202E784() != 0) { + r4 = 1; + } + } + } + + if (r4 != 0) { + FUN_020314D0(); + FUN_0202DBA4(); + UNK_021C59F4.unk00 = 0; + + FUN_0200CAB4(UNK_021C59F4.unk04->unk548); + UNK_021C59F4.unk04->unk548 = 0; + FreeToHeap(UNK_021C59F4.unk04->unk45C); + FreeToHeap(UNK_021C59F4.unk04->unk460); + FreeToHeap(UNK_021C59F4.unk04->unk458); + FreeToHeap(UNK_021C59F4.unk04->unk454); + FUN_0202D824(UNK_021C59F4.unk04->unk56C); + FUN_0202D824(UNK_021C59F4.unk04->unk54C); + FreeToHeap(UNK_021C59F4.unk04); + UNK_021C59F4.unk04 = NULL; + } +} + +extern u32 FUN_0202E9E8(u32 param0); + +THUMB_FUNC u32 FUN_0202FB18(u32 param0) { + return FUN_0202E9E8(param0); +} + + +extern void FUN_0203050C(); +extern void FUN_0202FEEC(); +extern u32 FUN_0202F03C(); +extern u32 FUN_0202EE24(); + + + +THUMB_FUNC void FUN_0202FB20() { + if (UNK_021C59F4.unk00 != 0) { + FUN_0203050C(); + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + FUN_0202FEEC(); + } + + UNK_021C59F4.unk00 = 0; + } +} + +THUMB_FUNC void FUN_0202FB58() { + if (FUN_0202F03C() != 0) { + if (FUN_02031190() == 0 ) { + if (FUN_0202EE24() == 0) { + FUN_0202FA5C(); + } + } else { + FUN_0202FA5C(); + } + } +} + +extern void FUN_02031CDC(); +extern void FUN_02030674(); +extern void FUN_0202FCCC(); +extern void FUN_02030DA4(); +extern void FUN_02030074(); +extern void FUN_02030DFC(); +extern void FUN_0202EBD0(u16 param0); +extern void FUN_0202ED70(u32 param0); +extern void FUN_020335F4(u32 param0); +extern void FUN_020315A4(); + + + +THUMB_FUNC u32 FUN_0202FB80() { + FUN_02031CDC(); + + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68A == 0) { + UNK_021C59F4.unk00 = 0; + FUN_0202F984(); + UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF; + FUN_02030674(); + FUN_0202FCCC(); + + UNK_021C59F4.unk04->unk628 &= 2<<0xe; + if (FUN_0202FA28() == 0) { + FUN_02030DA4(); + } + + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + FUN_02030074(); + } + + if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { + FUN_02030DFC(); + } + + UNK_021C59F4.unk00 = 1; + } + + + FUN_0202ED70(UNK_021C59F4.unk04->unk65C); + + if (FUN_02031190() == 0) { + FUN_0202F8D4(); + } + + FUN_0202FB58(); + } else { + FUN_0202ED70(0); + } + + + FUN_020335F4(0); + FUN_020315A4(); + + return 1; +} + + +THUMB_FUNC void FUN_0202FC60() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + FUN_0202F2F0(); + } + + UNK_021C59F4.unk00 = r4; +} + + +THUMB_FUNC void FUN_0202FC80() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk67D = 1; + FUN_0202F2F0(); + } + + UNK_021C59F4.unk00 = r4; +} + + +extern void FUN_0202E538(); + + +THUMB_FUNC void FUN_0202FCA8() { + u8 r4 = UNK_021C59F4.unk00; + + UNK_021C59F4.unk00 = 0; + + if (UNK_021C59F4.unk04 != NULL) { + FUN_0202F2F0(); + FUN_0202E538(); + } + + UNK_021C59F4.unk00 = r4; +} + + +extern u32 MOD04_021D78FC(void *param0, u32 param1); +extern u32 FUN_0202CBD4(); +extern u32 FUN_02030930(u8 *param0); + + + +THUMB_FUNC void FUN_0202FCCC() { + if (UNK_021C59F4.unk04->unk683 != 0 ) { + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + return; + } + + UNK_021C59F4.unk04->unk683 = 0; + return; + } + + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02031280() == 0) { + return; + } + } + + UNK_02105D58 = 0; + FUN_0203050C(); + if (UNK_02105D58 == 0) { + return; + } + + UNK_021C59F4.unk04->unk683 = 0; + return; + } + + + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk630 != 0){ + if ((int)UNK_021C59F4.unk04->unk634 > 3) { + return; + } + + if (UNK_02105D58 == 4) { + FUN_02030930(UNK_021C59F4.unk04->unk000[0]); + UNK_02105D58 = 2; + } + } else { + if (UNK_02105D58 == 4) { + if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 0) { + return; + } + + UNK_02105D58 = 2; + } + } + + + if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + return; + } + + UNK_02105D58 = 4; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02031280() == 0) { + return; + } + } + + if (UNK_02105D58 != 4) { + return; + } + + + + //nonmatching + if ((int)UNK_021C59F4.unk04->unk634 > 3) { + return; + } + + FUN_02030930(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]); + + FUN_02030930(UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]); + + UNK_02105D58 = 0; + FUN_0203050C(); +} + +extern int FUN_02031228(u16 param0); +extern void FUN_0202D4BC(void *param0); +extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); + + + + + +THUMB_FUNC u32 FUN_0202FE2C(int param0); + +#ifdef NONMATCHING +THUMB_FUNC u32 FUN_0202FE2C(int param0) { + + // these 3 variables are shuffled on the stack, everything else matches + int st4 = 0; + int stc = FUN_02031228(FUN_02033534()); + int st8 = FUN_0202D858(FUN_02033534()) + 1; + + + for (int r7 = 0; r7 < st8 ; r7++) { + + FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]); + + if (FUN_02030E7C(r7) != 0) { + UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe; + } + + FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc); + + if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { + st4++; + } + } + + if (st4 == st8) { + return 0; + } + + return 1; +} +#else +THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + str r0, [sp, #0xc] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + mov r7, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _0202FED0 + ldr r0, [sp, #0x0] + mov r1, #0xc0 + add r6, r0, #0x0 + add r4, r7, #0x0 + add r5, r7, #0x0 + mul r6, r1 +_0202FE66: + ldr r0, =UNK_021C59F4 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + add r0, r1, r0 + add r0, r0, r4 + bl FUN_0202D4BC + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202FE90 + ldr r0, =UNK_021C59F4 + mov r1, #0xe + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r2, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + strb r1, [r2, r0] +_0202FE90: + ldr r0, =UNK_021C59F4 + mov r2, #0x55 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, r1, r2 + add r1, r1, r6 + ldr r2, [sp, #0xc] + add r0, r0, r4 + add r1, r1, r5 + bl FUN_0202D400 + ldr r0, =UNK_021C59F4 + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r1, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0xe + bne _0202FEC2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0202FEC2: + ldr r0, [sp, #0xc] + add r7, r7, #0x1 + add r5, r5, r0 + ldr r0, [sp, #0x8] + add r4, #0xc + cmp r7, r0 + blt _0202FE66 +_0202FED0: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + cmp r1, r0 + bne _0202FEDE + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202FEDE: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} +} +#endif + + +extern void FUN_020304F0(u32 param0); +extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); +extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); + + +THUMB_FUNC void FUN_0202FEEC() { + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { + return; + } + + int st0 = FUN_02031228(FUN_02033534()); + int r6 = FUN_0202D858(FUN_02033534())+1; + + if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + + UNK_02105D59++; + + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(UNK_021C59F4.unk04->unk680); + } + + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + UNK_02105D59--; + } + } + + int i; + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) != 0) { + UNK_021C59F4.unk04->unk638[i]++; + } else if (FUN_02031280() != 0 && i == 0) { + UNK_021C59F4.unk04->unk638[i]++; + } + } + + + FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); + + UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + } + + + + for (i = 0; i < r6; i++) { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + } + } + + + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + UNK_02105D59++; + } + } +} + + +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_02030A00(u8 *param0); + + + +THUMB_FUNC void FUN_02030074() { + if (UNK_021C59F4.unk04->unk683 != 0) { + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + FUN_0202FEEC(); + if (UNK_02105D59 == 2) { + UNK_021C59F4.unk04->unk683 = 0; + return; + } + } + } + + if (FUN_02033534() >= 0x13) { + if (FUN_02030E7C(0) != 0) { + if (UNK_021C59F4.unk04->unk630 != 0) { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + + if (UNK_02105D59 == 4) { + if (FUN_0202FA28() == 1) { + FUN_0202FE2C(0); + } + + UNK_02105D59 = 2; + } + } else { + if (UNK_02105D59 == 4 ) { + if (FUN_0202FA28() == 1) { + if (FUN_0202FE2C(0) == 0) { + return; + } + } + } + + + UNK_02105D59 = 2; + } + + + + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + return; + } + + UNK_02105D59 = 4; + UNK_021C59F4.unk04->unk638[0]++; + UNK_021C59F4.unk04->unk638[1]++; + } + } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + if (UNK_02105D59 == 4) { + for (int r4 = 1; r4 < 8; r4++) + { + if (FUN_02030E7C(r4) != 0) { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + return; + } + } else if (r4 == 0) { + if (FUN_02031280() != 0) { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + return; + } + } + } + } + + + if (FUN_0202FA28() == 0) { + FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + } + + + UNK_02105D59 = 0; + FUN_0202FEEC(); + } + } +} + + + +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { + if (UNK_021C59F4.unk04->unk66F[0] != 0) { + UNK_021C59F4.unk04->unk634--; + UNK_021C59F4.unk04->unk66F[0] = 0; + return; + } + + FUN_0203026C(param0, param1, param2); +} + +extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); + + + +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { + UNK_021C59F4.unk04->unk634--; + if (param1 == 0) { + return; + } + + if (param1[0] == 0xb) { + if (FUN_0202FA28() == 1) { + return; + } + param1++; + } else { + if (FUN_0202FA28() == 0) { + return; + } + } + + + if (UNK_021C59F4.unk04->unk682 != 0) { + if ((param1[0] & 1) != 0) { + return; + } + } + + UNK_021C59F4.unk04->unk682 = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + int st4 = FUN_0202D858(FUN_02033534())+1; + + int r4 = 0; + while (r4 < st4) { + u32 new; + if (param1[0] == 0xff) { + new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; + + if (param1[0] == 0xff) { + param1 += r6; + } else if (param1[0] == 0xe){ + param1 += r6; + } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + param1 += r6; + } else { + param1++; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + + param1 += r6-1; + UNK_021C59F4.unk04->unk667[r4] = 0; + } + + + r4++; + } + + return; + } + + + UNK_021C59F4.unk04->unk65C = param1[1]; + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + + UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); +} + +extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); + + +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { + if (UNK_021C59F4.unk04->unk66F[param0] != 0) { + + UNK_021C59F4.unk04->unk638[param0]--; + UNK_021C59F4.unk04->unk66F[param0] = 0; + return; + } + + FUN_020303F4(param0, param1, param2); +} + +extern u32 FUN_020307E4(u8 *param0, u32 param1); +extern int FUN_0202D498(void *param0); + + + +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { + UNK_021C59F4.unk04->unk638[param0]--; + if (param1 == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + return; + } + + UNK_021C59F4.unk04->unk667[param0] = 0; + if (FUN_0202FA28() == 1) { + int r6 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if ((param1[0] & 2) == 0) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + } + + UNK_021C59F4.unk04->unk65F[param0]++; + return; + } + + + FUN_020307E4(param1, param0); + + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + } +} + + +THUMB_FUNC void FUN_020304D4(u32 param0) { + if (param0 != 0) { + UNK_02105D58++; + return; + } + + ErrorHandling(); +} + +THUMB_FUNC void FUN_020304F0(u32 param0) { + if (param0 != 0) { + UNK_02105D59++; + return; + } + + ErrorHandling(); +} + +extern u16 FUN_0202CB8C(); + + +THUMB_FUNC void FUN_0203050C() { + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { + return; + } + + int r4 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + if (FUN_0202CBD4() != 4) { + return; + } + + if (FUN_02030E7C(FUN_02031190()) == 0) { + FUN_02031190(); + return; + } + + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + return; + } + + + if (FUN_02031190() != 0) { + UNK_02105D58++; + + + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + UNK_02105D58--; + return; + } + + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + return; + } + + + if ((FUN_0202CB8C() & 0xFFFE) != 0) { + UNK_02105D58++; + FUN_020304D4(1); + + + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + + UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk634++; + } +} + +extern s64 _ll_mul(s64, s64); + +#ifdef NONMATCHING +THUMB_FUNC void FUN_02030674() { + u16 r4 = 0; + if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) { + return; + } + + if (UNK_021C59F4.unk04->unk62C == 2) { + if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + r4 = r4 | 0x10; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + r4 = r4 | 0x20; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + r4 = r4 | 0x80; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + r4 = r4 | 0x40; + } + } else { + if (UNK_021C59F4.unk04->unk62E != 0) { + r4 = UNK_021C59F4.unk04->unk62E; + UNK_021C59F4.unk04->unk62D--; + + if (UNK_021C59F4.unk04->unk62D < 0) { + UNK_021C59F4.unk04->unk62E = 0; + } + + } else { + UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + UNK_021C59F4.unk04->unk5F8[2]; + + switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) { + case 0: + r4 = 0x20; + break; + case 1: + r4 = 0x10; + break; + case 2: + r4 = 0x40; + break; + case 3: + r4 = 0x80; + break; + } + + + UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[2] + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; + UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0]>>0x3c | (0 << 4); + UNK_021C59F4.unk04->unk62E = r4; + } + } + + + UNK_021C59F4.unk04->unk628 &= ~0xf0; + UNK_021C59F4.unk04->unk628 += r4; +} +#else +THUMB_FUNC asm void FUN_02030674() { + push {r3-r7, lr} + ldr r7, =UNK_021C59F4 + mov r6, #0x0 + ldr r5, [r7, #0x4] + ldr r2, =0x0000062C + add r4, r6, #0x0 + ldrb r0, [r5, r2] + cmp r0, #0x0 + beq _02030690 + sub r1, r2, #0x4 + ldrh r1, [r5, r1] + mov r3, #0xf0 + tst r3, r1 + bne _02030692 +_02030690: + b _02030794 +_02030692: + cmp r0, #0x2 + bne _020306D0 + mov r0, #0x20 + tst r0, r1 + beq _020306A4 + mov r0, #0x10 + orr r0, r6 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306A4: + mov r0, #0x10 + tst r0, r1 + beq _020306B2 + mov r0, #0x20 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306B2: + mov r0, #0x40 + tst r0, r1 + beq _020306C0 + mov r0, #0x80 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306C0: + mov r0, #0x80 + tst r0, r1 + beq _0203077E + mov r0, #0x40 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203077E +_020306D0: + add r0, r2, #0x2 + ldrh r0, [r5, r0] + cmp r0, #0x0 + beq _020306F2 + add r4, r0, #0x0 + add r0, r2, #0x1 + ldrsb r0, [r5, r0] + sub r1, r0, #0x1 + add r0, r2, #0x1 + strb r1, [r5, r0] + ldr r1, [r7, #0x4] + ldrsb r0, [r1, r0] + cmp r0, #0x0 + bge _0203077E + add r0, r2, #0x2 + strh r6, [r1, r0] + b _0203077E +_020306F2: + add r0, r2, #0x0 + sub r0, #0x34 + add r6, r5, r0 + sub r2, #0x34 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r5, r2] + ldr r3, [r6, #0x4] + bl _ll_mul + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + ldr r2, =0x000005F8 + str r0, [r5, r2] + mov r2, #0x0 + str r1, [r6, #0x4] + lsr r0, r1, #0x1e + lsl r1, r2, #0x2 + orr r1, r0 + cmp r1, #0x3 + bhi _02030746 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02030730: // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, r0, #0x0 // case 0 + lsl r2, r1, #0x0 // case 1 + lsl r6, r1, #0x0 // case 2 + lsl r2, r2, #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 +_02030738: + mov r4, #0x20 + b _02030746 +_0203073C: + mov r4, #0x10 + b _02030746 +_02030740: + mov r4, #0x40 + b _02030746 +_02030744: + mov r4, #0x80 +_02030746: + ldr r0, =UNK_021C59F4 + ldr r5, [r0, #0x4] + ldr r0, =0x000005F8 + add r6, r5, r0 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r6, #0x0] + ldr r3, [r6, #0x4] + bl _ll_mul + ldr r3, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r3, r0 + adc r2, r1 + ldr r1, =0x000005F8 + mov r3, #0x0 + str r0, [r5, r1] + str r2, [r6, #0x4] + lsr r0, r2, #0x1c + lsl r2, r3, #0x4 + orr r2, r0 + add r0, r1, #0x0 + add r0, #0x35 + strb r2, [r5, r0] + ldr r0, =UNK_021C59F4 + add r1, #0x36 + ldr r0, [r0, #0x4] + strh r4, [r0, r1] +_0203077E: + ldr r2, =UNK_021C59F4 + ldr r1, =0x00000628 + ldr r5, [r2, #0x4] + mov r0, #0xf0 + ldrh r3, [r5, r1] + bic r3, r0 + strh r3, [r5, r1] + ldr r2, [r2, #0x4] + ldrh r0, [r2, r1] + add r0, r0, r4 + strh r0, [r2, r1] +_02030794: + pop {r3-r7, pc} +} +#endif + + +THUMB_FUNC void FUN_020307A8() { + UNK_021C59F4.unk04->unk62C = 1; +} + + +THUMB_FUNC void FUN_020307BC() { + UNK_021C59F4.unk04->unk62C = 2; +} + + +THUMB_FUNC void FUN_020307D0() { + UNK_021C59F4.unk04->unk62C = 0; +} + + + +THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { + UNK_021C59F4.unk04->unk610[param1] = 0; + + u32 r7 = param0[0] & 0x10; + if (r7 == 0x10) { + + + u8 r5 = param0[0] & 0xc; + if (r5 == 0) { + UNK_021C59F4.unk04->unk610[param1] |= 0x40; + } else if (r5 == 4) { + UNK_021C59F4.unk04->unk610[param1] |= 0x80; + } else if (r5 == 8) { + UNK_021C59F4.unk04->unk610[param1] |= 0x20; + } else if (r5 == 0xc) { + UNK_021C59F4.unk04->unk610[param1] |= 0x10; + } + + UNK_021C59F4.unk04->unk620[param1] = (param0[0]>>5) & 0x7; + } + + + return 1; +} + +THUMB_FUNC void FUN_0203086C() { +} + +extern u32 FUN_02030FE0(); + + +THUMB_FUNC u32 FUN_02030870(u8 *param0) { + if (UNK_021C59F4.unk04->unk62A != 0){ + return 0; + } + + if (FUN_02030FE0() == 0) { + return 0; + } + + if (UNK_021C59F4.unk04->unk681 != 0) { + UNK_021C59F4.unk04->unk681--; + } + + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + param0[0] |= 0x10; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + param0[0] |= 0x14; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + param0[0] |= 0x18; + UNK_021C59F4.unk04->unk681 = 8; + } else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + param0[0] |= 0x1c; + UNK_021C59F4.unk04->unk681 = 8; + } + + + param0[0] |= UNK_021C59F4.unk04->unk62B<<5; + + return 0; +} + + +extern u32 FUN_0202D4E4(u8 *param0); +extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); + + +THUMB_FUNC u32 FUN_02030930(u8 *param0) { + int r5 = FUN_02031228(FUN_02033534()); + FUN_0202D858(FUN_02033534()); + + u8 r0; + if (UNK_021C59F4.unk04->unk684 == 0) { + param0[0] = 0; + } else { + param0[0] = 1; + } + + if (FUN_0202FA28() == 0) { + FUN_02030870(param0); + } + + UNK_021C59F4.unk04->unk684 = 0; + + if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) { + param0[0] |= 2; + if (param0[0] == 2) { + return 0; + } + } else { + int st0[2]; + st0[1] = r5-1; + st0[0] = param0+1; + if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { + UNK_021C59F4.unk04->unk684 = 1; + } + + + if (FUN_0202FA28() == 1) { + UNK_021C59F4.unk04->unk65E++; + + param0[0] |= UNK_021C59F4.unk04->unk65E<<4 & 0xf0; + } + } + + return 1; + +} + + +THUMB_FUNC void FUN_02030A00(u8 *param0) { + param0[0] = 0xb; + if (UNK_021C59F4.unk04->unk685 == 0) { + param0[1] = 0; + } else { + param0[1] = 1; + } + + u16 res = FUN_0202CB8C(); + param0[2] = res >>8; + param0[3] = res; + + + int st0[2]; + st0[1] = 0xbb; + st0[0] = param0+5; + if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { + UNK_021C59F4.unk04->unk685 = 0; + param0[4] = 0xbb - st0[1]; + + return; + } + + UNK_021C59F4.unk04->unk685 = 1; + param0[4] = 0xbb; +} + +extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); +extern void FUN_02031454(); + +THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) { + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) { + return 1; + } + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) { + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) { + return 1; + } + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) { + if (FUN_02031190() != 0) { + ErrorHandling(); + return 0; + } + + + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202FA28() == 1) { + return FUN_02030A78(param0, param1, param2); + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) { + return 1; + } + + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + + +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) { + if (FUN_02031190() != 0) { + FUN_02031454(); + return 0; + } + + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + return 0; + } + + if (FUN_0202FA28() == 1) { + return FUN_02030ADC(param0, param1, param2); + } + + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) { + return 1; + } + + + if (FUN_02033534() == 0xa) { + FUN_02031454(); + } + + return 0; +} + + + +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) { + return FUN_02030BC4(param0, param1, 0); +} + + +THUMB_FUNC int FUN_02030C58() { + return FUN_0202D498(&UNK_021C59F4.unk04->unk464); +} + +extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); + +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) { + FUN_0202D934(param0, param1, param2, param3); + + *(u8 *)(param4+0xa) = 0xee; + *(u16 *)(param4+0x8) = 0xffff; + *(u32 *)(param4+0x4) = 0; + *(u32 *)(param4) = 0; +} + + +extern int FUN_0202D478(s16 *param0); +extern u32 FUN_0202D41C(s16 *param0); +extern s16 FUN_0202D9A0(u32 param0); +extern u32 FUN_0202DA04(u32 param0); +extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); + +struct UnkStruct2 { + u32 unk00; + u32 unk04; + u16 unk08; + u8 unk0a; +}; + + + +THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { + while (FUN_0202D478(param0) != 0) { + + + u32 r7 = param4->unk0a; + if (r7 == 0xee) { + r7 = FUN_0202D41C(param0); + if (r7 == 0xee) { + continue; + } + } + + int st10 = param0[2]; + param4->unk0a = r7; + int r4 = param4->unk08; + if (r4 == 0xffff) { + r4 = FUN_0202D9A0(r7); + + if (UNK_021C59F4.unk04->unk689 != 0) { + return; + } + + if (r4 == 0xffff) { + if (FUN_0202D478(param0) < 1) { + param0[2] = st10; + return; + } + + + r4 = FUN_0202D41C(param0) <<8; + r4 += FUN_0202D41C(param0); + + st10 = param0[2]; + } + + param4->unk08 = r4; + } + + + if (FUN_0202DA04(r7) != 0) { + if (param4->unk04 == 0) { + param4->unk04 = FUN_0202DA40(r7, param1, param4->unk08); + } + + int stc = FUN_0202D400(param0, param2, r4 - param4->unk00); + + if (param4->unk04 != 0) { + MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); + } + + + if ((int)(param4->unk00 += stc) < (int)r4) { + continue; + } + + FUN_02030C70(param1, r7, r4, param4->unk04, param4); + } else { + if (FUN_0202D478(param0) >= r4) { + FUN_0202D400(param0, param2, r4); + FUN_02030C70(param1, r7, r4, param2, param4); + } else { + param0[2] = st10; + return; + } + } + + } +} + + + +THUMB_FUNC void FUN_02030DA4() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68B == 0) { + FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { + UNK_021C59F4.unk04->unk470; + + + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + } + } + } +} + + +THUMB_FUNC void FUN_02030DFC() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk68B == 0) { + int r7 = FUN_0202D858(FUN_02033534()) + 1; + int r4; + for (r4 = 0; r4 < r7; r4++) { + FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { + + + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], r4, UNK_021C59F4.unk04->unk460, 0, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + } + } + } + } +} + +extern u32 MOD04_021D8018(); +extern u32 FUN_02030F40(); + + + +THUMB_FUNC u32 FUN_02030E7C(u16 param0) { + if (UNK_021C59F4.unk04 == NULL) { + return 0; + } + + + if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) { + if (param0 == 0) { + return 1; + } + + if (param0 == 1) { + return 1; + } + } + + return 0; + } + + if (FUN_02030F40() == 0) { + return 0; + } + + if (FUN_0202CBD4() != 4) { + return 0; + } + + if (FUN_02031190() == param0) { + return 1; + } + + if (FUN_02031190() == 0) { + u16 r0 = FUN_0202CB8C(); + + if ((r0 & (1<unk65C & (1<= 0x13) { + return 1; + } + + return FUN_0202EDF8(); +} + + + +THUMB_FUNC void FUN_02030F60(u8 param0) { + UNK_021C59F4.unk04->unk62B = param0; +} + + +THUMB_FUNC u8 FUN_02030F74(u32 param0) { + return UNK_021C59F4.unk04->unk620[param0]; +} + + +THUMB_FUNC u32 FUN_02030F88(u32 param0) { + if (UNK_021C59F4.unk04 == NULL) { + return 0; + } + + u32 ret = UNK_021C59F4.unk04->unk610[param0]; + UNK_021C59F4.unk04->unk610[param0] = 0; + + return ret; +} + +THUMB_FUNC void FUN_02030FA8() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk628 |= 0x8000; + } +} + + +THUMB_FUNC void FUN_02030FC8() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk628 = 0; + } +} + + +THUMB_FUNC u32 FUN_02030FE0() { + if (UNK_021C59F4.unk04 != NULL) { + return UNK_021C59F4.unk04->unk628 & 0x8000; + } + + return 1; +} + + + +THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) { + if (FUN_0202FA28() == 1) { + FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0); + return; + } + + + FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); + +} + + +THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) { + FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); +} + + +extern u32 FUN_020311D0(u32 param0, u8 *param1); + + + +THUMB_FUNC void FUN_02031088() { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk67B != 1) { + if (UNK_021C59F4.unk04->unk67B != 3) { + return; + } + } else { + u32 res; + if (FUN_0202FA28() == 1) { + res = FUN_020311D0(0xb, &UNK_021C59F4.unk04->unk67C); + } else { + res = FUN_02030BC4(0xb, &UNK_021C59F4.unk04->unk67C, 1); + } + + if (res == 0) { + return; + } + UNK_021C59F4.unk04->unk67B = 2; + return; + + + } + + if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) { + FUN_0202F9E0(UNK_021C59F4.unk04->unk67C); + UNK_021C59F4.unk04->unk67B = 0; + } + + } +} + + +THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() == 0) { + UNK_021C59F4.unk04->unk67B = 1; + UNK_021C59F4.unk04->unk67C = param2[0]; + } +} + +THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() != 0) { + UNK_021C59F4.unk04->unk67C = param2[0]; + UNK_021C59F4.unk04->unk67B = 3; + } +} + + +THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { + if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { + FUN_0202F9E0(*param2); + UNK_021C59F4.unk04->unk67B = 0; + } +} + + +extern u16 FUN_0202D19C(); + +THUMB_FUNC u16 FUN_02031190() { + if (UNK_021C59F4.unk04 != NULL) { + if (FUN_02033534() >= 0x13) { + u32 res = MOD04_021D8018(); + if (res != 0xffffffff) { + return res; + } + } else { + if (FUN_02031280() != 0) { + return 0; + } + + return FUN_0202D19C(); + } + } + + return 0; +} + + +THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) { + return FUN_02030ADC(param0, param1, 0); +} + + +THUMB_FUNC u32 FUN_020311DC(u32 param0) { + return FUN_02030ADC(param0, 0, 0); +} + + +THUMB_FUNC u32 FUN_020311E8() { + return FUN_0202EE24(); +} + + +extern void FUN_020334E8(u32 param0, u32 param1); +extern u32 FUN_0202EE60(); + +THUMB_FUNC u32 FUN_020311F0() { + if (FUN_02031280() != 0) { + return 0; + } + + if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) { + FUN_020334E8(1, 1); + return 1; + } + + return FUN_0202EE60(); +} + + + +THUMB_FUNC int FUN_02031228(u16 param0) { + if (FUN_0202D858(param0) >= 5) { + return 0xc; + } + + if (FUN_0202FA28() == 0) { + return 0xc; + } + + return 0x26; +} + +THUMB_FUNC u32 FUN_02031248(u32 param0) { + return FUN_0202D858(param0) +1; +} + +extern u32 FUN_0202D884(u16 param0); + + + +THUMB_FUNC u32 FUN_02031258(u32 param0) { + return FUN_0202D884(param0) +1; +} + +THUMB_FUNC void FUN_02031268(u8 param0) { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk686 = param0; + } +} + +THUMB_FUNC u8 FUN_02031280() { + if (UNK_021C59F4.unk04 != NULL) { + return UNK_021C59F4.unk04->unk686; + } + + return 0; +} + +extern void FUN_0202F05C(); + +THUMB_FUNC void FUN_0203129C() { + if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { + u32 st0; + FUN_02030C4C(2, &st0); + } + + FUN_0202F05C(); +} + +extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); + + +#ifdef NONMATCHING +THUMB_FUNC void FUN_020312BC(u32 param0) { + RTCDate st10; + RTCTime st4; + GF_RTC_CopyDateTime(&st10, &st4); + + gMain.unk2C + st4.second; + u32 r6 = st10.year<<4 + st10.month; + u32 r5 = 0<<4 | st10.year>>0x1c; + st4.second; + + u32 st0 = st10.day; + st4.hour; + st4.minute; + + 0x00000000; + (0x00000000 + r5) <<5; + + +} +#else +THUMB_FUNC asm void FUN_020312BC(u32 param0) { + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x10 + add r1, sp, #0x4 + bl GF_RTC_CopyDateTime + ldr r0, =gMain + ldr r6, [sp, #0x10] + mov r5, #0x0 + lsr r7, r6, #0x1c + lsl r5, r5, #0x4 + ldr r1, [sp, #0xc] + ldr r0, [r0, #0x2c] + lsl r6, r6, #0x4 + add r3, r1, r0 + ldr r0, [sp, #0x18] + orr r5, r7 + str r0, [sp, #0x0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r6, r0, r6 + ldr r0, =0x00000000 + ldr r2, [sp, #0x8] + adc r0, r5 + lsr r5, r6, #0x1b + lsl r0, r0, #0x5 + orr r0, r5 + ldr r5, [sp, #0x0] + lsl r6, r6, #0x5 + add r6, r5, r6 + ldr r5, =0x00000000 + adc r5, r0 + lsr r0, r6, #0x1b + lsl r5, r5, #0x5 + orr r5, r0 + lsl r0, r6, #0x5 + add r6, r1, r0 + ldr r1, =0x00000000 + adc r1, r5 + lsr r0, r6, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + lsl r0, r6, #0x6 + add r5, r2, r0 + ldr r2, =0x00000000 + adc r2, r1 + lsr r0, r5, #0x1a + lsl r1, r2, #0x6 + orr r1, r0 + lsl r0, r5, #0x6 + add r2, r3, r0 + ldr r0, =0x00000000 + str r2, [r4, #0x0] + adc r0, r1 + str r0, [r4, #0x4] + ldr r1, =0x6C078965 + ldr r0, =0x5D588B65 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, =0x00269EC3 + str r0, [r4, #0x10] + mov r0, #0x0 + str r0, [r4, #0x14] + add sp, #0x20 + pop {r3-r7, pc} +} +#endif + +extern void FUN_0202D830(u8 *param0, u32 param1); + +THUMB_FUNC void FUN_02031354(u32 param0) { + FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); +} + + +THUMB_FUNC u32 FUN_02031370() { + return FUN_0202D4E4(UNK_021C59F4.unk04->unk56C); +} + +THUMB_FUNC u32 FUN_02031388() { + return FUN_0202D4E4(UNK_021C59F4.unk04->unk54C); +} + +THUMB_FUNC void FUN_020313A0(u8 param0) { + UNK_021C59F4.unk04->unk687 = param0; +} + +THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk677[param1] = param0; + } +} + +THUMB_FUNC u32 FUN_020313CC(u32 param0) { + if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04->unk677[param0] != 0xff) { + return UNK_021C59F4.unk04->unk677[param0]; + } + } + + return param0; +} + +extern u32 MOD04_021D8624(); + +THUMB_FUNC u32 FUN_020313EC() { + if (FUN_02033534() < 0x13) { + return 0; + } + + return MOD04_021D8624(); +} + +THUMB_FUNC void FUN_02031400(u32 param0) { + if (FUN_02033534() >= 0x13) { + UNK_021C59F4.unk04->unk630 = param0; + if (param0 != 0) { + UNK_021C59F4.unk04->unk634 = 0; + UNK_021C59F4.unk04->unk638[0] = 0; + UNK_021C59F4.unk04->unk638[1] = 0; + } + } +} + + +THUMB_FUNC u32 FUN_02031438() { + if (UNK_021C59F4.unk04->unk681 != 0) { + return 1; + } + + return 0; +} + + +THUMB_FUNC void FUN_02031454() { + UNK_021C59F4.unk04->unk689 = 1; +} + +THUMB_FUNC void FUN_02031468() { + if (UNK_021C59F4.unk04 != NULL) { + UNK_021C59F4.unk04->unk68A = 1; + } +} \ No newline at end of file diff --git a/arm9/src/unk_0202F150_c.c b/arm9/src/unk_0202F150_c.c deleted file mode 100644 index 162761a8..00000000 --- a/arm9/src/unk_0202F150_c.c +++ /dev/null @@ -1,1290 +0,0 @@ -#include "global.h" -#include "MI_memory.h" -#include "heap.h" -#include "main.h" - -struct -{ - u8 unk00; - struct UnkStruct1 *unk04; -} UNK_021C59F4; - -// struct UnkStruct2 { -// u8 unk00; -// u8 unk01; -// }; - -vu8 UNK_02105D58 = 4; -vu8 UNK_02105D59 = 4; - -extern int FUN_02033534(); -extern int FUN_0202D858(u16 param0); -extern void FUN_02031480(u32 param0); -extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); -extern void FUN_0202F2F0(); -extern void FUN_020312BC(u32 param0); -extern void FUN_0202FB20(); - -extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); - -extern void FUN_0202D804(u32 *param0); -extern u32 FUN_02030E7C(u16 param0); - -struct UnkStruct1 -{ - u8 unk000[2][38]; - // u8 unk026[38]; - u8 unk04c[264]; - u8 unk154[2][192]; - // u8 unk214[192]; - u8 unk2D4[384]; - u32 unk454; - u32 unk458; - u32 unk45C; - u32 unk460; - u32 unk464; - u8 unk468[0x8]; - u32 unk470; - u8 unk474[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk47C[8]; - u32 unk4DC; - u8 unk4E0[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk4E8[8]; - u32 unk548; - u8 unk54C[32]; - u8 unk56C[32]; - struct - { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; - u8 unk0b; - } unk58C[8]; - u32 unk5EC; - u32 unk5F0; - u16 unk5F4; - u8 unk5F6; - u8 unk5F7; - u32 unk5F8; - u8 unk5FC[0x14]; - u16 unk610[8]; - u8 unk620[0x8]; - u16 unk628; - u8 unk62A[0x2]; - u8 unk62C; - u8 unk62D; - u8 unk62E[0x2]; - u32 unk630; - u32 unk634; - u32 unk638[8]; - u32 unk658; - u16 unk65C; - u8 unk65E; - u8 unk65F[8]; - u8 unk667[8]; - u8 unk66F[8]; - u8 unk677[4]; - u8 unk67B[0x2]; - u8 unk67D; - u8 unk67E; - u8 unk67F; - u8 unk680; - u8 unk681; - u8 unk682; - u8 unk683; - u8 unk684; - u8 unk685; - u8 unk686; - u8 unk687; - u8 unk688; - u8 unk689; - u8 unk68A; - u8 unk68B; -}; - -THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) -{ - u32 r4 = 0; - UNK_021C59F4.unk00 = 0; - if (param0 != 0) - { - u32 res = FUN_0202D858(FUN_02033534()) + 1; - - if (UNK_021C59F4.unk04 != 0) - { - return 1; - } - - FUN_02031480(0xf); - struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, 0x68C); - UNK_021C59F4.unk04 = ptr; - MI_CpuFill8(ptr, 0, 0x68C); - - UNK_021C59F4.unk04->unk658 = param1 + 0x40; - UNK_021C59F4.unk04->unk67D = 0; - UNK_021C59F4.unk04->unk67E = 0x1b; - - UNK_021C59F4.unk04->unk45C = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658 << 1); - - UNK_021C59F4.unk04->unk460 = AllocFromHeap(0xf, UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk458 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk454 = AllocFromHeap(0xf, res * UNK_021C59F4.unk04->unk658); - - if (FUN_02033534() == 0xa) - { - FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x64, &UNK_021C59F4.unk04->unk464); - FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x32 << 4, &UNK_021C59F4.unk04->unk4DC); - } - else - { - FUN_0202D7D8(UNK_021C59F4.unk04->unk54C, 0x14, &UNK_021C59F4.unk04->unk464); - FUN_0202D7D8(UNK_021C59F4.unk04->unk56C, 0x1b + 0xfd, &UNK_021C59F4.unk04->unk4DC); - } - } - else - { - - r4 = 1; - if (UNK_021C59F4.unk04 == 0) - { - ErrorHandling(); - } - } - - UNK_021C59F4.unk04->unk65C = 0; - - for (int i = 0; i < 4; i++) - { - UNK_021C59F4.unk04->unk677[i] = 0xff; - } - - if (r4 == 0) - { - FUN_0202F2F0(); - } - - FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); - - if (r4 == 0) - { - u32 res2 = FUN_0200CA60(FUN_0202FB20, 0, 0); - - UNK_021C59F4.unk04->unk548 = res2; - } - - UNK_021C59F4.unk04->unk687 = 0; - - return 1; -} - -THUMB_FUNC void FUN_0202F2F0() -{ - UNK_021C59F4.unk04->unk62C = 0; - UNK_021C59F4.unk04->unk62D = 0; - UNK_021C59F4.unk04->unk67F = 0; - UNK_021C59F4.unk04->unk680 = 0; - - s32 res = FUN_0202D858(FUN_02033534()) + 1; - - MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); - - int i; - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], - UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); - - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], - UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); - - for (i = 0; i < 0xc0; i++) - { - UNK_021C59F4.unk04->unk154[0][i] = 0xee; - UNK_021C59F4.unk04->unk154[1][i] = 0xee; - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); - - UNK_021C59F4.unk04->unk000[0][0] = 0xff; - UNK_021C59F4.unk04->unk000[1][0] = 0xff; - - for (i = 1; i < 0x26; i++) - { - UNK_021C59F4.unk04->unk000[0][i] = 0xee; - UNK_021C59F4.unk04->unk000[1][i] = 0xee; - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); - - FUN_0202D394( - &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); - - UNK_021C59F4.unk04->unk684 = 0; - UNK_021C59F4.unk04->unk685 = 0; - - for (i = 0; i < 8; i++) - { - UNK_021C59F4.unk04->unk65F[i] = 0; - UNK_021C59F4.unk04->unk667[i] = 1; - UNK_021C59F4.unk04->unk66F[i] = 1; - UNK_021C59F4.unk04->unk610[i] = 0; - - UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[i].unk04 = 0; - UNK_021C59F4.unk04->unk58C[i].unk00 = 0; - - UNK_021C59F4.unk04->unk638[i] = 0; - } - - UNK_021C59F4.unk04->unk634 = 0; - UNK_021C59F4.unk04->unk630 = 1; - UNK_021C59F4.unk04->unk5F6 = 0xee; - UNK_021C59F4.unk04->unk5F4 = 0xffff; - UNK_021C59F4.unk04->unk5F0 = 0; - UNK_021C59F4.unk04->unk5EC = 0; - UNK_021C59F4.unk04->unk682 = 1; - UNK_021C59F4.unk04->unk683 = 1; - - UNK_02105D59 = 4; - UNK_02105D58 = 4; - - FUN_0202D804(UNK_021C59F4.unk04->unk54C); - FUN_0202D804(UNK_021C59F4.unk04->unk56C); - - UNK_021C59F4.unk04->unk688 = 0; -} - -THUMB_FUNC void FUN_0202F5A4() -{ - UNK_021C59F4.unk04->unk62C = 0; - UNK_021C59F4.unk04->unk62D = 0; - - s32 res = FUN_0202D858(FUN_02033534()) + 1; - - MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); - - int i; - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[i], - UNK_021C59F4.unk04->unk458 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk454, 0, UNK_021C59F4.unk04->unk658 * res); - - for (i = 0; i < res; i++) - { - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[i], - UNK_021C59F4.unk04->unk454 + i * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); - - for (i = 0; i < 0xc0; i++) - { - UNK_021C59F4.unk04->unk154[0][i] = 0xee; - UNK_021C59F4.unk04->unk154[1][i] = 0xee; - } - - MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); - - UNK_021C59F4.unk04->unk000[0][0] = 0xff; - UNK_021C59F4.unk04->unk000[1][0] = 0xff; - - for (i = 1; i < 0x26; i++) - { - UNK_021C59F4.unk04->unk000[0][i] = 0xee; - UNK_021C59F4.unk04->unk000[1][i] = 0xee; - } - - MI_CpuFill8(UNK_021C59F4.unk04->unk45C, 0, UNK_021C59F4.unk04->unk658 << 1); - FUN_0202D394( - &UNK_021C59F4.unk04->unk470, UNK_021C59F4.unk04->unk45C, UNK_021C59F4.unk04->unk658 * 2); - - UNK_021C59F4.unk04->unk684 = 0; - UNK_021C59F4.unk04->unk685 = 0; - - for (i = 0; i < 8; i++) - { - UNK_021C59F4.unk04->unk65F[i] = 0; - UNK_021C59F4.unk04->unk667[i] = 1; - UNK_021C59F4.unk04->unk66F[i] = 1; - UNK_021C59F4.unk04->unk610[i] = 0; - - UNK_021C59F4.unk04->unk58C[i].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[i].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[i].unk04 = 0; - UNK_021C59F4.unk04->unk58C[i].unk00 = 0; - } - - UNK_021C59F4.unk04->unk630 = 1; - UNK_021C59F4.unk04->unk5F6 = 0xee; - UNK_021C59F4.unk04->unk5F4 = 0xffff; - UNK_021C59F4.unk04->unk5F0 = 0; - UNK_021C59F4.unk04->unk5EC = 0; - UNK_021C59F4.unk04->unk682 = 1; - UNK_021C59F4.unk04->unk683 = 1; - - FUN_0202D804(UNK_021C59F4.unk04->unk54C); - FUN_0202D804(UNK_021C59F4.unk04->unk56C); - - UNK_021C59F4.unk04->unk688 = 0; -} - -THUMB_FUNC void FUN_0202F820(u32 param0) -{ - UNK_021C59F4.unk04->unk65F[param0] = 0; - - UNK_021C59F4.unk04->unk667[param0] = 1; - - UNK_021C59F4.unk04->unk638[param0] = 0; - - UNK_021C59F4.unk04->unk66F[param0] = 1; - - FUN_0202D394(&UNK_021C59F4.unk04->unk47C[param0], - UNK_021C59F4.unk04->unk454 + param0 * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - - FUN_0202D394(&UNK_021C59F4.unk04->unk4E8[param0], - UNK_021C59F4.unk04->unk458 + param0 * UNK_021C59F4.unk04->unk658, - UNK_021C59F4.unk04->unk658); - - UNK_021C59F4.unk04->unk58C[param0].unk0a = 0xee; - UNK_021C59F4.unk04->unk58C[param0].unk08 = 0xffff; - UNK_021C59F4.unk04->unk58C[param0].unk04 = 0; - UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; -} - -extern u32 FUN_02031280(); - -THUMB_FUNC void FUN_0202F8D4() -{ - for (int i = 1; i < 8; i++) - { - if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) - { - FUN_0202F820(i); - } - } -} - -THUMB_FUNC void FUN_0202F910(u32 param0) -{ - FUN_0202F820(param0); -} - -extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D330(void (*param0)(u32)); - -THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) -{ - u32 ret = 1; - if (FUN_02033534() < 0x13) - { - ret = FUN_0202E5F8(param0, param1, param3); - FUN_0202D330(FUN_0202F910); - } - - FUN_0202F150(param0, param2); - - return ret; -} - -extern u32 FUN_0202E66C(u32 param0, u32 param1); - -THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { - u32 ret = 1; - if (FUN_02033534() < 0x13) - { - ret = FUN_0202E66C(param0, param1); - } - - FUN_0202F150(param0, param2); - - UNK_02105D58 = 4; - - return ret; -} - -extern u16 FUN_02031190(); -extern void FUN_02031088(); - - - - - -THUMB_FUNC void FUN_0202F984() { - u32 r4 = 0; - if (FUN_02031190() == 0 ) { - if (UNK_02105D59 != 4) { - return; - } - } else { - if (UNK_02105D58 != 4) { - return; - } - } - - if (UNK_021C59F4.unk04->unk67D == 2) { - UNK_021C59F4.unk04->unk67D = 0; - r4 = 1; - } - - if (UNK_021C59F4.unk04->unk67D == 3) { - UNK_021C59F4.unk04->unk67D = 1; - r4 = 1; - } - - if (r4 != 0) { - FUN_0202F5A4(); - } - FUN_02031088(); -} - - - - -THUMB_FUNC void FUN_0202F9E0(u32 param0) { - u8 r2 = UNK_021C59F4.unk04->unk67D; - if (r2 == 0 && param0 == 1) { - UNK_021C59F4.unk04->unk67D = 3; - } else if (r2 == 1 && param0 == 0) { - UNK_021C59F4.unk04->unk67D = 2; - } -} - - -THUMB_FUNC void FUN_0202FA10() { - FUN_0202F9E0(1); -} - - -THUMB_FUNC void FUN_0202FA1C() { - FUN_0202F9E0(0); -} - - - -THUMB_FUNC u8 FUN_0202FA28() { - u8 ret = UNK_021C59F4.unk04->unk67D; - if (ret == 2){ - return 1; - } else if (ret == 3) { - return 0; - } - - return ret; -} - -THUMB_FUNC u32 FUN_0202FA48() { - if (FUN_0202FA28() == 1) { - return 1; - } - - return 0; -} - -extern void MOD04_021D83C0(); -extern u32 FUN_0202E784(); -extern void FUN_020314D0(); -extern void FUN_0202DBA4(); -extern void FUN_0200CAB4(u32 param0); -extern void FUN_0202D824(u32 *param0); - -THUMB_FUNC void FUN_0202FA5C() { - u32 r4 = 0; - if (UNK_021C59F4.unk04 != 0) { - if (FUN_02033534() >= 0x13) { - MOD04_021D83C0(); - r4 = 1; - } else { - if (FUN_0202E784() != 0) { - r4 = 1; - } - } - } - - if (r4 != 0) { - FUN_020314D0(); - FUN_0202DBA4(); - UNK_021C59F4.unk00 = 0; - - FUN_0200CAB4(UNK_021C59F4.unk04->unk548); - UNK_021C59F4.unk04->unk548 = 0; - FreeToHeap(UNK_021C59F4.unk04->unk45C); - FreeToHeap(UNK_021C59F4.unk04->unk460); - FreeToHeap(UNK_021C59F4.unk04->unk458); - FreeToHeap(UNK_021C59F4.unk04->unk454); - FUN_0202D824(UNK_021C59F4.unk04->unk56C); - FUN_0202D824(UNK_021C59F4.unk04->unk54C); - FreeToHeap(UNK_021C59F4.unk04); - UNK_021C59F4.unk04 = NULL; - } -} - -extern u32 FUN_0202E9E8(u32 param0); - -THUMB_FUNC u32 FUN_0202FB18(u32 param0) { - return FUN_0202E9E8(param0); -} - - -extern void FUN_0203050C(); -extern void FUN_0202FEEC(); -extern u32 FUN_0202F03C(); -extern u32 FUN_0202EE24(); - - - -THUMB_FUNC void FUN_0202FB20() { - if (UNK_021C59F4.unk00 != 0) { - FUN_0203050C(); - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ - FUN_0202FEEC(); - } - - UNK_021C59F4.unk00 = 0; - } -} - -THUMB_FUNC void FUN_0202FB58() { - if (FUN_0202F03C() != 0) { - if (FUN_02031190() == 0 ) { - if (FUN_0202EE24() == 0) { - FUN_0202FA5C(); - } - } else { - FUN_0202FA5C(); - } - } -} - -extern void FUN_02031CDC(); -extern void FUN_02030674(); -extern void FUN_0202FCCC(); -extern void FUN_02030DA4(); -extern void FUN_02030074(); -extern void FUN_02030DFC(); -extern void FUN_0202EBD0(u16 param0); -extern void FUN_0202ED70(u32 param0); -extern void FUN_020335F4(u32 param0); -extern void FUN_020315A4(); - - - -THUMB_FUNC u32 FUN_0202FB80() { - FUN_02031CDC(); - - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68A == 0) { - UNK_021C59F4.unk00 = 0; - FUN_0202F984(); - UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF; - FUN_02030674(); - FUN_0202FCCC(); - - UNK_021C59F4.unk04->unk628 &= 2<<0xe; - if (FUN_0202FA28() == 0) { - FUN_02030DA4(); - } - - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ - FUN_02030074(); - } - - if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { - FUN_02030DFC(); - } - - UNK_021C59F4.unk00 = 1; - } - - - FUN_0202ED70(UNK_021C59F4.unk04->unk65C); - - if (FUN_02031190() == 0) { - FUN_0202F8D4(); - } - - FUN_0202FB58(); - } else { - FUN_0202ED70(0); - } - - - FUN_020335F4(0); - FUN_020315A4(); - - return 1; -} - - -THUMB_FUNC void FUN_0202FC60() { - u8 r4 = UNK_021C59F4.unk00; - - UNK_021C59F4.unk00 = 0; - - if (UNK_021C59F4.unk04 != NULL) { - FUN_0202F2F0(); - } - - UNK_021C59F4.unk00 = r4; -} - - -THUMB_FUNC void FUN_0202FC80() { - u8 r4 = UNK_021C59F4.unk00; - - UNK_021C59F4.unk00 = 0; - - if (UNK_021C59F4.unk04 != NULL) { - UNK_021C59F4.unk04->unk67D = 1; - FUN_0202F2F0(); - } - - UNK_021C59F4.unk00 = r4; -} - - -extern void FUN_0202E538(); - - -THUMB_FUNC void FUN_0202FCA8() { - u8 r4 = UNK_021C59F4.unk00; - - UNK_021C59F4.unk00 = 0; - - if (UNK_021C59F4.unk04 != NULL) { - FUN_0202F2F0(); - FUN_0202E538(); - } - - UNK_021C59F4.unk00 = r4; -} - - -extern u32 MOD04_021D78FC(void *param0, u32 param1); -extern u32 FUN_0202CBD4(); -extern u32 FUN_02030930(void *param0); - - - -THUMB_FUNC void FUN_0202FCCC() { - if (UNK_021C59F4.unk04->unk683 != 0 ) { - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { - return; - } - - UNK_021C59F4.unk04->unk683 = 0; - return; - } - - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { - return; - } - } - - UNK_02105D58 = 0; - FUN_0203050C(); - if (UNK_02105D58 == 0) { - return; - } - - UNK_021C59F4.unk04->unk683 = 0; - return; - } - - - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0) { - return; - } - - if (UNK_021C59F4.unk04->unk630 != 0){ - if ((int)UNK_021C59F4.unk04->unk634 > 3) { - return; - } - - if (UNK_02105D58 == 4) { - FUN_02030930(UNK_021C59F4.unk04); - UNK_02105D58 = 2; - } - } else { - if (UNK_02105D58 == 4) { - if (FUN_02030930(UNK_021C59F4.unk04) == 0) { - return; - } - - UNK_02105D58 = 2; - } - } - - - if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { - return; - } - - UNK_02105D58 = 4; - UNK_021C59F4.unk04->unk634++; - return; - } - - - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { - return; - } - } - - if (UNK_02105D58 != 4) { - return; - } - - - - //nonmatching - if ((int)UNK_021C59F4.unk04->unk634 > 3) { - return; - } - - FUN_02030930(&UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]); - - FUN_02030930(&UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]); - - UNK_02105D58 = 0; - FUN_0203050C(); -} - -extern int FUN_02031228(u16 param0); -extern void FUN_0202D4BC(void *param0); -extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); - - - - - -THUMB_FUNC u32 FUN_0202FE2C(int param0); - -#ifdef NONMATCHING -THUMB_FUNC u32 FUN_0202FE2C(int param0) { - - // these 3 variables are shuffled on the stack, everything else matches - int st4 = 0; - int stc = FUN_02031228(FUN_02033534()); - int st8 = FUN_0202D858(FUN_02033534()) + 1; - - - for (int r7 = 0; r7 < st8 ; r7++) { - - FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]); - - if (FUN_02030E7C(r7) != 0) { - UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe; - } - - FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc); - - if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { - st4++; - } - } - - if (st4 == st8) { - return 0; - } - - return 1; -} -#else -THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { - push {r3-r7, lr} - sub sp, #0x10 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - str r0, [sp, #0xc] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - mov r7, #0x0 - str r0, [sp, #0x8] - cmp r0, #0x0 - ble _0202FED0 - ldr r0, [sp, #0x0] - mov r1, #0xc0 - add r6, r0, #0x0 - add r4, r7, #0x0 - add r5, r7, #0x0 - mul r6, r1 -_0202FE66: - ldr r0, =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, =0x0000047C - add r0, r1, r0 - add r0, r0, r4 - bl FUN_0202D4BC - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0202FE90 - ldr r0, =UNK_021C59F4 - mov r1, #0xe - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r2, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - strb r1, [r2, r0] -_0202FE90: - ldr r0, =UNK_021C59F4 - mov r2, #0x55 - ldr r1, [r0, #0x4] - ldr r0, =0x0000047C - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, r1, r2 - add r1, r1, r6 - ldr r2, [sp, #0xc] - add r0, r0, r4 - add r1, r1, r5 - bl FUN_0202D400 - ldr r0, =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r1, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - ldrb r0, [r1, r0] - cmp r0, #0xe - bne _0202FEC2 - ldr r0, [sp, #0x4] - add r0, r0, #0x1 - str r0, [sp, #0x4] -_0202FEC2: - ldr r0, [sp, #0xc] - add r7, r7, #0x1 - add r5, r5, r0 - ldr r0, [sp, #0x8] - add r4, #0xc - cmp r7, r0 - blt _0202FE66 -_0202FED0: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - cmp r1, r0 - bne _0202FEDE - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0202FEDE: - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} -} -#endif - - -extern void FUN_020304F0(u32 param0); -extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); -extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); - - -THUMB_FUNC void FUN_0202FEEC() { - if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { - return; - } - - int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534())+1; - - if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ - - UNK_02105D59++; - - if (FUN_0202FA28() == 1) { - FUN_0202FE2C(UNK_021C59F4.unk04->unk680); - } - - if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { - UNK_02105D59--; - } - } - - int i; - if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) { - UNK_021C59F4.unk04->unk638[i]++; - } else if (FUN_02031280() != 0 && i == 0) { - UNK_021C59F4.unk04->unk638[i]++; - } - } - - - FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); - - UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; - } - - - - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { - UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; - } - } - - - if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { - UNK_02105D59++; - } - } -} - - -extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_02030A00(void *param0); - - - -THUMB_FUNC void FUN_02030074() { - if (UNK_021C59F4.unk04->unk683 != 0) { - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { - UNK_021C59F4.unk04->unk683 = 0; - return; - } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - FUN_0202FEEC(); - if (UNK_02105D59 == 2) { - UNK_021C59F4.unk04->unk683 = 0; - return; - } - } - } - - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0) { - if (UNK_021C59F4.unk04->unk630 != 0) { - if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { - return; - } - - if (UNK_02105D59 == 4) { - if (FUN_0202FA28() == 1) { - FUN_0202FE2C(0); - } - - UNK_02105D59 = 2; - } - } else { - if (UNK_02105D59 == 4 ) { - if (FUN_0202FA28() == 1) { - if (FUN_0202FE2C(0) == 0) { - return; - } - } - } - - - UNK_02105D59 = 2; - } - - - - if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { - return; - } - - UNK_02105D59 = 4; - UNK_021C59F4.unk04->unk638[0]++; - UNK_021C59F4.unk04->unk638[1]++; - } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - if (UNK_02105D59 == 4) { - for (int r4 = 1; r4 < 8; r4++) - { - if (FUN_02030E7C(r4) != 0) { - if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { - return; - } - } else if (r4 == 0) { - if (FUN_02031280() != 0) { - if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { - return; - } - } - } - } - - - if (FUN_0202FA28() == 0) { - FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); - FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); - } - - - UNK_02105D59 = 0; - FUN_0202FEEC(); - } - } -} - - - -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { - if (UNK_021C59F4.unk04->unk66F[0] != 0) { - UNK_021C59F4.unk04->unk634--; - UNK_021C59F4.unk04->unk66F[0] = 0; - return; - } - - FUN_0203026C(param0, param1, param2); -} - -extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - - - -THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { - UNK_021C59F4.unk04->unk634--; - if (param1 == 0) { - return; - } - - if (param1[0] == 0xb) { - if (FUN_0202FA28() == 1) { - return; - } - param1++; - } else { - if (FUN_0202FA28() == 0) { - return; - } - } - - - if (UNK_021C59F4.unk04->unk682 != 0) { - if ((param1[0] & 1) != 0) { - return; - } - } - - UNK_021C59F4.unk04->unk682 = 0; - if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534())+1; - - int r4 = 0; - while (r4 < st4) { - u32 new; - if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C = new; - - if (param1[0] == 0xff) { - param1 += r6; - } else if (param1[0] == 0xe){ - param1 += r6; - } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { - param1 += r6; - } else { - param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); - - param1 += r6-1; - UNK_021C59F4.unk04->unk667[r4] = 0; - } - - - r4++; - } - - return; - } - - - UNK_021C59F4.unk04->unk65C = param1[1]; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; - - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); -} - -extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); - - -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { - if (UNK_021C59F4.unk04->unk66F[param0] != 0) { - - UNK_021C59F4.unk04->unk638[param0]--; - UNK_021C59F4.unk04->unk66F[param0] = 0; - return; - } - - FUN_020303F4(param0, param1, param2); -} - -extern void FUN_020307E4(u8 *param0, u32 param1); -extern int FUN_0202D498(void *param0); - - - -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { - UNK_021C59F4.unk04->unk638[param0]--; - if (param1 == 0) { - return; - } - - if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { - return; - } - - UNK_021C59F4.unk04->unk667[param0] = 0; - if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); - - if ((param1[0] & 2) == 0) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); - } - - UNK_021C59F4.unk04->unk65F[param0]++; - return; - } - - - FUN_020307E4(param1, param0); - - if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); - } -} - - -THUMB_FUNC void FUN_020304D4(u32 param0) { - if (param0 != 0) { - UNK_02105D58++; - return; - } - - ErrorHandling(); -} - -THUMB_FUNC void FUN_020304F0(u32 param0) { - if (param0 != 0) { - UNK_02105D59++; - return; - } - - ErrorHandling(); -} - -extern u16 FUN_0202CB8C(); - - -THUMB_FUNC void FUN_0203050C() { - if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { - return; - } - - int r4 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); - - if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { - UNK_02105D58++; - FUN_020304D4(1); - - - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - return; - } - - if (FUN_0202CBD4() != 4) { - return; - } - - if (FUN_02030E7C(FUN_02031190()) == 0) { - FUN_02031190(); - return; - } - - if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { - return; - } - - - if (FUN_02031190() != 0) { - UNK_02105D58++; - - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { - UNK_02105D58--; - return; - } - - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - return; - } - - - if ((FUN_0202CB8C() & 0xFFFE) != 0) { - UNK_02105D58++; - FUN_020304D4(1); - - - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; - UNK_021C59F4.unk04->unk634++; - } -} \ No newline at end of file -- cgit v1.2.3 From 8e3505c4162c51c3870fbe371fa46c061e6d8b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:47:33 +0200 Subject: headers --- arm9/src/unk_0202F150.c | 2011 ++++++++++++++++++++++++----------------------- 1 file changed, 1034 insertions(+), 977 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index dd86b10d..15a67f8d 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -1,16 +1,10 @@ -#include "global.h" -#include "MI_memory.h" -#include "heap.h" -#include "main.h" -#include "RTC_api.h" - +#include "unk_0202F150.h" struct { u8 unk00; struct UnkStruct1 *unk04; } UNK_021C59F4; - vu8 UNK_02105D58 = 4; vu8 UNK_02105D59 = 4; @@ -18,97 +12,9 @@ extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); -extern void FUN_0202F2F0(); -extern void FUN_020312BC(u32 param0); -extern void FUN_0202FB20(); - extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); - extern void FUN_0202D804(u32 *param0); -extern u32 FUN_02030E7C(u16 param0); - -struct UnkStruct1 -{ - u8 unk000[2][38]; - u8 unk04c[264]; - u8 unk154[2][192]; - u8 unk2D4[384]; - u32 unk454; - u32 unk458; - u32 unk45C; - u32 unk460; - u32 unk464; - u8 unk468[0x8]; - u32 unk470; - u8 unk474[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk47C[8]; - u32 unk4DC; - u8 unk4E0[0x8]; - struct - { - u32 unk00; - u32 unk04; - u32 unk08; - } unk4E8[8]; - u32 unk548; - u8 unk54C[32]; - u8 unk56C[32]; - struct - { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; - u8 unk0b; - } unk58C[8]; - u32 unk5EC; - u32 unk5F0; - u16 unk5F4; - u8 unk5F6; - u8 unk5F7; - s64 unk5F8[3]; - u16 unk610[8]; - u8 unk620[0x8]; - u16 unk628; - u8 unk62A; - u8 unk62B; - u8 unk62C; - s8 unk62D; - u16 unk62E; - u32 unk630; - u32 unk634; - u32 unk638[8]; - u32 unk658; - u16 unk65C; - u8 unk65E; - u8 unk65F[8]; - u8 unk667[8]; - u8 unk66F[8]; - u8 unk677[4]; - u8 unk67B; - u8 unk67C; - u8 unk67D; - u8 unk67E; - u8 unk67F; - u8 unk680; - u8 unk681; - u8 unk682; - u8 unk683; - u8 unk684; - u8 unk685; - u8 unk686; - u8 unk687; - u8 unk688; - u8 unk689; - u8 unk68A; - u8 unk68B; -}; THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) { @@ -382,8 +288,6 @@ THUMB_FUNC void FUN_0202F820(u32 param0) UNK_021C59F4.unk04->unk58C[param0].unk00 = 0; } -extern u8 FUN_02031280(); - THUMB_FUNC void FUN_0202F8D4() { for (int i = 1; i < 8; i++) @@ -419,7 +323,8 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) extern u32 FUN_0202E66C(u32 param0, u32 param1); -THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { +THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) +{ u32 ret = 1; if (FUN_02033534() < 0x13) { @@ -430,81 +335,88 @@ THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { UNK_02105D58 = 4; - return ret; + return ret; } -extern u16 FUN_02031190(); -extern void FUN_02031088(); - - - - - -THUMB_FUNC void FUN_0202F984() { +THUMB_FUNC void FUN_0202F984() +{ u32 r4 = 0; - if (FUN_02031190() == 0 ) { - if (UNK_02105D59 != 4) { + if (FUN_02031190() == 0) + { + if (UNK_02105D59 != 4) + { return; } - } else { - if (UNK_02105D58 != 4) { + } + else + { + if (UNK_02105D58 != 4) + { return; } } - if (UNK_021C59F4.unk04->unk67D == 2) { + if (UNK_021C59F4.unk04->unk67D == 2) + { UNK_021C59F4.unk04->unk67D = 0; r4 = 1; } - if (UNK_021C59F4.unk04->unk67D == 3) { + if (UNK_021C59F4.unk04->unk67D == 3) + { UNK_021C59F4.unk04->unk67D = 1; r4 = 1; } - if (r4 != 0) { + if (r4 != 0) + { FUN_0202F5A4(); } FUN_02031088(); } - - - -THUMB_FUNC void FUN_0202F9E0(u32 param0) { +THUMB_FUNC void FUN_0202F9E0(u32 param0) +{ u8 r2 = UNK_021C59F4.unk04->unk67D; - if (r2 == 0 && param0 == 1) { + if (r2 == 0 && param0 == 1) + { UNK_021C59F4.unk04->unk67D = 3; - } else if (r2 == 1 && param0 == 0) { + } + else if (r2 == 1 && param0 == 0) + { UNK_021C59F4.unk04->unk67D = 2; } } - -THUMB_FUNC void FUN_0202FA10() { +THUMB_FUNC void FUN_0202FA10() +{ FUN_0202F9E0(1); } - -THUMB_FUNC void FUN_0202FA1C() { +THUMB_FUNC void FUN_0202FA1C() +{ FUN_0202F9E0(0); } - - -THUMB_FUNC u8 FUN_0202FA28() { +THUMB_FUNC u8 FUN_0202FA28() +{ u8 ret = UNK_021C59F4.unk04->unk67D; - if (ret == 2){ + if (ret == 2) + { return 1; - } else if (ret == 3) { + } + else if (ret == 3) + { return 0; } return ret; } -THUMB_FUNC u32 FUN_0202FA48() { - if (FUN_0202FA28() == 1) { +THUMB_FUNC u32 FUN_0202FA48() +{ + if (FUN_0202FA28() == 1) + { return 1; } @@ -518,20 +430,27 @@ extern void FUN_0202DBA4(); extern void FUN_0200CAB4(u32 param0); extern void FUN_0202D824(u32 *param0); -THUMB_FUNC void FUN_0202FA5C() { +THUMB_FUNC void FUN_0202FA5C() +{ u32 r4 = 0; - if (UNK_021C59F4.unk04 != 0) { - if (FUN_02033534() >= 0x13) { + if (UNK_021C59F4.unk04 != 0) + { + if (FUN_02033534() >= 0x13) + { MOD04_021D83C0(); r4 = 1; - } else { - if (FUN_0202E784() != 0) { + } + else + { + if (FUN_0202E784() != 0) + { r4 = 1; } } } - if (r4 != 0) { + if (r4 != 0) + { FUN_020314D0(); FUN_0202DBA4(); UNK_021C59F4.unk00 = 0; @@ -551,22 +470,21 @@ THUMB_FUNC void FUN_0202FA5C() { extern u32 FUN_0202E9E8(u32 param0); -THUMB_FUNC u32 FUN_0202FB18(u32 param0) { +THUMB_FUNC u32 FUN_0202FB18(u32 param0) +{ return FUN_0202E9E8(param0); } - -extern void FUN_0203050C(); -extern void FUN_0202FEEC(); extern u32 FUN_0202F03C(); extern u32 FUN_0202EE24(); - - -THUMB_FUNC void FUN_0202FB20() { - if (UNK_021C59F4.unk00 != 0) { +THUMB_FUNC void FUN_0202FB20() +{ + if (UNK_021C59F4.unk00 != 0) + { FUN_0203050C(); - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0) + { FUN_0202FEEC(); } @@ -574,97 +492,105 @@ THUMB_FUNC void FUN_0202FB20() { } } -THUMB_FUNC void FUN_0202FB58() { - if (FUN_0202F03C() != 0) { - if (FUN_02031190() == 0 ) { - if (FUN_0202EE24() == 0) { +THUMB_FUNC void FUN_0202FB58() +{ + if (FUN_0202F03C() != 0) + { + if (FUN_02031190() == 0) + { + if (FUN_0202EE24() == 0) + { FUN_0202FA5C(); } - } else { + } + else + { FUN_0202FA5C(); } } } extern void FUN_02031CDC(); -extern void FUN_02030674(); -extern void FUN_0202FCCC(); -extern void FUN_02030DA4(); -extern void FUN_02030074(); -extern void FUN_02030DFC(); extern void FUN_0202EBD0(u16 param0); extern void FUN_0202ED70(u32 param0); extern void FUN_020335F4(u32 param0); extern void FUN_020315A4(); - - -THUMB_FUNC u32 FUN_0202FB80() { +THUMB_FUNC u32 FUN_0202FB80() +{ FUN_02031CDC(); - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68A == 0) { + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk68A == 0) + { UNK_021C59F4.unk00 = 0; FUN_0202F984(); UNK_021C59F4.unk04->unk628 |= gMain.unk44 & 0x7FFF; FUN_02030674(); FUN_0202FCCC(); - UNK_021C59F4.unk04->unk628 &= 2<<0xe; - if (FUN_0202FA28() == 0) { + UNK_021C59F4.unk04->unk628 &= 2 << 0xe; + if (FUN_0202FA28() == 0) + { FUN_02030DA4(); } - if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0){ + if ((FUN_02031190() == 0 && FUN_02030E7C(0) != 0) || FUN_02031280() != 0) + { FUN_02030074(); } - if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) { + if (FUN_02031190() == 0 || FUN_0202FA28() == 1 || FUN_02031280() != 0) + { FUN_02030DFC(); } UNK_021C59F4.unk00 = 1; } - FUN_0202ED70(UNK_021C59F4.unk04->unk65C); - if (FUN_02031190() == 0) { + if (FUN_02031190() == 0) + { FUN_0202F8D4(); } FUN_0202FB58(); - } else { + } + else + { FUN_0202ED70(0); } - FUN_020335F4(0); FUN_020315A4(); return 1; } - -THUMB_FUNC void FUN_0202FC60() { +THUMB_FUNC void FUN_0202FC60() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { FUN_0202F2F0(); } UNK_021C59F4.unk00 = r4; } - -THUMB_FUNC void FUN_0202FC80() { +THUMB_FUNC void FUN_0202FC80() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk67D = 1; FUN_0202F2F0(); } @@ -672,16 +598,16 @@ THUMB_FUNC void FUN_0202FC80() { UNK_021C59F4.unk00 = r4; } - extern void FUN_0202E538(); - -THUMB_FUNC void FUN_0202FCA8() { +THUMB_FUNC void FUN_0202FCA8() +{ u8 r4 = UNK_021C59F4.unk00; UNK_021C59F4.unk00 = 0; - if (UNK_021C59F4.unk04 != NULL) { + if (UNK_021C59F4.unk04 != NULL) + { FUN_0202F2F0(); FUN_0202E538(); } @@ -689,17 +615,17 @@ THUMB_FUNC void FUN_0202FCA8() { UNK_021C59F4.unk00 = r4; } - extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); -extern u32 FUN_02030930(u8 *param0); - - -THUMB_FUNC void FUN_0202FCCC() { - if (UNK_021C59F4.unk04->unk683 != 0 ) { - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { +THUMB_FUNC void FUN_0202FCCC() +{ + if (UNK_021C59F4.unk04->unk683 != 0) + { + if (FUN_02033534() >= 0x13) + { + if (UNK_021C59F4.unk04->unk687 == 0 || MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) + { return; } @@ -707,15 +633,18 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) + { + if (FUN_02031280() == 0) + { return; } } UNK_02105D58 = 0; FUN_0203050C(); - if (UNK_02105D58 == 0) { + if (UNK_02105D58 == 0) + { return; } @@ -723,24 +652,32 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 == 0) { + if (FUN_02033534() >= 0x13) + { + if (UNK_021C59F4.unk04->unk687 == 0) + { return; } - if (UNK_021C59F4.unk04->unk630 != 0){ - if ((int)UNK_021C59F4.unk04->unk634 > 3) { + if (UNK_021C59F4.unk04->unk630 != 0) + { + if ((int)UNK_021C59F4.unk04->unk634 > 3) + { return; } - if (UNK_02105D58 == 4) { + if (UNK_02105D58 == 4) + { FUN_02030930(UNK_021C59F4.unk04->unk000[0]); UNK_02105D58 = 2; } - } else { - if (UNK_02105D58 == 4) { - if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 0) { + } + else + { + if (UNK_02105D58 == 4) + { + if (FUN_02030930(UNK_021C59F4.unk04->unk000[0]) == 0) + { return; } @@ -748,8 +685,8 @@ THUMB_FUNC void FUN_0202FCCC() { } } - - if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) { + if (MOD04_021D78FC(UNK_021C59F4.unk04, 0x26) == 0) + { return; } @@ -758,279 +695,291 @@ THUMB_FUNC void FUN_0202FCCC() { return; } - - if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) { - if (FUN_02031280() == 0) { - return; + if (FUN_0202CBD4() != 4 || FUN_02030E7C(FUN_02031190()) == 0) + { + if (FUN_02031280() == 0) + { + return; } } - if (UNK_02105D58 != 4) { + if (UNK_02105D58 != 4) + { return; } - - - //nonmatching - if ((int)UNK_021C59F4.unk04->unk634 > 3) { + // nonmatching + if ((int)UNK_021C59F4.unk04->unk634 > 3) + { return; } FUN_02030930(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F]); - FUN_02030930(UNK_021C59F4.unk04->unk000[1-UNK_021C59F4.unk04->unk67F]); + FUN_02030930(UNK_021C59F4.unk04->unk000[1 - UNK_021C59F4.unk04->unk67F]); UNK_02105D58 = 0; FUN_0203050C(); } -extern int FUN_02031228(u16 param0); extern void FUN_0202D4BC(void *param0); extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); - - - - -THUMB_FUNC u32 FUN_0202FE2C(int param0); - #ifdef NONMATCHING -THUMB_FUNC u32 FUN_0202FE2C(int param0) { +THUMB_FUNC u32 FUN_0202FE2C(int param0) +{ // these 3 variables are shuffled on the stack, everything else matches int st4 = 0; int stc = FUN_02031228(FUN_02033534()); int st8 = FUN_0202D858(FUN_02033534()) + 1; - - for (int r7 = 0; r7 < st8 ; r7++) { + for (int r7 = 0; r7 < st8; r7++) + { FUN_0202D4BC(&UNK_021C59F4.unk04->unk47C[r7]); - if (FUN_02030E7C(r7) != 0) { - UNK_021C59F4.unk04->unk154[param0][r7*stc] = 0xe; + if (FUN_02030E7C(r7) != 0) + { + UNK_021C59F4.unk04->unk154[param0][r7 * stc] = 0xe; } - FUN_0202D400(&UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7*stc], stc); + FUN_0202D400( + &UNK_021C59F4.unk04->unk47C[r7], &UNK_021C59F4.unk04->unk154[param0][r7 * stc], stc); - if (UNK_021C59F4.unk04->unk154[param0][r7*stc] == 0xe) { + if (UNK_021C59F4.unk04->unk154[param0][r7 * stc] == 0xe) + { st4++; } } - if (st4 == st8) { + if (st4 == st8) + { return 0; } return 1; } #else -THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { - push {r3-r7, lr} - sub sp, #0x10 - str r0, [sp, #0x0] - mov r0, #0x0 - str r0, [sp, #0x4] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_02031228 - str r0, [sp, #0xc] - bl FUN_02033534 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl FUN_0202D858 - add r0, r0, #0x1 - mov r7, #0x0 - str r0, [sp, #0x8] - cmp r0, #0x0 - ble _0202FED0 - ldr r0, [sp, #0x0] - mov r1, #0xc0 - add r6, r0, #0x0 - add r4, r7, #0x0 - add r5, r7, #0x0 - mul r6, r1 -_0202FE66: - ldr r0, =UNK_021C59F4 - ldr r1, [r0, #0x4] - ldr r0, =0x0000047C - add r0, r1, r0 - add r0, r0, r4 - bl FUN_0202D4BC - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - bl FUN_02030E7C - cmp r0, #0x0 - beq _0202FE90 - ldr r0, =UNK_021C59F4 - mov r1, #0xe - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r2, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - strb r1, [r2, r0] -_0202FE90: - ldr r0, =UNK_021C59F4 - mov r2, #0x55 - ldr r1, [r0, #0x4] - ldr r0, =0x0000047C - lsl r2, r2, #0x2 - add r0, r1, r0 - add r1, r1, r2 - add r1, r1, r6 - ldr r2, [sp, #0xc] - add r0, r0, r4 - add r1, r1, r5 - bl FUN_0202D400 - ldr r0, =UNK_021C59F4 - ldr r0, [r0, #0x4] - add r0, r6, r0 - add r1, r5, r0 - mov r0, #0x55 - lsl r0, r0, #0x2 - ldrb r0, [r1, r0] - cmp r0, #0xe - bne _0202FEC2 - ldr r0, [sp, #0x4] - add r0, r0, #0x1 - str r0, [sp, #0x4] -_0202FEC2: - ldr r0, [sp, #0xc] - add r7, r7, #0x1 - add r5, r5, r0 - ldr r0, [sp, #0x8] - add r4, #0xc - cmp r7, r0 - blt _0202FE66 -_0202FED0: - ldr r1, [sp, #0x4] - ldr r0, [sp, #0x8] - cmp r1, r0 - bne _0202FEDE - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0202FEDE: - mov r0, #0x1 - add sp, #0x10 - pop {r3-r7, pc} +THUMB_FUNC asm u32 FUN_0202FE2C(int param0) +{ + push{ r3 - r7, lr } sub sp, #0x10 str r0, [ sp, #0x0 ] mov r0, #0x0 str r0, + [ sp, #0x4 ] bl FUN_02033534 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_02031228 str r0, + [ sp, #0xc ] bl FUN_02033534 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_0202D858 add r0, r0, + #0x1 mov r7, #0x0 str r0, [ sp, #0x8 ] cmp r0, #0x0 ble _0202FED0 ldr r0, + [ sp, #0x0 ] mov r1, #0xc0 add r6, r0, #0x0 add r4, r7, #0x0 add r5, r7, #0x0 mul r6, + r1 _0202FE66 : ldr r0, + = UNK_021C59F4 ldr r1, + [ r0, #0x4 ] ldr r0, + = 0x0000047C add r0, + r1, + r0 add r0, + r0, + r4 bl FUN_0202D4BC lsl r0, + r7, + #0x10 lsr r0, + r0, + #0x10 bl FUN_02030E7C cmp r0, + #0x0 beq _0202FE90 ldr r0, + = UNK_021C59F4 mov r1, + #0xe ldr r0, + [ r0, #0x4 ] add r0, + r6, + r0 add r2, + r5, + r0 mov r0, + #0x55 lsl r0, + r0, + #0x2 strb r1, + [ r2, r0 ] _0202FE90 : ldr r0, + = UNK_021C59F4 mov r2, + #0x55 ldr r1, + [ r0, #0x4 ] ldr r0, + = 0x0000047C lsl r2, + r2, + #0x2 add r0, + r1, + r0 add r1, + r1, + r2 add r1, + r1, + r6 ldr r2, + [ sp, #0xc ] add r0, + r0, + r4 add r1, + r1, + r5 bl FUN_0202D400 ldr r0, + = UNK_021C59F4 ldr r0, + [ r0, #0x4 ] add r0, + r6, + r0 add r1, + r5, + r0 mov r0, + #0x55 lsl r0, + r0, + #0x2 ldrb r0, + [ r1, r0 ] cmp r0, + #0xe bne _0202FEC2 ldr r0, + [ sp, #0x4 ] add r0, + r0, + #0x1 str r0, + [ sp, #0x4 ] _0202FEC2 : ldr r0, + [ sp, #0xc ] add r7, + r7, + #0x1 add r5, + r5, + r0 ldr r0, + [ sp, #0x8 ] add r4, + #0xc cmp r7, + r0 blt _0202FE66 _0202FED0 + : ldr r1, + [ sp, #0x4 ] ldr r0, + [ sp, #0x8 ] cmp r1, + r0 bne _0202FEDE add sp, + #0x10 mov r0, + #0x0 pop{ r3 - r7, pc } _0202FEDE : mov r0, + #0x1 add sp, + #0x10 pop + { + r3 - r7, pc + } } #endif - -extern void FUN_020304F0(u32 param0); extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); -extern void FUN_0203026C(u32 param0,u8 *param1, u32 param2); - -THUMB_FUNC void FUN_0202FEEC() { - if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_0202FEEC() +{ + if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) + { return; } int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534())+1; + int r6 = FUN_0202D858(FUN_02033534()) + 1; - if (UNK_02105D59 == 2 || UNK_02105D59 == 0){ + if (UNK_02105D59 == 2 || UNK_02105D59 == 0) + { UNK_02105D59++; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { FUN_0202FE2C(UNK_021C59F4.unk04->unk680); } - if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) { + if (FUN_0202CBD4() == 4 && FUN_02031280() == 0) + { - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0, 0xe, FUN_020304F0) == 0) { + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], + 0xc0, + 0xe, + FUN_020304F0) == 0) + { UNK_02105D59--; } } int i; - if (UNK_02105D59 == 1 || UNK_02105D59 == 3) { - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) { + if (UNK_02105D59 == 1 || UNK_02105D59 == 3) + { + for (i = 0; i < r6; i++) + { + if (FUN_02030E7C(i) != 0) + { UNK_021C59F4.unk04->unk638[i]++; - } else if (FUN_02031280() != 0 && i == 0) { + } + else if (FUN_02031280() != 0 && i == 0) + { UNK_021C59F4.unk04->unk638[i]++; } } - FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; } - - - for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) { - UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i *st0] = 0xff; + for (i = 0; i < r6; i++) + { + if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) + { + UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i * st0] = 0xff; } } - - if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) { + if (FUN_0202CBD4() != 4 || FUN_02031280() != 0) + { UNK_02105D59++; } } } - extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_02030A00(u8 *param0); - - -THUMB_FUNC void FUN_02030074() { - if (UNK_021C59F4.unk04->unk683 != 0) { - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) { +THUMB_FUNC void FUN_02030074() +{ + if (UNK_021C59F4.unk04->unk683 != 0) + { + if (FUN_02033534() >= 0x13) + { + if (FUN_02030E7C(0) != 0 && MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) != 0) + { UNK_021C59F4.unk04->unk683 = 0; return; } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { + } + else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) + { FUN_0202FEEC(); - if (UNK_02105D59 == 2) { + if (UNK_02105D59 == 2) + { UNK_021C59F4.unk04->unk683 = 0; return; } } } - if (FUN_02033534() >= 0x13) { - if (FUN_02030E7C(0) != 0) { - if (UNK_021C59F4.unk04->unk630 != 0) { - if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || (int)UNK_021C59F4.unk04->unk638[0] > 3) { + if (FUN_02033534() >= 0x13) + { + if (FUN_02030E7C(0) != 0) + { + if (UNK_021C59F4.unk04->unk630 != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[1] > 3 || + (int)UNK_021C59F4.unk04->unk638[0] > 3) + { return; } - if (UNK_02105D59 == 4) { - if (FUN_0202FA28() == 1) { + if (UNK_02105D59 == 4) + { + if (FUN_0202FA28() == 1) + { FUN_0202FE2C(0); } UNK_02105D59 = 2; } - } else { - if (UNK_02105D59 == 4 ) { - if (FUN_0202FA28() == 1) { - if (FUN_0202FE2C(0) == 0) { + } + else + { + if (UNK_02105D59 == 4) + { + if (FUN_0202FA28() == 1) + { + if (FUN_0202FE2C(0) == 0) + { return; } } } - UNK_02105D59 = 2; } - - - if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) { + if (MOD04_021D79B4(UNK_021C59F4.unk04->unk154, 0x4c) == 0) + { return; } @@ -1038,40 +987,48 @@ THUMB_FUNC void FUN_02030074() { UNK_021C59F4.unk04->unk638[0]++; UNK_021C59F4.unk04->unk638[1]++; } - } else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) { - if (UNK_02105D59 == 4) { + } + else if (FUN_0202CBD4() == 4 || FUN_02031280() != 0) + { + if (UNK_02105D59 == 4) + { for (int r4 = 1; r4 < 8; r4++) { - if (FUN_02030E7C(r4) != 0) { - if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { + if (FUN_02030E7C(r4) != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) + { return; } - } else if (r4 == 0) { - if (FUN_02031280() != 0) { - if ((int)UNK_021C59F4.unk04->unk638[0] > 3) { + } + else if (r4 == 0) + { + if (FUN_02031280() != 0) + { + if ((int)UNK_021C59F4.unk04->unk638[0] > 3) + { return; } } } } - - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { FUN_02030A00(UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680]); - FUN_02030A00(UNK_021C59F4.unk04->unk154[1-UNK_021C59F4.unk04->unk680]); + FUN_02030A00(UNK_021C59F4.unk04->unk154[1 - UNK_021C59F4.unk04->unk680]); } - UNK_02105D59 = 0; FUN_0202FEEC(); } } } - - -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { - if (UNK_021C59F4.unk04->unk66F[0] != 0) { +THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) +{ + if (UNK_021C59F4.unk04->unk66F[0] != 0) + { UNK_021C59F4.unk04->unk634--; UNK_021C59F4.unk04->unk66F[0] = 0; return; @@ -1082,81 +1039,97 @@ THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) { extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - - -THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { +THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) +{ UNK_021C59F4.unk04->unk634--; - if (param1 == 0) { + if (param1 == 0) + { return; } - if (param1[0] == 0xb) { - if (FUN_0202FA28() == 1) { + if (param1[0] == 0xb) + { + if (FUN_0202FA28() == 1) + { return; } param1++; - } else { - if (FUN_0202FA28() == 0) { + } + else + { + if (FUN_0202FA28() == 0) + { return; } } - - if (UNK_021C59F4.unk04->unk682 != 0) { - if ((param1[0] & 1) != 0) { + if (UNK_021C59F4.unk04->unk682 != 0) + { + if ((param1[0] & 1) != 0) + { return; } } UNK_021C59F4.unk04->unk682 = 0; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534())+1; + int st4 = FUN_0202D858(FUN_02033534()) + 1; int r4 = 0; - while (r4 < st4) { + while (r4 < st4) + { u32 new; - if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1<unk65C | (1<unk65C & ~(1 << r4); + } + else + { + new = UNK_021C59F4.unk04->unk65C | (1 << r4); } UNK_021C59F4.unk04->unk65C = new; - if (param1[0] == 0xff) { + if (param1[0] == 0xff) + { param1 += r6; - } else if (param1[0] == 0xe){ + } + else if (param1[0] == 0xe) + { param1 += r6; - } else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) { + } + else if (UNK_021C59F4.unk04->unk667[r4] != 0 && (param1[0] & 1) != 0) + { param1 += r6; - } else { + } + else + { param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6-1, 0x5E6); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6 - 1, 0x5E6); - param1 += r6-1; + param1 += r6 - 1; UNK_021C59F4.unk04->unk667[r4] = 0; } - r4++; } return; } - UNK_021C59F4.unk04->unk65C = param1[1]; UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1+4, param1[3], 0x5FF); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } -extern void FUN_020303F4(u32 param0, u8 *param1, u16 param2); - -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { - if (UNK_021C59F4.unk04->unk66F[param0] != 0) { +THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) +{ + if (UNK_021C59F4.unk04->unk66F[param0] != 0) + { UNK_021C59F4.unk04->unk638[param0]--; UNK_021C59F4.unk04->unk66F[param0] = 0; @@ -1166,27 +1139,29 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { FUN_020303F4(param0, param1, param2); } -extern u32 FUN_020307E4(u8 *param0, u32 param1); extern int FUN_0202D498(void *param0); - - -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) +{ UNK_021C59F4.unk04->unk638[param0]--; - if (param1 == 0) { + if (param1 == 0) + { return; } - if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) { + if (UNK_021C59F4.unk04->unk667[param0] != 0 && (param1[0] & 1) != 0) + { return; } UNK_021C59F4.unk04->unk667[param0] = 0; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { int r6 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); - if ((param1[0] & 2) == 0) { + if ((param1[0] & 2) == 0) + { FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); } @@ -1194,17 +1169,18 @@ THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { return; } - FUN_020307E4(param1, param0); - if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 +1, 0xb, 0x66E); + if ((param1[0] & 2) == 0 && FUN_0202D498(&UNK_021C59F4.unk04->unk4E8[param0]) >= 0xb) + { + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[param0], param1 + 1, 0xb, 0x66E); } } - -THUMB_FUNC void FUN_020304D4(u32 param0) { - if (param0 != 0) { +THUMB_FUNC void FUN_020304D4(u32 param0) +{ + if (param0 != 0) + { UNK_02105D58++; return; } @@ -1212,8 +1188,10 @@ THUMB_FUNC void FUN_020304D4(u32 param0) { ErrorHandling(); } -THUMB_FUNC void FUN_020304F0(u32 param0) { - if (param0 != 0) { +THUMB_FUNC void FUN_020304F0(u32 param0) +{ + if (param0 != 0) + { UNK_02105D59++; return; } @@ -1223,46 +1201,51 @@ THUMB_FUNC void FUN_020304F0(u32 param0) { extern u16 FUN_0202CB8C(); - -THUMB_FUNC void FUN_0203050C() { - if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_0203050C() +{ + if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) + { return; } int r4 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); - if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { + if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) + { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; UNK_021C59F4.unk04->unk634++; return; } - if (FUN_0202CBD4() != 4) { + if (FUN_0202CBD4() != 4) + { return; } - if (FUN_02030E7C(FUN_02031190()) == 0) { + if (FUN_02030E7C(FUN_02031190()) == 0) + { FUN_02031190(); return; } - if (UNK_02105D58 != 2 && UNK_02105D58 != 0) { + if (UNK_02105D58 != 2 && UNK_02105D58 != 0) + { return; } - - if (FUN_02031190() != 0) { + if (FUN_02031190() != 0) + { UNK_02105D58++; - - if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) { + if (FUN_0202D0D0( + UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) + { UNK_02105D58--; return; } @@ -1272,15 +1255,14 @@ THUMB_FUNC void FUN_0203050C() { return; } - - if ((FUN_0202CB8C() & 0xFFFE) != 0) { + if ((FUN_0202CB8C() & 0xFFFE) != 0) + { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); - UNK_021C59F4.unk04->unk67F = 1-UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; UNK_021C59F4.unk04->unk634++; } } @@ -1288,382 +1270,424 @@ THUMB_FUNC void FUN_0203050C() { extern s64 _ll_mul(s64, s64); #ifdef NONMATCHING -THUMB_FUNC void FUN_02030674() { +THUMB_FUNC void FUN_02030674() +{ u16 r4 = 0; - if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) { + if (UNK_021C59F4.unk04->unk62C == 0 || (UNK_021C59F4.unk04->unk628 & 0xf0) == 0) + { return; } - if (UNK_021C59F4.unk04->unk62C == 2) { - if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + if (UNK_021C59F4.unk04->unk62C == 2) + { + if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) + { r4 = r4 | 0x10; } - if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) + { r4 = r4 | 0x20; } - if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) + { r4 = r4 | 0x80; } - if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) + { r4 = r4 | 0x40; } - } else { - if (UNK_021C59F4.unk04->unk62E != 0) { + } + else + { + if (UNK_021C59F4.unk04->unk62E != 0) + { r4 = UNK_021C59F4.unk04->unk62E; UNK_021C59F4.unk04->unk62D--; - if (UNK_021C59F4.unk04->unk62D < 0) { + if (UNK_021C59F4.unk04->unk62D < 0) + { UNK_021C59F4.unk04->unk62E = 0; } + } + else + { + UNK_021C59F4.unk04->unk5F8[0] = + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + + UNK_021C59F4.unk04->unk5F8[2]; - } else { - UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0] + UNK_021C59F4.unk04->unk5F8[2]; - - switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) { - case 0: - r4 = 0x20; + switch ((u32)(UNK_021C59F4.unk04->unk5F8[0] >> 0x3E) | (0 << 2)) + { + case 0: + r4 = 0x20; break; - case 1: - r4 = 0x10; + case 1: + r4 = 0x10; break; - case 2: - r4 = 0x40; + case 2: + r4 = 0x40; break; - case 3: - r4 = 0x80; + case 3: + r4 = 0x80; break; } - - UNK_021C59F4.unk04->unk5F8[0] = UNK_021C59F4.unk04->unk5F8[2] + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; - UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0]>>0x3c | (0 << 4); + UNK_021C59F4.unk04->unk5F8[0] = + UNK_021C59F4.unk04->unk5F8[2] + + UNK_021C59F4.unk04->unk5F8[1] * UNK_021C59F4.unk04->unk5F8[0]; + UNK_021C59F4.unk04->unk62D = UNK_021C59F4.unk04->unk5F8[0] >> 0x3c | (0 << 4); UNK_021C59F4.unk04->unk62E = r4; } } - UNK_021C59F4.unk04->unk628 &= ~0xf0; UNK_021C59F4.unk04->unk628 += r4; } #else -THUMB_FUNC asm void FUN_02030674() { - push {r3-r7, lr} - ldr r7, =UNK_021C59F4 - mov r6, #0x0 - ldr r5, [r7, #0x4] - ldr r2, =0x0000062C - add r4, r6, #0x0 - ldrb r0, [r5, r2] - cmp r0, #0x0 - beq _02030690 - sub r1, r2, #0x4 - ldrh r1, [r5, r1] - mov r3, #0xf0 - tst r3, r1 - bne _02030692 -_02030690: - b _02030794 -_02030692: - cmp r0, #0x2 - bne _020306D0 - mov r0, #0x20 - tst r0, r1 - beq _020306A4 - mov r0, #0x10 - orr r0, r6 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306A4: - mov r0, #0x10 - tst r0, r1 - beq _020306B2 - mov r0, #0x20 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306B2: - mov r0, #0x40 - tst r0, r1 - beq _020306C0 - mov r0, #0x80 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 -_020306C0: - mov r0, #0x80 - tst r0, r1 - beq _0203077E - mov r0, #0x40 - orr r0, r4 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - b _0203077E -_020306D0: - add r0, r2, #0x2 - ldrh r0, [r5, r0] - cmp r0, #0x0 - beq _020306F2 - add r4, r0, #0x0 - add r0, r2, #0x1 - ldrsb r0, [r5, r0] - sub r1, r0, #0x1 - add r0, r2, #0x1 - strb r1, [r5, r0] - ldr r1, [r7, #0x4] - ldrsb r0, [r1, r0] - cmp r0, #0x0 - bge _0203077E - add r0, r2, #0x2 - strh r6, [r1, r0] - b _0203077E -_020306F2: - add r0, r2, #0x0 - sub r0, #0x34 - add r6, r5, r0 - sub r2, #0x34 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r5, r2] - ldr r3, [r6, #0x4] - bl _ll_mul - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r0, [r6, #0x10] - ldr r1, [r6, #0x14] - add r0, r0, r3 - adc r1, r2 - ldr r2, =0x000005F8 - str r0, [r5, r2] - mov r2, #0x0 - str r1, [r6, #0x4] - lsr r0, r1, #0x1e - lsl r1, r2, #0x2 - orr r1, r0 - cmp r1, #0x3 - bhi _02030746 - add r0, r1, r1 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02030730: // jump table (using 16-bit offset) - // huge hack to get the correct jump offset. Is there a way to write constants? - lsl r6, r0, #0x0 // case 0 - lsl r2, r1, #0x0 // case 1 - lsl r6, r1, #0x0 // case 2 - lsl r2, r2, #0x0 // case 3 - - // intended jump offset - // .short _02030738 - _02030730 - 2; case 0 - // .short _0203073C - _02030730 - 2; case 1 - // .short _02030740 - _02030730 - 2; case 2 - // .short _02030744 - _02030730 - 2; case 3 -_02030738: - mov r4, #0x20 - b _02030746 -_0203073C: - mov r4, #0x10 - b _02030746 -_02030740: - mov r4, #0x40 - b _02030746 -_02030744: - mov r4, #0x80 -_02030746: - ldr r0, =UNK_021C59F4 - ldr r5, [r0, #0x4] - ldr r0, =0x000005F8 - add r6, r5, r0 - ldr r0, [r6, #0x8] - ldr r1, [r6, #0xc] - ldr r2, [r6, #0x0] - ldr r3, [r6, #0x4] - bl _ll_mul - ldr r3, [r6, #0x10] - ldr r2, [r6, #0x14] - add r0, r3, r0 - adc r2, r1 - ldr r1, =0x000005F8 - mov r3, #0x0 - str r0, [r5, r1] - str r2, [r6, #0x4] - lsr r0, r2, #0x1c - lsl r2, r3, #0x4 - orr r2, r0 - add r0, r1, #0x0 - add r0, #0x35 - strb r2, [r5, r0] - ldr r0, =UNK_021C59F4 - add r1, #0x36 - ldr r0, [r0, #0x4] - strh r4, [r0, r1] -_0203077E: - ldr r2, =UNK_021C59F4 - ldr r1, =0x00000628 - ldr r5, [r2, #0x4] - mov r0, #0xf0 - ldrh r3, [r5, r1] - bic r3, r0 - strh r3, [r5, r1] - ldr r2, [r2, #0x4] - ldrh r0, [r2, r1] - add r0, r0, r4 - strh r0, [r2, r1] -_02030794: - pop {r3-r7, pc} +THUMB_FUNC asm void FUN_02030674() +{ + push{ r3 - r7, lr } ldr r7, = UNK_021C59F4 mov r6, #0x0 ldr r5, [ r7, #0x4 ] ldr r2, + = 0x0000062C add r4, r6, #0x0 ldrb r0, [ r5, r2 ] cmp r0, + #0x0 beq _02030690 sub r1, r2, #0x4 ldrh r1, [ r5, r1 ] mov r3, + #0xf0 tst r3, + r1 bne _02030692 _02030690 : b _02030794 _02030692 : cmp r0, + #0x2 bne _020306D0 mov r0, + #0x20 tst r0, + r1 beq _020306A4 mov r0, + #0x10 orr r0, + r6 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306A4 : mov r0, + #0x10 tst r0, + r1 beq _020306B2 mov r0, + #0x20 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306B2 : mov r0, + #0x40 tst r0, + r1 beq _020306C0 mov r0, + #0x80 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 _020306C0 : mov r0, + #0x80 tst r0, + r1 beq _0203077E mov r0, + #0x40 orr r0, + r4 lsl r0, + r0, + #0x10 lsr r4, + r0, + #0x10 b _0203077E _020306D0 : add r0, + r2, + #0x2 ldrh r0, + [ r5, r0 ] cmp r0, + #0x0 beq _020306F2 add r4, + r0, + #0x0 add r0, + r2, + #0x1 ldrsb r0, + [ r5, r0 ] sub r1, + r0, + #0x1 add r0, + r2, + #0x1 strb r1, + [ r5, r0 ] ldr r1, + [ r7, #0x4 ] ldrsb r0, + [ r1, r0 ] cmp r0, + #0x0 bge _0203077E add r0, + r2, + #0x2 strh r6, + [ r1, r0 ] b _0203077E _020306F2 : add r0, + r2, + #0x0 sub r0, + #0x34 add r6, + r5, + r0 sub r2, + #0x34 ldr r0, + [ r6, #0x8 ] ldr r1, + [ r6, #0xc ] ldr r2, + [ r5, r2 ] ldr r3, + [ r6, #0x4 ] bl _ll_mul add r3, + r0, + #0x0 add r2, + r1, + #0x0 ldr r0, + [ r6, #0x10 ] ldr r1, + [ r6, #0x14 ] add r0, + r0, + r3 adc r1, + r2 ldr r2, + = 0x000005F8 str r0, + [ r5, r2 ] mov r2, + #0x0 str r1, + [ r6, #0x4 ] lsr r0, + r1, + #0x1e lsl r1, + r2, + #0x2 orr r1, + r0 cmp r1, + #0x3 bhi _02030746 add r0, + r1, + r1 add r0, + pc ldrh r0, + [ r0, #0x6 ] lsl r0, + r0, + #0x10 asr r0, + r0, + #0x10 add pc, + r0 _02030730 + : // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, + r0, + #0x0 // case 0 + lsl r2, + r1, + #0x0 // case 1 + lsl r6, + r1, + #0x0 // case 2 + lsl r2, + r2, + #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 + _02030738 : mov r4, + #0x20 b _02030746 _0203073C : mov r4, + #0x10 b _02030746 _02030740 : mov r4, + #0x40 b _02030746 _02030744 : mov r4, + #0x80 _02030746 : ldr r0, + = UNK_021C59F4 ldr r5, + [ r0, #0x4 ] ldr r0, + = 0x000005F8 add r6, + r5, + r0 ldr r0, + [ r6, #0x8 ] ldr r1, + [ r6, #0xc ] ldr r2, + [ r6, #0x0 ] ldr r3, + [ r6, #0x4 ] bl _ll_mul ldr r3, + [ r6, #0x10 ] ldr r2, + [ r6, #0x14 ] add r0, + r3, + r0 adc r2, + r1 ldr r1, + = 0x000005F8 mov r3, + #0x0 str r0, + [ r5, r1 ] str r2, + [ r6, #0x4 ] lsr r0, + r2, + #0x1c lsl r2, + r3, + #0x4 orr r2, + r0 add r0, + r1, + #0x0 add r0, + #0x35 strb r2, + [ r5, r0 ] ldr r0, + = UNK_021C59F4 add r1, + #0x36 ldr r0, + [ r0, #0x4 ] strh r4, + [ r0, r1 ] _0203077E : ldr r2, + = UNK_021C59F4 ldr r1, + = 0x00000628 ldr r5, + [ r2, #0x4 ] mov r0, + #0xf0 ldrh r3, + [ r5, r1 ] bic r3, + r0 strh r3, + [ r5, r1 ] ldr r2, + [ r2, #0x4 ] ldrh r0, + [ r2, r1 ] add r0, + r0, + r4 strh r0, + [ r2, r1 ] _02030794 : pop + { + r3 - r7, pc + } } #endif - -THUMB_FUNC void FUN_020307A8() { +THUMB_FUNC void FUN_020307A8() +{ UNK_021C59F4.unk04->unk62C = 1; } - -THUMB_FUNC void FUN_020307BC() { +THUMB_FUNC void FUN_020307BC() +{ UNK_021C59F4.unk04->unk62C = 2; } - -THUMB_FUNC void FUN_020307D0() { +THUMB_FUNC void FUN_020307D0() +{ UNK_021C59F4.unk04->unk62C = 0; } - - -THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { +THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) +{ UNK_021C59F4.unk04->unk610[param1] = 0; u32 r7 = param0[0] & 0x10; - if (r7 == 0x10) { - + if (r7 == 0x10) + { u8 r5 = param0[0] & 0xc; - if (r5 == 0) { + if (r5 == 0) + { UNK_021C59F4.unk04->unk610[param1] |= 0x40; - } else if (r5 == 4) { + } + else if (r5 == 4) + { UNK_021C59F4.unk04->unk610[param1] |= 0x80; - } else if (r5 == 8) { + } + else if (r5 == 8) + { UNK_021C59F4.unk04->unk610[param1] |= 0x20; - } else if (r5 == 0xc) { + } + else if (r5 == 0xc) + { UNK_021C59F4.unk04->unk610[param1] |= 0x10; } - UNK_021C59F4.unk04->unk620[param1] = (param0[0]>>5) & 0x7; + UNK_021C59F4.unk04->unk620[param1] = (param0[0] >> 5) & 0x7; } - return 1; } -THUMB_FUNC void FUN_0203086C() { +THUMB_FUNC void FUN_0203086C() +{ } -extern u32 FUN_02030FE0(); - -THUMB_FUNC u32 FUN_02030870(u8 *param0) { - if (UNK_021C59F4.unk04->unk62A != 0){ +THUMB_FUNC u32 FUN_02030870(u8 *param0) +{ + if (UNK_021C59F4.unk04->unk62A != 0) + { return 0; } - if (FUN_02030FE0() == 0) { + if (FUN_02030FE0() == 0) + { return 0; } - if (UNK_021C59F4.unk04->unk681 != 0) { + if (UNK_021C59F4.unk04->unk681 != 0) + { UNK_021C59F4.unk04->unk681--; } - if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) { + if ((UNK_021C59F4.unk04->unk628 & 0x40) != 0) + { param0[0] |= 0x10; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x80) != 0) + { param0[0] |= 0x14; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x20) != 0) + { param0[0] |= 0x18; UNK_021C59F4.unk04->unk681 = 8; - } else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) { + } + else if ((UNK_021C59F4.unk04->unk628 & 0x10) != 0) + { param0[0] |= 0x1c; UNK_021C59F4.unk04->unk681 = 8; } - - param0[0] |= UNK_021C59F4.unk04->unk62B<<5; + param0[0] |= UNK_021C59F4.unk04->unk62B << 5; return 0; } - extern u32 FUN_0202D4E4(u8 *param0); extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); - -THUMB_FUNC u32 FUN_02030930(u8 *param0) { +THUMB_FUNC u32 FUN_02030930(u8 *param0) +{ int r5 = FUN_02031228(FUN_02033534()); FUN_0202D858(FUN_02033534()); u8 r0; - if (UNK_021C59F4.unk04->unk684 == 0) { + if (UNK_021C59F4.unk04->unk684 == 0) + { param0[0] = 0; - } else { + } + else + { param0[0] = 1; } - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { FUN_02030870(param0); } UNK_021C59F4.unk04->unk684 = 0; - if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) { + if (FUN_0202D4E4(UNK_021C59F4.unk04->unk54C) != 0) + { param0[0] |= 2; - if (param0[0] == 2) { + if (param0[0] == 2) + { return 0; } - } else { + } + else + { int st0[2]; - st0[1] = r5-1; - st0[0] = param0+1; - if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { + st0[1] = r5 - 1; + st0[0] = param0 + 1; + if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) + { UNK_021C59F4.unk04->unk684 = 1; } - - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { UNK_021C59F4.unk04->unk65E++; - param0[0] |= UNK_021C59F4.unk04->unk65E<<4 & 0xf0; + param0[0] |= UNK_021C59F4.unk04->unk65E << 4 & 0xf0; } } return 1; - } - -THUMB_FUNC void FUN_02030A00(u8 *param0) { +THUMB_FUNC void FUN_02030A00(u8 *param0) +{ param0[0] = 0xb; - if (UNK_021C59F4.unk04->unk685 == 0) { + if (UNK_021C59F4.unk04->unk685 == 0) + { param0[1] = 0; - } else { + } + else + { param0[1] = 1; } u16 res = FUN_0202CB8C(); - param0[2] = res >>8; + param0[2] = res >> 8; param0[3] = res; - int st0[2]; st0[1] = 0xbb; - st0[0] = param0+5; - if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { + st0[0] = param0 + 5; + if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) + { UNK_021C59F4.unk04->unk685 = 0; param0[4] = 0xbb - st0[1]; @@ -1675,143 +1699,151 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) { } extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); -extern void FUN_02031454(); -THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) { - if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { +THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0) != 0) + { return 1; } - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) { - if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 1) != 0) + { return 1; } - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02031190() != 0) + { ErrorHandling(); return 0; } - - if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { return FUN_02030A78(param0, param1, param2); } - if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0) != 0) + { return 1; } - - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - - -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) +{ + if (FUN_02031190() != 0) + { FUN_02031454(); return 0; } - if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) { + if (FUN_02030E7C(0) == 0 && FUN_02031280() == 0) + { return 0; } - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { return FUN_02030ADC(param0, param1, param2); } - if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) { + if (FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 1) != 0) + { return 1; } - - if (FUN_02033534() == 0xa) { + if (FUN_02033534() == 0xa) + { FUN_02031454(); } return 0; } - - -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) { +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) +{ return FUN_02030BC4(param0, param1, 0); } - -THUMB_FUNC int FUN_02030C58() { +THUMB_FUNC int FUN_02030C58() +{ return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) { +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) +{ FUN_0202D934(param0, param1, param2, param3); - *(u8 *)(param4+0xa) = 0xee; - *(u16 *)(param4+0x8) = 0xffff; - *(u32 *)(param4+0x4) = 0; + *(u8 *)(param4 + 0xa) = 0xee; + *(u16 *)(param4 + 0x8) = 0xffff; + *(u32 *)(param4 + 0x4) = 0; *(u32 *)(param4) = 0; } - extern int FUN_0202D478(s16 *param0); extern u32 FUN_0202D41C(s16 *param0); extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); -struct UnkStruct2 { - u32 unk00; - u32 unk04; - u16 unk08; - u8 unk0a; -}; - - -THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { - while (FUN_0202D478(param0) != 0) { +THUMB_FUNC void FUN_02030C8C( + s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) +{ + while (FUN_0202D478(param0) != 0) + { u32 r7 = param4->unk0a; - if (r7 == 0xee) { + if (r7 == 0xee) + { r7 = FUN_0202D41C(param0); - if (r7 == 0xee) { + if (r7 == 0xee) + { continue; } } @@ -1819,21 +1851,24 @@ THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, st int st10 = param0[2]; param4->unk0a = r7; int r4 = param4->unk08; - if (r4 == 0xffff) { + if (r4 == 0xffff) + { r4 = FUN_0202D9A0(r7); - if (UNK_021C59F4.unk04->unk689 != 0) { + if (UNK_021C59F4.unk04->unk689 != 0) + { return; } - if (r4 == 0xffff) { - if (FUN_0202D478(param0) < 1) { + if (r4 == 0xffff) + { + if (FUN_0202D478(param0) < 1) + { param0[2] = st10; return; } - - r4 = FUN_0202D41C(param0) <<8; + r4 = FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); st10 = param0[2]; @@ -1842,65 +1877,83 @@ THUMB_FUNC void FUN_02030C8C(s16 *param0, u32 param1, u32 param2, u32 param3, st param4->unk08 = r4; } - - if (FUN_0202DA04(r7) != 0) { - if (param4->unk04 == 0) { + if (FUN_0202DA04(r7) != 0) + { + if (param4->unk04 == 0) + { param4->unk04 = FUN_0202DA40(r7, param1, param4->unk08); } int stc = FUN_0202D400(param0, param2, r4 - param4->unk00); - if (param4->unk04 != 0) { + if (param4->unk04 != 0) + { MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); } - - if ((int)(param4->unk00 += stc) < (int)r4) { + if ((int)(param4->unk00 += stc) < (int)r4) + { continue; } FUN_02030C70(param1, r7, r4, param4->unk04, param4); - } else { - if (FUN_0202D478(param0) >= r4) { + } + else + { + if (FUN_0202D478(param0) >= r4) + { FUN_0202D400(param0, param2, r4); FUN_02030C70(param1, r7, r4, param2, param4); - } else { + } + else + { param0[2] = st10; return; } } - } } - - -THUMB_FUNC void FUN_02030DA4() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68B == 0) { +THUMB_FUNC void FUN_02030DA4() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk68B == 0) + { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) + { UNK_021C59F4.unk04->unk470; - - FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, + 0, + UNK_021C59F4.unk04->unk460, + 1, + (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); } } } } - -THUMB_FUNC void FUN_02030DFC() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk68B == 0) { +THUMB_FUNC void FUN_02030DFC() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk68B == 0) + { int r7 = FUN_0202D858(FUN_02033534()) + 1; int r4; - for (r4 = 0; r4 < r7; r4++) { + for (r4 = 0; r4 < r7; r4++) + { FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { - - - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], r4, UNK_021C59F4.unk04->unk460, 0, (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) + { + + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], + r4, + UNK_021C59F4.unk04->unk460, + 0, + (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); } } } @@ -1908,23 +1961,25 @@ THUMB_FUNC void FUN_02030DFC() { } extern u32 MOD04_021D8018(); -extern u32 FUN_02030F40(); - - -THUMB_FUNC u32 FUN_02030E7C(u16 param0) { - if (UNK_021C59F4.unk04 == NULL) { +THUMB_FUNC u32 FUN_02030E7C(u16 param0) +{ + if (UNK_021C59F4.unk04 == NULL) + { return 0; } - - if (FUN_02033534() >= 0x13) { - if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) { - if (param0 == 0) { + if (FUN_02033534() >= 0x13) + { + if (UNK_021C59F4.unk04->unk687 != 0 && MOD04_021D8018() != 0xffffffff) + { + if (param0 == 0) + { return 1; } - if (param0 == 1) { + if (param0 == 1) + { return 1; } } @@ -1932,26 +1987,34 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0) { return 0; } - if (FUN_02030F40() == 0) { + if (FUN_02030F40() == 0) + { return 0; } - if (FUN_0202CBD4() != 4) { + if (FUN_0202CBD4() != 4) + { return 0; } - if (FUN_02031190() == param0) { + if (FUN_02031190() == param0) + { return 1; } - if (FUN_02031190() == 0) { + if (FUN_02031190() == 0) + { u16 r0 = FUN_0202CB8C(); - if ((r0 & (1<unk65C & (1<unk65C & (1 << param0)) != 0) + { return 1; } } @@ -1959,46 +2022,46 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0) { return 0; } - - -THUMB_FUNC u32 FUN_02030F20() { +THUMB_FUNC u32 FUN_02030F20() +{ u32 r4 = 0; for (int i = 0; i < 8; i++) { - if (FUN_02030E7C(i) != 0) { + if (FUN_02030E7C(i) != 0) + { r4++; } } - return r4; - } extern u32 FUN_0202EDF8(); -THUMB_FUNC u32 FUN_02030F40() { - if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) { - return 1; +THUMB_FUNC u32 FUN_02030F40() +{ + if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) + { + return 1; } return FUN_0202EDF8(); } - - -THUMB_FUNC void FUN_02030F60(u8 param0) { +THUMB_FUNC void FUN_02030F60(u8 param0) +{ UNK_021C59F4.unk04->unk62B = param0; } - -THUMB_FUNC u8 FUN_02030F74(u32 param0) { +THUMB_FUNC u8 FUN_02030F74(u32 param0) +{ return UNK_021C59F4.unk04->unk620[param0]; } - -THUMB_FUNC u32 FUN_02030F88(u32 param0) { - if (UNK_021C59F4.unk04 == NULL) { +THUMB_FUNC u32 FUN_02030F88(u32 param0) +{ + if (UNK_021C59F4.unk04 == NULL) + { return 0; } @@ -2008,117 +2071,133 @@ THUMB_FUNC u32 FUN_02030F88(u32 param0) { return ret; } -THUMB_FUNC void FUN_02030FA8() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02030FA8() +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk628 |= 0x8000; } } - -THUMB_FUNC void FUN_02030FC8() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02030FC8() +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk628 = 0; } } - -THUMB_FUNC u32 FUN_02030FE0() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC u32 FUN_02030FE0() +{ + if (UNK_021C59F4.unk04 != NULL) + { return UNK_021C59F4.unk04->unk628 & 0x8000; } return 1; } - - -THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) { - if (FUN_0202FA28() == 1) { +THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) +{ + if (FUN_0202FA28() == 1) + { FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 1, 0); return; } - FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); - } - -THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) { +THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) +{ FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } -extern u32 FUN_020311D0(u32 param0, u8 *param1); - - - -THUMB_FUNC void FUN_02031088() { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk67B != 1) { - if (UNK_021C59F4.unk04->unk67B != 3) { +THUMB_FUNC void FUN_02031088() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk67B != 1) + { + if (UNK_021C59F4.unk04->unk67B != 3) + { return; } - } else { + } + else + { u32 res; - if (FUN_0202FA28() == 1) { + if (FUN_0202FA28() == 1) + { res = FUN_020311D0(0xb, &UNK_021C59F4.unk04->unk67C); - } else { + } + else + { res = FUN_02030BC4(0xb, &UNK_021C59F4.unk04->unk67C, 1); } - if (res == 0) { + if (res == 0) + { return; } UNK_021C59F4.unk04->unk67B = 2; return; - - } - if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) { + if (FUN_020311D0(0xc, &UNK_021C59F4.unk04->unk67C) != 0) + { FUN_0202F9E0(UNK_021C59F4.unk04->unk67C); UNK_021C59F4.unk04->unk67B = 0; } - } } - -THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() == 0) { +THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() == 0) + { UNK_021C59F4.unk04->unk67B = 1; UNK_021C59F4.unk04->unk67C = param2[0]; } } -THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() != 0) { +THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() != 0) + { UNK_021C59F4.unk04->unk67C = param2[0]; UNK_021C59F4.unk04->unk67B = 3; - } + } } - -THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { - if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { +THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) +{ + if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) + { FUN_0202F9E0(*param2); UNK_021C59F4.unk04->unk67B = 0; } } - extern u16 FUN_0202D19C(); -THUMB_FUNC u16 FUN_02031190() { - if (UNK_021C59F4.unk04 != NULL) { - if (FUN_02033534() >= 0x13) { +THUMB_FUNC u16 FUN_02031190() +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (FUN_02033534() >= 0x13) + { u32 res = MOD04_021D8018(); - if (res != 0xffffffff) { + if (res != 0xffffffff) + { return res; } - } else { - if (FUN_02031280() != 0) { + } + else + { + if (FUN_02031280() != 0) + { return 0; } @@ -2129,31 +2208,33 @@ THUMB_FUNC u16 FUN_02031190() { return 0; } - -THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) { +THUMB_FUNC u32 FUN_020311D0(u32 param0, u8 *param1) +{ return FUN_02030ADC(param0, param1, 0); } - -THUMB_FUNC u32 FUN_020311DC(u32 param0) { +THUMB_FUNC u32 FUN_020311DC(u32 param0) +{ return FUN_02030ADC(param0, 0, 0); } - -THUMB_FUNC u32 FUN_020311E8() { +THUMB_FUNC u32 FUN_020311E8() +{ return FUN_0202EE24(); } - extern void FUN_020334E8(u32 param0, u32 param1); extern u32 FUN_0202EE60(); -THUMB_FUNC u32 FUN_020311F0() { - if (FUN_02031280() != 0) { +THUMB_FUNC u32 FUN_020311F0() +{ + if (FUN_02031280() != 0) + { return 0; } - if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) { + if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) + { FUN_020334E8(1, 1); return 1; } @@ -2161,40 +2242,45 @@ THUMB_FUNC u32 FUN_020311F0() { return FUN_0202EE60(); } - - -THUMB_FUNC int FUN_02031228(u16 param0) { - if (FUN_0202D858(param0) >= 5) { +THUMB_FUNC int FUN_02031228(u16 param0) +{ + if (FUN_0202D858(param0) >= 5) + { return 0xc; } - if (FUN_0202FA28() == 0) { + if (FUN_0202FA28() == 0) + { return 0xc; } return 0x26; } -THUMB_FUNC u32 FUN_02031248(u32 param0) { - return FUN_0202D858(param0) +1; +THUMB_FUNC u32 FUN_02031248(u32 param0) +{ + return FUN_0202D858(param0) + 1; } extern u32 FUN_0202D884(u16 param0); - - -THUMB_FUNC u32 FUN_02031258(u32 param0) { - return FUN_0202D884(param0) +1; +THUMB_FUNC u32 FUN_02031258(u32 param0) +{ + return FUN_0202D884(param0) + 1; } -THUMB_FUNC void FUN_02031268(u8 param0) { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_02031268(u8 param0) +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk686 = param0; } } -THUMB_FUNC u8 FUN_02031280() { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC u8 FUN_02031280() +{ + if (UNK_021C59F4.unk04 != NULL) + { return UNK_021C59F4.unk04->unk686; } @@ -2203,8 +2289,10 @@ THUMB_FUNC u8 FUN_02031280() { extern void FUN_0202F05C(); -THUMB_FUNC void FUN_0203129C() { - if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { +THUMB_FUNC void FUN_0203129C() +{ + if (FUN_0202F03C() == 0 && FUN_02031190() == 0) + { u32 st0; FUN_02030C4C(2, &st0); } @@ -2214,16 +2302,16 @@ THUMB_FUNC void FUN_0203129C() { extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); - #ifdef NONMATCHING -THUMB_FUNC void FUN_020312BC(u32 param0) { +THUMB_FUNC void FUN_020312BC(u32 param0) +{ RTCDate st10; RTCTime st4; GF_RTC_CopyDateTime(&st10, &st4); gMain.unk2C + st4.second; - u32 r6 = st10.year<<4 + st10.month; - u32 r5 = 0<<4 | st10.year>>0x1c; + u32 r6 = st10.year << 4 + st10.month; + u32 r5 = 0 << 4 | st10.year >> 0x1c; st4.second; u32 st0 = st10.day; @@ -2231,108 +2319,69 @@ THUMB_FUNC void FUN_020312BC(u32 param0) { st4.minute; 0x00000000; - (0x00000000 + r5) <<5; - - + (0x00000000 + r5) << 5; } #else -THUMB_FUNC asm void FUN_020312BC(u32 param0) { - push {r3-r7, lr} - sub sp, #0x20 - add r4, r0, #0x0 - add r0, sp, #0x10 - add r1, sp, #0x4 - bl GF_RTC_CopyDateTime - ldr r0, =gMain - ldr r6, [sp, #0x10] - mov r5, #0x0 - lsr r7, r6, #0x1c - lsl r5, r5, #0x4 - ldr r1, [sp, #0xc] - ldr r0, [r0, #0x2c] - lsl r6, r6, #0x4 - add r3, r1, r0 - ldr r0, [sp, #0x18] - orr r5, r7 - str r0, [sp, #0x0] - ldr r0, [sp, #0x14] - ldr r1, [sp, #0x4] - add r6, r0, r6 - ldr r0, =0x00000000 - ldr r2, [sp, #0x8] - adc r0, r5 - lsr r5, r6, #0x1b - lsl r0, r0, #0x5 - orr r0, r5 - ldr r5, [sp, #0x0] - lsl r6, r6, #0x5 - add r6, r5, r6 - ldr r5, =0x00000000 - adc r5, r0 - lsr r0, r6, #0x1b - lsl r5, r5, #0x5 - orr r5, r0 - lsl r0, r6, #0x5 - add r6, r1, r0 - ldr r1, =0x00000000 - adc r1, r5 - lsr r0, r6, #0x1a - lsl r1, r1, #0x6 - orr r1, r0 - lsl r0, r6, #0x6 - add r5, r2, r0 - ldr r2, =0x00000000 - adc r2, r1 - lsr r0, r5, #0x1a - lsl r1, r2, #0x6 - orr r1, r0 - lsl r0, r5, #0x6 - add r2, r3, r0 - ldr r0, =0x00000000 - str r2, [r4, #0x0] - adc r0, r1 - str r0, [r4, #0x4] - ldr r1, =0x6C078965 - ldr r0, =0x5D588B65 - str r1, [r4, #0x8] - str r0, [r4, #0xc] - ldr r0, =0x00269EC3 - str r0, [r4, #0x10] - mov r0, #0x0 - str r0, [r4, #0x14] - add sp, #0x20 - pop {r3-r7, pc} +THUMB_FUNC asm void FUN_020312BC(u32 param0) +{ + push{ r3 - r7, lr } sub sp, #0x20 add r4, r0, #0x0 add r0, sp, #0x10 add r1, sp, + #0x4 bl GF_RTC_CopyDateTime ldr r0, + = gMain ldr r6, [ sp, #0x10 ] mov r5, #0x0 lsr r7, r6, #0x1c lsl r5, r5, #0x4 ldr r1, + [ sp, #0xc ] ldr r0, [ r0, #0x2c ] lsl r6, r6, #0x4 add r3, r1, r0 ldr r0, + [ sp, #0x18 ] orr r5, r7 str r0, [ sp, #0x0 ] ldr r0, [ sp, #0x14 ] ldr r1, + [ sp, #0x4 ] add r6, r0, + r6 ldr r0, = 0x00000000 ldr r2, [ sp, #0x8 ] adc r0, r5 lsr r5, r6, #0x1b lsl r0, r0, + #0x5 orr r0, r5 ldr r5, [ sp, #0x0 ] lsl r6, r6, #0x5 add r6, r5, r6 ldr r5, + = 0x00000000 adc r5, r0 lsr r0, r6, #0x1b lsl r5, r5, #0x5 orr r5, r0 lsl r0, r6, + #0x5 add r6, r1, r0 ldr r1, = 0x00000000 adc r1, r5 lsr r0, r6, #0x1a lsl r1, r1, + #0x6 orr r1, r0 lsl r0, r6, #0x6 add r5, r2, r0 ldr r2, = 0x00000000 adc r2, + r1 lsr r0, r5, #0x1a lsl r1, r2, #0x6 orr r1, r0 lsl r0, r5, #0x6 add r2, r3, + r0 ldr r0, = 0x00000000 str r2, [ r4, #0x0 ] adc r0, r1 str r0, [ r4, #0x4 ] ldr r1, + = 0x6C078965 ldr r0, = 0x5D588B65 str r1, [ r4, #0x8 ] str r0, [ r4, #0xc ] ldr r0, + = 0x00269EC3 str r0, [ r4, #0x10 ] mov r0, #0x0 str r0, [ r4, #0x14 ] add sp, + #0x20 pop + { + r3 - r7, pc + } } #endif extern void FUN_0202D830(u8 *param0, u32 param1); -THUMB_FUNC void FUN_02031354(u32 param0) { +THUMB_FUNC void FUN_02031354(u32 param0) +{ FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); } - -THUMB_FUNC u32 FUN_02031370() { +THUMB_FUNC u32 FUN_02031370() +{ return FUN_0202D4E4(UNK_021C59F4.unk04->unk56C); } -THUMB_FUNC u32 FUN_02031388() { +THUMB_FUNC u32 FUN_02031388() +{ return FUN_0202D4E4(UNK_021C59F4.unk04->unk54C); } -THUMB_FUNC void FUN_020313A0(u8 param0) { +THUMB_FUNC void FUN_020313A0(u8 param0) +{ UNK_021C59F4.unk04->unk687 = param0; } -THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) { - if (UNK_021C59F4.unk04 != NULL) { +THUMB_FUNC void FUN_020313B4(u8 param0, u32 param1) +{ + if (UNK_021C59F4.unk04 != NULL) + { UNK_021C59F4.unk04->unk677[param1] = param0; } } -THUMB_FUNC u32 FUN_020313CC(u32 param0) { - if (UNK_021C59F4.unk04 != NULL) { - if (UNK_021C59F4.unk04->unk677[param0] != 0xff) { +THUMB_FUNC u32 FUN_020313CC(u32 param0) +{ + if (UNK_021C59F4.unk04 != NULL) + { + if (UNK_021C59F4.unk04->unk677[param0] != 0xff) + { return UNK_021C59F4.unk04->unk677[param0]; } } @@ -2342,18 +2391,23 @@ THUMB_FUNC u32 FUN_020313CC(u32 param0) { extern u32 MOD04_021D8624(); -THUMB_FUNC u32 FUN_020313EC() { - if (FUN_02033534() < 0x13) { +THUMB_FUNC u32 FUN_020313EC() +{ + if (FUN_02033534() < 0x13) + { return 0; } return MOD04_021D8624(); } -THUMB_FUNC void FUN_02031400(u32 param0) { - if (FUN_02033534() >= 0x13) { +THUMB_FUNC void FUN_02031400(u32 param0) +{ + if (FUN_02033534() >= 0x13) + { UNK_021C59F4.unk04->unk630 = param0; - if (param0 != 0) { + if (param0 != 0) + { UNK_021C59F4.unk04->unk634 = 0; UNK_021C59F4.unk04->unk638[0] = 0; UNK_021C59F4.unk04->unk638[1] = 0; @@ -2361,22 +2415,25 @@ THUMB_FUNC void FUN_02031400(u32 param0) { } } - -THUMB_FUNC u32 FUN_02031438() { - if (UNK_021C59F4.unk04->unk681 != 0) { +THUMB_FUNC u32 FUN_02031438() +{ + if (UNK_021C59F4.unk04->unk681 != 0) + { return 1; } return 0; } - -THUMB_FUNC void FUN_02031454() { +THUMB_FUNC void FUN_02031454() +{ UNK_021C59F4.unk04->unk689 = 1; } -THUMB_FUNC void FUN_02031468() { - if (UNK_021C59F4.unk04 != NULL) { - UNK_021C59F4.unk04->unk68A = 1; +THUMB_FUNC void FUN_02031468() +{ + if (UNK_021C59F4.unk04 != NULL) + { + UNK_021C59F4.unk04->unk68A = 1; } } \ No newline at end of file -- cgit v1.2.3 From 8e5d36dc053928ecc36028e818c8a3f8fd2cc9a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 17:55:22 +0200 Subject: fix asm functions --- arm9/src/unk_0202F150.c | 597 ++++++++++++++++++++++++++---------------------- 1 file changed, 326 insertions(+), 271 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 15a67f8d..7973702c 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -763,86 +763,98 @@ THUMB_FUNC u32 FUN_0202FE2C(int param0) #else THUMB_FUNC asm u32 FUN_0202FE2C(int param0) { - push{ r3 - r7, lr } sub sp, #0x10 str r0, [ sp, #0x0 ] mov r0, #0x0 str r0, - [ sp, #0x4 ] bl FUN_02033534 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_02031228 str r0, - [ sp, #0xc ] bl FUN_02033534 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_0202D858 add r0, r0, - #0x1 mov r7, #0x0 str r0, [ sp, #0x8 ] cmp r0, #0x0 ble _0202FED0 ldr r0, - [ sp, #0x0 ] mov r1, #0xc0 add r6, r0, #0x0 add r4, r7, #0x0 add r5, r7, #0x0 mul r6, - r1 _0202FE66 : ldr r0, - = UNK_021C59F4 ldr r1, - [ r0, #0x4 ] ldr r0, - = 0x0000047C add r0, - r1, - r0 add r0, - r0, - r4 bl FUN_0202D4BC lsl r0, - r7, - #0x10 lsr r0, - r0, - #0x10 bl FUN_02030E7C cmp r0, - #0x0 beq _0202FE90 ldr r0, - = UNK_021C59F4 mov r1, - #0xe ldr r0, - [ r0, #0x4 ] add r0, - r6, - r0 add r2, - r5, - r0 mov r0, - #0x55 lsl r0, - r0, - #0x2 strb r1, - [ r2, r0 ] _0202FE90 : ldr r0, - = UNK_021C59F4 mov r2, - #0x55 ldr r1, - [ r0, #0x4 ] ldr r0, - = 0x0000047C lsl r2, - r2, - #0x2 add r0, - r1, - r0 add r1, - r1, - r2 add r1, - r1, - r6 ldr r2, - [ sp, #0xc ] add r0, - r0, - r4 add r1, - r1, - r5 bl FUN_0202D400 ldr r0, - = UNK_021C59F4 ldr r0, - [ r0, #0x4 ] add r0, - r6, - r0 add r1, - r5, - r0 mov r0, - #0x55 lsl r0, - r0, - #0x2 ldrb r0, - [ r1, r0 ] cmp r0, - #0xe bne _0202FEC2 ldr r0, - [ sp, #0x4 ] add r0, - r0, - #0x1 str r0, - [ sp, #0x4 ] _0202FEC2 : ldr r0, - [ sp, #0xc ] add r7, - r7, - #0x1 add r5, - r5, - r0 ldr r0, - [ sp, #0x8 ] add r4, - #0xc cmp r7, - r0 blt _0202FE66 _0202FED0 - : ldr r1, - [ sp, #0x4 ] ldr r0, - [ sp, #0x8 ] cmp r1, - r0 bne _0202FEDE add sp, - #0x10 mov r0, - #0x0 pop{ r3 - r7, pc } _0202FEDE : mov r0, - #0x1 add sp, - #0x10 pop - { - r3 - r7, pc - } + // clang-format off + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + str r0, [sp, #0xc] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + mov r7, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _0202FED0 + ldr r0, [sp, #0x0] + mov r1, #0xc0 + add r6, r0, #0x0 + add r4, r7, #0x0 + add r5, r7, #0x0 + mul r6, r1 +_0202FE66: + ldr r0, =UNK_021C59F4 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + add r0, r1, r0 + add r0, r0, r4 + bl FUN_0202D4BC + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202FE90 + ldr r0, =UNK_021C59F4 + mov r1, #0xe + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r2, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + strb r1, [r2, r0] +_0202FE90: + ldr r0, =UNK_021C59F4 + mov r2, #0x55 + ldr r1, [r0, #0x4] + ldr r0, =0x0000047C + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, r1, r2 + add r1, r1, r6 + ldr r2, [sp, #0xc] + add r0, r0, r4 + add r1, r1, r5 + bl FUN_0202D400 + ldr r0, =UNK_021C59F4 + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r1, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0xe + bne _0202FEC2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0202FEC2: + ldr r0, [sp, #0xc] + add r7, r7, #0x1 + add r5, r5, r0 + ldr r0, [sp, #0x8] + add r4, #0xc + cmp r7, r0 + blt _0202FE66 +_0202FED0: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + cmp r1, r0 + bne _0202FEDE + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202FEDE: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + // clang-format on } #endif @@ -1125,7 +1137,6 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } - THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) { if (UNK_021C59F4.unk04->unk66F[param0] != 0) @@ -1348,173 +1359,173 @@ THUMB_FUNC void FUN_02030674() #else THUMB_FUNC asm void FUN_02030674() { - push{ r3 - r7, lr } ldr r7, = UNK_021C59F4 mov r6, #0x0 ldr r5, [ r7, #0x4 ] ldr r2, - = 0x0000062C add r4, r6, #0x0 ldrb r0, [ r5, r2 ] cmp r0, - #0x0 beq _02030690 sub r1, r2, #0x4 ldrh r1, [ r5, r1 ] mov r3, - #0xf0 tst r3, - r1 bne _02030692 _02030690 : b _02030794 _02030692 : cmp r0, - #0x2 bne _020306D0 mov r0, - #0x20 tst r0, - r1 beq _020306A4 mov r0, - #0x10 orr r0, - r6 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306A4 : mov r0, - #0x10 tst r0, - r1 beq _020306B2 mov r0, - #0x20 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306B2 : mov r0, - #0x40 tst r0, - r1 beq _020306C0 mov r0, - #0x80 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 _020306C0 : mov r0, - #0x80 tst r0, - r1 beq _0203077E mov r0, - #0x40 orr r0, - r4 lsl r0, - r0, - #0x10 lsr r4, - r0, - #0x10 b _0203077E _020306D0 : add r0, - r2, - #0x2 ldrh r0, - [ r5, r0 ] cmp r0, - #0x0 beq _020306F2 add r4, - r0, - #0x0 add r0, - r2, - #0x1 ldrsb r0, - [ r5, r0 ] sub r1, - r0, - #0x1 add r0, - r2, - #0x1 strb r1, - [ r5, r0 ] ldr r1, - [ r7, #0x4 ] ldrsb r0, - [ r1, r0 ] cmp r0, - #0x0 bge _0203077E add r0, - r2, - #0x2 strh r6, - [ r1, r0 ] b _0203077E _020306F2 : add r0, - r2, - #0x0 sub r0, - #0x34 add r6, - r5, - r0 sub r2, - #0x34 ldr r0, - [ r6, #0x8 ] ldr r1, - [ r6, #0xc ] ldr r2, - [ r5, r2 ] ldr r3, - [ r6, #0x4 ] bl _ll_mul add r3, - r0, - #0x0 add r2, - r1, - #0x0 ldr r0, - [ r6, #0x10 ] ldr r1, - [ r6, #0x14 ] add r0, - r0, - r3 adc r1, - r2 ldr r2, - = 0x000005F8 str r0, - [ r5, r2 ] mov r2, - #0x0 str r1, - [ r6, #0x4 ] lsr r0, - r1, - #0x1e lsl r1, - r2, - #0x2 orr r1, - r0 cmp r1, - #0x3 bhi _02030746 add r0, - r1, - r1 add r0, - pc ldrh r0, - [ r0, #0x6 ] lsl r0, - r0, - #0x10 asr r0, - r0, - #0x10 add pc, - r0 _02030730 - : // jump table (using 16-bit offset) - // huge hack to get the correct jump offset. Is there a way to write constants? - lsl r6, - r0, - #0x0 // case 0 - lsl r2, - r1, - #0x0 // case 1 - lsl r6, - r1, - #0x0 // case 2 - lsl r2, - r2, - #0x0 // case 3 - - // intended jump offset - // .short _02030738 - _02030730 - 2; case 0 - // .short _0203073C - _02030730 - 2; case 1 - // .short _02030740 - _02030730 - 2; case 2 - // .short _02030744 - _02030730 - 2; case 3 - _02030738 : mov r4, - #0x20 b _02030746 _0203073C : mov r4, - #0x10 b _02030746 _02030740 : mov r4, - #0x40 b _02030746 _02030744 : mov r4, - #0x80 _02030746 : ldr r0, - = UNK_021C59F4 ldr r5, - [ r0, #0x4 ] ldr r0, - = 0x000005F8 add r6, - r5, - r0 ldr r0, - [ r6, #0x8 ] ldr r1, - [ r6, #0xc ] ldr r2, - [ r6, #0x0 ] ldr r3, - [ r6, #0x4 ] bl _ll_mul ldr r3, - [ r6, #0x10 ] ldr r2, - [ r6, #0x14 ] add r0, - r3, - r0 adc r2, - r1 ldr r1, - = 0x000005F8 mov r3, - #0x0 str r0, - [ r5, r1 ] str r2, - [ r6, #0x4 ] lsr r0, - r2, - #0x1c lsl r2, - r3, - #0x4 orr r2, - r0 add r0, - r1, - #0x0 add r0, - #0x35 strb r2, - [ r5, r0 ] ldr r0, - = UNK_021C59F4 add r1, - #0x36 ldr r0, - [ r0, #0x4 ] strh r4, - [ r0, r1 ] _0203077E : ldr r2, - = UNK_021C59F4 ldr r1, - = 0x00000628 ldr r5, - [ r2, #0x4 ] mov r0, - #0xf0 ldrh r3, - [ r5, r1 ] bic r3, - r0 strh r3, - [ r5, r1 ] ldr r2, - [ r2, #0x4 ] ldrh r0, - [ r2, r1 ] add r0, - r0, - r4 strh r0, - [ r2, r1 ] _02030794 : pop - { - r3 - r7, pc - } + // clang-format off + push {r3-r7, lr} + ldr r7, =UNK_021C59F4 + mov r6, #0x0 + ldr r5, [r7, #0x4] + ldr r2, =0x0000062C + add r4, r6, #0x0 + ldrb r0, [r5, r2] + cmp r0, #0x0 + beq _02030690 + sub r1, r2, #0x4 + ldrh r1, [r5, r1] + mov r3, #0xf0 + tst r3, r1 + bne _02030692 +_02030690: + b _02030794 +_02030692: + cmp r0, #0x2 + bne _020306D0 + mov r0, #0x20 + tst r0, r1 + beq _020306A4 + mov r0, #0x10 + orr r0, r6 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306A4: + mov r0, #0x10 + tst r0, r1 + beq _020306B2 + mov r0, #0x20 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306B2: + mov r0, #0x40 + tst r0, r1 + beq _020306C0 + mov r0, #0x80 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306C0: + mov r0, #0x80 + tst r0, r1 + beq _0203077E + mov r0, #0x40 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203077E +_020306D0: + add r0, r2, #0x2 + ldrh r0, [r5, r0] + cmp r0, #0x0 + beq _020306F2 + add r4, r0, #0x0 + add r0, r2, #0x1 + ldrsb r0, [r5, r0] + sub r1, r0, #0x1 + add r0, r2, #0x1 + strb r1, [r5, r0] + ldr r1, [r7, #0x4] + ldrsb r0, [r1, r0] + cmp r0, #0x0 + bge _0203077E + add r0, r2, #0x2 + strh r6, [r1, r0] + b _0203077E +_020306F2: + add r0, r2, #0x0 + sub r0, #0x34 + add r6, r5, r0 + sub r2, #0x34 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r5, r2] + ldr r3, [r6, #0x4] + bl _ll_mul + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + ldr r2, =0x000005F8 + str r0, [r5, r2] + mov r2, #0x0 + str r1, [r6, #0x4] + lsr r0, r1, #0x1e + lsl r1, r2, #0x2 + orr r1, r0 + cmp r1, #0x3 + bhi _02030746 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02030730: // jump table (using 16-bit offset) + // huge hack to get the correct jump offset. Is there a way to write constants? + lsl r6, r0, #0x0 // case 0 + lsl r2, r1, #0x0 // case 1 + lsl r6, r1, #0x0 // case 2 + lsl r2, r2, #0x0 // case 3 + + // intended jump offset + // .short _02030738 - _02030730 - 2; case 0 + // .short _0203073C - _02030730 - 2; case 1 + // .short _02030740 - _02030730 - 2; case 2 + // .short _02030744 - _02030730 - 2; case 3 +_02030738: + mov r4, #0x20 + b _02030746 +_0203073C: + mov r4, #0x10 + b _02030746 +_02030740: + mov r4, #0x40 + b _02030746 +_02030744: + mov r4, #0x80 +_02030746: + ldr r0, =UNK_021C59F4 + ldr r5, [r0, #0x4] + ldr r0, =0x000005F8 + add r6, r5, r0 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r6, #0x0] + ldr r3, [r6, #0x4] + bl _ll_mul + ldr r3, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r3, r0 + adc r2, r1 + ldr r1, =0x000005F8 + mov r3, #0x0 + str r0, [r5, r1] + str r2, [r6, #0x4] + lsr r0, r2, #0x1c + lsl r2, r3, #0x4 + orr r2, r0 + add r0, r1, #0x0 + add r0, #0x35 + strb r2, [r5, r0] + ldr r0, =UNK_021C59F4 + add r1, #0x36 + ldr r0, [r0, #0x4] + strh r4, [r0, r1] +_0203077E: + ldr r2, =UNK_021C59F4 + ldr r1, =0x00000628 + ldr r5, [r2, #0x4] + mov r0, #0xf0 + ldrh r3, [r5, r1] + bic r3, r0 + strh r3, [r5, r1] + ldr r2, [r2, #0x4] + ldrh r0, [r2, r1] + add r0, r0, r4 + strh r0, [r2, r1] +_02030794: + pop {r3-r7, pc} + // clang-format on } #endif @@ -1569,7 +1580,6 @@ THUMB_FUNC void FUN_0203086C() { } - THUMB_FUNC u32 FUN_02030870(u8 *param0) { if (UNK_021C59F4.unk04->unk62A != 0) @@ -1830,8 +1840,6 @@ extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); - - THUMB_FUNC void FUN_02030C8C( s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) { @@ -2113,7 +2121,6 @@ THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } - THUMB_FUNC void FUN_02031088() { if (UNK_021C59F4.unk04 != NULL) @@ -2324,25 +2331,73 @@ THUMB_FUNC void FUN_020312BC(u32 param0) #else THUMB_FUNC asm void FUN_020312BC(u32 param0) { - push{ r3 - r7, lr } sub sp, #0x20 add r4, r0, #0x0 add r0, sp, #0x10 add r1, sp, - #0x4 bl GF_RTC_CopyDateTime ldr r0, - = gMain ldr r6, [ sp, #0x10 ] mov r5, #0x0 lsr r7, r6, #0x1c lsl r5, r5, #0x4 ldr r1, - [ sp, #0xc ] ldr r0, [ r0, #0x2c ] lsl r6, r6, #0x4 add r3, r1, r0 ldr r0, - [ sp, #0x18 ] orr r5, r7 str r0, [ sp, #0x0 ] ldr r0, [ sp, #0x14 ] ldr r1, - [ sp, #0x4 ] add r6, r0, - r6 ldr r0, = 0x00000000 ldr r2, [ sp, #0x8 ] adc r0, r5 lsr r5, r6, #0x1b lsl r0, r0, - #0x5 orr r0, r5 ldr r5, [ sp, #0x0 ] lsl r6, r6, #0x5 add r6, r5, r6 ldr r5, - = 0x00000000 adc r5, r0 lsr r0, r6, #0x1b lsl r5, r5, #0x5 orr r5, r0 lsl r0, r6, - #0x5 add r6, r1, r0 ldr r1, = 0x00000000 adc r1, r5 lsr r0, r6, #0x1a lsl r1, r1, - #0x6 orr r1, r0 lsl r0, r6, #0x6 add r5, r2, r0 ldr r2, = 0x00000000 adc r2, - r1 lsr r0, r5, #0x1a lsl r1, r2, #0x6 orr r1, r0 lsl r0, r5, #0x6 add r2, r3, - r0 ldr r0, = 0x00000000 str r2, [ r4, #0x0 ] adc r0, r1 str r0, [ r4, #0x4 ] ldr r1, - = 0x6C078965 ldr r0, = 0x5D588B65 str r1, [ r4, #0x8 ] str r0, [ r4, #0xc ] ldr r0, - = 0x00269EC3 str r0, [ r4, #0x10 ] mov r0, #0x0 str r0, [ r4, #0x14 ] add sp, - #0x20 pop - { - r3 - r7, pc - } + // clang-format off + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x10 + add r1, sp, #0x4 + bl GF_RTC_CopyDateTime + ldr r0, =gMain + ldr r6, [sp, #0x10] + mov r5, #0x0 + lsr r7, r6, #0x1c + lsl r5, r5, #0x4 + ldr r1, [sp, #0xc] + ldr r0, [r0, #0x2c] + lsl r6, r6, #0x4 + add r3, r1, r0 + ldr r0, [sp, #0x18] + orr r5, r7 + str r0, [sp, #0x0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r6, r0, r6 + ldr r0, =0x00000000 + ldr r2, [sp, #0x8] + adc r0, r5 + lsr r5, r6, #0x1b + lsl r0, r0, #0x5 + orr r0, r5 + ldr r5, [sp, #0x0] + lsl r6, r6, #0x5 + add r6, r5, r6 + ldr r5, =0x00000000 + adc r5, r0 + lsr r0, r6, #0x1b + lsl r5, r5, #0x5 + orr r5, r0 + lsl r0, r6, #0x5 + add r6, r1, r0 + ldr r1, =0x00000000 + adc r1, r5 + lsr r0, r6, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + lsl r0, r6, #0x6 + add r5, r2, r0 + ldr r2, =0x00000000 + adc r2, r1 + lsr r0, r5, #0x1a + lsl r1, r2, #0x6 + orr r1, r0 + lsl r0, r5, #0x6 + add r2, r3, r0 + ldr r0, =0x00000000 + str r2, [r4, #0x0] + adc r0, r1 + str r0, [r4, #0x4] + ldr r1, =0x6C078965 + ldr r0, =0x5D588B65 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, =0x00269EC3 + str r0, [r4, #0x10] + mov r0, #0x0 + str r0, [r4, #0x14] + add sp, #0x20 + pop {r3-r7, pc} + // clang-format on } #endif -- cgit v1.2.3 From f85c9d736760dace9ce94560747c9985a3e93ca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 19:21:51 +0200 Subject: fix warnings --- arm9/src/unk_0202F150.c | 307 ++++++++++++++++++++++-------------------------- 1 file changed, 142 insertions(+), 165 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 7973702c..62ae9437 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -11,10 +11,57 @@ vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); -extern void FUN_0202D7D8(u32 *param0, u32 param1, u32 param2); +extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct3 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D804(u32 *param0); +extern void FUN_0202D394(struct UnkStruct3 *param0, u8 *param1, u32 param2); +extern void FUN_0202D804(u8 *param0); +extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); +extern void FUN_0202D330(void (*param0)(int)); +extern u32 FUN_0202E66C(u32 param0, u32 param1); +extern void MOD04_021D83C0(); +extern u32 FUN_0202E784(); +extern void FUN_020314D0(); +extern void FUN_0202DBA4(); +extern void FUN_0200CAB4(u32 param0); +extern void FUN_0202D824(u8 *param0); +extern u32 FUN_0202E9E8(u32 param0); +extern u32 FUN_0202F03C(); +extern u32 FUN_0202EE24(); +extern void FUN_02031CDC(); +extern void FUN_0202EBD0(u16 param0); +extern void FUN_0202ED70(u32 param0); +extern void FUN_020335F4(u32 param0); +extern void FUN_020315A4(); +extern void FUN_0202E538(); +extern u32 MOD04_021D78FC(void *param0, u32 param1); +extern u32 FUN_0202CBD4(); +extern void FUN_0202D4BC(void *param0); +extern int FUN_0202D400(s16 *param0, void *param1, u32 param2); +extern u32 FUN_0202D0D0(u8 *param0, u16 param1, u32 param2, void (*param3)(u32)); +extern u32 MOD04_021D79B4(void *param0, u32 param1); +extern void FUN_0202D3A4(struct UnkStruct3 *param0, u8 *param1, u32 param2, u32 param3); +extern int FUN_0202D498(void *param0); +extern u16 FUN_0202CB8C(); +extern s64 _ll_mul(s64, s64); +extern u32 FUN_0202D4E4(u8 *param0); +extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); +extern u32 FUN_0202D684(u8 *param0, u32 param1, u8 *param2, u32 param3, u32 param4, u32 param5); +extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, void *param3); +extern int FUN_0202D478(s16 *param0); +extern u32 FUN_0202D41C(s16 *param0); +extern s16 FUN_0202D9A0(u32 param0); +extern u32 FUN_0202DA04(u32 param0); +extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); +extern u32 MOD04_021D8018(); +extern u32 FUN_0202EDF8(); +extern u16 FUN_0202D19C(); +extern void FUN_020334E8(u32 param0, u32 param1); +extern u32 FUN_0202EE60(); +extern u32 FUN_0202D884(u16 param0); +extern void FUN_0202F05C(); +extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); +extern void FUN_0202D830(u8 *param0, u32 param1); +extern u32 MOD04_021D8624(); THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) { @@ -22,7 +69,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) UNK_021C59F4.unk00 = 0; if (param0 != 0) { - u32 res = FUN_0202D858(FUN_02033534()) + 1; + u32 res = FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_021C59F4.unk04 != 0) { @@ -79,7 +126,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) FUN_0202F2F0(); } - FUN_020312BC(&UNK_021C59F4.unk04->unk5F8); + FUN_020312BC(UNK_021C59F4.unk04->unk5F8); if (r4 == 0) { @@ -100,7 +147,7 @@ THUMB_FUNC void FUN_0202F2F0() UNK_021C59F4.unk04->unk67F = 0; UNK_021C59F4.unk04->unk680 = 0; - s32 res = FUN_0202D858(FUN_02033534()) + 1; + int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -122,7 +169,7 @@ THUMB_FUNC void FUN_0202F2F0() } MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, UNK_021C59F4.unk04->unk2D4, 6 << 6); for (i = 0; i < 0xc0; i++) { @@ -131,7 +178,7 @@ THUMB_FUNC void FUN_0202F2F0() } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, UNK_021C59F4.unk04->unk04c, 0x42 << 2); UNK_021C59F4.unk04->unk000[0][0] = 0xff; UNK_021C59F4.unk04->unk000[1][0] = 0xff; @@ -188,7 +235,7 @@ THUMB_FUNC void FUN_0202F5A4() UNK_021C59F4.unk04->unk62C = 0; UNK_021C59F4.unk04->unk62D = 0; - s32 res = FUN_0202D858(FUN_02033534()) + 1; + int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -210,7 +257,7 @@ THUMB_FUNC void FUN_0202F5A4() } MI_CpuFill8(&UNK_021C59F4.unk04->unk2D4, 0, 6 << 6); - FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, &UNK_021C59F4.unk04->unk2D4, 6 << 6); + FUN_0202D394(&UNK_021C59F4.unk04->unk4DC, UNK_021C59F4.unk04->unk2D4, 6 << 6); for (i = 0; i < 0xc0; i++) { @@ -219,7 +266,7 @@ THUMB_FUNC void FUN_0202F5A4() } MI_CpuFill8(&UNK_021C59F4.unk04->unk04c, 0, 0x42 << 2); - FUN_0202D394(&UNK_021C59F4.unk04->unk464, &UNK_021C59F4.unk04->unk04c, 0x42 << 2); + FUN_0202D394(&UNK_021C59F4.unk04->unk464, UNK_021C59F4.unk04->unk04c, 0x42 << 2); UNK_021C59F4.unk04->unk000[0][0] = 0xff; UNK_021C59F4.unk04->unk000[1][0] = 0xff; @@ -264,7 +311,7 @@ THUMB_FUNC void FUN_0202F5A4() UNK_021C59F4.unk04->unk688 = 0; } -THUMB_FUNC void FUN_0202F820(u32 param0) +THUMB_FUNC void FUN_0202F820(int param0) { UNK_021C59F4.unk04->unk65F[param0] = 0; @@ -292,21 +339,18 @@ THUMB_FUNC void FUN_0202F8D4() { for (int i = 1; i < 8; i++) { - if (FUN_02030E7C(i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) + if (FUN_02030E7C((u16)i) == 0 && UNK_021C59F4.unk04->unk667[i] == 0 && FUN_02031280() == 0) { FUN_0202F820(i); } } } -THUMB_FUNC void FUN_0202F910(u32 param0) +THUMB_FUNC void FUN_0202F910(int param0) { FUN_0202F820(param0); } -extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); -extern void FUN_0202D330(void (*param0)(u32)); - THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) { u32 ret = 1; @@ -321,8 +365,6 @@ THUMB_FUNC u32 FUN_0202F918(u32 param0, u32 param1, u32 param2, u32 param3) return ret; } -extern u32 FUN_0202E66C(u32 param0, u32 param1); - THUMB_FUNC u32 FUN_0202F950(u32 param0, u32 param1, u32 param2) { u32 ret = 1; @@ -423,13 +465,6 @@ THUMB_FUNC u32 FUN_0202FA48() return 0; } -extern void MOD04_021D83C0(); -extern u32 FUN_0202E784(); -extern void FUN_020314D0(); -extern void FUN_0202DBA4(); -extern void FUN_0200CAB4(u32 param0); -extern void FUN_0202D824(u32 *param0); - THUMB_FUNC void FUN_0202FA5C() { u32 r4 = 0; @@ -468,16 +503,11 @@ THUMB_FUNC void FUN_0202FA5C() } } -extern u32 FUN_0202E9E8(u32 param0); - THUMB_FUNC u32 FUN_0202FB18(u32 param0) { return FUN_0202E9E8(param0); } -extern u32 FUN_0202F03C(); -extern u32 FUN_0202EE24(); - THUMB_FUNC void FUN_0202FB20() { if (UNK_021C59F4.unk00 != 0) @@ -510,12 +540,6 @@ THUMB_FUNC void FUN_0202FB58() } } -extern void FUN_02031CDC(); -extern void FUN_0202EBD0(u16 param0); -extern void FUN_0202ED70(u32 param0); -extern void FUN_020335F4(u32 param0); -extern void FUN_020315A4(); - THUMB_FUNC u32 FUN_0202FB80() { FUN_02031CDC(); @@ -598,8 +622,6 @@ THUMB_FUNC void FUN_0202FC80() UNK_021C59F4.unk00 = r4; } -extern void FUN_0202E538(); - THUMB_FUNC void FUN_0202FCA8() { u8 r4 = UNK_021C59F4.unk00; @@ -615,9 +637,6 @@ THUMB_FUNC void FUN_0202FCA8() UNK_021C59F4.unk00 = r4; } -extern u32 MOD04_021D78FC(void *param0, u32 param1); -extern u32 FUN_0202CBD4(); - THUMB_FUNC void FUN_0202FCCC() { if (UNK_021C59F4.unk04->unk683 != 0) @@ -722,9 +741,6 @@ THUMB_FUNC void FUN_0202FCCC() FUN_0203050C(); } -extern void FUN_0202D4BC(void *param0); -extern int FUN_0202D400(u32 param0, u32 param1, u32 param2); - #ifdef NONMATCHING THUMB_FUNC u32 FUN_0202FE2C(int param0) { @@ -858,8 +874,6 @@ _0202FEDE: } #endif -extern u32 FUN_0202D0D0(void *, u16 param1, u32 param2, void (*param3)(u32)); - THUMB_FUNC void FUN_0202FEEC() { if (UNK_021C59F4.unk04 == NULL || FUN_02033534() >= 0x13) @@ -867,8 +881,8 @@ THUMB_FUNC void FUN_0202FEEC() return; } - int st0 = FUN_02031228(FUN_02033534()); - int r6 = FUN_0202D858(FUN_02033534()) + 1; + int st0 = FUN_02031228((u16)FUN_02033534()); + int r6 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_02105D59 == 2 || UNK_02105D59 == 0) { @@ -897,7 +911,7 @@ THUMB_FUNC void FUN_0202FEEC() { for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) != 0) + if (FUN_02030E7C((u16)i) != 0) { UNK_021C59F4.unk04->unk638[i]++; } @@ -909,12 +923,12 @@ THUMB_FUNC void FUN_0202FEEC() FUN_0203026C(0, UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680], 0xc0); - UNK_021C59F4.unk04->unk680 = 1 - UNK_021C59F4.unk04->unk680; + UNK_021C59F4.unk04->unk680 = (u8)(1 - UNK_021C59F4.unk04->unk680); } for (i = 0; i < r6; i++) { - if (FUN_02030E7C(i) == 0 && FUN_0202FA28() == 1) + if (FUN_02030E7C((u16)i) == 0 && FUN_0202FA28() == 1) { UNK_021C59F4.unk04->unk154[UNK_021C59F4.unk04->unk680][i * st0] = 0xff; } @@ -927,8 +941,6 @@ THUMB_FUNC void FUN_0202FEEC() } } -extern u32 MOD04_021D79B4(void *param0, u32 param1); - THUMB_FUNC void FUN_02030074() { if (UNK_021C59F4.unk04->unk683 != 0) @@ -1006,7 +1018,7 @@ THUMB_FUNC void FUN_02030074() { for (int r4 = 1; r4 < 8; r4++) { - if (FUN_02030E7C(r4) != 0) + if (FUN_02030E7C((u16)r4) != 0) { if ((int)UNK_021C59F4.unk04->unk638[r4] > 3) { @@ -1049,10 +1061,10 @@ THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) FUN_0203026C(param0, param1, param2); } -extern void FUN_0202D3A4(void *param0, u8 *param1, u32 param2, u32 param3); - THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) { +#pragma unused(param0) +#pragma unused(param2) UNK_021C59F4.unk04->unk634--; if (param1 == 0) { @@ -1086,22 +1098,21 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) UNK_021C59F4.unk04->unk682 = 0; if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - int st4 = FUN_0202D858(FUN_02033534()) + 1; + int r6 = FUN_02031228((u16)FUN_02033534()); + int st4 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; int r4 = 0; while (r4 < st4) { - u32 new; + if (param1[0] == 0xff) { - new = UNK_021C59F4.unk04->unk65C & ~(1 << r4); + UNK_021C59F4.unk04->unk65C &= ~(1 << r4); } else { - new = UNK_021C59F4.unk04->unk65C | (1 << r4); + UNK_021C59F4.unk04->unk65C |= (1 << r4); } - UNK_021C59F4.unk04->unk65C = new; if (param1[0] == 0xff) { @@ -1118,7 +1129,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) else { param1++; - FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, r6 - 1, 0x5E6); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk4E8[r4], param1, (u32)(r6 - 1), 0x5E6); param1 += r6 - 1; UNK_021C59F4.unk04->unk667[r4] = 0; @@ -1131,13 +1142,13 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) } UNK_021C59F4.unk04->unk65C = param1[1]; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C << 8; + UNK_021C59F4.unk04->unk65C <<= 8; - UNK_021C59F4.unk04->unk65C = UNK_021C59F4.unk04->unk65C + param1[2]; + UNK_021C59F4.unk04->unk65C += param1[2]; FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } -THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) +THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2) { if (UNK_021C59F4.unk04->unk66F[param0] != 0) { @@ -1150,10 +1161,9 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u32 param1, u16 param2) FUN_020303F4(param0, param1, param2); } -extern int FUN_0202D498(void *param0); - THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) { +#pragma unused(param2) UNK_021C59F4.unk04->unk638[param0]--; if (param1 == 0) { @@ -1168,12 +1178,12 @@ THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) UNK_021C59F4.unk04->unk667[param0] = 0; if (FUN_0202FA28() == 1) { - int r6 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r6 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); if ((param1[0] & 2) == 0) { - FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, r6, 0x65E); + FUN_0202D3A4(&UNK_021C59F4.unk04->unk47C[param0], param1, (u32)r6, 0x65E); } UNK_021C59F4.unk04->unk65F[param0]++; @@ -1210,8 +1220,6 @@ THUMB_FUNC void FUN_020304F0(u32 param0) ErrorHandling(); } -extern u16 FUN_0202CB8C(); - THUMB_FUNC void FUN_0203050C() { if (UNK_021C59F4.unk04 == 0 || FUN_02033534() >= 0x13) @@ -1219,17 +1227,17 @@ THUMB_FUNC void FUN_0203050C() return; } - int r4 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r4 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); if (FUN_02031280() != 0 && (UNK_02105D58 == 2 || UNK_02105D58 == 0)) { UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4); - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; return; } @@ -1255,13 +1263,13 @@ THUMB_FUNC void FUN_0203050C() UNK_02105D58++; if (FUN_0202D0D0( - UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4, 0xe, FUN_020304D4) == 0) + UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4, 0xe, FUN_020304D4) == 0) { UNK_02105D58--; return; } - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; return; } @@ -1271,15 +1279,13 @@ THUMB_FUNC void FUN_0203050C() UNK_02105D58++; FUN_020304D4(1); - FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], r4); + FUN_020303F4(0, UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4); - UNK_021C59F4.unk04->unk67F = 1 - UNK_021C59F4.unk04->unk67F; + UNK_021C59F4.unk04->unk67F = (u8)(1 - UNK_021C59F4.unk04->unk67F); UNK_021C59F4.unk04->unk634++; } } -extern s64 _ll_mul(s64, s64); - #ifdef NONMATCHING THUMB_FUNC void FUN_02030674() { @@ -1548,11 +1554,11 @@ THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) { UNK_021C59F4.unk04->unk610[param1] = 0; - u32 r7 = param0[0] & 0x10; + int r7 = param0[0] & 0x10; if (r7 == 0x10) { - u8 r5 = param0[0] & 0xc; + u8 r5 = (u8)(param0[0] & 0xc); if (r5 == 0) { UNK_021C59F4.unk04->unk610[param1] |= 0x40; @@ -1570,7 +1576,7 @@ THUMB_FUNC u32 FUN_020307E4(u8 *param0, u32 param1) UNK_021C59F4.unk04->unk610[param1] |= 0x10; } - UNK_021C59F4.unk04->unk620[param1] = (param0[0] >> 5) & 0x7; + UNK_021C59F4.unk04->unk620[param1] = (u8)((param0[0] >> 5) & 0x7); } return 1; @@ -1623,15 +1629,11 @@ THUMB_FUNC u32 FUN_02030870(u8 *param0) return 0; } -extern u32 FUN_0202D4E4(u8 *param0); -extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); - THUMB_FUNC u32 FUN_02030930(u8 *param0) { - int r5 = FUN_02031228(FUN_02033534()); - FUN_0202D858(FUN_02033534()); + int r5 = FUN_02031228((u16)FUN_02033534()); + FUN_0202D858((u16)FUN_02033534()); - u8 r0; if (UNK_021C59F4.unk04->unk684 == 0) { param0[0] = 0; @@ -1660,7 +1662,7 @@ THUMB_FUNC u32 FUN_02030930(u8 *param0) { int st0[2]; st0[1] = r5 - 1; - st0[0] = param0 + 1; + st0[0] = (int)param0 + 1; if (FUN_0202D760(UNK_021C59F4.unk04->unk54C, st0, 1) == 0) { UNK_021C59F4.unk04->unk684 = 1; @@ -1690,16 +1692,16 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) } u16 res = FUN_0202CB8C(); - param0[2] = res >> 8; - param0[3] = res; + param0[2] = (u8)(res >> 8); + param0[3] = (u8)res; int st0[2]; st0[1] = 0xbb; - st0[0] = param0 + 5; + st0[0] = (int)param0 + 5; if (FUN_0202D760(UNK_021C59F4.unk04->unk56C, st0, 0) != 0) { UNK_021C59F4.unk04->unk685 = 0; - param0[4] = 0xbb - st0[1]; + param0[4] = (u8)(0xbb - st0[1]); return; } @@ -1708,9 +1710,7 @@ THUMB_FUNC void FUN_02030A00(u8 *param0) param0[4] = 0xbb; } -extern u32 FUN_0202D684(u8 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5); - -THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030A78(u32 param0, u8 *param1, u32 param2) { if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { @@ -1730,7 +1730,7 @@ THUMB_FUNC u32 FUN_02030A78(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030ADC(u32 param0, u8 *param1, u32 param2) { if (FUN_02030E7C(FUN_02031190()) == 0 && FUN_02031280() == 0) { @@ -1750,7 +1750,7 @@ THUMB_FUNC u32 FUN_02030ADC(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030B3C(u32 param0, u8 *param1, u32 param2) { if (FUN_02031190() != 0) { @@ -1781,7 +1781,7 @@ THUMB_FUNC u32 FUN_02030B3C(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) +THUMB_FUNC u32 FUN_02030BC4(u32 param0, u8 *param1, u32 param2) { if (FUN_02031190() != 0) { @@ -1812,7 +1812,7 @@ THUMB_FUNC u32 FUN_02030BC4(u32 param0, u32 param1, u32 param2) return 0; } -THUMB_FUNC u32 FUN_02030C4C(u32 param0, u32 param1) +THUMB_FUNC u32 FUN_02030C4C(u32 param0, u8 *param1) { return FUN_02030BC4(param0, param1, 0); } @@ -1822,27 +1822,19 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, u32 param3); - -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, u32 param3, void *param4) +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct2 *param4) { FUN_0202D934(param0, param1, param2, param3); - - *(u8 *)(param4 + 0xa) = 0xee; - *(u16 *)(param4 + 0x8) = 0xffff; - *(u32 *)(param4 + 0x4) = 0; - *(u32 *)(param4) = 0; + param4->unk0a = 0xee; + param4->unk08 = 0xffff; + param4->unk04 = 0; + param4->unk00 = 0; } -extern int FUN_0202D478(s16 *param0); -extern u32 FUN_0202D41C(s16 *param0); -extern s16 FUN_0202D9A0(u32 param0); -extern u32 FUN_0202DA04(u32 param0); -extern u32 FUN_0202DA40(u32 param0, u32 param1, u16 param2); - THUMB_FUNC void FUN_02030C8C( - s16 *param0, u32 param1, u32 param2, u32 param3, struct UnkStruct2 *param4) + s16 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct2 *param4) { +#pragma unused(param3) while (FUN_0202D478(param0) != 0) { @@ -1857,7 +1849,7 @@ THUMB_FUNC void FUN_02030C8C( } int st10 = param0[2]; - param4->unk0a = r7; + param4->unk0a = (u8)r7; int r4 = param4->unk08; if (r4 == 0xffff) { @@ -1872,17 +1864,17 @@ THUMB_FUNC void FUN_02030C8C( { if (FUN_0202D478(param0) < 1) { - param0[2] = st10; + param0[2] = (s16)st10; return; } - r4 = FUN_0202D41C(param0) << 8; + r4 = (int)FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); st10 = param0[2]; } - param4->unk08 = r4; + param4->unk08 = (u16)r4; } if (FUN_0202DA04(r7) != 0) @@ -1896,7 +1888,7 @@ THUMB_FUNC void FUN_02030C8C( if (param4->unk04 != 0) { - MI_CpuCopy8(param2, param4->unk04 + param4->unk00, stc); + MI_CpuCopy8(param2, param4->unk04 + param4->unk00, (u32)stc); } if ((int)(param4->unk00 += stc) < (int)r4) @@ -1904,18 +1896,18 @@ THUMB_FUNC void FUN_02030C8C( continue; } - FUN_02030C70(param1, r7, r4, param4->unk04, param4); + FUN_02030C70(param1, r7, (u32)r4, param4->unk04, param4); } else { if (FUN_0202D478(param0) >= r4) { - FUN_0202D400(param0, param2, r4); - FUN_02030C70(param1, r7, r4, param2, param4); + FUN_0202D400(param0, param2, (u32)r4); + FUN_02030C70(param1, r7, (u32)r4, param2, param4); } else { - param0[2] = st10; + param0[2] = (s16)st10; return; } } @@ -1929,11 +1921,9 @@ THUMB_FUNC void FUN_02030DA4() if (UNK_021C59F4.unk04->unk68B == 0) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) + if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk470) > 0) { - UNK_021C59F4.unk04->unk470; - - FUN_02030C8C(&UNK_021C59F4.unk04->unk470, + FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, @@ -1949,7 +1939,7 @@ THUMB_FUNC void FUN_02030DFC() { if (UNK_021C59F4.unk04->unk68B == 0) { - int r7 = FUN_0202D858(FUN_02033534()) + 1; + int r7 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; int r4; for (r4 = 0; r4 < r7; r4++) { @@ -1958,18 +1948,16 @@ THUMB_FUNC void FUN_02030DFC() { FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], - r4, + (u32)r4, UNK_021C59F4.unk04->unk460, 0, - (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk58C[r4]); + &UNK_021C59F4.unk04->unk58C[r4]); } } } } } -extern u32 MOD04_021D8018(); - THUMB_FUNC u32 FUN_02030E7C(u16 param0) { if (UNK_021C59F4.unk04 == NULL) @@ -2035,7 +2023,7 @@ THUMB_FUNC u32 FUN_02030F20() u32 r4 = 0; for (int i = 0; i < 8; i++) { - if (FUN_02030E7C(i) != 0) + if (FUN_02030E7C((u16)i) != 0) { r4++; } @@ -2044,8 +2032,6 @@ THUMB_FUNC u32 FUN_02030F20() return r4; } -extern u32 FUN_0202EDF8(); - THUMB_FUNC u32 FUN_02030F40() { if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) @@ -2099,13 +2085,13 @@ THUMB_FUNC u32 FUN_02030FE0() { if (UNK_021C59F4.unk04 != NULL) { - return UNK_021C59F4.unk04->unk628 & 0x8000; + return (u32)(UNK_021C59F4.unk04->unk628 & 0x8000); } return 1; } -THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_02031000(u32 param0, u8 *param1, u32 param2) { if (FUN_0202FA28() == 1) { @@ -2116,7 +2102,7 @@ THUMB_FUNC void FUN_02031000(u32 param0, u32 param1, u32 param2) FUN_0202D684(UNK_021C59F4.unk04->unk56C, param0, param1, param2, 1, 0); } -THUMB_FUNC void FUN_0203105C(u32 param0, u32 param1, u32 param2) +THUMB_FUNC void FUN_0203105C(u32 param0, u8 *param1, u32 param2) { FUN_0202D684(UNK_021C59F4.unk04->unk54C, param0, param1, param2, 0, 0); } @@ -2162,6 +2148,8 @@ THUMB_FUNC void FUN_02031088() THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() == 0) { UNK_021C59F4.unk04->unk67B = 1; @@ -2171,6 +2159,8 @@ THUMB_FUNC void FUN_0203110C(u32 param0, u32 param1, u8 *param2) THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() != 0) { UNK_021C59F4.unk04->unk67C = param2[0]; @@ -2180,6 +2170,8 @@ THUMB_FUNC void FUN_02031134(u32 param0, u32 param1, u8 *param2) THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) { +#pragma unused(param0) +#pragma unused(param1) if (FUN_02031190() == 0 && UNK_021C59F4.unk04->unk67B == 2) { FUN_0202F9E0(*param2); @@ -2187,8 +2179,6 @@ THUMB_FUNC void FUN_0203115C(u32 param0, u32 param1, u8 *param2) } } -extern u16 FUN_0202D19C(); - THUMB_FUNC u16 FUN_02031190() { if (UNK_021C59F4.unk04 != NULL) @@ -2198,7 +2188,7 @@ THUMB_FUNC u16 FUN_02031190() u32 res = MOD04_021D8018(); if (res != 0xffffffff) { - return res; + return (u16)res; } } else @@ -2230,9 +2220,6 @@ THUMB_FUNC u32 FUN_020311E8() return FUN_0202EE24(); } -extern void FUN_020334E8(u32 param0, u32 param1); -extern u32 FUN_0202EE60(); - THUMB_FUNC u32 FUN_020311F0() { if (FUN_02031280() != 0) @@ -2266,14 +2253,12 @@ THUMB_FUNC int FUN_02031228(u16 param0) THUMB_FUNC u32 FUN_02031248(u32 param0) { - return FUN_0202D858(param0) + 1; + return FUN_0202D858((u16)param0) + 1; } -extern u32 FUN_0202D884(u16 param0); - THUMB_FUNC u32 FUN_02031258(u32 param0) { - return FUN_0202D884(param0) + 1; + return FUN_0202D884((u16)param0) + 1; } THUMB_FUNC void FUN_02031268(u8 param0) @@ -2294,23 +2279,19 @@ THUMB_FUNC u8 FUN_02031280() return 0; } -extern void FUN_0202F05C(); - THUMB_FUNC void FUN_0203129C() { if (FUN_0202F03C() == 0 && FUN_02031190() == 0) { - u32 st0; + u8 st0; FUN_02030C4C(2, &st0); } FUN_0202F05C(); } -extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); - #ifdef NONMATCHING -THUMB_FUNC void FUN_020312BC(u32 param0) +THUMB_FUNC void FUN_020312BC(s64 *param0) { RTCDate st10; RTCTime st4; @@ -2329,7 +2310,7 @@ THUMB_FUNC void FUN_020312BC(u32 param0) (0x00000000 + r5) << 5; } #else -THUMB_FUNC asm void FUN_020312BC(u32 param0) +THUMB_FUNC asm void FUN_020312BC(s64 *param0) { // clang-format off push {r3-r7, lr} @@ -2401,8 +2382,6 @@ THUMB_FUNC asm void FUN_020312BC(u32 param0) } #endif -extern void FUN_0202D830(u8 *param0, u32 param1); - THUMB_FUNC void FUN_02031354(u32 param0) { FUN_0202D830(UNK_021C59F4.unk04->unk56C, param0); @@ -2444,8 +2423,6 @@ THUMB_FUNC u32 FUN_020313CC(u32 param0) return param0; } -extern u32 MOD04_021D8624(); - THUMB_FUNC u32 FUN_020313EC() { if (FUN_02033534() < 0x13) -- cgit v1.2.3 From f5eabfb0d118057d2533d3bd2558a560bd15a5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 19:38:22 +0200 Subject: polish struct usage --- arm9/src/unk_0202F150.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 62ae9437..df7b3d37 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -2,7 +2,7 @@ struct { u8 unk00; - struct UnkStruct1 *unk04; + struct UnkStruct0202F150 *unk04; } UNK_021C59F4; vu8 UNK_02105D58 = 4; @@ -11,9 +11,9 @@ vu8 UNK_02105D59 = 4; extern int FUN_02033534(); extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); -extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct3 *param2); +extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); -extern void FUN_0202D394(struct UnkStruct3 *param0, u8 *param1, u32 param2); +extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2); extern void FUN_0202D804(u8 *param0); extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); extern void FUN_0202D330(void (*param0)(int)); @@ -36,10 +36,10 @@ extern void FUN_0202E538(); extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); extern void FUN_0202D4BC(void *param0); -extern int FUN_0202D400(s16 *param0, void *param1, u32 param2); +extern int FUN_0202D400(struct UnkStruct0202F150_sub1 *param0, void *param1, u32 param2); extern u32 FUN_0202D0D0(u8 *param0, u16 param1, u32 param2, void (*param3)(u32)); extern u32 MOD04_021D79B4(void *param0, u32 param1); -extern void FUN_0202D3A4(struct UnkStruct3 *param0, u8 *param1, u32 param2, u32 param3); +extern void FUN_0202D3A4(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2, u32 param3); extern int FUN_0202D498(void *param0); extern u16 FUN_0202CB8C(); extern s64 _ll_mul(s64, s64); @@ -47,8 +47,8 @@ extern u32 FUN_0202D4E4(u8 *param0); extern u32 FUN_0202D760(u8 *param0, int *param1, u32 param2); extern u32 FUN_0202D684(u8 *param0, u32 param1, u8 *param2, u32 param3, u32 param4, u32 param5); extern void FUN_0202D934(u32 param0, u32 param1, u32 param2, void *param3); -extern int FUN_0202D478(s16 *param0); -extern u32 FUN_0202D41C(s16 *param0); +extern int FUN_0202D478(struct UnkStruct0202F150_sub1 *param0); +extern u32 FUN_0202D41C(struct UnkStruct0202F150_sub1 *param0); extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); @@ -77,7 +77,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) } FUN_02031480(0xf); - struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xf, sizeof(struct UnkStruct1)); + struct UnkStruct0202F150 *ptr = (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); UNK_021C59F4.unk04 = ptr; MI_CpuFill8(ptr, 0, 0x68C); @@ -1822,7 +1822,7 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct2 *param4) +THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) { FUN_0202D934(param0, param1, param2, param3); param4->unk0a = 0xee; @@ -1832,7 +1832,7 @@ THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, s } THUMB_FUNC void FUN_02030C8C( - s16 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct2 *param4) + struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4) { #pragma unused(param3) while (FUN_0202D478(param0) != 0) @@ -1848,7 +1848,7 @@ THUMB_FUNC void FUN_02030C8C( } } - int st10 = param0[2]; + int st10 = param0->unk04; param4->unk0a = (u8)r7; int r4 = param4->unk08; if (r4 == 0xffff) @@ -1864,14 +1864,14 @@ THUMB_FUNC void FUN_02030C8C( { if (FUN_0202D478(param0) < 1) { - param0[2] = (s16)st10; + param0->unk04 = (s16)st10; return; } r4 = (int)FUN_0202D41C(param0) << 8; r4 += FUN_0202D41C(param0); - st10 = param0[2]; + st10 = param0->unk04; } param4->unk08 = (u16)r4; @@ -1907,7 +1907,7 @@ THUMB_FUNC void FUN_02030C8C( } else { - param0[2] = (s16)st10; + param0->unk04 = (s16)st10; return; } } @@ -1921,13 +1921,13 @@ THUMB_FUNC void FUN_02030DA4() if (UNK_021C59F4.unk04->unk68B == 0) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk470); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk470) > 0) + if (FUN_0202D478(&UNK_021C59F4.unk04->unk470) > 0) { - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk470, + FUN_02030C8C(&UNK_021C59F4.unk04->unk470, 0, UNK_021C59F4.unk04->unk460, 1, - (struct UnkStruct2 *)&UNK_021C59F4.unk04->unk5EC); + (struct UnkStruct0202F150_sub2 *)&UNK_021C59F4.unk04->unk5EC); } } } @@ -1944,10 +1944,10 @@ THUMB_FUNC void FUN_02030DFC() for (r4 = 0; r4 < r7; r4++) { FUN_0202D4BC(&UNK_021C59F4.unk04->unk4E8[r4]); - if (FUN_0202D478((s16 *)&UNK_021C59F4.unk04->unk4E8[r4]) > 0) + if (FUN_0202D478(&UNK_021C59F4.unk04->unk4E8[r4]) > 0) { - FUN_02030C8C((s16 *)&UNK_021C59F4.unk04->unk4E8[r4], + FUN_02030C8C(&UNK_021C59F4.unk04->unk4E8[r4], (u32)r4, UNK_021C59F4.unk04->unk460, 0, -- cgit v1.2.3 From c34e74ae7cdd91bef14cf5f160329b5cbf3c9504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 10 Apr 2021 23:24:10 +0200 Subject: formatting --- arm9/src/unk_0202F150.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index df7b3d37..23a7de85 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -77,7 +77,8 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) } FUN_02031480(0xf); - struct UnkStruct0202F150 *ptr = (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); + struct UnkStruct0202F150 *ptr = + (struct UnkStruct0202F150 *)AllocFromHeap(0xf, sizeof(struct UnkStruct0202F150)); UNK_021C59F4.unk04 = ptr; MI_CpuFill8(ptr, 0, 0x68C); @@ -1262,8 +1263,10 @@ THUMB_FUNC void FUN_0203050C() { UNK_02105D58++; - if (FUN_0202D0D0( - UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], (u16)r4, 0xe, FUN_020304D4) == 0) + if (FUN_0202D0D0(UNK_021C59F4.unk04->unk000[UNK_021C59F4.unk04->unk67F], + (u16)r4, + 0xe, + FUN_020304D4) == 0) { UNK_02105D58--; return; @@ -1822,7 +1825,8 @@ THUMB_FUNC int FUN_02030C58() return FUN_0202D498(&UNK_021C59F4.unk04->unk464); } -THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) +THUMB_FUNC void FUN_02030C70( + u32 param0, u32 param1, u32 param2, void *param3, struct UnkStruct0202F150_sub2 *param4) { FUN_0202D934(param0, param1, param2, param3); param4->unk0a = 0xee; @@ -1831,8 +1835,11 @@ THUMB_FUNC void FUN_02030C70(u32 param0, u32 param1, u32 param2, void *param3, s param4->unk00 = 0; } -THUMB_FUNC void FUN_02030C8C( - struct UnkStruct0202F150_sub1 *param0, u32 param1, void *param2, u32 param3, struct UnkStruct0202F150_sub2 *param4) +THUMB_FUNC void FUN_02030C8C(struct UnkStruct0202F150_sub1 *param0, + u32 param1, + void *param2, + u32 param3, + struct UnkStruct0202F150_sub2 *param4) { #pragma unused(param3) while (FUN_0202D478(param0) != 0) -- cgit v1.2.3 From 2023f223aa3cfce3d8e17cddf3833dc8510c443e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 16 Apr 2021 11:57:16 +0200 Subject: decomp unk_0202D858.s --- arm9/src/unk_0202D858.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_0202F150.c | 18 +++++----- 2 files changed, 104 insertions(+), 10 deletions(-) create mode 100644 arm9/src/unk_0202D858.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0202D858.c b/arm9/src/unk_0202D858.c new file mode 100644 index 00000000..45c7c776 --- /dev/null +++ b/arm9/src/unk_0202D858.c @@ -0,0 +1,96 @@ +#include "unk_0202D858.h" + +struct UnkStruct_0202D858 +{ + u8 unk00[0x1a]; +}; + +static const struct UnkStruct_0202D858 UNK_020EEB04 = { { + 0x01, + 0x01, + 0x01, + 0x01, + 0x03, + 0x03, + 0x03, + 0x04, + 0x03, + 0x04, + 0x07, + 0x03, + 0x07, + 0x04, + 0x01, + 0x04, + 0x01, + 0x01, + 0x04, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x00, + 0x00, +} }; + +static const struct UnkStruct_0202D858 UNK_020EEB1E = { { + 0x01, + 0x01, + 0x01, + 0x01, + 0x03, + 0x03, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x00, + 0x00, +} }; + +THUMB_FUNC u8 FUN_0202D858(u16 param0) +{ + struct UnkStruct_0202D858 st0 = UNK_020EEB04; + + GF_ASSERT(param0 < 0x1a); + + return st0.unk00[param0]; +} + +THUMB_FUNC u8 FUN_0202D884(u16 param0) +{ + struct UnkStruct_0202D858 st0 = UNK_020EEB1E; + + GF_ASSERT(param0 < 0x1a); + + return st0.unk00[param0]; +} + +THUMB_FUNC u32 FUN_0202D8B0(int param0) +{ + switch (param0) + { + case 0x7: + case 0x9: + case 0xd: + case 0x12: + return 1; + } + + return 0; +} diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 23a7de85..d36c5794 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -9,7 +9,6 @@ vu8 UNK_02105D58 = 4; vu8 UNK_02105D59 = 4; extern int FUN_02033534(); -extern u32 FUN_0202D858(u16 param0); extern void FUN_02031480(u32 param0); extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); @@ -57,7 +56,6 @@ extern u32 FUN_0202EDF8(); extern u16 FUN_0202D19C(); extern void FUN_020334E8(u32 param0, u32 param1); extern u32 FUN_0202EE60(); -extern u32 FUN_0202D884(u16 param0); extern void FUN_0202F05C(); extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); extern void FUN_0202D830(u8 *param0, u32 param1); @@ -69,7 +67,7 @@ THUMB_FUNC u32 FUN_0202F150(u32 param0, u32 param1) UNK_021C59F4.unk00 = 0; if (param0 != 0) { - u32 res = FUN_0202D858((u16)FUN_02033534()) + 1; + int res = FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_021C59F4.unk04 != 0) { @@ -148,7 +146,7 @@ THUMB_FUNC void FUN_0202F2F0() UNK_021C59F4.unk04->unk67F = 0; UNK_021C59F4.unk04->unk680 = 0; - int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int res = FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -236,7 +234,7 @@ THUMB_FUNC void FUN_0202F5A4() UNK_021C59F4.unk04->unk62C = 0; UNK_021C59F4.unk04->unk62D = 0; - int res = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int res = FUN_0202D858((u16)FUN_02033534()) + 1; MI_CpuFill8(UNK_021C59F4.unk04->unk458, 0, UNK_021C59F4.unk04->unk658 * res); @@ -883,7 +881,7 @@ THUMB_FUNC void FUN_0202FEEC() } int st0 = FUN_02031228((u16)FUN_02033534()); - int r6 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int r6 = FUN_0202D858((u16)FUN_02033534()) + 1; if (UNK_02105D59 == 2 || UNK_02105D59 == 0) { @@ -1100,7 +1098,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) if (FUN_0202FA28() == 1) { int r6 = FUN_02031228((u16)FUN_02033534()); - int st4 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int st4 = FUN_0202D858((u16)FUN_02033534()) + 1; int r4 = 0; while (r4 < st4) @@ -1946,7 +1944,7 @@ THUMB_FUNC void FUN_02030DFC() { if (UNK_021C59F4.unk04->unk68B == 0) { - int r7 = (int)FUN_0202D858((u16)FUN_02033534()) + 1; + int r7 = FUN_0202D858((u16)FUN_02033534()) + 1; int r4; for (r4 = 0; r4 < r7; r4++) { @@ -2258,12 +2256,12 @@ THUMB_FUNC int FUN_02031228(u16 param0) return 0x26; } -THUMB_FUNC u32 FUN_02031248(u32 param0) +THUMB_FUNC int FUN_02031248(u32 param0) { return FUN_0202D858((u16)param0) + 1; } -THUMB_FUNC u32 FUN_02031258(u32 param0) +THUMB_FUNC int FUN_02031258(u32 param0) { return FUN_0202D884((u16)param0) + 1; } -- cgit v1.2.3 From dcb4eea28034cb3be345736dbc9bb223f3ace92a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Fri, 16 Apr 2021 15:19:40 +0200 Subject: decompile unk_02031480.s --- arm9/src/unk_02031480.c | 213 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 arm9/src/unk_02031480.c (limited to 'arm9/src') diff --git a/arm9/src/unk_02031480.c b/arm9/src/unk_02031480.c new file mode 100644 index 00000000..a8ce6474 --- /dev/null +++ b/arm9/src/unk_02031480.c @@ -0,0 +1,213 @@ +#include "unk_02031480.h" + +struct UnkStruct_02031480 +{ + u8 unk000[8][2]; + u8 unk010[8]; + u8 unk018[8][70]; + u8 unk248[8]; + u8 unk250; + u8 unk251; + u8 unk252; +}; + +static struct UnkStruct_02031480 *UNK_021C59FC; + +THUMB_FUNC void FUN_02031480(u32 heap_id) +{ + if (UNK_021C59FC == NULL) + { + UNK_021C59FC = AllocFromHeap(heap_id, sizeof(struct UnkStruct_02031480)); + MI_CpuFill8(UNK_021C59FC, 0, sizeof(struct UnkStruct_02031480)); + } + + for (int i = 0; i < 8; i++) + { + UNK_021C59FC->unk010[i] = 0xff; + } + UNK_021C59FC->unk250 = 0xff; + UNK_021C59FC->unk251 = 0xff; + UNK_021C59FC->unk252 = 0x00; +} + +THUMB_FUNC void FUN_020314D0() +{ + FreeToHeap(UNK_021C59FC); + UNK_021C59FC = NULL; +} + +THUMB_FUNC BOOL FUN_020314E8() +{ + if (UNK_021C59FC != NULL) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_020314FC(u8 param0, u32 unused, u8 *param2) +{ +#pragma unused(unused) + u8 st0[3]; + + st0[0] = param2[0]; + + if (FUN_02031190() == 0) + { + + st0[1] = param0; + st0[2] = st0[0]; + + FUN_02030C4C(0x12, &st0[1]); + + UNK_021C59FC->unk010[param0] = st0[0]; + + for (int i = 0; i < 8; i++) + { + if (FUN_02030E7C((u16)i) != 0) + { + if (st0[0] != UNK_021C59FC->unk010[i]) + { + return; + } + } + } + + FUN_02030C4C(0x11, &st0[0]); + } +} + +THUMB_FUNC void FUN_02031560(u32 unused1, u32 unused2, u8 *param2) +{ +#pragma unused(unused1) +#pragma unused(unused2) + UNK_021C59FC->unk010[param2[0]] = param2[1]; +} + +THUMB_FUNC void FUN_02031574(u32 unused1, u32 unused2, u8 *param2) +{ +#pragma unused(unused1) +#pragma unused(unused2) + UNK_021C59FC->unk250 = *param2; +} + +THUMB_FUNC void FUN_02031588(u8 param0) +{ + UNK_021C59FC->unk251 = param0; + UNK_021C59FC->unk252 = 1; +} + +THUMB_FUNC void FUN_020315A4() +{ + if (UNK_021C59FC != NULL && UNK_021C59FC->unk252 != 0 && + FUN_020311D0(0x10, &UNK_021C59FC->unk251)) + { + UNK_021C59FC->unk252 = 0; + } +} + +THUMB_FUNC BOOL FUN_020315D8(u8 param0) +{ + if (UNK_021C59FC == NULL) + { + return TRUE; + } + + if (UNK_021C59FC->unk250 == param0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u8 FUN_020315FC(u8 index) +{ + return UNK_021C59FC->unk010[index]; +} + +THUMB_FUNC void FUN_0203160C(u32 param0, u32 unused, u8 *param2) +{ +#pragma unused(unused) + UNK_021C59FC->unk000[param0][0] = param2[0]; + UNK_021C59FC->unk000[param0][1] = param2[1]; +} + +THUMB_FUNC u32 FUN_02031628() +{ + return 2; +} + +THUMB_FUNC void FUN_0203162C(u8 param0, u8 param1) +{ + u8 st0[2] = { param0, param1 }; + + FUN_020311D0(0x13, st0); +} + +THUMB_FUNC int FUN_02031640(u32 param0, u8 param1) +{ + if (UNK_021C59FC == NULL) + { + return -1; + } + + if (UNK_021C59FC->unk000[param0][0] == param1) + { + return UNK_021C59FC->unk000[param0][1]; + } + + return -1; +} + +THUMB_FUNC void FUN_02031668() +{ + for (int i = 0; i < 8; i++) + { + MI_CpuFill8(UNK_021C59FC->unk000[i], 0, 2); + } +} + +THUMB_FUNC void FUN_0203168C() +{ + for (int i = 0; i < 8; i++) + { + UNK_021C59FC->unk248[i] = 0; + } +} + +THUMB_FUNC BOOL FUN_020316AC(u32 param0, void *param1) +{ + if (UNK_021C59FC != NULL) + { + MI_CpuCopy8(param1, UNK_021C59FC->unk018[param0], 0x46); + FUN_020311D0(0x14, UNK_021C59FC->unk018[param0]); + + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u8 *FUN_020316E0(u32 param0) +{ + if (UNK_021C59FC->unk248[param0] != 0) + { + return UNK_021C59FC->unk018[param0]; + } + + return NULL; +} + +THUMB_FUNC void FUN_02031704(u32 param0, u32 unused, void *param2) +{ +#pragma unused(unused) + UNK_021C59FC->unk248[param0] = 1; + MI_CpuCopy8(param2, UNK_021C59FC->unk018[param0], 0x46); +} + +THUMB_FUNC u32 FUN_02031730() +{ + return 0x46; +} -- cgit v1.2.3 From 61b2d69a68e03e39aaa97ae39969987b52c08c28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Mon, 19 Apr 2021 19:10:37 +0200 Subject: update externs --- arm9/src/unk_0202F150.c | 4 +--- arm9/src/unk_02031480.c | 2 +- arm9/src/unk_0205FA2C.c | 12 +++++------- 3 files changed, 7 insertions(+), 11 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index d36c5794..c728ddf1 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -1,4 +1,5 @@ #include "unk_0202F150.h" +#include "unk_02031480.h" struct { u8 unk00; @@ -9,7 +10,6 @@ vu8 UNK_02105D58 = 4; vu8 UNK_02105D59 = 4; extern int FUN_02033534(); -extern void FUN_02031480(u32 param0); extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2); @@ -19,7 +19,6 @@ extern void FUN_0202D330(void (*param0)(int)); extern u32 FUN_0202E66C(u32 param0, u32 param1); extern void MOD04_021D83C0(); extern u32 FUN_0202E784(); -extern void FUN_020314D0(); extern void FUN_0202DBA4(); extern void FUN_0200CAB4(u32 param0); extern void FUN_0202D824(u8 *param0); @@ -30,7 +29,6 @@ extern void FUN_02031CDC(); extern void FUN_0202EBD0(u16 param0); extern void FUN_0202ED70(u32 param0); extern void FUN_020335F4(u32 param0); -extern void FUN_020315A4(); extern void FUN_0202E538(); extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); diff --git a/arm9/src/unk_02031480.c b/arm9/src/unk_02031480.c index a8ce6474..9639cd74 100644 --- a/arm9/src/unk_02031480.c +++ b/arm9/src/unk_02031480.c @@ -190,7 +190,7 @@ THUMB_FUNC BOOL FUN_020316AC(u32 param0, void *param1) return FALSE; } -THUMB_FUNC u8 *FUN_020316E0(u32 param0) +THUMB_FUNC u8 *FUN_020316E0(int param0) { if (UNK_021C59FC->unk248[param0] != 0) { diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 7bcdf950..9c4d7c8f 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -8,11 +8,9 @@ extern void FUN_0207C2A4(struct UnkPlayerStruct2_0205FA2C *ptr, struct PlayerDat extern u32 FUN_0203384C(u32 *param0); extern u32 *FUN_02038790(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16); -extern u32 FUN_02031190(); -extern u32 FUN_020316E0(u32 param0); -extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1); -extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u32 param1); -extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u32 param1); +extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u8 *param1); +extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u8 *param1); +extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u8 *param1); extern void FUN_0202A5CC(u32 param0, u32 param1); extern u32 FUN_0202A5D0(u32 param0); extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1); @@ -282,8 +280,8 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) { struct UnkStruct_0204639C *res = FUN_02046528(param0); u16 *res2 = (u16 *)FUN_0204652C(param0); - u32 res3 = FUN_020316E0(1 - FUN_02031190()); - if (res3 == 0) + u8 *res3 = FUN_020316E0(1 - FUN_02031190()); + if (res3 == NULL) { return 0; } -- cgit v1.2.3 From 88aa75fe3e94f1aac0368b6dbcfaf75614066a8a Mon Sep 17 00:00:00 2001 From: tgsm Date: Thu, 29 Apr 2021 07:31:45 -0400 Subject: Decompile unk_0204B0A0 --- arm9/src/unk_0204B0A0.c | 198 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 arm9/src/unk_0204B0A0.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0204B0A0.c b/arm9/src/unk_0204B0A0.c new file mode 100644 index 00000000..15a9111d --- /dev/null +++ b/arm9/src/unk_0204B0A0.c @@ -0,0 +1,198 @@ +#include "global.h" +#include "event_data.h" +#include "unk_0204B0A0.h" +#include "unk_0205FA2C.h" + +extern void GF_RTC_CopyDateTime(struct RTCDate* date, struct RTCTime* time); +extern void FUN_02029C08(void*); +extern void FUN_0202B3C4(void*, s32, u32); +extern u8 GF_RTC_GetTimeOfDayByHour(u32 hour); +extern s64 GF_RTC_DateTimeToSec(void); +extern void* FUN_02029AFC(struct SaveBlock2* sav2); +extern void* FUN_02022504(struct SaveBlock2* sav2); +extern void FUN_02025B60(struct SaveBlock2* sav2, s32, BOOL); +extern BOOL FUN_0205F668(struct SaveBlock2* sav2); +extern void FUN_0202A9D0(struct SaveBlock2* sav2, s32); +extern BOOL FUN_0205F618(struct SaveBlock2* sav2, u16); +extern void FUN_0204B3D0(struct UnkSavStruct80*, s32); +extern void FUN_0205F5A4(struct ScriptState* state, u16); +extern s32 FUN_0205F594(struct ScriptState* state); +extern void FUN_0202A988(void*, u32); +extern void* FUN_0202A9B0(struct SaveBlock2* sav2); +extern void FUN_02060344(struct SaveBlock2* sav2, s32); +extern void FUN_0203959C(struct UnkSavStruct80*); +extern void FUN_02025A60(struct SaveBlock2* sav2, s32); +extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80*); + +THUMB_FUNC void FUN_0204B0F8(struct UnkSavStruct80* unk) +{ + RTCDate date; + RTCTime time; + + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + if (rtc_info->field_00 != 0) + { + GF_RTC_CopyDateTime(&date, &time); + FUN_0204B130(unk, rtc_info, &date); + FUN_0204B158(unk, rtc_info, &date, &time); + } +} + +THUMB_FUNC void FUN_0204B130(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date) +{ + u32 days = (u32)RTC_ConvertDateToDay(date); + u32 days_since_nitro_epoch = (u32)rtc_info->daysSinceNitroEpoch; + + if (days < days_since_nitro_epoch) + { + rtc_info->daysSinceNitroEpoch = (s32)days; + } + else if (days > days_since_nitro_epoch) + { + FUN_0204B1DC(unk, (s32)(days - days_since_nitro_epoch)); + rtc_info->daysSinceNitroEpoch = (s32)days; + } +} + +THUMB_FUNC void FUN_0204B158(struct UnkSavStruct80* unk, struct UnkSaveStruct_0202376C_sub* rtc_info, struct RTCDate* date, struct RTCTime* time) +{ + s64 unk1 = RTC_ConvertDateTimeToSecond(date, time); + s64 unk2 = RTC_ConvertDateTimeToSecond(&rtc_info->date, &rtc_info->time); + + if (unk2 > unk1) + { + rtc_info->date = *date; + rtc_info->time = *time; + return; + } + + s32 minutes = (s32)((unk1 - unk2) / 60); + if (minutes > 0) + { + FUN_02023884(rtc_info, (u32)minutes); + FUN_0204B270(unk, minutes, time); + + rtc_info->date = *date; + rtc_info->time = *time; + } +} + +THUMB_FUNC void FUN_0204B1DC(struct UnkSavStruct80* unk, s32 a1) +{ + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(unk); + FUN_02025A60(sav2, a1); + FUN_0203959C(unk); + FUN_02060344(unk->saveBlock2, a1); + + void* unk_sav_ptr1 = FUN_0202881C(unk->saveBlock2); + FUN_02028754(unk_sav_ptr1, (u32)a1); + + void* unk_sav_ptr2 = FUN_0202A9B0(unk->saveBlock2); + unk_sav_ptr1 = FUN_0202881C(unk->saveBlock2); + u32 unk1 = FUN_020287A4(unk_sav_ptr1); + FUN_0202A988(unk_sav_ptr2, unk1); + + struct PlayerParty* party = SavArray_PlayerParty_get(unk->saveBlock2); + Party_UpdatePokerus(party, a1); + + struct ScriptState* state = SavArray_Flags_get(unk->saveBlock2); + s32 unk2 = FUN_0205F594(state); + + u16 unk3; + if (unk2 > a1) + { + unk3 = (u16)(unk2 - a1); + } + else + { + unk3 = 0; + } + + FUN_0205F5A4(state, unk3); + FUN_0205F618(unk->saveBlock2, (u16)a1); + FUN_0205F668(unk->saveBlock2); + FUN_0206007C(unk->saveBlock2); + + void* unk_sav_ptr3 = FUN_02029AFC(unk->saveBlock2); + FUN_02029C08(unk_sav_ptr3); +} + +THUMB_FUNC void FUN_0204B270(struct UnkSavStruct80* unk, s32 a1, struct RTCTime* time) +{ + FUN_0204B3D0(unk, a1); + FUN_0202A9D0(unk->saveBlock2, a1); + BOOL unk_bool = FUN_0204B33C(unk); + FUN_02025B60(unk->saveBlock2, a1, unk_bool); + void* unk_sav_ptr = FUN_02022504(unk->saveBlock2); + FUN_0202B3C4(unk_sav_ptr, a1, time->minute); +} + +THUMB_FUNC u32 Script_GetTimeOfDay(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return GF_RTC_GetTimeOfDayByHour(rtc_info->time.hour); +} + +THUMB_FUNC u32 Script_GetMonth(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->date.month; +} + +THUMB_FUNC u32 Script_GetDay(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->date.day; +} + +THUMB_FUNC RTCWeek Script_GetWeekday(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->date.week; +} + +THUMB_FUNC u32 Script_GetHour(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->time.hour; +} + +THUMB_FUNC u32 Script_GetMinute(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return rtc_info->time.minute; +} + +THUMB_FUNC void Script_SavRTC_x24toDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + RTC_ConvertSecondToDateTime(date, time, rtc_info->secondsSinceNitroEpoch); +} + +THUMB_FUNC void Script_SavRTC_x2CtoDateTime(struct UnkSavStruct80* unk, struct RTCDate* date, struct RTCTime* time) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + RTC_ConvertSecondToDateTime(date, time, rtc_info->field_2C); +} + +THUMB_FUNC void Script_SavRTC_DateTimeTox2C(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + rtc_info->field_2C = GF_RTC_DateTimeToSec(); +} + +THUMB_FUNC BOOL FUN_0204B33C(struct UnkSavStruct80* unk) +{ + struct UnkSaveStruct_0202376C_sub* rtc_info = Sav2_SysInfo_RTC_get(unk->saveBlock2); + + return FUN_02023874(rtc_info); +} -- cgit v1.2.3 From cf188406f006750ec7206e3dd2a6818c767729eb Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 30 Apr 2021 04:30:27 -0400 Subject: Fix a bunch of function signatures A bunch of functions were thought to be returning/taking in an unk_204639c but they actually return/take an unksavstruct80. This fixes that, and also changes a couple of struct members, so this might be useful for scrcmd. --- arm9/src/unk_0204639C.c | 11 +++++------ arm9/src/unk_0204AEA8.c | 4 ++-- arm9/src/unk_0205FA2C.c | 46 ++++++++++++++++++++++------------------------ 3 files changed, 29 insertions(+), 32 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0204639C.c b/arm9/src/unk_0204639C.c index 50aae8fa..c8291f5a 100644 --- a/arm9/src/unk_0204639C.c +++ b/arm9/src/unk_0204639C.c @@ -4,7 +4,7 @@ #pragma thumb on -struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r6, u32 * r7) +struct UnkStruct_0204639C * FUN_0204639C(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r6, u32 * r7) { struct UnkStruct_0204639C * ret = AllocFromHeapAtEnd(32, sizeof(struct UnkStruct_0204639C)); ret->unk0 = 0; @@ -18,10 +18,9 @@ struct UnkStruct_0204639C * FUN_0204639C(struct UnkStruct_0204639C * r5, UnkStru return ret; } -void FUN_020463CC(struct UnkStruct_0204639C * r5, UnkStruct_0204639C_cb r4, u32 * r6) +void FUN_020463CC(struct UnkSavStruct80 * r5, UnkStruct_0204639C_cb r4, u32 * r6) { - if (r5->unk10 != NULL) - ErrorHandling(); + GF_ASSERT(r5->unk10 == NULL); r5->unk10 = FUN_0204639C(r5, r4, r6); } @@ -85,7 +84,7 @@ BOOL FUN_020464A4(void * r0) BOOL FUN_020464B8(struct UnkStruct_0204639C * r4) { - struct UnkStruct_0204639C * r5 = FUN_02046528(r4); + struct UnkSavStruct80 * r5 = FUN_02046528(r4); u32 * r4_2 = FUN_0204652C(r4); switch (r4_2[0]) { @@ -113,7 +112,7 @@ void FUN_02046500(struct UnkStruct_0204639C * r6, u32 r5, u32 r4) FUN_0204640C(r6, FUN_020464B8, r2); } -struct UnkStruct_0204639C * FUN_02046528(struct UnkStruct_0204639C * r0) +struct UnkSavStruct80 * FUN_02046528(struct UnkStruct_0204639C * r0) { return r0->unk18; } diff --git a/arm9/src/unk_0204AEA8.c b/arm9/src/unk_0204AEA8.c index 9c572a8e..a2b2dd71 100644 --- a/arm9/src/unk_0204AEA8.c +++ b/arm9/src/unk_0204AEA8.c @@ -3,12 +3,12 @@ #include "unk_0204639C.h" #include "unk_0204AEA8.h" -extern void MOD05_021E3444(u32, struct UnkStruct_0204639C *, u32); +extern void MOD05_021E3444(u32, struct UnkSavStruct80 *, u32); extern void FUN_0200433C(u32, u16, u32); THUMB_FUNC BOOL FUN_0204AEA8(struct UnkStruct_0204639C *a0) { - struct UnkStruct_0204639C *v0 = FUN_02046528(a0); + struct UnkSavStruct80 *v0 = FUN_02046528(a0); u32 *v1 = FUN_0204652C(a0); switch (v1[0]) diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index 9c4d7c8f..9aa4460f 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -5,12 +5,12 @@ extern void *UNK_020FA6E8; extern u32 FUN_02079C70(struct SaveBlock2 *sav2); extern void FUN_0207B000(struct UnkPlayerStruct2_0205FA2C *ptr, const u8 param1[12]); extern void FUN_0207C2A4(struct UnkPlayerStruct2_0205FA2C *ptr, struct PlayerData *player_data); -extern u32 FUN_0203384C(u32 *param0); -extern u32 *FUN_02038790(struct UnkStruct_0204639C *param0, u16 param1, u16 param2); +extern u32 FUN_0203384C(struct SaveBlock2 *sav2); +extern u32 *FUN_02038790(struct UnkSavStruct80 *param0, u16 param1, u16 param2); extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16); -extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u8 *param1); -extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u8 *param1); -extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u8 *param1); +extern u16 MOD06_02244660(struct UnkSavStruct80 *param0, u8 *param1); +extern u16 MOD06_022446BC(struct UnkSavStruct80 *param0, u8 *param1); +extern u16 MOD06_022446E0(struct UnkSavStruct80 *param0, u8 *param1); extern void FUN_0202A5CC(u32 param0, u32 param1); extern u32 FUN_0202A5D0(u32 param0); extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1); @@ -36,12 +36,12 @@ const u8 UNK_020F7454[] = { }; THUMB_FUNC u32 FUN_0205FA2C( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id) { struct UnkPlayerStruct1_0205FA2C *ptr = (struct UnkPlayerStruct1_0205FA2C *)AllocFromHeapAtEnd( heap_id, sizeof(struct UnkPlayerStruct1_0205FA2C)); - struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); + struct SaveBlock2 *sav2 = param1->saveBlock2; MI_CpuFill8(ptr, 0, sizeof(struct UnkPlayerStruct1_0205FA2C)); ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2); @@ -70,7 +70,7 @@ THUMB_FUNC u32 FUN_0205FA2C( } THUMB_FUNC u32 FUN_0205FAD8( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1) { if (FUN_0204647C(param1)) { @@ -105,9 +105,9 @@ THUMB_FUNC u32 FUN_0205FAD8( } THUMB_FUNC u32 FUN_0205FB34( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1, u32 heap_id) + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1, u32 heap_id) { - struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC); + struct SaveBlock2 *sav2 = param1->saveBlock2; struct UnkPlayerStruct2_0205FA2C *ptr = (struct UnkPlayerStruct2_0205FA2C *)AllocFromHeapAtEnd( heap_id, sizeof(struct UnkPlayerStruct2_0205FA2C)); @@ -140,7 +140,7 @@ THUMB_FUNC u32 FUN_0205FB34( } THUMB_FUNC u32 FUN_0205FBC0( - struct UnkCallbackStruct1_0205FA2C *param0, struct UnkStruct_0204639C *param1) + struct UnkCallbackStruct1_0205FA2C *param0, struct UnkSavStruct80 *param1) { if (FUN_0204647C(param1)) { @@ -158,7 +158,7 @@ THUMB_FUNC u32 FUN_0205FBC0( THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); struct UnkCallbackStruct1_0205FA2C *res2 = (struct UnkCallbackStruct1_0205FA2C *)FUN_0204652C(param0); switch (res2->unk04) @@ -192,7 +192,7 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, u8 param6, u8 param7) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); struct UnkCallbackStruct1_0205FA2C *ptr = (struct UnkCallbackStruct1_0205FA2C *)AllocFromHeap( 0xb, sizeof(struct UnkCallbackStruct1_0205FA2C)); @@ -210,9 +210,9 @@ THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0, } THUMB_FUNC u32 FUN_0205FC9C( - struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1) { - if (FUN_0203384C(param1->unkC)) + if (FUN_0203384C(param1->saveBlock2)) { param0->unk08 = FUN_02038790(param1, param0->unk12, param0->unk14); @@ -224,7 +224,7 @@ THUMB_FUNC u32 FUN_0205FC9C( } THUMB_FUNC u32 FUN_0205FCC4( - struct UnkCallbackStruct2_0205FA2C *param0, struct UnkStruct_0204639C *param1) + struct UnkCallbackStruct2_0205FA2C *param0, struct UnkSavStruct80 *param1) { if (FUN_0204647C(param1)) { @@ -239,7 +239,7 @@ THUMB_FUNC u32 FUN_0205FCC4( THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); struct UnkCallbackStruct2_0205FA2C *res2 = (struct UnkCallbackStruct2_0205FA2C *)FUN_0204652C(param0); @@ -252,7 +252,7 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) res2->unk04 = FUN_0205FCC4(res2, res); break; case 2: - u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2->unk10); + u16 *var = GetVarPointer(res, res2->unk10); *var = (u16)res2->unk00; FreeToHeap(res2); @@ -264,7 +264,7 @@ THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0) THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); struct UnkCallbackStruct2_0205FA2C *ptr = (struct UnkCallbackStruct2_0205FA2C *)AllocFromHeap( 0xb, sizeof(struct UnkCallbackStruct2_0205FA2C)); MI_CpuFill8(ptr, 0, sizeof(struct UnkCallbackStruct2_0205FA2C)); @@ -278,7 +278,7 @@ THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); u16 *res2 = (u16 *)FUN_0204652C(param0); u8 *res3 = FUN_020316E0(1 - FUN_02031190()); if (res3 == NULL) @@ -286,7 +286,7 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) return 0; } - u16 *var = GetVarPointer((struct UnkSavStruct80 *)res, res2[1]); + u16 *var = GetVarPointer(res, res2[1]); switch (res2[0]) { case 0: @@ -294,11 +294,9 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) break; case 1: *var = MOD06_022446BC(res, res3); - break; case 2: *var = MOD06_022446E0(res, res3); - break; } @@ -309,7 +307,7 @@ THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0) THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2) { - struct UnkStruct_0204639C *res = FUN_02046528(param0); + struct UnkSavStruct80 *res = FUN_02046528(param0); u16 *ptr = AllocFromHeap(0xb, 2 * sizeof(u16)); MI_CpuFill8(ptr, 0, 2 * sizeof(u16)); -- cgit v1.2.3 From 6b6c7eab5f18fb21b6ca40795b1042d3bcf85ff3 Mon Sep 17 00:00:00 2001 From: fyren Date: Sat, 1 May 2021 12:09:14 +0200 Subject: decompile unk_0206015C --- arm9/src/unk_0206015C.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 arm9/src/unk_0206015C.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c new file mode 100644 index 00000000..07076506 --- /dev/null +++ b/arm9/src/unk_0206015C.c @@ -0,0 +1,113 @@ +#include "unk_0206015C.h" + +THUMB_FUNC void FUN_0206015C(struct UnkSavStruct80 *savStruct) +{ + struct UnkStruct_0206015C *unkStruct = AllocFromHeapAtEnd(0xb, 0x10); + unkStruct->unk0 = MOD06_02244DB0(0xb); + unkStruct->unk4 = MOD06_02245114(0xb, savStruct); + unkStruct->unkC = 0; + unkStruct->unkD = 0; + + FUN_0204640C(savStruct->unk10, FUN_02060194, (u32 *)unkStruct); +} + +THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C *unkStruct0) +{ + struct UnkSavStruct80 *savStruct = FUN_02046528(unkStruct0); + struct UnkStruct_0204652C *unkStruct1 = (struct UnkStruct_0204652C *)FUN_0204652C(unkStruct0); + + switch (unkStruct1->action) + { + case 0: + FUN_0206367C(savStruct, 1); + MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4); + unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4); + FUN_0204AFC8(unkStruct0); + unkStruct1->action = 1; + break; + + case 1: + FUN_0204AF3C(unkStruct0); + unkStruct1->action = 2; + break; + + case 2: + struct ScriptState *scrState = SavArray_Flags_get(savStruct->saveBlock2); + u8 unkD = unkStruct1->unkD; + if (unkD == 0) + { + FUN_0205F1C4(scrState); + } + else if (unkD == 5) + { + FUN_0205F1D4(scrState); + } + FUN_02049160(unkStruct0, unkStruct1->unk8); + unkStruct1->action = 3; + break; + + case 3: + FUN_0204AF84(unkStruct0); + unkStruct1->action = 4; + break; + + case 4: + u32 unk0 = FUN_020553A0(savStruct->unk38); + unkStruct1->unkD += 1; + if (unkStruct1->unkD <= 5) + { + void *unkAddr = MOD06_02245088(savStruct); + FUN_0205889C(unk0, 1); + MOD06_02244DC4(unkStruct1->unk0, unkAddr); + MOD06_02244EF8(unkStruct1->unk0); + unkStruct1->unkE = 0; + FUN_020054C8(1657); + FUN_0204C1B4(unkStruct0, 0x3, 0x11, 0x0000FFFF, 0, 6, 1, 0xb); + unkStruct1->action = 5; + } + else + { + FUN_0205889C(unk0, 0); + FUN_0204B00C(unkStruct0); + unkStruct1->action = 8; + } + break; + + case 5: + unkStruct1->unkE += 1; + if (unkStruct1->unkE < 0x3c && !(gMain.unk48 & 1)) + break; + + MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4); + unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4); + + FUN_020054C8(1657); + FUN_0204C1B4(unkStruct0, 0x3, 0x10, 0x0000FFFF, 0, 6, 1, 0xb); + unkStruct1->action = 6; + break; + + case 6: + MOD06_02244F18(unkStruct1->unk0); + unkStruct1->action = 7; + break; + + case 7: + if (MOD06_02244F24(unkStruct1->unk0)) + { + MOD06_02244F2C(unkStruct1->unk0); + unkStruct1->action = 1; + } + break; + + case 8: + FUN_0206367C(savStruct, 0); + MOD06_02245190(unkStruct1->unk4); + MOD06_02244DBC(unkStruct1->unk0); + FreeToHeap(unkStruct1); + return 1; + + default: + break; + } + return 0; +} \ No newline at end of file -- cgit v1.2.3 From ce5a50546d48ebe03adee670db617ec0deb30060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 1 May 2021 12:59:57 +0200 Subject: decompile unk_02031734.s --- arm9/src/unk_02031734.c | 2365 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2365 insertions(+) create mode 100644 arm9/src/unk_02031734.c (limited to 'arm9/src') diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c new file mode 100644 index 00000000..21dfad41 --- /dev/null +++ b/arm9/src/unk_02031734.c @@ -0,0 +1,2365 @@ +#include "unk_02031734.h" + +const struct UnkStruct_02031734_const2 UNK_020EEC48 = { { (u32)FUN_02032B84, 0 } }; + +const struct UnkStruct_02031734_const1 UNK_020EEC50 = { { (u32)FUN_0203213C, (u32)FUN_02032138, 0 } }; + +const struct UnkStruct_02031734_const1 UNK_020EEC5C = { { (u32)FUN_02032234, (u32)FUN_0203234C, 0 } }; + +char UNK_02105D5C[] = "FREAK"; + +char UNK_02105D6C[] = " GAME"; + +char UNK_02105D64[] = " FULL"; + +struct UnkStruct_02031734 *UNK_021C5A00; + +extern void FUN_0202E49C(); +extern void FUN_0202D8D0(u32 param0, u32 param1, u32 param2); +extern void FUN_02033E74(); +extern void FUN_0202D918(); +extern void FUN_02033ED0(); +extern void FUN_0202E4F0(); +extern void FUN_0202D298(); +extern void FUN_0202D344(u32 param0); +extern void FUN_0202D1B0(u8 param0); +extern void FUN_0202D36C(u32 param0); +extern u32 MOD04_021DDB08(); +extern void FUN_02033EEC(u32 param0); +extern u32 FUN_0202EDF8(); +extern u32 WM_GetLinkLevel(); +extern u32 FUN_0202E4C8(); +extern void FUN_0202E29C(struct PlayerData *player_data); +extern void FUN_0202DB14(struct SaveBlock2 *sav2, u32 param1); +extern s64 _ll_mul(s64, s64); +extern u32 FUN_0202EE0C(); +extern void FUN_0202EA54(); +extern s32 FUN_0202E8F4(); +extern s32 FUN_0202E950(); +extern u32 FUN_0202E8A0(u8 param0); +extern u32 FUN_0202E6F0(); +extern void FUN_0202EE84(u8 param0); +extern void FUN_0202E7B0(u32 param0); +extern u32 FUN_0202F104(); +extern void FUN_0202DBE0(); +extern void FUN_0202DDE8(); +extern void FUN_0202D308(void (*param0)(u32, u32)); +extern void MOD04_021D83C0(); +extern s32 MOD04_021D7F8C(); +extern s32 MOD04_021D7800(u32 param0); +extern u32 MOD04_021D8494(s32 param0); +extern void MOD04_021D77C4(void (*param0)(u32, u8 *, u16), void (*param1)(u32, void *, u32)); +extern u32 MOD04_021D82BC(u8 param0); +extern void MOD04_021D836C(); +extern u32 MOD04_021DD718(u32 *param0, u32 *param1); +extern void MOD04_021DD6F0(); +extern s32 MOD04_021D76AC(); +extern MOD05_021D74E0(struct SaveBlock2 *sav2, u32 param1); +extern void MOD04_021D83A8(void (*param0)(s32)); +extern void FUN_0202EEB0(u8 param0); +extern void FUN_02033F70(int, int, int); +extern void FUN_0200541C(); +extern u32 FUN_0202EDD8(); +extern u32 FUN_0202E344(); + +THUMB_FUNC void FUN_02031734(struct SaveBlock2 *sav2, u8 param1) +{ + if (UNK_021C5A00 == NULL) + { + FUN_0202E49C(); + struct UnkStruct_02031734 *ptr = AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); + UNK_021C5A00 = ptr; + MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct_02031734)); + + UNK_021C5A00->unk3A = 0x32; + UNK_021C5A00->unk43 = 1; + UNK_021C5A00->unk28 = sav2; + + UNK_021C5A00->unk2C = Sav2_PlayerData_GetProfileAddr(sav2); + + UNK_021C5A00->unk3C = 2; + UNK_021C5A00->unk3D = 0; + UNK_021C5A00->unk48 = 0; + UNK_021C5A00->unk3F = param1; + + FUN_020312BC(&UNK_021C5A00->unk0C); + FUN_0202D8D0(0, 0, 0); + + if (param1 != 9 && param1 != 0x11 && param1 != 0xf) + { + FUN_02033E74(); + } + } +} + +THUMB_FUNC void FUN_020317C0() +{ + if (UNK_021C5A00 != NULL) + { + FUN_0202D918(); + if (UNK_021C5A00->unk00 != NULL) + { + FreeToHeap(UNK_021C5A00->unk00); + } + + if (UNK_021C5A00->unk3F >= 0x13) + { + FUN_020168D0(0x31); + } + + FUN_02033ED0(); + FUN_0202E4F0(); + + FreeToHeap(UNK_021C5A00); + FUN_020168D0(0xf); + + UNK_021C5A00 = NULL; + } +} + +THUMB_FUNC BOOL FUN_02031810() +{ + if (UNK_021C5A00 != NULL) + { + return TRUE; + } + return FALSE; +} + +THUMB_FUNC void FUN_02031824(struct SaveBlock2 *sav2) +{ + if (UNK_021C5A00 == NULL) + { + FUN_02016828(3, 0xf, 0xe000); + FUN_02031734(sav2, 0xa); + + UNK_021C5A00->unk40 = 0; + FUN_02031D20(FUN_02031D30, 0x32); + } +} + +THUMB_FUNC void FUN_02031860() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031468(); + FUN_02031D20(FUN_020323CC, 0); + } +} + +THUMB_FUNC void FUN_02031880() +{ + FUN_0202FC60(); + UNK_021C5A00->unk38 = FUN_02031190(); + + FUN_02031D20(FUN_020321B8, 0); +} + +THUMB_FUNC void FUN_020318A4(u8 param0) +{ + UNK_021C5A00->unk4F = param0; +} + +THUMB_FUNC void FUN_020318B4() +{ + FUN_02031D20(FUN_02032028, 0); +} + +THUMB_FUNC BOOL FUN_020318C4() +{ + struct UnkStruct_02031734_const1 st0 = UNK_020EEC50; + + u32 r1 = (u32)UNK_021C5A00->unk24; + + if (UNK_021C5A00 == NULL) + { + return FALSE; + } + + for (u32 i = 0; st0.unk00[i] != 0; i++) + { + + if (r1 == st0.unk00[i]) + { + return TRUE; + } + } + + return FALSE; +} + +THUMB_FUNC void FUN_02031914() +{ + FUN_02031D20(FUN_02032178, 0); +} + +THUMB_FUNC void FUN_02031924() +{ + UNK_021C5A00->unk4C = 1; +} + +THUMB_FUNC void FUN_02031934() +{ + FUN_0202E49C(); + FUN_02031D20(FUN_02032194, 0); +} + +THUMB_FUNC void FUN_02031948(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, param1); + UNK_021C5A00->unk40 = param2; + UNK_021C5A00->unk30 = param3; + FUN_02031D20(FUN_020321D0, 0); + } +} + +THUMB_FUNC void FUN_02031990(struct SaveBlock2 *sav2, u8 param1, u8 param2, u32 param3) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, param1); + UNK_021C5A00->unk40 = param2; + UNK_021C5A00->unk30 = param3; + FUN_02031D20(FUN_0203224C, 0); + } +} + +THUMB_FUNC void FUN_020319D8(u8 param0) +{ + UNK_021C5A00->unk3E = param0; + FUN_02031D20(FUN_02032298, 0); +} + +THUMB_FUNC void FUN_020319F4() +{ + FUN_0202FCA8(); + FUN_02031D20(FUN_02032364, 0); +} + +THUMB_FUNC void FUN_02031A08() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC void FUN_02031A24() +{ + FUN_0202D298(); +} + +THUMB_FUNC BOOL FUN_02031A2C() +{ + struct UnkStruct_02031734_const1 st0 = UNK_020EEC5C; + + u32 r1 = (u32)UNK_021C5A00->unk24; + + if (UNK_021C5A00 == NULL) + { + return FALSE; + } + + for (u32 i = 0; st0.unk00[i] != 0; i++) + { + + if (r1 == st0.unk00[i]) + { + return TRUE; + } + } + + return FALSE; +} + +THUMB_FUNC void FUN_02031A7C(struct SaveBlock2 *sav2) +{ + if (UNK_021C5A00 == NULL) + { + if (FUN_02016828(3, 0xf, 0x7080) == 0) + { + FUN_020335E0(); + } + + FUN_02031734(sav2, 9); + UNK_021C5A00->unk3F = 9; + UNK_021C5A00->unk40 = 0; + FUN_02031D20(FUN_02032478, 0); + } +} + +THUMB_FUNC void FUN_02031AC8(u8 param0) +{ + UNK_021C5A00->unk3E = param0; + UNK_021C5A00->unk38 = 3; + FUN_0202D344(1); + FUN_02033E74(); + FUN_02031D20(FUN_02032628, 0); +} + +THUMB_FUNC s32 FUN_02031AF4() +{ + if (UNK_021C5A00 == NULL) + { + return -1; + } + if (UNK_021C5A00->unk24 == FUN_0203279C) + { + return 1; + } + + if (UNK_021C5A00->unk24 == FUN_020327B4) + { + return -1; + } + + return 0; +} + +THUMB_FUNC BOOL FUN_02031B2C() +{ + if (UNK_021C5A00 == NULL) + { + return FALSE; + } + if (UNK_021C5A00->unk24 == FUN_020327FC) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_02031B50() +{ + FUN_0202D344(0); + if (UNK_021C5A00->unk44 != 1 || UNK_021C5A00->unk45 != 1 || UNK_021C5A00->unk3F == 9) + { + FUN_020334E8(0, 0); + } + + FUN_02033ED0(); + UNK_021C5A00->unk3F = 9; + UNK_021C5A00->unk48 = 0; + FUN_0202D1B0(UNK_021C5A00->unk3C); + + if (FUN_02031190() == 0) + { + FUN_0202D36C(1); + FUN_02031D20(FUN_020323DC, 0xf); + return; + } + + FUN_02031D20(FUN_02032424, 5); +} + +THUMB_FUNC u32 FUN_02031BD0() +{ + if (UNK_021C5A00 == NULL) + { + return 1; + } + + if (UNK_021C5A00->unk24 != FUN_020324F8) + { + return 1; + } + + return 0; +} + +THUMB_FUNC void FUN_02031BF4() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC void FUN_02031C10() +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk48 = 1; + FUN_0202D344(1); + } +} + +THUMB_FUNC void FUN_02031C2C() +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk48 = 1; + FUN_0202D344(1); + FUN_02031D20(FUN_02032850, 0); + } +} + +THUMB_FUNC void FUN_02031C54() +{ + UNK_021C5A00->unk3F = 0x12; +} + +THUMB_FUNC void FUN_02031C64() +{ + UNK_021C5A00->unk3F = 0x9; +} + +THUMB_FUNC void FUN_02031C74(struct SaveBlock2 *sav2, u8 param1) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, param1); + FUN_02031D20(FUN_02032E00, 0); + } +} + +THUMB_FUNC void FUN_02031CA8(struct SaveBlock2 *sav2, u8 param1) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, param1); + FUN_02031D20(FUN_02032E48, 0); + } +} + +THUMB_FUNC void FUN_02031CDC() +{ + if (UNK_021C5A00 != NULL && UNK_021C5A00->unk24 != 0) + { + ((void (*)(void))(UNK_021C5A00->unk24))(); + } + if (FUN_02033590() != 0) + { + FUN_02033EEC(3 - MOD04_021DDB08()); + return; + } + + if (FUN_0202EDF8() != 0) + { + FUN_02033EEC(3 - WM_GetLinkLevel()); + } +} + +THUMB_FUNC void FUN_02031D20(void (*param0)(), u16 param1) +{ + UNK_021C5A00->unk24 = param0; + UNK_021C5A00->unk3A = param1; +} + +THUMB_FUNC void FUN_02031D30() +{ + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_0202E4C8() == 0) + { + return; + } + + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + FUN_02031268(1); + FUN_02030FA8(); + + if (UNK_021C5A00->unk4A != 0) + { + if (FUN_0202F918(1, UNK_021C5A00->unk43, 0x1F4, 1) == 0) + { + return; + } + +#ifdef NONMATCHING + UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; + u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x14) >> 32; + + UNK_021C5A00->unk43 = 0; + FUN_02031D20(FUN_020320C4, r1 + 0x14); +#else + asm( + // clang-format off + ldr r0, =UNK_021C5A00 + ldr r5, [r0, #0x0] + add r4, r5, #0x0 + add r4, #0xc + ldr r0, [r4, #0x8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #0xc] + ldr r3, [r4, #0x4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #0xc] + str r3, [r4, #0x4] + add r0, r3, #0x0 + mov r1, #0x0 + mov r2, #0x14 + mov r3, #0x0 + bl _ll_mul + mov r0, #0x0 + add r5, #0x43 + strb r0, [r5, #0x0] + ldr r0, =FUN_020320C4 + add r1, #0x14 + bl FUN_02031D20 + pop {r3-r5, pc} // clang-format on + ); +#endif + } + + if (FUN_0202F950(1, 1, 0x1F4) != 0) + { + if (UNK_021C5A00->unk4C != 0) + { + FUN_02031D20(FUN_020323B8, 0); + } + else + { + FUN_02031D20(FUN_02031EE0, 0x40); + } + } +} + +THUMB_FUNC void FUN_02031E08() +{ + if (FUN_0202EE0C() != 0) + { + FUN_02031268(1); + FUN_02030FA8(); + + if (UNK_021C5A00->unk4A != 0) + { + FUN_02031D20(FUN_02032058, 0); + return; + } + + if (FUN_0202F950(0, 1, 0x1F4) != 0) + { + +#ifdef NONMATCHING + UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; + u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x40) >> 32; + + if (UNK_021C5A00->unk38 != 0) + { + r1 = UNK_021C5A00->unk38 << 6; + UNK_021C5A00->unk38 = 0; + } + FUN_02031D20(FUN_02031EE0, r1); +#else + asm( + // clang-format off + ldr r0, =UNK_021C5A00 + ldr r5, [r0, #0x0] + add r4, r5, #0x0 + add r4, #0xc + ldr r0, [r4, #0x8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #0xc] + ldr r3, [r4, #0x4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #0xc] + mov r1, #0x0 + str r3, [r4, #0x4] + lsr r0, r3, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + ldrh r0, [r5, #0x38] + cmp r0, #0x0 + beq _02031E76 + lsl r1, r0, #0x6 + mov r0, #0x0 + strh r0, [r5, #0x38] + _02031E76: + ldr r0, =FUN_02031EE0 + bl FUN_02031D20 + // clang-format on + ); +#endif + } + } +} + +THUMB_FUNC void FUN_02031E8C() +{ + if (FUN_0202EE0C() != 0) + { + if (FUN_0202F950(0, 0, 0x1F4) != 0) + { + +#ifdef NONMATCHING + UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; + u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x20) >> 32; + + FUN_02031D20(FUN_02031EE0, r1 + 0x10); +#else + asm( + // clang-format off + ldr r0, =UNK_021C5A00 + ldr r4, [r0, #0x0] + add r5, r4, #0x0 + add r5, #0xc + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #0xc] + ldr r3, [r5, #0x4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0xc] + mov r1, #0x0 + lsr r2, r3, #0x1b + lsl r1, r1, #0x5 + orr r1, r2 + ldr r0, =FUN_02031EE0 + add r1, #0x10 + str r3, [r5, #0x4] + bl FUN_02031D20 + // clang-format on + ); +#endif + } + } +} + +THUMB_FUNC void FUN_02031EE0() +{ + FUN_0202EA54(); + if (UNK_021C5A00->unk4F == 0 && UNK_021C5A00->unk4B == 0) + { + s32 r0 = FUN_0202E8F4(); + if (r0 != -1) + { + UNK_021C5A00->unk3E = (u8)r0; + FUN_02031D20(FUN_02031F60, 0x20); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + r0 = FUN_0202E950(); + if (r0 != -1) + { + UNK_021C5A00->unk3E = (u8)r0; + FUN_02031D20(FUN_02031F60, 0x20); + return; + } + + FUN_02031D20(FUN_02032028, 0); + } +} + +THUMB_FUNC void FUN_02031F60() +{ + FUN_0202EA54(); + if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0) + { + FUN_02031D20(FUN_02031FC8, 0x64); + return; + } + + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_02032028, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_02032028, 0); +} + +THUMB_FUNC void FUN_02031FC8() +{ + if (FUN_02030E7C(FUN_02031190()) != 0) + { + FUN_0202FC60(); + FUN_02031268(0); + FUN_02030FA8(); + FUN_02031D20(FUN_0203213C, 0); + return; + } + + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_02032028, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_02032028, 0); +} + +THUMB_FUNC void FUN_02032028() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032058, 0); + } +} + +THUMB_FUNC void FUN_02032040() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02031E8C, 0); + } +} + +THUMB_FUNC void FUN_02032058() +{ + if (FUN_0202EE0C() != 0) + { + FUN_02031268(1); + if (FUN_0202F918(0, UNK_021C5A00->unk43, 0x1F4, 1) != 0) + { +#ifdef NONMATCHING + UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; + u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x14) >> 32; + + UNK_021C5A00->unk43 = 0; + FUN_02031D20(FUN_020320C4, r1 + 0x14); +#else + asm( + // clang-format off + ldr r0, =UNK_021C5A00 + ldr r5, [r0, #0x0] + add r4, r5, #0x0 + add r4, #0xc + ldr r0, [r4, #0x8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #0xc] + ldr r3, [r4, #0x4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #0xc] + str r3, [r4, #0x4] + add r0, r3, #0x0 + mov r1, #0x0 + mov r2, #0x14 + mov r3, #0x0 + bl _ll_mul + mov r0, #0x0 + add r5, #0x43 + strb r0, [r5, #0x0] + ldr r0, =FUN_020320C4 + add r1, #0x14 + bl FUN_02031D20 + // clang-format on + ); +#endif + } + } +} + +THUMB_FUNC void FUN_020320C4() +{ + if (FUN_020311E8() != 0) + { + UNK_021C5A00->unk43 = 1; + FUN_02031D20(FUN_02032118, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (UNK_021C5A00->unk4A == 0 && FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032040, 2); + } +} + +THUMB_FUNC void FUN_02032118() +{ + FUN_02031268(0); + FUN_0202EE84(1); + FUN_02030FA8(); + FUN_02031D20(FUN_02032138, 0); +} + +THUMB_FUNC void FUN_02032138() +{ +} +THUMB_FUNC void FUN_0203213C() +{ +} + +THUMB_FUNC void FUN_02032140() +{ + if (UNK_021C5A00->unk3F < 0x13) + { + if (FUN_0202EE0C() == 0) + { + return; + } + + FUN_02031268(1); + FUN_02030FA8(); + FUN_0202E7B0(1); + } + + FUN_02031D20(FUN_020323B8, 0); +} + +THUMB_FUNC void FUN_02032178() +{ + if (FUN_0202E6F0() != 0) + { + FUN_0202FC60(); + FUN_02031D20(FUN_02032140, 0); + } +} + +THUMB_FUNC void FUN_02032194() +{ + if (FUN_0202E4C8() != 0) + { + FUN_0202E7B0(0); + FUN_0202FC60(); + FUN_02031D20(FUN_02031E08, 0); + } +} + +THUMB_FUNC void FUN_020321B8() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02031E08, 0); + } +} + +THUMB_FUNC void FUN_020321D0() +{ + if (FUN_0202E4C8() != 0) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30); + if (FUN_0202F918(1, 1, 0x200, 1) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032218, 0); + } + } +} + +THUMB_FUNC void FUN_02032218() +{ + if (FUN_02030E7C(FUN_02031190()) != 0) + { + FUN_02031D20(FUN_02032234, 0); + } +} + +THUMB_FUNC void FUN_02032234() +{ + if (FUN_02030F40() == 0) + { + FUN_02031D20(FUN_020323BC, 0); + } +} + +THUMB_FUNC void FUN_0203224C() +{ + if (FUN_0202E4C8() != 0) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30); + if (FUN_0202F950(1, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032290, 0); + } + } +} + +THUMB_FUNC void FUN_02032290() +{ + FUN_0202EA54(); +} + +THUMB_FUNC void FUN_02032298() +{ + FUN_0202EA54(); + if (FUN_0202FB18(UNK_021C5A00->unk3E) != 0) + { + FUN_02031D20(FUN_020322C0, 0xa); + } +} + +THUMB_FUNC void FUN_020322C0() +{ + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020322F8, 0); + } + + if (FUN_02030E7C(FUN_02031190()) != 0 && FUN_02031190() != 0) + { + FUN_02031D20(FUN_0203234C, 0); + } +} + +THUMB_FUNC void FUN_020322F8() +{ + FUN_0202E6F0(); + FUN_02031D20(FUN_0203230C, 2); +} + +THUMB_FUNC void FUN_0203230C() +{ + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032298, 0xa); + } +} + +THUMB_FUNC void FUN_0203234C() +{ + if (FUN_02030F40() == 0) + { + FUN_02031D20(FUN_020323BC, 0); + } +} + +THUMB_FUNC void FUN_02032364() +{ + FUN_0202E6F0(); + FUN_02031D20(FUN_02032378, 2); +} + +THUMB_FUNC void FUN_02032378() +{ + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032290, 0xa); + } +} + +THUMB_FUNC void FUN_020323B8() +{ +} + +THUMB_FUNC void FUN_020323BC() +{ + if (FUN_02030F40() == 0) + { + FUN_020317C0(); + } +} + +THUMB_FUNC void FUN_020323CC() +{ + FUN_02031D20(FUN_02032440, 5); +} + +THUMB_FUNC void FUN_020323DC() +{ + if (FUN_02030F20() <= 1) + { + FUN_0202D36C(0); + FUN_0202FC80(); + FUN_02031D20(FUN_020324F8, 0); + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_0202D36C(0); + FUN_0202FC80(); + FUN_02031D20(FUN_020324F8, 0); +} + +THUMB_FUNC void FUN_02032424() +{ + if (FUN_0202E6F0() != 0) + { + FUN_0202FC60(); + FUN_02031D20(FUN_020324F8, 0); + } +} + +THUMB_FUNC void FUN_02032440() +{ + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + } + + if (FUN_0202E6F0() != 0 && UNK_021C5A00->unk3A == 0) + { + FUN_0202FA5C(); + FUN_02031D20(FUN_020323BC, 0); + } +} + +THUMB_FUNC void FUN_02032478() +{ + if (FUN_0202E4C8() != 0) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202D1B0(UNK_021C5A00->unk3C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + if (FUN_0202F950(1, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_020324C8, 0x40); + } + } +} + +THUMB_FUNC void FUN_020324C8() +{ + FUN_0202EA54(); + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032510, 0); + } +} + +THUMB_FUNC void FUN_020324F8() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032510, 0); + } +} + +THUMB_FUNC void FUN_02032510() +{ + if (FUN_0202EE0C() != 0 && FUN_0202F918(0, UNK_021C5A00->unk43, 0x200, 1) != 0) + { +#ifdef NONMATCHING + UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; + FUN_0202FA10(); + UNK_021C5A00->unk43 = 0; +#else + asm( + // clang-format off + ldr r0, =UNK_021C5A00 + ldr r4, [r0, #0x0] + add r5, r4, #0x0 + add r5, #0xc + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #0xc] + ldr r3, [r5, #0x4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0xc] + str r3, [r5, #0x4] + bl FUN_0202FA10 + ldr r0, =UNK_021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x43 + strb r1, [r0, #0x0] + // clang-format on + ); +#endif + + FUN_02031D20(FUN_02032578, 0x2710); + } +} + +THUMB_FUNC void FUN_02032578() +{ + if (FUN_0202F104() == 0) + { + if (FUN_020311E8() != 0) + { + UNK_021C5A00->unk43 = 1; + FUN_02033E74(); + FUN_02031D20(FUN_020327FC, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + } + + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_020325D0, 0); + } +} + +THUMB_FUNC void FUN_020325D0() +{ + if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 0, 0x200) != 0) + { + FUN_0202FA10(); + +#ifdef NONMATCHING + UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; + u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x20) >> 32; + + FUN_02031D20(FUN_020324C8, r1); +#else + asm( + // clang-format off + ldr r0, =UNK_021C5A00 + ldr r4, [r0, #0x0] + add r5, r4, #0x0 + add r5, #0xc + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #0xc] + ldr r3, [r5, #0x4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0xc] + mov r1, #0x0 + ldr r0, =FUN_020324C8 + lsr r2, r3, #0x1b + lsl r1, r1, #0x5 + orr r1, r2 + str r3, [r5, #0x4] + bl FUN_02031D20 + // clang-format on + ); +#endif + } +} + +THUMB_FUNC void FUN_02032628() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_02032640, 0); + } +} + +THUMB_FUNC void FUN_02032640() +{ + if (FUN_0202EE0C() != 0 && FUN_0202F950(0, 0, 0x200)) + { + FUN_0202FA10(); + FUN_02031D20(FUN_0203266C, 0x64); + } +} + +THUMB_FUNC void FUN_0203266C() +{ + if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0) + { + FUN_02031D20(FUN_020326D0, 0x64); + return; + } + + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020327B8, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_020327B8, 0); +} + +THUMB_FUNC void FUN_020326D0() +{ + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020327B8, 0); + return; + } + + if (FUN_02030E7C(FUN_02031190()) != 0) + { + UNK_021C5A00->unk3D = 0; + FUN_020311D0(6, UNK_02105D5C); + FUN_02031D20(FUN_02032738, 0x78); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_020327B8, 0); +} + +THUMB_FUNC void FUN_02032738() +{ + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020327B8, 0); + return; + } + + if (UNK_021C5A00->unk3D == 2) + { + FUN_02031D20(FUN_020327B4, 0); + return; + } + else if (UNK_021C5A00->unk3D == 1) + { + FUN_0202DBE0(); + FUN_02031D20(FUN_0203279C, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + FUN_02031D20(FUN_020327B8, 0); +} + +THUMB_FUNC void FUN_0203279C() +{ + if (FUN_020311F0() != 0) + { + FUN_02031D20(FUN_020327B8, 0); + } +} + +THUMB_FUNC void FUN_020327B4() +{ +} + +THUMB_FUNC void FUN_020327B8() +{ + UNK_021C5A00->unk3D = 0; + if (FUN_0202E6F0() != 0) + { + if (UNK_021C5A00->unk38 != 0) + { + UNK_021C5A00->unk38--; + FUN_02031D20(FUN_02032640, 0); + return; + } + + FUN_02031D20(FUN_020327B4, 0); + } +} + +THUMB_FUNC void FUN_020327FC() +{ + if (FUN_020311E8() == 0) + { + if (FUN_02033510() == 0 && FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_020325D0, 0); + } + } + else if (FUN_02031190() == 0) + { + FUN_0202DDE8(); + } + + if (FUN_020311F0() != 0 && FUN_02033510() == 0) + { + FUN_02031D20(FUN_020327B8, 0); + } +} + +THUMB_FUNC void FUN_02032850() +{ + if (FUN_0202EE0C() != 0) + { + if (FUN_0202F918(0, UNK_021C5A00->unk43, 0x200, 0) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_020323B8, 0); + } + } +} + +THUMB_FUNC void FUN_02032888() +{ + u8 st0[4]; + UNK_021C5A00->unk3F = 0xd; + if (FUN_02031190() == 0) + { + st0[1] = 0; + FUN_020311D0(0xa, &st0[1]); + return; + } + + st0[0] = 0; + FUN_020311D0(0xa, st0); +} + +THUMB_FUNC void FUN_020328C0(u8 param0) +{ + UNK_021C5A00->unk3E = param0; + UNK_021C5A00->unk38 = 3; + FUN_02031D20(FUN_02032924, 0); +} + +THUMB_FUNC void FUN_020328E4() +{ + UNK_021C5A00->unk3F = 7; +} + +THUMB_FUNC void FUN_020328F4(u8 param0) +{ + UNK_021C5A00->unk3E = param0; + UNK_021C5A00->unk3F = 7; + UNK_021C5A00->unk38 = 3; + FUN_02033E74(); + FUN_02031D20(FUN_02032628, 0); +} + +THUMB_FUNC void FUN_02032924() +{ + if (FUN_0202E6F0() != 0) + { + FUN_02031D20(FUN_0203293C, 0); + } +} + +THUMB_FUNC void FUN_0203293C() +{ + if (FUN_0202EE0C() != 0) + { + UNK_021C5A00->unk3F = 0xd; + if (FUN_0202F950(0, 0, 0x200) != 0) + { + FUN_0202FA1C(); + FUN_02031D20(FUN_02032978, 0x64); + } + } +} + +THUMB_FUNC void FUN_02032978() +{ + if (FUN_0202E8A0(UNK_021C5A00->unk3E) != 0 && FUN_0202FB18(UNK_021C5A00->unk3E) != 0) + { + FUN_02031D20(FUN_020329F4, 0x64); + return; + } + + if (FUN_020311F0() != 0 || UNK_021C5A00->unk3A == 0) + { + UNK_021C5A00->unk38--; + if (UNK_021C5A00->unk38 == 0) + { + FUN_02031D20(FUN_020327B4, 0); + return; + } + + FUN_02031D20(FUN_02032924, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } +} + +THUMB_FUNC void FUN_020329F4() +{ + if (UNK_021C5A00->unk3A > 0x5a) + { + UNK_021C5A00->unk3A--; + return; + } + + if (FUN_020311F0() != 0) + { + UNK_021C5A00->unk38--; + if (UNK_021C5A00->unk38 == 0) + { + FUN_02031D20(FUN_020327B4, 0); + return; + } + + FUN_02031D20(FUN_02032924, 0); + return; + } + + if (FUN_02030E7C(FUN_02031190()) != 0) + { + FUN_02031D20(FUN_0203279C, 0); + return; + } + + if (UNK_021C5A00->unk3A != 0) + { + UNK_021C5A00->unk3A--; + return; + } + + UNK_021C5A00->unk38--; + if (UNK_021C5A00->unk38 == 0) + { + FUN_02031D20(FUN_020327B4, 0); + return; + } + + FUN_02031D20(FUN_02032924, 0); +} + +THUMB_FUNC void FUN_02032A8C(u8 param0, u32 param1, u8 *param2) +{ +#pragma unused(param1) + if (FUN_02031190() == 0) + { + + u32 i; + BOOL r3 = TRUE; + for (i = 0; i < 6; i++) + { + if (UNK_02105D5C[i] != param2[i]) + { + r3 = FALSE; + break; + } + } + + if (r3 && UNK_021C5A00->unk48 == 0) + { + UNK_02105D6C[0] = param0; + FUN_02030C4C(7, UNK_02105D6C); + return; + } + + UNK_02105D64[0] = param0; + FUN_02030C4C(7, UNK_02105D64); + } +} + +THUMB_FUNC void FUN_02032AEC(u32 param0, u32 param1, u8 *param2) +{ +#pragma unused(param0) +#pragma unused(param1) + u32 i; + BOOL r4 = TRUE; + for (i = 1; i < 6; i++) + { + if (param2[i] != UNK_02105D6C[i]) + { + r4 = FALSE; + break; + } + } + + if (r4) + { + u8 first = param2[0]; + if (first != FUN_02031190()) + { + return; + } + + UNK_021C5A00->unk3D = 1; + return; + } + + r4 = TRUE; + for (i = 1; i < 6; i++) + { + if (param2[i] != UNK_02105D64[i]) + { + r4 = FALSE; + break; + } + } + + if (r4) + { + u8 first = param2[0]; + if (first != (u8)FUN_02031190()) + { + return; + } + + UNK_021C5A00->unk3D = 2; + } +} + +THUMB_FUNC u32 FUN_02032B68() +{ + return 6; +} + +THUMB_FUNC void FUN_02032B6C(u8 param0) +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk3C = param0; + FUN_0202D1B0(param0); + } +} + +THUMB_FUNC void FUN_02032B84() +{ + FUN_0202EA54(); +} + +THUMB_FUNC void FUN_02032B8C() +{ + if (FUN_0202E4C8() != 0) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + if (FUN_0202F950(1, 1, 0x20) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032B84, 0); + } + } +} + +THUMB_FUNC void FUN_02032BD0(struct SaveBlock2 *sav2) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7000); + FUN_02031734(sav2, 0xe); + UNK_021C5A00->unk40 = 0; + FUN_02031D20(FUN_02032B8C, 0); + } +} + +THUMB_FUNC void FUN_02032C0C() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC u32 FUN_02032C28() +{ + struct UnkStruct_02031734_const2 st0 = UNK_020EEC48; + + u32 fun = (u32)UNK_021C5A00->unk24; + if (UNK_021C5A00 == NULL) + { + return 0; + } + + u32 i = 0; + while (st0.unk00[i] != 0) + { + if (st0.unk00[i] == fun) + { + return 1; + } + + i++; + } + + return 0; +} + +THUMB_FUNC void FUN_02032C6C(u32 param0, u32 param1) +{ + switch (param0) + { + case 0x333: + if (param1 != 0xf) + { + return; + } + UNK_021C5A00->unk49 |= 1; + break; + case 0x400318: + + UNK_021C5A00->unk49 |= 1; + break; + + case 0x400131: + + UNK_021C5A00->unk49 |= 2; + break; + + case 0x400286: + + UNK_021C5A00->unk49 |= 4; + break; + } +} + +THUMB_FUNC void FUN_02032CF4() +{ + if (FUN_0202E4C8() != 0) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + FUN_0202D308(FUN_02032C6C); + if (FUN_0202F950(1, 1, 0x20) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032B84, 0); + } + } +} + +THUMB_FUNC void FUN_02032D44(struct SaveBlock2 *sav2) +{ + if (FUN_02030F40() == 0) + { + FUN_02016828(3, 0xf, 0x7000); + FUN_02031734(sav2, 0x11); + UNK_021C5A00->unk40 = 0; + FUN_02031D20(FUN_02032CF4, 0); + } +} + +THUMB_FUNC void FUN_02032D80() +{ + if (UNK_021C5A00 != NULL) + { + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC u8 FUN_02032D9C() +{ + return UNK_021C5A00->unk49; +} + +THUMB_FUNC BOOL FUN_02032DAC() +{ + FUN_02031468(); + + if (UNK_021C5A00 == NULL) + { + return TRUE; + } + + if ((u8)(UNK_021C5A00->unk3F + 0xe8) <= 1) + { + MOD04_021D83C0(); + return TRUE; + }; + + if (FUN_02033590() != 0) + { + FUN_02031D20(FUN_0203318C, 0); + } + else + { + FUN_02031D20(FUN_02032178, 0); + } + + return FALSE; +} + +THUMB_FUNC void FUN_02032E00() +{ + if (FUN_0202E4C8() != 0) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + if (FUN_0202F918(1, 1, 0x200, 1) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032218, 0); + } + } +} + +THUMB_FUNC void FUN_02032E48() +{ + if (FUN_0202E4C8() != 0) + { + FUN_0202E29C(UNK_021C5A00->unk2C); + FUN_0202DB14(UNK_021C5A00->unk28, 0); + if (FUN_0202F950(1, 1, 0x200) != 0) + { + FUN_0202FA10(); + FUN_02031D20(FUN_02032290, 0); + } + } +} + +THUMB_FUNC void FUN_02032E8C() +{ +} + +THUMB_FUNC void FUN_02032E90() +{ + if (MOD04_021D7F8C() < 0) + { + FUN_02031D20(FUN_02032E8C, 0); + } +} + +THUMB_FUNC void FUN_02032EA8() +{ +} + +THUMB_FUNC void FUN_02032EAC() +{ +} + +THUMB_FUNC void FUN_02032EB0() +{ + FUN_020313A0(1); + + s32 res = MOD04_021D7F8C(); + if (res >= 0xa) + { + FUN_02031D20(FUN_02032EAC, 0); + return; + } + + if (res < 0) + { + FUN_02031D20(FUN_02032E8C, 0); + return; + } + + if (res == 1) + { + FUN_02031D20(FUN_02032E90, 0); + return; + } + + if (res == 2) + { + if (UNK_021C5A00->unk44 != 0) + { + FUN_02031D20(FUN_02032E8C, 0); + return; + } + FUN_02031D20(FUN_02032EA8, 0); + return; + } +} + +THUMB_FUNC void FUN_02032F20(u32 param0) +{ + if (param0 + 2 > 1) + { + param0 = -param0; + } + + UNK_021C5A00->unk34 = param0; +} + +THUMB_FUNC void FUN_02032F34() +{ + s32 res = MOD04_021D7800(0); + if (res >= 0xa) + { + FUN_02031D20(FUN_02032EAC, 0); + return; + } + + if (res < 0) + { + FUN_02032F20((u32)res); + FUN_02031D20(FUN_02032E8C, 0); + return; + } + + if (res == 1) + { + FUN_02031D20(FUN_02032EB0, 0); + return; + } + + if (res == 2) + { + FUN_02031D20(FUN_02032EA8, 0); + return; + } + + if (res == 3) + { + FUN_02031D20(FUN_02032EAC, 0); + return; + } +} + +THUMB_FUNC void FUN_02032F98() +{ + s32 res = MOD04_021D7800(1); + if (res < 0) + { + FUN_02032F20((u32)res); + FUN_02031D20(FUN_02032E8C, 0); + return; + } + + if (MOD04_021D8494(UNK_021C5A00->unk42) != 0) + { + FUN_0202FC60(); + FUN_02031D20(FUN_02032F34, 0); + } +} + +THUMB_FUNC u32 FUN_02032FDC(u8 param0) +{ + MOD04_021D77C4(FUN_020303BC, FUN_02030238); + UNK_021C5A00->unk42 = param0; + FUN_02031D20(FUN_02032F98, 0); + + return 1; +} + +THUMB_FUNC u32 FUN_0203300C() +{ + if (UNK_021C5A00->unk24 == FUN_02032F34) + { + return 0; + } + + if (UNK_021C5A00->unk24 == FUN_02032EB0) + { + return 1; + } + + if (UNK_021C5A00->unk24 == FUN_02032E90) + { + return 3; + } + + if (UNK_021C5A00->unk24 == FUN_02032EA8) + { + return 4; + } + + if (UNK_021C5A00->unk24 == FUN_02032EAC) + { + return 5; + } + + return 2; +} + +THUMB_FUNC void FUN_02033060() +{ + MOD04_021D77C4(FUN_020303BC, FUN_02030238); + if (MOD04_021D8494(-1) != 0) + { + UNK_021C5A00->unk4D = 0; + FUN_0202FC60(); + FUN_02031D20(FUN_02032F34, 0); + } +} + +THUMB_FUNC void FUN_020330A0() +{ + FUN_020313A0(0); + if (MOD04_021D82BC(UNK_021C5A00->unk41) != 0) + { + MOD04_021D836C(); + FUN_02031D20(FUN_02033060, 0); + return; + } + + if (MOD04_021D7F8C() < 0) + { + FUN_02031D20(FUN_02032E8C, 0); + } +} + +THUMB_FUNC void FUN_020330E4() +{ + if (FUN_02031190() == 0) + { + UNK_021C5A00->unk41 = 0; + FUN_02031D20(FUN_020330A0, 0); + } + else + { + UNK_021C5A00->unk41 = 1; + FUN_02031D20(FUN_020330A0, 0); + } + + UNK_021C5A00->unk4D = 1; +} + +THUMB_FUNC u8 FUN_02033128() +{ + return UNK_021C5A00->unk4D; +} + +THUMB_FUNC u32 FUN_02033138() +{ + if (UNK_021C5A00->unk24 == FUN_02033060) + { + return 1; + } + + return 0; +} + +THUMB_FUNC u32 FUN_02033154() +{ + if (UNK_021C5A00->unk24 == FUN_02032F34) + { + return 1; + } + + if (UNK_021C5A00->unk24 == FUN_02033060) + { + return 1; + } + + return 0; +} + +THUMB_FUNC u32 FUN_02033180() +{ + return UNK_021C5A00->unk34; +} + +THUMB_FUNC void FUN_0203318C() +{ + FUN_020313A0(0); + if (MOD04_021D82BC(0) != 0) + { + MOD04_021D836C(); + FUN_02031D20(FUN_02032440, 0); + } + + if (MOD04_021D7F8C() < 0) + { + FUN_02031D20(FUN_02032E8C, 0); + } +} + +THUMB_FUNC void FUN_020331C4() +{ + if (UNK_021C5A00 != NULL) + { + FUN_020166B8(1); + FUN_02031D20(FUN_02032440, 5); + } +} + +THUMB_FUNC void FUN_020331E8() +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk41 = 0; + FUN_02031D20(FUN_020330A0, 0); + } +} + +THUMB_FUNC void FUN_02033208() +{ + if (UNK_021C5A00 != NULL) + { + if (FUN_02031190() == 0) + { + UNK_021C5A00->unk41 = 0; + } + else + { + UNK_021C5A00->unk41 = 1; + } + + FUN_02031D20(FUN_020330A0, 0); + } +} + +THUMB_FUNC void FUN_0203323C() +{ + u8 res = (u8)FUN_02031190(); + FUN_020311D0(0x15, &res); +} + +THUMB_FUNC u32 FUN_02033250() +{ + if (UNK_021C5A00 != NULL) + { + if (UNK_021C5A00->unk24 == FUN_02032E8C) + { + return 1; + } + + if (UNK_021C5A00->unk24 == FUN_02032E90 && UNK_021C5A00->unk44 != 0) + { + return 1; + } + } + + return 0; +} + +THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2) +{ + if (UNK_021C5A00 == NULL) + { + FUN_02016828(3, 0xf, 0x100); + UNK_021C5A00 = (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); + MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734)); + + UNK_021C5A00->unk3F = 0x18; + UNK_021C5A00->unk46 = 1; + UNK_021C5A00->unk28 = sav2; + FUN_020334E8(0, 1); + FUN_020166A8(1); + } +} + +THUMB_FUNC void FUN_020332DC() +{ + if (UNK_021C5A00 != 0) + { + FUN_020166B8(1); + FUN_020334E8(0, 0); + FreeToHeap(UNK_021C5A00); + UNK_021C5A00 = NULL; + FUN_020168D0(0xf); + } +} + +THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2) +{ + if (UNK_021C5A00 == NULL) + { + FUN_02016828(3, 0xf, 0x100); + UNK_021C5A00 = (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); + MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734)); + UNK_021C5A00->unk3F = 0x19; + UNK_021C5A00->unk46 = 1; + UNK_021C5A00->unk28 = sav2; + FUN_020334E8(0, 1); + FUN_020166A8(1); + } +} + +THUMB_FUNC void FUN_02033364() +{ + if (UNK_021C5A00 != 0) + { + FUN_020166B8(1); + FUN_020334E8(0, 0); + FreeToHeap(UNK_021C5A00); + UNK_021C5A00 = NULL; + FUN_020168D0(0xf); + } +} + +THUMB_FUNC u32 FUN_02033398() +{ + u32 st4; + u32 st0; + if (UNK_021C5A00 == NULL) + { + return 0; + } + + if (UNK_021C5A00->unk3F == 0x18) + { + if (MOD04_021DD718(&st4, &st0) != 0) + { + MOD04_021DD6F0(); + return 1; + } + } + else if (UNK_021C5A00->unk3F == 0x19) + { + if (MOD04_021DD718(&st4, &st0) != 0 && st0 == 7) + { + return 1; + } + } + + return 0; +} + +THUMB_FUNC void FUN_020333F0() +{ + s32 res = MOD04_021D76AC(); + if (res < 0) + { + FUN_02032F20((u32)res); + FUN_02031D20(FUN_02032E8C, 0); + return; + } + else if (res > 0) + { + FUN_02031D20(FUN_02033060, 0); + } +} + +THUMB_FUNC void FUN_0203341C() +{ + if (FUN_0202E4C8() != 0) + { + FUN_02016828(3, 0x31, 0x31000); + if (FUN_0202F918(1, 1, 0x200, 1) != 0) + { + MOD05_021D74E0(UNK_021C5A00->unk28, 0x31); + MOD04_021D83A8(FUN_020335D0); + FUN_0202FA10(); + FUN_02031D20(FUN_020333F0, 0); + } + } +} + +THUMB_FUNC void *FUN_0203346C(struct SaveBlock2 *sav2, u32 param1) +{ + Sav2_PlayerData_GetProfileAddr(sav2); + if (FUN_02030F40() != 0) + { + return 0; + } + + FUN_020166A8(1); + FUN_02016828(3, 0xf, 0x7080); + FUN_02031734(sav2, 0x17); + UNK_021C5A00->unk00 = AllocFromHeap(0xf, param1); + MI_CpuFill8(UNK_021C5A00->unk00, 0, param1); + + UNK_021C5A00->unk40 = 0; + UNK_021C5A00->unk28 = sav2; + FUN_02031D20(FUN_0203341C, 0); + + return UNK_021C5A00->unk00; +} + +THUMB_FUNC void *FUN_020334DC() +{ + return UNK_021C5A00->unk00; +} + +THUMB_FUNC void FUN_020334E8(u8 param0, u8 param1) +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk44 = param0; + UNK_021C5A00->unk45 = param1; + } + + FUN_0202EE84(param0); + FUN_0202EEB0(param0); +} + +THUMB_FUNC u8 FUN_02033510() +{ + if (UNK_021C5A00 != NULL) + { + if (UNK_021C5A00->unk4E != 0) + { + return 1; + } + + return UNK_021C5A00->unk45; + } + + return 0; +} + +THUMB_FUNC s32 FUN_02033534() +{ + if (UNK_021C5A00 != NULL) + { + return UNK_021C5A00->unk3F; + } + + return 1; +} + +THUMB_FUNC u8 FUN_0203354C() +{ + if (UNK_021C5A00 != NULL) + { + return UNK_021C5A00->unk40; + } + + return 0; +} + +THUMB_FUNC void FUN_02033564(void *src) +{ + MI_CpuCopy8(src, UNK_021C5A00->unk04, 0x6); +} + +THUMB_FUNC void FUN_02033578(void *dst) +{ + MI_CpuCopy8(UNK_021C5A00->unk04, dst, 0x6); +} + +THUMB_FUNC u32 FUN_02033590() +{ + if (FUN_02033534() >= 0x13) + { + return 1; + } + + return 0; +} + +THUMB_FUNC void FUN_020335A4(u8 param0) +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk47 = param0; + } +} + +THUMB_FUNC u8 FUN_020335B8() +{ + if (UNK_021C5A00 != NULL) + { + return UNK_021C5A00->unk47; + } + + return 0; +} + +THUMB_FUNC void FUN_020335D0(s32 param0) +{ + FUN_02033F70(0, 1, param0); + while (1) + { + } +} + +THUMB_FUNC void FUN_020335E0() +{ + FUN_02033F70(0, 4, 0); + while (1) + { + } +} + +THUMB_FUNC void FUN_020335F0() +{ +} + +THUMB_FUNC void FUN_020335F4() +{ + if (FUN_02033510() != 0) + { + if (FUN_020311F0() == 0 && FUN_02033250() == 0 && FUN_02033398() == 0) + { + if (UNK_021C5A00->unk4E == 0) + { + return; + } + } + + if (FUN_020335B8() != 0) + { + return; + } + + FUN_0200541C(); + FUN_0202287C(UNK_021C5A00->unk28); + gMain.unk64 = 1; + if (UNK_021C5A00->unk4E == 3) + { + FUN_020335A4(3); + return; + } + + if (UNK_021C5A00->unk3F == 0x19 || UNK_021C5A00->unk3F == 0xf) + { + FUN_020335A4(2); + } + else + { + FUN_020335A4(1); + } + } +} + +THUMB_FUNC BOOL FUN_02033678() +{ + if (FUN_0202EDD8() != 0 || !FUN_02031810()) + { + return TRUE; + } + + if (FUN_0202E344() == 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u32 FUN_020336A0(u8 param0) +{ + if (UNK_021C5A00 != NULL) + { + UNK_021C5A00->unk4E = param0; + FUN_02031468(); + return 1; + } + + return 0; +} \ No newline at end of file -- cgit v1.2.3 From 56e5d2eac8ed953e9f52b5ae760fcfa72cc6a91e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 1 May 2021 13:00:21 +0200 Subject: remove obsolete externs --- arm9/src/error_handling.c | 3 ++- arm9/src/error_message_reset.c | 7 ++++--- arm9/src/heap.c | 3 ++- arm9/src/main.c | 8 ++++---- arm9/src/unk_0202F150.c | 12 +++++------- 5 files changed, 17 insertions(+), 16 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/error_handling.c b/arm9/src/error_handling.c index a01894f6..7f006039 100644 --- a/arm9/src/error_handling.c +++ b/arm9/src/error_handling.c @@ -1,8 +1,9 @@ #include "global.h" #include "error_handling.h" #include "error_message_reset.h" +#include "unk_02031734.h" + -extern u32 FUN_02031810(void); THUMB_FUNC void ErrorHandling(void) { diff --git a/arm9/src/error_message_reset.c b/arm9/src/error_message_reset.c index 3a727924..f70fec0f 100644 --- a/arm9/src/error_message_reset.c +++ b/arm9/src/error_message_reset.c @@ -1,5 +1,9 @@ #include "error_message_reset.h" #include "GX_layers.h" +#include "unk_02031734.h" +#include "unk_0202F150.h" + + const u32 UNK_020FF49C[2] = { 0x1a030300, 0x00230112 }; @@ -27,9 +31,6 @@ extern void FUN_020196F4(u32 *, u8, u16, u16, u16, u16); extern void FUN_0200CCA4(u32 *param0, u32 param1, u32 param2, u32 param3); extern void FUN_0200E394(u32 param0); extern void FUN_0200A274(u32 param0, u32 param1, u32 param2); -extern BOOL FUN_02032DAC(void); -extern BOOL FUN_0202FB80(void); -extern BOOL FUN_02033678(void); extern void FUN_02019178(u32 *param0); THUMB_FUNC void VBlankHandler() diff --git a/arm9/src/heap.c b/arm9/src/heap.c index 84abc834..895ce808 100644 --- a/arm9/src/heap.c +++ b/arm9/src/heap.c @@ -1,11 +1,12 @@ #include "heap.h" #include "error_message_reset.h" +#include "unk_02031734.h" + extern void *tempName_NNS_FndCreateExpHeapEx(void *param0, u32 param1, u32 param2); extern void *tempName_NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2); extern void thunk_FUN_020adc8c(); extern void FUN_020ADDF0(void *ptr1, void *ptr2); -extern u32 FUN_02031810(void); extern u32 FUN_020ADDC8(void *param0); extern void FUN_020AE82C(u32 param0, void *param1, u32 param2); extern u32 FUN_020ADDC0(void *param0); diff --git a/arm9/src/main.c b/arm9/src/main.c index c50fbaff..f7bcf7f0 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -12,6 +12,10 @@ #include "player_data.h" #include "sound.h" #include "timer3.h" +#include "unk_02031734.h" +#include "unk_0202F150.h" + + FS_EXTERN_OVERLAY(MODULE_52); FS_EXTERN_OVERLAY(MODULE_63); @@ -23,9 +27,6 @@ struct Unk2106FA0 gBacklightTop; extern BOOL OverlayManager_new(struct Unk21DBE18 *, s32 *, int); extern BOOL OverlayManager_Run(int); extern void OverlayManager_delete(int); -extern BOOL FUN_02033678(void); -extern u32 FUN_020335B8(void); -extern BOOL FUN_0202FB80(void); extern void InitSystemForTheGame(void); extern void InitGraphicMemory(void); @@ -218,7 +219,6 @@ THUMB_FUNC void FUN_02000EE8(void) } extern void FUN_0200E3A0(PMLCDTarget, int); -extern BOOL FUN_02032DAC(void); // No Return THUMB_FUNC void DoSoftReset(u32 parameter) diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index c728ddf1..02980c02 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -1,5 +1,7 @@ #include "unk_0202F150.h" #include "unk_02031480.h" +#include "unk_02031734.h" + struct { u8 unk00; @@ -9,7 +11,6 @@ struct vu8 UNK_02105D58 = 4; vu8 UNK_02105D59 = 4; -extern int FUN_02033534(); extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 *param2); extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2); @@ -25,10 +26,8 @@ extern void FUN_0202D824(u8 *param0); extern u32 FUN_0202E9E8(u32 param0); extern u32 FUN_0202F03C(); extern u32 FUN_0202EE24(); -extern void FUN_02031CDC(); extern void FUN_0202EBD0(u16 param0); extern void FUN_0202ED70(u32 param0); -extern void FUN_020335F4(u32 param0); extern void FUN_0202E538(); extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); @@ -52,7 +51,6 @@ extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); extern u32 MOD04_021D8018(); extern u32 FUN_0202EDF8(); extern u16 FUN_0202D19C(); -extern void FUN_020334E8(u32 param0, u32 param1); extern u32 FUN_0202EE60(); extern void FUN_0202F05C(); extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); @@ -537,7 +535,7 @@ THUMB_FUNC void FUN_0202FB58() } } -THUMB_FUNC u32 FUN_0202FB80() +THUMB_FUNC BOOL FUN_0202FB80() { FUN_02031CDC(); @@ -2021,9 +2019,9 @@ THUMB_FUNC u32 FUN_02030E7C(u16 param0) return 0; } -THUMB_FUNC u32 FUN_02030F20() +THUMB_FUNC s32 FUN_02030F20() { - u32 r4 = 0; + s32 r4 = 0; for (int i = 0; i < 8; i++) { if (FUN_02030E7C((u16)i) != 0) -- cgit v1.2.3 From f447c9f02c12d2434f48ccf82cedfab0ea16b5ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 1 May 2021 13:04:52 +0200 Subject: formatting --- arm9/src/unk_02031734.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c index 21dfad41..8c4c644c 100644 --- a/arm9/src/unk_02031734.c +++ b/arm9/src/unk_02031734.c @@ -2,9 +2,13 @@ const struct UnkStruct_02031734_const2 UNK_020EEC48 = { { (u32)FUN_02032B84, 0 } }; -const struct UnkStruct_02031734_const1 UNK_020EEC50 = { { (u32)FUN_0203213C, (u32)FUN_02032138, 0 } }; +const struct UnkStruct_02031734_const1 UNK_020EEC50 = { + { (u32)FUN_0203213C, (u32)FUN_02032138, 0 } +}; -const struct UnkStruct_02031734_const1 UNK_020EEC5C = { { (u32)FUN_02032234, (u32)FUN_0203234C, 0 } }; +const struct UnkStruct_02031734_const1 UNK_020EEC5C = { + { (u32)FUN_02032234, (u32)FUN_0203234C, 0 } +}; char UNK_02105D5C[] = "FREAK"; @@ -2061,7 +2065,8 @@ THUMB_FUNC void FUN_02033288(struct SaveBlock2 *sav2) if (UNK_021C5A00 == NULL) { FUN_02016828(3, 0xf, 0x100); - UNK_021C5A00 = (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); + UNK_021C5A00 = + (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734)); UNK_021C5A00->unk3F = 0x18; @@ -2089,7 +2094,8 @@ THUMB_FUNC void FUN_02033310(struct SaveBlock2 *sav2) if (UNK_021C5A00 == NULL) { FUN_02016828(3, 0xf, 0x100); - UNK_021C5A00 = (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); + UNK_021C5A00 = + (struct UnkStruct_02031734 *)AllocFromHeap(0xf, sizeof(struct UnkStruct_02031734)); MI_CpuFill8(UNK_021C5A00, 0, sizeof(struct UnkStruct_02031734)); UNK_021C5A00->unk3F = 0x19; UNK_021C5A00->unk46 = 1; -- cgit v1.2.3 From 5780e0c18c86e3eab6cc71695b4fe6629e43a32e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 1 May 2021 13:10:36 +0200 Subject: BOOL usage --- arm9/src/unk_0202F150.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index 02980c02..b8a42687 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -585,7 +585,7 @@ THUMB_FUNC BOOL FUN_0202FB80() FUN_020335F4(0); FUN_020315A4(); - return 1; + return TRUE; } THUMB_FUNC void FUN_0202FC60() -- cgit v1.2.3 From 62f567932f7e0eee6e8e354cde7e83472cb51887 Mon Sep 17 00:00:00 2001 From: fyren Date: Sat, 1 May 2021 23:07:29 +0200 Subject: fixing small issues in unk_0206015C --- arm9/src/unk_0206015C.c | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c index 07076506..3d295156 100644 --- a/arm9/src/unk_0206015C.c +++ b/arm9/src/unk_0206015C.c @@ -1,5 +1,41 @@ #include "unk_0206015C.h" +#include "heap.h" +#include "event_data.h" +#include "main.h" + +/* Note to future reader, there might be some errors + in the return type / parameters. They are right for this code + but they might not be for every code, please do not blindly + trust these prototypes if you are decompiling these functions. */ +extern THUMB_FUNC u32 MOD06_02244DB0(u32); +extern THUMB_FUNC void MOD06_02244DBC(void*); +extern THUMB_FUNC void MOD06_02244DC4(void*, void*); +extern THUMB_FUNC void MOD06_02244EF8(void*); +extern THUMB_FUNC void MOD06_02244F18(void*); +extern THUMB_FUNC BOOL MOD06_02244F24(void*); +extern THUMB_FUNC void MOD06_02244F2C(void*); +extern THUMB_FUNC void* MOD06_02245088(struct UnkSavStruct80 * savStruct); +extern THUMB_FUNC u32 MOD06_02245114(u32, struct UnkSavStruct80*); +extern THUMB_FUNC void MOD06_02245190(u32); +extern THUMB_FUNC void MOD06_02245198(u8, u32); +extern THUMB_FUNC u32 MOD06_022451F0(u32); + +extern THUMB_FUNC void FUN_020054C8(u32); +extern THUMB_FUNC void FUN_02049160(struct UnkStruct_0204639C*, u32); +extern THUMB_FUNC void FUN_0204AF84(struct UnkStruct_0204639C*); +extern THUMB_FUNC void FUN_0204AF3C(struct UnkStruct_0204639C *); +extern THUMB_FUNC void FUN_0204AFC8(struct UnkStruct_0204639C *); +extern THUMB_FUNC void FUN_0204B00C(struct UnkStruct_0204639C *); +extern THUMB_FUNC void FUN_0204C1B4(struct UnkStruct_0204639C*, u32,u32,u32,u32,u32,u32,u32); +extern THUMB_FUNC u32 FUN_020553A0(u32); +extern THUMB_FUNC void FUN_0205889C(u32, u32); +extern THUMB_FUNC void FUN_0205F1C4(struct ScriptState *); +extern THUMB_FUNC void FUN_0205F1D4(struct ScriptState *); +extern THUMB_FUNC void FUN_0206367C(struct UnkSavStruct80 *, u32); + + + THUMB_FUNC void FUN_0206015C(struct UnkSavStruct80 *savStruct) { struct UnkStruct_0206015C *unkStruct = AllocFromHeapAtEnd(0xb, 0x10); @@ -104,10 +140,10 @@ THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C *unkStruct0) MOD06_02245190(unkStruct1->unk4); MOD06_02244DBC(unkStruct1->unk0); FreeToHeap(unkStruct1); - return 1; + return TRUE; default: break; } - return 0; -} \ No newline at end of file + return FALSE; +} -- cgit v1.2.3 From aaaa27e731b1a39fbb35e21ff88f4944d74c9f1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 2 May 2021 09:54:51 +0200 Subject: replace nonmatchings with an inline function --- arm9/src/unk_02031734.c | 215 ++++-------------------------------------------- 1 file changed, 14 insertions(+), 201 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c index 8c4c644c..01d85ffb 100644 --- a/arm9/src/unk_02031734.c +++ b/arm9/src/unk_02031734.c @@ -86,7 +86,7 @@ THUMB_FUNC void FUN_02031734(struct SaveBlock2 *sav2, u8 param1) UNK_021C5A00->unk48 = 0; UNK_021C5A00->unk3F = param1; - FUN_020312BC(&UNK_021C5A00->unk0C); + FUN_020312BC(UNK_021C5A00->unk0C); FUN_0202D8D0(0, 0, 0); if (param1 != 9 && param1 != 0x11 && param1 != 0xf) @@ -451,10 +451,10 @@ THUMB_FUNC void FUN_02031CDC() } } -THUMB_FUNC void FUN_02031D20(void (*param0)(), u16 param1) +THUMB_FUNC void FUN_02031D20(void (*param0)(), u32 param1) { UNK_021C5A00->unk24 = param0; - UNK_021C5A00->unk3A = param1; + UNK_021C5A00->unk3A = (u16)param1; } THUMB_FUNC void FUN_02031D30() @@ -482,44 +482,11 @@ THUMB_FUNC void FUN_02031D30() return; } -#ifdef NONMATCHING - UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; - u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x14) >> 32; + u32 r1 = compute(UNK_021C5A00->unk0C, 0x14); UNK_021C5A00->unk43 = 0; FUN_02031D20(FUN_020320C4, r1 + 0x14); -#else - asm( - // clang-format off - ldr r0, =UNK_021C5A00 - ldr r5, [r0, #0x0] - add r4, r5, #0x0 - add r4, #0xc - ldr r0, [r4, #0x8] - ldr r1, [r4, #0xc] - ldr r2, [r5, #0xc] - ldr r3, [r4, #0x4] - bl _ll_mul - ldr r2, [r4, #0x10] - ldr r3, [r4, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r5, #0xc] - str r3, [r4, #0x4] - add r0, r3, #0x0 - mov r1, #0x0 - mov r2, #0x14 - mov r3, #0x0 - bl _ll_mul - mov r0, #0x0 - add r5, #0x43 - strb r0, [r5, #0x0] - ldr r0, =FUN_020320C4 - add r1, #0x14 - bl FUN_02031D20 - pop {r3-r5, pc} // clang-format on - ); -#endif + return; } if (FUN_0202F950(1, 1, 0x1F4) != 0) @@ -551,50 +518,14 @@ THUMB_FUNC void FUN_02031E08() if (FUN_0202F950(0, 1, 0x1F4) != 0) { -#ifdef NONMATCHING - UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; - u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x40) >> 32; + u32 r1 = compute(UNK_021C5A00->unk0C, 0x40); if (UNK_021C5A00->unk38 != 0) { - r1 = UNK_021C5A00->unk38 << 6; + r1 = (u32)(UNK_021C5A00->unk38 << 6); UNK_021C5A00->unk38 = 0; } FUN_02031D20(FUN_02031EE0, r1); -#else - asm( - // clang-format off - ldr r0, =UNK_021C5A00 - ldr r5, [r0, #0x0] - add r4, r5, #0x0 - add r4, #0xc - ldr r0, [r4, #0x8] - ldr r1, [r4, #0xc] - ldr r2, [r5, #0xc] - ldr r3, [r4, #0x4] - bl _ll_mul - ldr r2, [r4, #0x10] - ldr r3, [r4, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r5, #0xc] - mov r1, #0x0 - str r3, [r4, #0x4] - lsr r0, r3, #0x1a - lsl r1, r1, #0x6 - orr r1, r0 - ldrh r0, [r5, #0x38] - cmp r0, #0x0 - beq _02031E76 - lsl r1, r0, #0x6 - mov r0, #0x0 - strh r0, [r5, #0x38] - _02031E76: - ldr r0, =FUN_02031EE0 - bl FUN_02031D20 - // clang-format on - ); -#endif } } } @@ -606,39 +537,9 @@ THUMB_FUNC void FUN_02031E8C() if (FUN_0202F950(0, 0, 0x1F4) != 0) { -#ifdef NONMATCHING - UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; - u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x20) >> 32; + u32 r1 = compute(UNK_021C5A00->unk0C, 0x20); FUN_02031D20(FUN_02031EE0, r1 + 0x10); -#else - asm( - // clang-format off - ldr r0, =UNK_021C5A00 - ldr r4, [r0, #0x0] - add r5, r4, #0x0 - add r5, #0xc - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #0x4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - mov r1, #0x0 - lsr r2, r3, #0x1b - lsl r1, r1, #0x5 - orr r1, r2 - ldr r0, =FUN_02031EE0 - add r1, #0x10 - str r3, [r5, #0x4] - bl FUN_02031D20 - // clang-format on - ); -#endif } } } @@ -747,44 +648,10 @@ THUMB_FUNC void FUN_02032058() FUN_02031268(1); if (FUN_0202F918(0, UNK_021C5A00->unk43, 0x1F4, 1) != 0) { -#ifdef NONMATCHING - UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; - u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x14) >> 32; + u32 r1 = compute(UNK_021C5A00->unk0C, 0x14); UNK_021C5A00->unk43 = 0; FUN_02031D20(FUN_020320C4, r1 + 0x14); -#else - asm( - // clang-format off - ldr r0, =UNK_021C5A00 - ldr r5, [r0, #0x0] - add r4, r5, #0x0 - add r4, #0xc - ldr r0, [r4, #0x8] - ldr r1, [r4, #0xc] - ldr r2, [r5, #0xc] - ldr r3, [r4, #0x4] - bl _ll_mul - ldr r2, [r4, #0x10] - ldr r3, [r4, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r5, #0xc] - str r3, [r4, #0x4] - add r0, r3, #0x0 - mov r1, #0x0 - mov r2, #0x14 - mov r3, #0x0 - bl _ll_mul - mov r0, #0x0 - add r5, #0x43 - strb r0, [r5, #0x0] - ldr r0, =FUN_020320C4 - add r1, #0x14 - bl FUN_02031D20 - // clang-format on - ); -#endif } } } @@ -1092,37 +959,12 @@ THUMB_FUNC void FUN_02032510() { if (FUN_0202EE0C() != 0 && FUN_0202F918(0, UNK_021C5A00->unk43, 0x200, 1) != 0) { -#ifdef NONMATCHING - UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; + // the compiler optimizes away the result of this function because it's not used, so any + // second parameter value matches + compute(UNK_021C5A00->unk0C, 0); + FUN_0202FA10(); UNK_021C5A00->unk43 = 0; -#else - asm( - // clang-format off - ldr r0, =UNK_021C5A00 - ldr r4, [r0, #0x0] - add r5, r4, #0x0 - add r5, #0xc - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #0x4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - str r3, [r5, #0x4] - bl FUN_0202FA10 - ldr r0, =UNK_021C5A00 - mov r1, #0x0 - ldr r0, [r0, #0x0] - add r0, #0x43 - strb r1, [r0, #0x0] - // clang-format on - ); -#endif FUN_02031D20(FUN_02032578, 0x2710); } @@ -1159,38 +1001,9 @@ THUMB_FUNC void FUN_020325D0() { FUN_0202FA10(); -#ifdef NONMATCHING - UNK_021C5A00->unk0C = UNK_021C5A00->unk0C * UNK_021C5A00->unk14 + UNK_021C5A00->unk1C; - u32 r1 = ((s64)((u64)(UNK_021C5A00->unk0C) >> 32) * 0x20) >> 32; + u32 r1 = compute(UNK_021C5A00->unk0C, 0x20); FUN_02031D20(FUN_020324C8, r1); -#else - asm( - // clang-format off - ldr r0, =UNK_021C5A00 - ldr r4, [r0, #0x0] - add r5, r4, #0x0 - add r5, #0xc - ldr r0, [r5, #0x8] - ldr r1, [r5, #0xc] - ldr r2, [r4, #0xc] - ldr r3, [r5, #0x4] - bl _ll_mul - ldr r2, [r5, #0x10] - ldr r3, [r5, #0x14] - add r0, r2, r0 - adc r3, r1 - str r0, [r4, #0xc] - mov r1, #0x0 - ldr r0, =FUN_020324C8 - lsr r2, r3, #0x1b - lsl r1, r1, #0x5 - orr r1, r2 - str r3, [r5, #0x4] - bl FUN_02031D20 - // clang-format on - ); -#endif } } -- cgit v1.2.3 From 5618acfd092460c1acb38ed0a56ae161911cdac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 2 May 2021 09:55:35 +0200 Subject: use boolean in while loops --- arm9/src/unk_02031734.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c index 01d85ffb..a9470c49 100644 --- a/arm9/src/unk_02031734.c +++ b/arm9/src/unk_02031734.c @@ -2102,7 +2102,7 @@ THUMB_FUNC u8 FUN_020335B8() THUMB_FUNC void FUN_020335D0(s32 param0) { FUN_02033F70(0, 1, param0); - while (1) + while (TRUE) { } } @@ -2110,7 +2110,7 @@ THUMB_FUNC void FUN_020335D0(s32 param0) THUMB_FUNC void FUN_020335E0() { FUN_02033F70(0, 4, 0); - while (1) + while (TRUE) { } } -- cgit v1.2.3 From a036306c5554d2d7088c07ea0c08c7b718a6508a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 2 May 2021 10:04:55 +0200 Subject: fix line endings --- arm9/src/unk_02031734.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c index a9470c49..ee24af39 100644 --- a/arm9/src/unk_02031734.c +++ b/arm9/src/unk_02031734.c @@ -2181,4 +2181,4 @@ THUMB_FUNC u32 FUN_020336A0(u8 param0) } return 0; -} \ No newline at end of file +} -- cgit v1.2.3 From fe7f18002c7987ef744b5024151ca0903e4317fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sun, 2 May 2021 10:14:04 +0200 Subject: cleanup header --- arm9/src/unk_02031734.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'arm9/src') diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c index ee24af39..3222232c 100644 --- a/arm9/src/unk_02031734.c +++ b/arm9/src/unk_02031734.c @@ -1,4 +1,10 @@ +#include "global.h" #include "unk_02031734.h" +#include "MI_memory.h" +#include "game_init.h" +#include "heap.h" +#include "player_data.h" +#include "unk_0202F150.h" const struct UnkStruct_02031734_const2 UNK_020EEC48 = { { (u32)FUN_02032B84, 0 } }; -- cgit v1.2.3 From 6120ebe7e78f500432708631891feb32bc974be2 Mon Sep 17 00:00:00 2001 From: tgsm Date: Mon, 3 May 2021 08:19:11 -0400 Subject: Decompile scrcmd_21 -> scrcmd_flags --- arm9/src/scrcmd_flags.c | 284 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 arm9/src/scrcmd_flags.c (limited to 'arm9/src') diff --git a/arm9/src/scrcmd_flags.c b/arm9/src/scrcmd_flags.c new file mode 100644 index 00000000..c0f6a519 --- /dev/null +++ b/arm9/src/scrcmd_flags.c @@ -0,0 +1,284 @@ +#include "scrcmd.h" +#include "event_data.h" +#include "pokedex.h" + +extern void* FUN_02034E20(void*); +extern void* FUN_02034E30(void*); +extern BOOL FUN_02055474(void*); +extern void FUN_02055488(void*, u32); +extern void FUN_0205ECD4(struct ScriptState* state); +extern BOOL FUN_0205ECE0(struct ScriptState* state); +extern void FUN_0205ECFC(struct ScriptState* state); +extern BOOL FUN_0205ED0C(struct ScriptState* state); +extern void FUN_0205ED1C(struct ScriptState* state); +extern void FUN_0205ED2C(struct ScriptState* state); +extern BOOL FUN_0205ED3C(struct ScriptState* state); +extern void FUN_0205ED4C(struct ScriptState* state); +extern void FUN_0205ED5C(struct ScriptState* state); +extern BOOL FUN_0205ED6C(struct ScriptState* state); +extern BOOL FUN_0205F264(struct ScriptState* state, u32); +extern void FUN_0205F274(struct ScriptState* state); +extern void FUN_0205F284(struct ScriptState* state); +extern BOOL FUN_0205F294(struct ScriptState* state); +extern void FUN_0205F2A4(struct ScriptState* state); +extern void FUN_0205F2B4(struct ScriptState* state); +extern BOOL FUN_0205F2C4(struct ScriptState* state); + +const u8 UNK_020F457F[8] = { + 0, 1, 2, 3, 4, 5, 6, 7, +}; + +THUMB_FUNC BOOL ScrCmd_HasSinnohDex(struct ScriptContext* ctx) +{ + struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = (u16)Pokedex_GetSinnohDexFlag(pokedex); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GiveSinnohDex(struct ScriptContext* ctx) +{ + struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2); + + Pokedex_SetSinnohDexFlag(pokedex); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0159(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + void* unk_sav_ptr = FUN_02034E30(ctx->unk80->saveBlock2); + void* unk = FUN_02034E20(unk_sav_ptr); + + *ret_ptr = (u16)FUN_02055474(unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk015A(struct ScriptContext* ctx) +{ + void* unk_sav_ptr = FUN_02034E30(ctx->unk80->saveBlock2); + void* unk = FUN_02034E20(unk_sav_ptr); + + FUN_02055488(unk, 1); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasBadge(struct ScriptContext* ctx) +{ + u16 badge_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + GF_ASSERT(badge_no < 8); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)PlayerProfile_TestBadgeFlag(player, badge_no); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GiveBadge(struct ScriptContext* ctx) +{ + u16 badge_no = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + GF_ASSERT(badge_no < 8); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + + PlayerProfile_SetBadgeFlag(player, badge_no); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk015E(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)FUN_0205ECE0(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetTotalEarnedBadges(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u16 i; + u16 badges; + for (i = 0, badges = 0; i < 8; i++) + { + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + BOOL has_badge = PlayerProfile_TestBadgeFlag(player, UNK_020F457F[i]); + if (has_badge == TRUE) + { + badges++; + } + } + + *ret_ptr = badges; + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk015F(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ECD4(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0160(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)FUN_0205ED3C(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0161(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ED1C(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_Unk0162(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ED2C(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_Unk0163(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)FUN_0205ED6C(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0164(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ED4C(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_Unk0165(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ED5C(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_Unk0166(struct ScriptContext* ctx) +{ + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + *ret_ptr = (u16)FUN_0205ED0C(state); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0167(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + + FUN_0205ECFC(state); + + return 0; +} + +THUMB_FUNC BOOL ScrCmd_Unk01CF(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u8 unk = ScriptReadByte(ctx); + u16* ret_ptr; + + switch (unk) + { + case 1: + FUN_0205F264(state, 1); + break; + case 0: + FUN_0205F264(state, 0); + break; + case 2: + ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *ret_ptr = (u16)FUN_0205F264(state, 2); + break; + default: + GF_ASSERT(FALSE); + break; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01D0(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u8 unk = ScriptReadByte(ctx); + u16* ret_ptr; + + switch (unk) + { + case 1: + FUN_0205F274(state); + break; + case 0: + FUN_0205F284(state); + break; + case 2: + ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *ret_ptr = (u16)FUN_0205F294(state); + break; + default: + GF_ASSERT(FALSE); + break; + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk01D1(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u8 unk = ScriptReadByte(ctx); + u16* ret_ptr; + + switch (unk) + { + case 1: + FUN_0205F2A4(state); + break; + case 0: + FUN_0205F2B4(state); + break; + case 2: + ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + *ret_ptr = (u16)FUN_0205F2C4(state); + break; + default: + GF_ASSERT(FALSE); + break; + } + + return FALSE; +} -- cgit v1.2.3 From fead56db333c9eb3024ad4483c26a11a66ffe9f1 Mon Sep 17 00:00:00 2001 From: tgsm Date: Wed, 5 May 2021 14:10:45 -0400 Subject: Decompile unk_0208890C --- arm9/src/unk_0208890C.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 arm9/src/unk_0208890C.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0208890C.c b/arm9/src/unk_0208890C.c new file mode 100644 index 00000000..0bc8803f --- /dev/null +++ b/arm9/src/unk_0208890C.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "bag.h" +#include "heap.h" +#include "main.h" +#include "MI_memory.h" +#include "player_data.h" +#include "script.h" +#include "unk_0208890C.h" + +extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80*); +extern void* FUN_02028048(struct SaveBlock2* sav2); +extern void FUN_020373D4(struct UnkSavStruct80*, struct Unk21DBE18*, void*); +extern BOOL FUN_020889B0(struct UnkStruct_02006234*, u32*); +extern BOOL FUN_02088A00(struct UnkStruct_02006234*, u32*); +extern BOOL FUN_02088A78(struct UnkStruct_02006234*, u32*); + +const struct Unk21DBE18 UNK_020FD6E4 = { + FUN_020889B0, + FUN_02088A00, + FUN_02088A78, + 0xFFFFFFFF, +}; + +THUMB_FUNC struct UnkStruct_0208890C* FUN_0208890C(void* a0, struct SaveBlock2* sav2, u32 heap_id, void* a3) +{ + struct UnkStruct_0208890C* ret = AllocFromHeap(heap_id, sizeof(struct UnkStruct_0208890C)); + MI_CpuFill8(ret, 0, sizeof(struct UnkStruct_0208890C)); + + ret->sav2 = sav2; + ret->unk8 = FUN_02028048(sav2); + ret->player = Sav2_PlayerData_GetProfileAddr(sav2); + ret->bag = Sav2_Bag_get(sav2); + ret->options = Sav2_PlayerData_GetOptionsAddr(sav2); + ret->unk1C = a3; + ret->unk4 = a0; + + return ret; +} + +THUMB_FUNC void FUN_02088950(struct UnkSavStruct80* unk, struct UnkStruct_0208890C* unk2) +{ + FUN_020373D4(unk, (struct Unk21DBE18*)&UNK_020FD6E4, unk2); +} + +THUMB_FUNC struct UnkStruct_0208890C* FUN_02088960(struct UnkSavStruct80* unk, void* a1, u32 heap_id) +{ + struct SaveBlock2* sav2 = ScriptEnvironment_GetSav2Ptr(unk); + struct UnkStruct_0208890C* ret = FUN_0208890C(a1, sav2, heap_id, unk->unk98); + + FUN_02088950(unk, ret); + + return ret; +} -- cgit v1.2.3 From 5cdb95f4e0fb866fdbf219ab112d69be21c59a2e Mon Sep 17 00:00:00 2001 From: tgsm Date: Fri, 7 May 2021 13:32:25 -0400 Subject: Decompile scrcmd_8 --- arm9/src/scrcmd_8.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_020286F8.c | 9 +++-- 2 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 arm9/src/scrcmd_8.c (limited to 'arm9/src') diff --git a/arm9/src/scrcmd_8.c b/arm9/src/scrcmd_8.c new file mode 100644 index 00000000..ba35b302 --- /dev/null +++ b/arm9/src/scrcmd_8.c @@ -0,0 +1,87 @@ +#include "scrcmd.h" +#include "math_util.h" +#include "unk_020286F8.h" + +extern void* FUN_02039438(struct UnkSavStruct80*, u8 idx); + +extern void FUN_020385CC(struct UnkStruct_0204639C*, u32, u32, u32, u32, u16*, u16* ret_ptr); +extern BOOL FUN_020612EC(struct UnkSavStruct80*); +extern BOOL FUN_020612F8(struct UnkSavStruct80*); + +THUMB_FUNC BOOL ScrCmd_Unk021D(struct ScriptContext* ctx) +{ + struct ScrStrBufs** mgr = FUN_02039438(ctx->unk80, 15); + struct UnkSaveStruct_020286F8* unk_sav_ptr = FUN_0202881C(ctx->unk80->saveBlock2); + struct SaveBlock2* sav2 = ctx->unk80->saveBlock2; + + u16 unk = ScriptReadHalfword(ctx); + switch (unk) + { + case 0: { + u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = (u16)FUN_02028828(unk_sav_ptr, unk_var); + return FALSE; + } + case 1: { + u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *ret_ptr = (u16)FUN_02028840(unk_sav_ptr, unk_var); + return FALSE; + } + case 2: { + u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferEasyChatWord(*mgr, sav2, unk_var, idx, 0); + break; + } + case 3: { + u16 unk_var = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + BufferEasyChatWord(*mgr, sav2, unk_var, idx, 1); + break; + } + case 4: { + u16* unk_str_ptr = FUN_020287A8(unk_sav_ptr, 0, 0); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + FUN_020385CC(ctx->unk74, 5, 0, 7, 0, unk_str_ptr, ret_ptr); + return TRUE; + } + case 5: { + u16 src_idx = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + BOOL unk_bool = FUN_02028828(unk_sav_ptr, 1); + + FUN_02028700(unk_sav_ptr, src_idx, 1); + if (unk_bool != FALSE) + { + FUN_020612F8(ctx->unk80); + } + + return FALSE; + } + case 6: { + struct String* player_name = String_ctor(64, 32); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + + PlayerName_FlatToString(player, player_name); + FUN_020287C0(unk_sav_ptr, 0, 1, player_name); + FUN_020287EC(unk_sav_ptr, 0, PlayerProfile_GetTrainerGender(player)); + FUN_02028810(unk_sav_ptr, 0, 2); + FUN_02028788(unk_sav_ptr, 0, MTRandom()); + + String_dtor(player_name); + + FUN_02028700(unk_sav_ptr, 0, 1); + FUN_020612EC(ctx->unk80); + + break; + } + } + + return FALSE; +} diff --git a/arm9/src/unk_020286F8.c b/arm9/src/unk_020286F8.c index f54d1e2e..a23a94ff 100644 --- a/arm9/src/unk_020286F8.c +++ b/arm9/src/unk_020286F8.c @@ -75,9 +75,9 @@ void FUN_020287C0(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j, struct Stri CopyStringToU16Array(k, ptr[i].unk_10, 8); } -void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j) +void FUN_020287EC(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j) { - ptr[i].unk_20 = j; + ptr[i].unk_20 = (u8)j; } u8 FUN_020287F8(struct UnkSaveStruct_020286F8 * ptr, u32 i) @@ -90,10 +90,9 @@ u8 FUN_02028804(struct UnkSaveStruct_020286F8 * ptr, u32 i) return ptr[i].unk_21; } - -void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u8 j) +void FUN_02028810(struct UnkSaveStruct_020286F8 * ptr, u32 i, u32 j) { - ptr[i].unk_21 = j; + ptr[i].unk_21 = (u8)j; } struct UnkSaveStruct_020286F8 * FUN_0202881C(struct SaveBlock2 * sav2) -- cgit v1.2.3 From 0d99c3cbc17514149081de794f2d5ec55e7ab88b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 8 May 2021 12:04:27 +0200 Subject: decompile unk_0202E29C.s --- arm9/src/unk_0202E29C.c | 1110 +++++++++++++++++++++++++++++++++++++++++++++++ arm9/src/unk_0202F150.c | 8 +- arm9/src/unk_02031734.c | 2 +- 3 files changed, 1115 insertions(+), 5 deletions(-) create mode 100644 arm9/src/unk_0202E29C.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0202E29C.c b/arm9/src/unk_0202E29C.c new file mode 100644 index 00000000..678f6fe3 --- /dev/null +++ b/arm9/src/unk_0202E29C.c @@ -0,0 +1,1110 @@ +#include "global.h" +#include "unk_0202E29C.h" +#include "MI_memory.h" +#include "OS_cache.h" +#include "game_init.h" +#include "heap.h" +#include "mail_message.h" +#include "player_data.h" +#include "unk_0202D858.h" +#include "unk_0202F150.h" +#include "unk_02031734.h" + +struct UnkStruct_const +{ + u8 unk0[6]; +}; + +const struct UnkStruct_const UNK_020EEC40 = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } }; + +struct +{ + u16 unk0; + u32 unk4; + struct UnkStruct2 *unk8; + +} UNK_021C59E8; + +extern u32 FUN_0202CEEC(); +extern u32 FUN_02023AC4(); +extern u32 FUN_02090DB8(u32 param0, void (*param1)(u32, u32), u32 param2); +extern void FUN_02090CC8(void (*param0)(), u32 param1); +extern void FUN_0202CE64(void *param0); +extern void FUN_0202CB70(u32 param0); +extern void FUN_0202D2F4(); +extern void FUN_0202D0A0(void (*param0)(u32, u8 *, u32), u32 param1); +extern u32 FUN_0202CBD4(); +extern u32 FUN_0202CBFC(); +extern u32 FUN_0202C570(void (*param0)(struct UnkStruct2_sub *, u32), u8 *param1, u32 param2); +extern u32 FUN_0202D21C(); +extern void FUN_0202C770(); +extern u32 FUN_0202D1E4(); +extern void FUN_0202D100(); +extern u32 FUN_0202D1C8(); +extern u32 FUN_0202D200(); +extern void FUN_0202C4D8(u32 param0, u8 *param1, u32 param2); +extern void FUN_0202D034(u32 param0, struct UnkStruct2_sub *param1); +extern u32 FUN_0202D358(); +extern void FUN_0202CB7C(void *param0, u32 param1); +extern void FUN_0202D240(void *param0, u32 size, u32 param2, u32 param3); +extern void FUN_0202DF54(); +extern u16 FUN_0202D19C(); +extern u32 FUN_0202CBE8(); +extern u32 FUN_0202D178(); +extern u16 FUN_0202CDA4(); +extern void FUN_0202CF84(u32 param0, u16 param1, u16 param2, u32 param3, u32 param4, u32 param5); +extern u32 FUN_0202CB8C(); +extern u16 WM_GetDispersionBeaconPeriod(); +extern BOOL FUN_0202D2D0(); + +THUMB_FUNC void FUN_0202E29C(struct PlayerData *player_data) +{ + if (UNK_021C59E8.unk8 == NULL) + { + UNK_021C59E8.unk8 = AllocFromHeap(0xf, sizeof(struct UnkStruct2)); + MI_CpuFill8(UNK_021C59E8.unk8, 0, sizeof(struct UnkStruct2)); + + UNK_021C59E8.unk8->unkCA4 = AllocFromHeap(0xf, FUN_0202CEEC()); + MI_CpuFill8(UNK_021C59E8.unk8->unkCA4, 0, FUN_0202CEEC()); + + UNK_021C59E8.unk8->unkCBC = AllocFromHeap(0xf, FUN_02023AC4()); + MI_CpuFill8(UNK_021C59E8.unk8->unkCBC, 0, FUN_02023AC4()); + + UNK_021C59E8.unk8->unkCC0 = 0x333; + UNK_021C59E8.unk8->unkCB8 = player_data; + + MailMsg_init(&UNK_021C59E8.unk8->unkCA8); + FUN_0202E500(); + } +} + +THUMB_FUNC BOOL FUN_0202E344() +{ + if (UNK_021C59E8.unk8 != NULL) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0202E358(u8 *param0, u8 *param1, s32 param2) +{ + int i = 0; + while (i < param2) + { + if (*param0 != *param1) + { + return FALSE; + } + + i++; + param0++; + param1++; + } + + return TRUE; +} + +THUMB_FUNC void FUN_0202E380(struct UnkStruct2_sub *param0, u32 param1) +{ +#pragma unused(param1) + s32 r5 = FUN_02033534(); + u8 r6 = FUN_0203354C(); + struct UnkStruct2_sub4 *r4 = ¶m0->unk50; + + if (r5 != 0xe) + { + if (FUN_0202D8B0(r4->unk04) == 0 || FUN_0202D8B0(r5) == 0) + { + if (r4->unk30[0x24] != 0) + { + if (r4->unk04 == 0xa) + { + return; + } + } + + if (r4->unk04 != r5) + { + return; + } + } + } + + if (r5 != 0xe) + { + if (r4->unk05 != r6) + { + return; + } + } + + for (int i = 0; i < 0x10; i++) + { + if (UNK_021C59E8.unk8->unkC84[i] == 0) + { + continue; + } + + if (!FUN_0202E358(UNK_021C59E8.unk8->unk054[i].unk04, param0->unk04, 6)) + { + continue; + } + + UNK_021C59E8.unk8->unkC84[i] = 0x96; + + MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct2_sub)); + return; + } + + int i; + for (i = 0; i < 0x10; i++) + { + if (UNK_021C59E8.unk8->unkC84[i] == 0) + { + break; + } + } + + if (i < 0x10) + { + UNK_021C59E8.unk8->unkC84[i] = 0x96; + MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct2_sub)); + UNK_021C59E8.unk8->unkCB4 = 1; + } +} + +THUMB_FUNC void FUN_0202E470(u32 param0, u32 param1) +{ +#pragma unused(param0) + if (param1 != 0) + { + OS_Terminate(); + } + + UNK_021C59E8.unk4 = 2; +} + +THUMB_FUNC void FUN_0202E488() +{ + UNK_021C59E8.unk4 = 0; + FUN_02016454(4); +} + +THUMB_FUNC void FUN_0202E49C() +{ + FUN_02016444(4); + UNK_021C59E8.unk4 = 1; + if (FUN_02090DB8(8, FUN_0202E470, 0) != 1) + { + OS_Terminate(); + } +} + +THUMB_FUNC BOOL FUN_0202E4C8() +{ + if (UNK_021C59E8.unk4 == 2) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0202E4DC() +{ + if (UNK_021C59E8.unk4 != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_0202E4F0() +{ + FUN_02090CC8(FUN_0202E488, 0); +} + +THUMB_FUNC void FUN_0202E500() +{ + UNK_021C59E8.unk8->unkCB0 = 0; + FUN_0202CE64(UNK_021C59E8.unk8->unkCA4 + (32 - (u32)(UNK_021C59E8.unk8->unkCA4) % 32)); + + FUN_0202CB70(UNK_021C59E8.unk8->unkCC0); +} + +THUMB_FUNC void FUN_0202E538() +{ + for (int i = 0; i < 0x10; i++) + { + UNK_021C59E8.unk8->unkC84[i] = 0; + } + + MI_CpuFill8(UNK_021C59E8.unk8->unk054, 0, 0xC00); +} + +THUMB_FUNC void FUN_0202E56C(u32 param0) +{ + UNK_021C59E8.unk8->unkDAD = + (UNK_021C59E8.unk8->unkDAD & ~8 | (u32)((u8)param0 << 0x1f) >> 0x1c); +} + +THUMB_FUNC void FUN_0202E594() +{ + UNK_021C59E8.unk8->unkCB4 = 0; + + UNK_021C59E8.unk8->unkDAD &= ~1; + + UNK_021C59E8.unk8->unkDAD &= ~4; + + UNK_021C59E8.unk8->unkDAA = 0; + + UNK_021C59E8.unk8->unkDAD &= ~0x10; + + UNK_021C59E8.unk8->unkDAC = 0; + + UNK_021C59E8.unk8->unkDAB = 0; +} + +THUMB_FUNC BOOL FUN_0202E5F8(u32 param0, u32 param1, u32 param2) +{ +#pragma unused(param0) + FUN_0202E594(); + FUN_0202E56C(param1); + FUN_0202D2F4(); + + if (UNK_021C59E8.unk8->unkDAB == 0) + { + FUN_0202D0A0(FUN_020303BC, 0xe); + UNK_021C59E8.unk8->unkDAB = 1; + } + + UNK_021C59E8.unk8->unkDAD = + (UNK_021C59E8.unk8->unkDAD & ~0x20 | (u32)((u8)param2 << 0x1f) >> 0x1a); + if (FUN_0202CBD4() == 1 && FUN_0202CBFC() != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u32 FUN_0202E66C(u32 param0, u32 param1) +{ +#pragma unused(param0) + FUN_0202E594(); + if (param1 != 0) + { + FUN_0202E538(); + } + + if (UNK_021C59E8.unk8->unkDAB == 0) + { + FUN_0202D0A0(FUN_02030238, 0xe); + UNK_021C59E8.unk8->unkDAB = 1; + } + + if (FUN_0202CBD4() == 1) + { + struct UnkStruct_const st0 = UNK_020EEC40; + + if (FUN_0202C570(FUN_0202E380, st0.unk0, 0) != 0) + { + return 1; + } + } + + return 0; +} + +THUMB_FUNC u32 FUN_0202E6F0() +{ + if (UNK_021C59E8.unk8 == NULL) + { + return 1; + } + + switch (UNK_021C59E8.unk8->unkDAC) + { + case 0: + if (FUN_0202D21C() != 0) + { + FUN_0202C770(); + UNK_021C59E8.unk8->unkDAC = 1; + } + else if (FUN_0202D1E4() == 0) + { + FUN_0202D100(); + UNK_021C59E8.unk8->unkDAC = 2; + } + break; + + case 1: + if (FUN_0202D1E4() == 0) + { + FUN_0202D100(); + UNK_021C59E8.unk8->unkDAC = 2; + } + break; + case 2: + if (FUN_0202D1C8() != 0) + { + return 1; + } + + if (FUN_0202D200() != 0) + { + UNK_021C59E8.unk8->unkDAC = 1; + } + break; + } + + return 0; +} + +THUMB_FUNC BOOL FUN_0202E784() +{ + if (UNK_021C59E8.unk8 != NULL && UNK_021C59E8.unk8->unkDAA == 0) + { + UNK_021C59E8.unk8->unkDAA = 1; + FUN_0202D100(); + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_0202E7B0(u32 param0) +{ + if (UNK_021C59E8.unk8 != NULL) + { + if (param0 != 0) + { + UNK_021C59E8.unk8->unkDAA = 2; + return; + } + + UNK_021C59E8.unk8->unkDAA = 0; + FUN_0202E500(); + } +} + +THUMB_FUNC void FUN_0202E7D8() +{ + FreeToHeap(UNK_021C59E8.unk8->unkCBC); + FreeToHeap(UNK_021C59E8.unk8->unkCA4); + FreeToHeap(UNK_021C59E8.unk8); + + UNK_021C59E8.unk8 = NULL; +} + +THUMB_FUNC u32 FUN_0202E810() +{ + if (FUN_02030F40() == 0) + { + return 0; + } + + u32 count = 0; + for (int i = 0; i < 0x10; i++) + { + if (UNK_021C59E8.unk8->unkC84[i] != 0) + { + count++; + } + } + + return count; +} + +THUMB_FUNC s32 FUN_0202E844(u32 param0) +{ + int i; + u32 count = 0; + for (i = 0; i < 0x10; i++) + { + if (UNK_021C59E8.unk8->unkC84[i] == 0) + { + continue; + } + + if (count == param0) + { + return i; + } + + count++; + } + + ErrorHandling(); + return 0; +} + +THUMB_FUNC u8 FUN_0202E878() +{ + return UNK_021C59E8.unk8->unkCB4; +} + +THUMB_FUNC void FUN_0202E88C() +{ + UNK_021C59E8.unk8->unkCB4 = 0; +} + +THUMB_FUNC s32 FUN_0202E8A0(s32 param0) +{ + if (UNK_021C59E8.unk8->unkC84[param0] != 0) + { + if (UNK_021C59E8.unk8->unk054[param0].unk50.unk06 == 0) + { + return 1; + } + else + { + return UNK_021C59E8.unk8->unk054[param0].unk50.unk06; + } + } + + return 0; +} + +THUMB_FUNC s32 FUN_0202E8D0(s32 param0) +{ + for (int i = 0xf; i >= 0; i--) + { + s32 ret = FUN_0202E8A0(i); + if (ret > param0 && 8 > ret) + { + return i; + } + } + + return -1; +} + +THUMB_FUNC s32 FUN_0202E8F4() +{ + if (FUN_0202E810() == 0) + { + return -1; + } + + for (int i = 0xf; i >= 0; i--) + { + if (UNK_021C59E8.unk8->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59E8.unk8->unk054[i].unk04)) + { + s32 ret2 = FUN_0202E8A0(i); + if (ret2 > 1 && ret2 < 8) + { + return i; + } + } + } + + return -1; +} + +THUMB_FUNC s32 FUN_0202E950() +{ + if (FUN_0202E810() == 0) + { + return -1; + } + + for (int i = 0xf; i >= 0; i--) + { + if (UNK_021C59E8.unk8->unkC84[i] != 0 && FUN_0202EFE4(UNK_021C59E8.unk8->unk054[i].unk04)) + { + + return i; + } + } + + s32 ret = FUN_0202E8D0(1); + if (ret == -1) + { + return FUN_0202E8D0(0); + } + + return ret; +} + +THUMB_FUNC void FUN_0202E9AC(u32 param0, struct PlayerData *player_data) +{ + int i; + u32 count = 0; + for (i = 0; i < 0x10; i++) + { + if (UNK_021C59E8.unk8->unkC84[i] == 0) + { + continue; + } + + if (param0 == count) + { + + PlayerProfile_Copy(FUN_0202EF84(i), player_data); + return; + } + + count++; + } +} + +THUMB_FUNC u32 FUN_0202E9E8(u32 param0) +{ + if (FUN_0202CBD4() == 2) + { + FUN_0202C770(); + return 0; + } + + if (FUN_0202CBD4() == 1) + { + s32 ret = FUN_02033534(); + UNK_021C59E8.unk8->unkDA8 = (u8)UNK_021C59E8.unk8->unk054[param0].unk36; + if (FUN_0202D8B0(ret) != 0) + { + FUN_0202C4D8(1, UNK_021C59E8.unk8->unk054[param0].unk04, 0); + } + else + { + FUN_0202D034(1, &UNK_021C59E8.unk8->unk054[param0]); + } + + return 1; + } + + return 0; +} + +THUMB_FUNC void FUN_0202EA54() +{ + for (int i = 0; i < 0x10; i++) + { + if (UNK_021C59E8.unk8->unkC84[i] == 0) + { + continue; + } + if (UNK_021C59E8.unk8->unkC84[i] == 0) + { + continue; + } + + UNK_021C59E8.unk8->unkC84[i]--; + + if (UNK_021C59E8.unk8->unkC84[i] == 0) + { + UNK_021C59E8.unk8->unkCB4 = 1; + } + } +} + +THUMB_FUNC void FUN_0202EA9C() +{ + s32 res = FUN_02033534(); + struct PlayerData *player_data = FUN_0202EF70(); + + if (res != 0xf) + { + struct UnkStruct2_sub2 *res = &UNK_021C59E8.unk8->unkCC4; + GF_ASSERT((s32)FUN_02023AC4() <= 0x20); + GF_ASSERT(PlayerProfile_sizeof() == 0x20); + + MI_CpuCopy8(player_data, &res->unk08.unk08, PlayerProfile_sizeof()); + + MI_CpuCopy8(UNK_021C59E8.unk8->unkCBC, res->unk08.unk28, FUN_02023AC4()); + + res->unk00 = PlayerProfile_GetTrainerID(player_data); + res->unk04 = (u8)FUN_02033534(); + res->unk05 = FUN_0203354C(); + + MI_CpuCopy8(&UNK_021C59E8.unk8->unkCA8, &res->unk08.unk00, sizeof(struct MailMessage)); + res->unk08.unk4C = (u8)FUN_0202D358(); + } + else + { + struct UnkStruct2_sub2 *res = &UNK_021C59E8.unk8->unkCC4; + res->unk00 = PlayerProfile_GetTrainerID(player_data); + res->unk04 = (u8)FUN_02033534(); + res->unk05 = FUN_0203354C(); + + MI_CpuCopy8(&UNK_021C59E8.unk8->unk000, &res->unk08, sizeof(struct UnkStruct2_sub3)); + } + + DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct2_sub2)); + FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct2_sub2)); +} + +THUMB_FUNC void FUN_0202EB7C() +{ + struct UnkStruct2_sub2 *r4 = &UNK_021C59E8.unk8->unkCC4; + if (r4->unk06 != FUN_0202EDB8()) + { + r4->unk06 = (u8)FUN_0202EDB8(); + DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct2_sub2)); + FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct2_sub2)); + + FUN_0202D240(&UNK_021C59E8.unk8->unkCC4, + sizeof(struct UnkStruct2_sub2), + UNK_021C59E8.unk8->unkCC0, + UNK_021C59E8.unk0); + } +} + +THUMB_FUNC void FUN_0202EBD0(u16 param0) +{ + u32 r5 = FUN_0202CBD4(); + FUN_0202DF54(); + FUN_0202EB7C(); + + if (FUN_0202D19C() == 0 && FUN_0202EE24() == 0 && + ((u32)(UNK_021C59E8.unk8->unkDAD << 0x1d) >> 0x1f) != 0) + { + UNK_021C59E8.unk8->unkDAD = (UNK_021C59E8.unk8->unkDAD & ~1) | 1; + } + + if (UNK_021C59E8.unk8->unkDA6 == 0xFFFF) + { + UNK_021C59E8.unk8->unkDA6 = param0; + } + + if (((u32)(UNK_021C59E8.unk8->unkDAD << 0x1e) >> 0x1f) != 0 && + UNK_021C59E8.unk8->unkDA6 > param0) + { + UNK_021C59E8.unk8->unkDAD = (UNK_021C59E8.unk8->unkDAD & ~1) | 1; + } + + if (FUN_0202CBE8() == 25) + { + FUN_020335D0(0); + } + + switch (r5) + { + case 0: + if (UNK_021C59E8.unk8->unkDAA == 1) + { + FUN_0202E7D8(); + return; + } + else if (UNK_021C59E8.unk8->unkDAA == 2) + { + UNK_021C59E8.unk8->unkDAA = 3; + } + break; + + case 1: + if (UNK_021C59E8.unk8->unkDAA == 1 && FUN_0202D178() != 0) + { + return; + } + + if (UNK_021C59E8.unk8->unkDAA == 2 && FUN_0202D178() != 0) + { + return; + } + + break; + + case 8: + case 9: + + if (UNK_021C59E8.unk8 != NULL) + { + UNK_021C59E8.unk8->unkDAD = (UNK_021C59E8.unk8->unkDAD & ~1) | 1; + return; + } + break; + + case 7: + u16 r0 = FUN_0202CDA4(); + if (UNK_021C59E8.unk8->unkDA9 == 0) + { + UNK_021C59E8.unk8->unkDA4 = r0; + UNK_021C59E8.unk8->unkDA9 = 5; + } + else + { + UNK_021C59E8.unk8->unkDA9--; + } + + u16 r5 = UNK_021C59E8.unk8->unkDA4; + if ((u32)(UNK_021C59E8.unk8->unkDAD << 0x1c) >> 0x1f != 0) + { + UNK_021C59E8.unk0++; + } + + FUN_0202EA9C(); + + FUN_0202CF84(0, + UNK_021C59E8.unk0, + r5, + FUN_0202D858((u16)FUN_02033534()), + FUN_0202EEE8((u16)FUN_02033534()), + (u32)(UNK_021C59E8.unk8->unkDAD << 0x1a) >> 0x1f); + + UNK_021C59E8.unk8->unkDA8 = (u8)r5; + + break; + } +} + +THUMB_FUNC void FUN_0202ED70(u16 param0) +{ + if (UNK_021C59E8.unk8 != NULL) + { + FUN_0202EBD0(param0); + } +} + +THUMB_FUNC u32 FUN_0202ED84(u16 param0) +{ + if (UNK_021C59E8.unk8 == NULL) + { + return 0; + } + + if (FUN_0202CBD4() != 4) + { + return 0; + } + + if ((FUN_0202CB8C() & (1 << param0)) == 0) + { + return 0; + } + + return 1; +} + +THUMB_FUNC u32 FUN_0202EDB8() +{ + u32 count = 0; + for (int i = 0; i < 8; i++) + { + if (FUN_0202ED84((u16)i) != 0) + { + count++; + } + } + + return count; +} + +THUMB_FUNC BOOL FUN_0202EDD8() +{ + if (UNK_021C59E8.unk8 != NULL) + { + if (UNK_021C59E8.unk8->unkDAA == 3) + { + return TRUE; + } + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0202EDF8() +{ + if (UNK_021C59E8.unk8 != NULL) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC u32 FUN_0202EE0C() +{ + if (UNK_021C59E8.unk8 != NULL) + { + return FUN_0202D1C8(); + } + + return 1; +} + +THUMB_FUNC u32 FUN_0202EE24() +{ + if (UNK_021C59E8.unk8 != NULL) + { + return FUN_0202CB8C() & 0xFFFE; + } + + return 0; +} + +THUMB_FUNC BOOL FUN_0202EE44() +{ + if (FUN_0202EE60() && FUN_0202CBE8() == 0x14) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC BOOL FUN_0202EE60() +{ + if (UNK_021C59E8.unk8 != NULL && (u32)(UNK_021C59E8.unk8->unkDAD << 0x1f) >> 0x1f != 0) + { + return TRUE; + } + + return FALSE; +} + +THUMB_FUNC void FUN_0202EE84(u32 param0) +{ + if (UNK_021C59E8.unk8 != NULL) + { + UNK_021C59E8.unk8->unkDAD = + (UNK_021C59E8.unk8->unkDAD & ~4) | (u32)((u8)param0 << 0x1f) >> 0x1d; + } +} + +THUMB_FUNC void FUN_0202EEB0(u32 param0) +{ + if (UNK_021C59E8.unk8 != NULL) + { + UNK_021C59E8.unk8->unkDAD = + (UNK_021C59E8.unk8->unkDAD & ~2) | (u32)((u8)param0 << 0x1f) >> 0x1e; + + UNK_021C59E8.unk8->unkDA6 = 0xFFFF; + } +} + +THUMB_FUNC u32 FUN_0202EEE8(u16 param0) +{ + u16 r4 = WM_GetDispersionBeaconPeriod(); + GF_ASSERT(param0 < 0x1a); + + if (param0 == 0xa) + { + return (u32)(r4 << 0xe) >> 0x10; + } + + if (param0 == 9 || param0 == 0xd) + { + return (u32)(r4 << 0xe) >> 0x10; + } + + return r4; +} + +THUMB_FUNC struct UnkStruct2_sub *FUN_0202EF18(u32 param0) +{ + if (UNK_021C59E8.unk8 != NULL) + { + if (UNK_021C59E8.unk8->unkC84[param0] != 0) + { + return &UNK_021C59E8.unk8->unk054[param0]; + } + } + + return NULL; +} + +THUMB_FUNC struct UnkStruct2_sub4 *FUN_0202EF44(s32 param0) +{ + if (UNK_021C59E8.unk8 != NULL) + { + if (UNK_021C59E8.unk8->unkC84[param0] != 0) + { + return &UNK_021C59E8.unk8->unk054[param0].unk50; + } + } + + return NULL; +} + +THUMB_FUNC struct PlayerData *FUN_0202EF70() +{ + return UNK_021C59E8.unk8->unkCB8; +} + +THUMB_FUNC struct PlayerData *FUN_0202EF84(int param0) +{ + if (UNK_021C59E8.unk8->unkC84[param0] == 0) + { + return NULL; + } + + struct UnkStruct2_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50; + + return &r0->unk10; +} + +THUMB_FUNC void FUN_0202EFAC(u8 *param0, s32 param1) +{ + if (UNK_021C59E8.unk8 != NULL) + { + GF_ASSERT(param1 < 8); + + MI_CpuCopy8(param0, UNK_021C59E8.unk8->unkC54[param1], 6); + } +} + +#ifdef NONMATCHING +THUMB_FUNC BOOL FUN_0202EFE4(u8 *param0) +{ + + for (int i = 0; i < 8; i++) + { + if (UNK_021C59E8.unk8->unkC54[i][0] != param0[0]) + { + continue; + } + + if (UNK_021C59E8.unk8->unkC54[i][1] != param0[1]) + { + continue; + } + if (UNK_021C59E8.unk8->unkC54[i][2] != param0[2]) + { + continue; + } + if (UNK_021C59E8.unk8->unkC54[i][3] != param0[3]) + { + continue; + } + if (UNK_021C59E8.unk8->unkC54[i][4] != param0[4]) + { + continue; + } + if (UNK_021C59E8.unk8->unkC54[i][5] != param0[5]) + { + continue; + } + + return TRUE; + } + + return FALSE; +} +#else +THUMB_FUNC asm BOOL FUN_0202EFE4(u8 *param0) +{ + // clang-format off + push {r4-r5} + ldr r2, =UNK_021C59E8 + mov r1, #0x0 + ldr r3, [r2, #0x8] + ldr r2, =0x00000C54 + add r2, r3, r2 + ldrb r3, [r0, #0x0] +_0202EFF2: + ldrb r4, [r2, #0x0] + cmp r4, r3 + bne _0202F026 + ldrb r5, [r2, #0x1] + ldrb r4, [r0, #0x1] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x2] + ldrb r4, [r0, #0x2] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x3] + ldrb r4, [r0, #0x3] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x4] + ldrb r4, [r0, #0x4] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x5] + ldrb r4, [r0, #0x5] + cmp r5, r4 + bne _0202F026 + mov r0, #0x1 + pop {r4-r5} + bx lr +_0202F026: + add r1, r1, #0x1 + add r2, r2, #0x6 + cmp r1, #0x8 + blt _0202EFF2 + mov r0, #0x0 + pop {r4-r5} + bx lr + // clang-format on +} +#endif + +THUMB_FUNC u32 FUN_0202F03C() +{ + if (UNK_021C59E8.unk8 != NULL) + { + return (u32)(UNK_021C59E8.unk8->unkDAD << 0x1b) >> 0x1f; + } + + return 0; +} + +THUMB_FUNC void FUN_0202F05C() +{ + if (UNK_021C59E8.unk8 != NULL) + { + UNK_021C59E8.unk8->unkDAD |= 0x10; + } +} + +THUMB_FUNC void FUN_0202F078(struct MailMessage *mail_message) +{ + MI_CpuCopy8(mail_message, &UNK_021C59E8.unk8->unkCA8, sizeof(struct MailMessage)); +} + +THUMB_FUNC void FUN_0202F094(void *param0) +{ + MI_CpuCopy8(param0, UNK_021C59E8.unk8->unkCBC, FUN_02023AC4()); +} + +THUMB_FUNC void FUN_0202F0B8() +{ + FUN_0202EA9C(); + FUN_0202D240(&UNK_021C59E8.unk8->unkCC4, + sizeof(struct UnkStruct2_sub2), + UNK_021C59E8.unk8->unkCC0, + UNK_021C59E8.unk0); +} + +THUMB_FUNC u32 FUN_0202F0DC(u8 param0) +{ + int i; + u32 r5 = 0; + for (i = 0; i < 0x10; i++) + { + struct UnkStruct2_sub4 *res = FUN_0202EF44(i); + if (res != 0 && res->unk04 == param0) + { + r5 += res->unk06; + } + } + + return r5; +} + +THUMB_FUNC BOOL FUN_0202F104() +{ + return FUN_0202D2D0(); +} + +THUMB_FUNC void FUN_0202F10C(struct UnkStruct2_sub3 *param0) +{ + MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk000, sizeof(struct UnkStruct2_sub3)); + FUN_0202F0B8(); +} + +THUMB_FUNC u8 *FUN_0202F124(u32 param0) +{ + if (UNK_021C59E8.unk8 != NULL && UNK_021C59E8.unk8->unkC84[param0] != 0) + { + struct UnkStruct2_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50; + return r0->unk08; + } + + return NULL; +} diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index b8a42687..a7f69f3c 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -1044,7 +1044,7 @@ THUMB_FUNC void FUN_02030074() } } -THUMB_FUNC void FUN_02030238(u32 param0, void *param1, u32 param2) +THUMB_FUNC void FUN_02030238(u32 param0, u8 *param1, u32 param2) { if (UNK_021C59F4.unk04->unk66F[0] != 0) { @@ -1143,7 +1143,7 @@ THUMB_FUNC void FUN_0203026C(u32 param0, u8 *param1, u32 param2) FUN_0202D3A4(&UNK_021C59F4.unk04->unk470, param1 + 4, param1[3], 0x5FF); } -THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2) +THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u32 param2) { if (UNK_021C59F4.unk04->unk66F[param0] != 0) { @@ -1156,7 +1156,7 @@ THUMB_FUNC void FUN_020303BC(u32 param0, u8 *param1, u16 param2) FUN_020303F4(param0, param1, param2); } -THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u16 param2) +THUMB_FUNC void FUN_020303F4(u32 param0, u8 *param1, u32 param2) { #pragma unused(param2) UNK_021C59F4.unk04->unk638[param0]--; @@ -2469,4 +2469,4 @@ THUMB_FUNC void FUN_02031468() { UNK_021C59F4.unk04->unk68A = 1; } -} \ No newline at end of file +} diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c index 3222232c..78bfd90a 100644 --- a/arm9/src/unk_02031734.c +++ b/arm9/src/unk_02031734.c @@ -58,7 +58,7 @@ extern void MOD04_021D83C0(); extern s32 MOD04_021D7F8C(); extern s32 MOD04_021D7800(u32 param0); extern u32 MOD04_021D8494(s32 param0); -extern void MOD04_021D77C4(void (*param0)(u32, u8 *, u16), void (*param1)(u32, void *, u32)); +extern void MOD04_021D77C4(void (*param0)(u32, u8 *, u32), void (*param1)(u32, u8 *, u32)); extern u32 MOD04_021D82BC(u8 param0); extern void MOD04_021D836C(); extern u32 MOD04_021DD718(u32 *param0, u32 *param1); -- cgit v1.2.3 From 0a89ace18db732440c498c1684e287e164b6d76d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 8 May 2021 12:28:24 +0200 Subject: externs cleanup --- arm9/src/unk_0202F150.c | 26 ++++++++------------------ arm9/src/unk_02031734.c | 47 ++++++++++++++++------------------------------- 2 files changed, 24 insertions(+), 49 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202F150.c b/arm9/src/unk_0202F150.c index a7f69f3c..d52857c1 100644 --- a/arm9/src/unk_0202F150.c +++ b/arm9/src/unk_0202F150.c @@ -1,6 +1,8 @@ #include "unk_0202F150.h" #include "unk_02031480.h" #include "unk_02031734.h" +#include "unk_0202E29C.h" + struct { @@ -15,20 +17,11 @@ extern void FUN_0202D7D8(u8 *param0, u32 param1, struct UnkStruct0202F150_sub1 * extern u32 FUN_0200CA60(void (*param0)(), u32 param1, u32 param2); extern void FUN_0202D394(struct UnkStruct0202F150_sub1 *param0, u8 *param1, u32 param2); extern void FUN_0202D804(u8 *param0); -extern u32 FUN_0202E5F8(u32 param0, u32 param1, u32 param2); extern void FUN_0202D330(void (*param0)(int)); -extern u32 FUN_0202E66C(u32 param0, u32 param1); extern void MOD04_021D83C0(); -extern u32 FUN_0202E784(); extern void FUN_0202DBA4(); extern void FUN_0200CAB4(u32 param0); extern void FUN_0202D824(u8 *param0); -extern u32 FUN_0202E9E8(u32 param0); -extern u32 FUN_0202F03C(); -extern u32 FUN_0202EE24(); -extern void FUN_0202EBD0(u16 param0); -extern void FUN_0202ED70(u32 param0); -extern void FUN_0202E538(); extern u32 MOD04_021D78FC(void *param0, u32 param1); extern u32 FUN_0202CBD4(); extern void FUN_0202D4BC(void *param0); @@ -49,10 +42,7 @@ extern s16 FUN_0202D9A0(u32 param0); extern u32 FUN_0202DA04(u32 param0); extern void *FUN_0202DA40(u32 param0, u32 param1, u16 param2); extern u32 MOD04_021D8018(); -extern u32 FUN_0202EDF8(); extern u16 FUN_0202D19C(); -extern u32 FUN_0202EE60(); -extern void FUN_0202F05C(); extern void GF_RTC_CopyDateTime(RTCDate *, RTCTime *); extern void FUN_0202D830(u8 *param0, u32 param1); extern u32 MOD04_021D8624(); @@ -472,7 +462,7 @@ THUMB_FUNC void FUN_0202FA5C() } else { - if (FUN_0202E784() != 0) + if (FUN_0202E784()) { r4 = 1; } @@ -2033,11 +2023,11 @@ THUMB_FUNC s32 FUN_02030F20() return r4; } -THUMB_FUNC u32 FUN_02030F40() +THUMB_FUNC BOOL FUN_02030F40() { if (UNK_021C59F4.unk04 != NULL && FUN_02033534() >= 0x13) { - return 1; + return TRUE; } return FUN_0202EDF8(); @@ -2221,17 +2211,17 @@ THUMB_FUNC u32 FUN_020311E8() return FUN_0202EE24(); } -THUMB_FUNC u32 FUN_020311F0() +THUMB_FUNC BOOL FUN_020311F0() { if (FUN_02031280() != 0) { - return 0; + return FALSE; } if (UNK_021C59F4.unk04 != NULL && UNK_021C59F4.unk04->unk689 != 0) { FUN_020334E8(1, 1); - return 1; + return TRUE; } return FUN_0202EE60(); diff --git a/arm9/src/unk_02031734.c b/arm9/src/unk_02031734.c index 78bfd90a..65ed3bc4 100644 --- a/arm9/src/unk_02031734.c +++ b/arm9/src/unk_02031734.c @@ -5,6 +5,8 @@ #include "heap.h" #include "player_data.h" #include "unk_0202F150.h" +#include "unk_0202E29C.h" + const struct UnkStruct_02031734_const2 UNK_020EEC48 = { { (u32)FUN_02032B84, 0 } }; @@ -24,33 +26,19 @@ char UNK_02105D64[] = " FULL"; struct UnkStruct_02031734 *UNK_021C5A00; -extern void FUN_0202E49C(); extern void FUN_0202D8D0(u32 param0, u32 param1, u32 param2); extern void FUN_02033E74(); extern void FUN_0202D918(); extern void FUN_02033ED0(); -extern void FUN_0202E4F0(); extern void FUN_0202D298(); extern void FUN_0202D344(u32 param0); extern void FUN_0202D1B0(u8 param0); extern void FUN_0202D36C(u32 param0); extern u32 MOD04_021DDB08(); extern void FUN_02033EEC(u32 param0); -extern u32 FUN_0202EDF8(); extern u32 WM_GetLinkLevel(); -extern u32 FUN_0202E4C8(); -extern void FUN_0202E29C(struct PlayerData *player_data); extern void FUN_0202DB14(struct SaveBlock2 *sav2, u32 param1); extern s64 _ll_mul(s64, s64); -extern u32 FUN_0202EE0C(); -extern void FUN_0202EA54(); -extern s32 FUN_0202E8F4(); -extern s32 FUN_0202E950(); -extern u32 FUN_0202E8A0(u8 param0); -extern u32 FUN_0202E6F0(); -extern void FUN_0202EE84(u8 param0); -extern void FUN_0202E7B0(u32 param0); -extern u32 FUN_0202F104(); extern void FUN_0202DBE0(); extern void FUN_0202DDE8(); extern void FUN_0202D308(void (*param0)(u32, u32)); @@ -66,11 +54,8 @@ extern void MOD04_021DD6F0(); extern s32 MOD04_021D76AC(); extern MOD05_021D74E0(struct SaveBlock2 *sav2, u32 param1); extern void MOD04_021D83A8(void (*param0)(s32)); -extern void FUN_0202EEB0(u8 param0); extern void FUN_02033F70(int, int, int); extern void FUN_0200541C(); -extern u32 FUN_0202EDD8(); -extern u32 FUN_0202E344(); THUMB_FUNC void FUN_02031734(struct SaveBlock2 *sav2, u8 param1) { @@ -451,7 +436,7 @@ THUMB_FUNC void FUN_02031CDC() return; } - if (FUN_0202EDF8() != 0) + if (FUN_0202EDF8()) { FUN_02033EEC(3 - WM_GetLinkLevel()); } @@ -471,7 +456,7 @@ THUMB_FUNC void FUN_02031D30() return; } - if (FUN_0202E4C8() == 0) + if (!FUN_0202E4C8()) { return; } @@ -726,7 +711,7 @@ THUMB_FUNC void FUN_02032178() THUMB_FUNC void FUN_02032194() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_0202E7B0(0); FUN_0202FC60(); @@ -744,7 +729,7 @@ THUMB_FUNC void FUN_020321B8() THUMB_FUNC void FUN_020321D0() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_0202E29C(UNK_021C5A00->unk2C); FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30); @@ -774,7 +759,7 @@ THUMB_FUNC void FUN_02032234() THUMB_FUNC void FUN_0203224C() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_0202E29C(UNK_021C5A00->unk2C); FUN_0202DB14(UNK_021C5A00->unk28, UNK_021C5A00->unk30); @@ -925,7 +910,7 @@ THUMB_FUNC void FUN_02032440() THUMB_FUNC void FUN_02032478() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_0202E29C(UNK_021C5A00->unk2C); FUN_0202D1B0(UNK_021C5A00->unk3C); @@ -978,7 +963,7 @@ THUMB_FUNC void FUN_02032510() THUMB_FUNC void FUN_02032578() { - if (FUN_0202F104() == 0) + if (!FUN_0202F104()) { if (FUN_020311E8() != 0) { @@ -1394,7 +1379,7 @@ THUMB_FUNC void FUN_02032B84() THUMB_FUNC void FUN_02032B8C() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_0202E29C(UNK_021C5A00->unk2C); FUN_0202DB14(UNK_021C5A00->unk28, 0); @@ -1479,7 +1464,7 @@ THUMB_FUNC void FUN_02032C6C(u32 param0, u32 param1) THUMB_FUNC void FUN_02032CF4() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_0202E29C(UNK_021C5A00->unk2C); FUN_0202DB14(UNK_021C5A00->unk28, 0); @@ -1545,7 +1530,7 @@ THUMB_FUNC BOOL FUN_02032DAC() THUMB_FUNC void FUN_02032E00() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_0202E29C(UNK_021C5A00->unk2C); FUN_0202DB14(UNK_021C5A00->unk28, 0); @@ -1559,7 +1544,7 @@ THUMB_FUNC void FUN_02032E00() THUMB_FUNC void FUN_02032E48() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_0202E29C(UNK_021C5A00->unk2C); FUN_0202DB14(UNK_021C5A00->unk28, 0); @@ -1981,7 +1966,7 @@ THUMB_FUNC void FUN_020333F0() THUMB_FUNC void FUN_0203341C() { - if (FUN_0202E4C8() != 0) + if (FUN_0202E4C8()) { FUN_02016828(3, 0x31, 0x31000); if (FUN_0202F918(1, 1, 0x200, 1) != 0) @@ -2164,12 +2149,12 @@ THUMB_FUNC void FUN_020335F4() THUMB_FUNC BOOL FUN_02033678() { - if (FUN_0202EDD8() != 0 || !FUN_02031810()) + if (FUN_0202EDD8() || !FUN_02031810()) { return TRUE; } - if (FUN_0202E344() == 0) + if (!FUN_0202E344()) { return TRUE; } -- cgit v1.2.3 From 5f893fd3ce282c293c42a3e5421aa8256972f90d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Calixte?= Date: Sat, 8 May 2021 12:31:19 +0200 Subject: better struct names --- arm9/src/unk_0202E29C.c | 58 ++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202E29C.c b/arm9/src/unk_0202E29C.c index 678f6fe3..36c18b16 100644 --- a/arm9/src/unk_0202E29C.c +++ b/arm9/src/unk_0202E29C.c @@ -10,18 +10,18 @@ #include "unk_0202F150.h" #include "unk_02031734.h" -struct UnkStruct_const +struct UnkStruct_0202E29C_const { u8 unk0[6]; }; -const struct UnkStruct_const UNK_020EEC40 = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } }; +const struct UnkStruct_0202E29C_const UNK_020EEC40 = { { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } }; struct { u16 unk0; u32 unk4; - struct UnkStruct2 *unk8; + struct UnkStruct_0202E29C *unk8; } UNK_021C59E8; @@ -35,7 +35,7 @@ extern void FUN_0202D2F4(); extern void FUN_0202D0A0(void (*param0)(u32, u8 *, u32), u32 param1); extern u32 FUN_0202CBD4(); extern u32 FUN_0202CBFC(); -extern u32 FUN_0202C570(void (*param0)(struct UnkStruct2_sub *, u32), u8 *param1, u32 param2); +extern u32 FUN_0202C570(void (*param0)(struct UnkStruct_0202E29C_sub *, u32), u8 *param1, u32 param2); extern u32 FUN_0202D21C(); extern void FUN_0202C770(); extern u32 FUN_0202D1E4(); @@ -43,7 +43,7 @@ extern void FUN_0202D100(); extern u32 FUN_0202D1C8(); extern u32 FUN_0202D200(); extern void FUN_0202C4D8(u32 param0, u8 *param1, u32 param2); -extern void FUN_0202D034(u32 param0, struct UnkStruct2_sub *param1); +extern void FUN_0202D034(u32 param0, struct UnkStruct_0202E29C_sub *param1); extern u32 FUN_0202D358(); extern void FUN_0202CB7C(void *param0, u32 param1); extern void FUN_0202D240(void *param0, u32 size, u32 param2, u32 param3); @@ -61,8 +61,8 @@ THUMB_FUNC void FUN_0202E29C(struct PlayerData *player_data) { if (UNK_021C59E8.unk8 == NULL) { - UNK_021C59E8.unk8 = AllocFromHeap(0xf, sizeof(struct UnkStruct2)); - MI_CpuFill8(UNK_021C59E8.unk8, 0, sizeof(struct UnkStruct2)); + UNK_021C59E8.unk8 = AllocFromHeap(0xf, sizeof(struct UnkStruct_0202E29C)); + MI_CpuFill8(UNK_021C59E8.unk8, 0, sizeof(struct UnkStruct_0202E29C)); UNK_021C59E8.unk8->unkCA4 = AllocFromHeap(0xf, FUN_0202CEEC()); MI_CpuFill8(UNK_021C59E8.unk8->unkCA4, 0, FUN_0202CEEC()); @@ -106,12 +106,12 @@ THUMB_FUNC BOOL FUN_0202E358(u8 *param0, u8 *param1, s32 param2) return TRUE; } -THUMB_FUNC void FUN_0202E380(struct UnkStruct2_sub *param0, u32 param1) +THUMB_FUNC void FUN_0202E380(struct UnkStruct_0202E29C_sub *param0, u32 param1) { #pragma unused(param1) s32 r5 = FUN_02033534(); u8 r6 = FUN_0203354C(); - struct UnkStruct2_sub4 *r4 = ¶m0->unk50; + struct UnkStruct_0202E29C_sub4 *r4 = ¶m0->unk50; if (r5 != 0xe) { @@ -154,7 +154,7 @@ THUMB_FUNC void FUN_0202E380(struct UnkStruct2_sub *param0, u32 param1) UNK_021C59E8.unk8->unkC84[i] = 0x96; - MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct2_sub)); + MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct_0202E29C_sub)); return; } @@ -170,7 +170,7 @@ THUMB_FUNC void FUN_0202E380(struct UnkStruct2_sub *param0, u32 param1) if (i < 0x10) { UNK_021C59E8.unk8->unkC84[i] = 0x96; - MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct2_sub)); + MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk054[i], sizeof(struct UnkStruct_0202E29C_sub)); UNK_021C59E8.unk8->unkCB4 = 1; } } @@ -308,7 +308,7 @@ THUMB_FUNC u32 FUN_0202E66C(u32 param0, u32 param1) if (FUN_0202CBD4() == 1) { - struct UnkStruct_const st0 = UNK_020EEC40; + struct UnkStruct_0202E29C_const st0 = UNK_020EEC40; if (FUN_0202C570(FUN_0202E380, st0.unk0, 0) != 0) { @@ -608,7 +608,7 @@ THUMB_FUNC void FUN_0202EA9C() if (res != 0xf) { - struct UnkStruct2_sub2 *res = &UNK_021C59E8.unk8->unkCC4; + struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59E8.unk8->unkCC4; GF_ASSERT((s32)FUN_02023AC4() <= 0x20); GF_ASSERT(PlayerProfile_sizeof() == 0x20); @@ -625,29 +625,29 @@ THUMB_FUNC void FUN_0202EA9C() } else { - struct UnkStruct2_sub2 *res = &UNK_021C59E8.unk8->unkCC4; + struct UnkStruct_0202E29C_sub2 *res = &UNK_021C59E8.unk8->unkCC4; res->unk00 = PlayerProfile_GetTrainerID(player_data); res->unk04 = (u8)FUN_02033534(); res->unk05 = FUN_0203354C(); - MI_CpuCopy8(&UNK_021C59E8.unk8->unk000, &res->unk08, sizeof(struct UnkStruct2_sub3)); + MI_CpuCopy8(&UNK_021C59E8.unk8->unk000, &res->unk08, sizeof(struct UnkStruct_0202E29C_sub3)); } - DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct2_sub2)); - FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct2_sub2)); + DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); } THUMB_FUNC void FUN_0202EB7C() { - struct UnkStruct2_sub2 *r4 = &UNK_021C59E8.unk8->unkCC4; + struct UnkStruct_0202E29C_sub2 *r4 = &UNK_021C59E8.unk8->unkCC4; if (r4->unk06 != FUN_0202EDB8()) { r4->unk06 = (u8)FUN_0202EDB8(); - DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct2_sub2)); - FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct2_sub2)); + DC_FlushRange(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); + FUN_0202CB7C(&UNK_021C59E8.unk8->unkCC4, sizeof(struct UnkStruct_0202E29C_sub2)); FUN_0202D240(&UNK_021C59E8.unk8->unkCC4, - sizeof(struct UnkStruct2_sub2), + sizeof(struct UnkStruct_0202E29C_sub2), UNK_021C59E8.unk8->unkCC0, UNK_021C59E8.unk0); } @@ -894,7 +894,7 @@ THUMB_FUNC u32 FUN_0202EEE8(u16 param0) return r4; } -THUMB_FUNC struct UnkStruct2_sub *FUN_0202EF18(u32 param0) +THUMB_FUNC struct UnkStruct_0202E29C_sub *FUN_0202EF18(u32 param0) { if (UNK_021C59E8.unk8 != NULL) { @@ -907,7 +907,7 @@ THUMB_FUNC struct UnkStruct2_sub *FUN_0202EF18(u32 param0) return NULL; } -THUMB_FUNC struct UnkStruct2_sub4 *FUN_0202EF44(s32 param0) +THUMB_FUNC struct UnkStruct_0202E29C_sub4 *FUN_0202EF44(s32 param0) { if (UNK_021C59E8.unk8 != NULL) { @@ -932,7 +932,7 @@ THUMB_FUNC struct PlayerData *FUN_0202EF84(int param0) return NULL; } - struct UnkStruct2_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50; + struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50; return &r0->unk10; } @@ -1066,7 +1066,7 @@ THUMB_FUNC void FUN_0202F0B8() { FUN_0202EA9C(); FUN_0202D240(&UNK_021C59E8.unk8->unkCC4, - sizeof(struct UnkStruct2_sub2), + sizeof(struct UnkStruct_0202E29C_sub2), UNK_021C59E8.unk8->unkCC0, UNK_021C59E8.unk0); } @@ -1077,7 +1077,7 @@ THUMB_FUNC u32 FUN_0202F0DC(u8 param0) u32 r5 = 0; for (i = 0; i < 0x10; i++) { - struct UnkStruct2_sub4 *res = FUN_0202EF44(i); + struct UnkStruct_0202E29C_sub4 *res = FUN_0202EF44(i); if (res != 0 && res->unk04 == param0) { r5 += res->unk06; @@ -1092,9 +1092,9 @@ THUMB_FUNC BOOL FUN_0202F104() return FUN_0202D2D0(); } -THUMB_FUNC void FUN_0202F10C(struct UnkStruct2_sub3 *param0) +THUMB_FUNC void FUN_0202F10C(struct UnkStruct_0202E29C_sub3 *param0) { - MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk000, sizeof(struct UnkStruct2_sub3)); + MI_CpuCopy8(param0, &UNK_021C59E8.unk8->unk000, sizeof(struct UnkStruct_0202E29C_sub3)); FUN_0202F0B8(); } @@ -1102,7 +1102,7 @@ THUMB_FUNC u8 *FUN_0202F124(u32 param0) { if (UNK_021C59E8.unk8 != NULL && UNK_021C59E8.unk8->unkC84[param0] != 0) { - struct UnkStruct2_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50; + struct UnkStruct_0202E29C_sub4 *r0 = &UNK_021C59E8.unk8->unk054[param0].unk50; return r0->unk08; } -- cgit v1.2.3