From 267cb812e827604d4829d3afe28a82b0970d3706 Mon Sep 17 00:00:00 2001 From: who-knows-who Date: Sat, 17 Apr 2021 12:32:29 +0100 Subject: Start decompiling unk_0202A1E0 --- arm9/src/unk_0202A1E0.c | 726 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 726 insertions(+) create mode 100644 arm9/src/unk_0202A1E0.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0202A1E0.c b/arm9/src/unk_0202A1E0.c new file mode 100644 index 00000000..ca9dff64 --- /dev/null +++ b/arm9/src/unk_0202A1E0.c @@ -0,0 +1,726 @@ +#include "global.h" +#include "MI_memory.h" +#include "msgdata.h" +#include "heap.h" +#include "unk_0202A1E0.h" + +THUMB_FUNC s32 FUN_0202A1E0() +{ + return 0xe4; // 228 +} + +THUMB_FUNC void FUN_0202A1E4(void *dest) +{ + MI_CpuFill8(dest, 0, 0x3c); // 60 +} + +THUMB_FUNC void FUN_0202A1F0(struct Unk0202A1F0 *unk) +{ + MI_CpuFill8(unk, 0, 0x168); // 360 + unk->b3 = 1; +} + +THUMB_FUNC void FUN_0202A204(struct UnkMailStruct *unk) +{ + MailMsg_init_fromTemplate(&unk->messages[0], 0); + MailMsg_init_fromTemplate(&unk->messages[1], 1); + MailMsg_init_fromTemplate(&unk->messages[2], 2); + MailMsg_init_fromTemplate(&unk->messages[3], 3); +} + +THUMB_FUNC void FUN_0202A230(void *dst) +{ + MI_CpuFill8(dst, 0, 0xB3C); // 2876 +} + +THUMB_FUNC u32 FUN_0202A240(struct Unk0202A240 *unk, u32 controlVariable, void *dst) +{ + switch (controlVariable) + { + case 0: + return unk->u_0_2; + case 1: + return unk->u_2; + case 2: + return unk->u_3; + case 3: + return unk->u_4; + case 4: + return unk->u_6; + case 5: + MI_CpuCopy8(&unk->u_8, dst, 4); + return 0; + case 6: + MI_CpuCopy8(&unk->u_2C, dst, 16); + return 0; + case 7: + return unk->u_0_0; + case 8: + MI_CpuCopy8(&unk->u_C, dst, 28); + return 0; + case 9: + return unk->u_0_5; + case 10: + return unk->u_28; + default: + return 0; + }; +} + +THUMB_FUNC void FUN_0202A2C4(struct Unk0202A240 *dst, u32 controlVariable, void *src) +{ + switch (controlVariable) + { + case 0: + dst->u_0_2 = *(u8 *)src; + break; + case 1: + dst->u_2 = *(u8 *)src; + break; + case 2: + dst->u_3 = *(u8 *)src; + break; + case 3: + dst->u_4 = *(u16 *)src; + break; + case 4: + dst->u_6 = *(u16 *)src; + break; + case 5: + MI_CpuCopy8(src, &dst->u_8, 4); + break; + case 6: + MI_CpuCopy8(src, &dst->u_2C, 16); + break; + case 7: + dst->u_0_0 = *(u8 *)src; + break; + case 8: + MI_CpuCopy8(src, &dst->u_C, 28); + break; + case 10: + dst->u_28 = *(u32 *)src; + break; + case 9: + dst->u_0_5 = *(u8 *)src; + break; + } +} + +THUMB_FUNC void FUN_0202A36C(struct Unk0202A240 *unk, s32 arg1, s32 arg2, s32 arg3) +{ + if (unk->u_3 + arg1 < 0xff) + { + unk->u_3 += arg1; + } + + if (unk->u_4 + arg2 < 0xffff) + { + unk->u_4 += arg2; + } + + if (unk->u_6 + arg3 < 0xffff) + { + unk->u_6 += arg3; + } +} + +THUMB_FUNC u8 FUN_0202A398(struct Unk0202A240 *unk) +{ + return unk->u_0_1; +} + +THUMB_FUNC void FUN_0202A3A0(struct Unk0202A240 *unk, u16 arg1) +{ + unk->u_0_1 = arg1; +} + +THUMB_FUNC u16 FUN_0202A3B4(struct Unk0202A3B4 *unk, u16 arg1, s32 controlVariable) +{ + switch (controlVariable) + { + case 0: + break; + case 1: + if (arg1 > 0x270F) + { + unk->u_0 = 0x270F; + } + else + { + unk->u_0 = arg1; + } + break; + case 2: + case 3: + case 4: + break; + case 5: + if (unk->u_0 + arg1 > 0x270F) + { + unk->u_0 = 0x270F; + } + else + { + unk->u_0 += arg1; + } + break; + case 6: + if (unk->u_0 < arg1) + { + unk->u_0 = 0; + } + else + { + unk->u_0 -= arg1; + } + break; + } + return unk->u_0; +} + +THUMB_FUNC u8 FUN_0202A40C(struct Unk0202A40C *unk, s32 controlVariable) +{ + switch (controlVariable) + { + case 2: + unk->u_2 = 0; + unk->u_8_4 = 0; + break; + case 3: + if (unk->u_8_4 != 0) + { + unk->u_2 += 1; + } + else + { + unk->u_2 = 1; + unk->u_8_4 = 1; + } + break; + } + return unk->u_2; +} + +THUMB_FUNC u8 FUN_0202A444(struct Unk0202A444 *unk, s32 controlVariable) +{ + switch (controlVariable) + { + case 2: + unk->u_3 = 1; + break; + case 3: + if (unk->u_3 < 0xa) + { + unk->u_3++; + } + break; + case 4: + if (unk->u_3 > 1) + { + unk->u_3--; + } + break; + } + return unk->u_3; +} + +THUMB_FUNC void FUN_0202A474(void *dst, s32 arg1, const void *src) +{ + if (arg1 == 0) + { + MI_CpuCopy8(src, dst + 0xc0, 0xa8); + } + else + { + MI_CpuCopy8(src, dst + 0x18, 0xa8); + } +} + +THUMB_FUNC void FUN_0202A498(const void *src, s32 arg1, void *dst) +{ + if (arg1 == 0) + { + MI_CpuCopy8(src + 0xc0, dst, 0xa8); + } + else + { + MI_CpuCopy8(src + 0x18, dst, 0xa8); + } +} + +THUMB_FUNC void FUN_0202A4B8(struct Unk0202A4B8 *arg0, struct Unk0202A4B8 *arg1) +{ + extern void _s32_div_f(); + + asm { + // push {r4-r6, lr} + add r6, r0, #0x0 + ldrb r0, [r1, #0x2] + mov r2, #0xfa + lsl r2, r2, #0x2 + sub r0, r0, #0x1 + add r3, r0, #0x0 + mul r3, r2 + lsl r0, r3, #0x10 + lsr r4, r0, #0x10 + ldrh r3, [r1, #0x4] + mov r0, #0xa + ldrb r5, [r1, #0x3] + mul r0, r3 + mov r3, #0x14 + mul r3, r5 + lsl r0, r0, #0x10 + lsl r3, r3, #0x10 + lsr r0, r0, #0x10 + lsr r3, r3, #0x10 + add r3, r0, r3 + add r0, r2, #0x0 + sub r0, #0x32 + cmp r3, r0 + ble _0202A4EE + mov r5, #0x0 + b _0202A4F6 + _0202A4EE: + sub r2, #0x32 + sub r0, r2, r3 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + _0202A4F6: + ldrh r1, [r1, #0x6] + ldr r0, =0x000003CA + cmp r1, r0 + bls _0202A502 + mov r1, #0x0 + b _0202A510 + _0202A502: + add r0, #0x1e + sub r0, r0, r1 + mov r1, #0x1e + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + _0202A510: + add r0, r4, r5 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + strh r0, [r6, #0x16] + // pop {r4-r6, pc} + } +} + +THUMB_FUNC u16 FUN_0202A520(struct Unk0202A4B8 *unk) +{ + return unk->u_16; +} + +THUMB_FUNC u8 FUN_0202A524(struct Unk0202A4B8 *unk) +{ + return (u8)(unk->u_16 / (0xfa << 2)); +} + +THUMB_FUNC u16 FUN_0202A538(struct Unk0202A4B8 *unk, s32 arg1, s32 arg2) +{ + if (arg1 == 5) + { + return 0; + } + + switch(arg2) { + case 2: + unk->u_array_C[arg1] = 0; + break; + case 3: + if (unk->u_array_C[arg1] < 0xfffe) { + unk->u_array_C[arg1]++; + } + break; + } + return unk->u_array_C[arg1]; +} + +THUMB_FUNC u16 FUN_0202A578(struct Unk0202A578 *arg0, u16 arg1, u32 arg2) { + asm{ + //push {r3-r4} + mov r3, #0x1 + mov r4, #0x0 + cmp r1, #0x0 + bls _0202A590 + _0202A582: + add r4, r4, #0x1 + lsl r4, r4, #0x10 + lsl r3, r3, #0x11 + lsr r4, r4, #0x10 + lsr r3, r3, #0x10 + cmp r4, r1 + blo _0202A582 + _0202A590: + cmp r2, #0x0 + beq _0202A5B4 + cmp r2, #0x1 + beq _0202A5AC + cmp r2, #0x2 + bne _0202A5C2 + ldr r1, =0x0000FFFF + eor r1, r3 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + ldrh r1, [r0, #0x8] + and r1, r2 + strh r1, [r0, #0x8] + b _0202A5C2 + _0202A5AC: + ldrh r1, [r0, #0x8] + orr r1, r3 + strh r1, [r0, #0x8] + b _0202A5C2 + _0202A5B4: + ldrh r0, [r0, #0x8] + add r2, r0, #0x0 + asr r2, r1 + mov r0, #0x1 + and r0, r2 + pop {r3-r4} + bx lr + _0202A5C2: + mov r0, #0x0 + // pop {r3-r4} + // bx lr + // .balign 4 + // _0202A5C8: .word 0x0000FFFF + } +} + + +THUMB_FUNC void FUN_0202A5CC(struct Unk0202A5CC *unk, u32 arg1) +{ + unk->u_4 = arg1; +} + +THUMB_FUNC u32 FUN_0202A5D0(struct Unk0202A5CC *unk) +{ + return unk->u_4; +} + + +THUMB_FUNC void FUN_0202A5D4(struct SaveBlock2 *sav2, u32 arg1, struct MailMessage *arg2) +{ + struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); + MailMsg_copy(&data->messages.messages[arg1], arg2); +} + +THUMB_FUNC struct MailMessage *FUN_0202A5F4(struct SaveBlock2 *sav2, u32 arg1) +{ + struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); + return &data->messages.messages[arg1]; +} + +THUMB_FUNC void FUN_0202A60C(u32 arg0, u32 arg1, u32 arg2, u32 arg3) { + asm { + // push {r3-r6} + add r4, r3, #0x0 + mov r3, #0x1 + cmp r2, #0x0 + beq _0202A66C + cmp r2, #0xc8 + bhi _0202A66C + cmp r1, #0x0 + beq _0202A66C + cmp r1, #0xa + bhi _0202A66C + sub r5, r2, #0x1 + sub r2, r1, #0x1 + mov r1, #0xc8 + mul r1, r2 + add r1, r5, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsr r6, r1, #0x1f + lsl r5, r1, #0x1d + sub r5, r5, r6 + mov r2, #0x1d + ror r5, r2 + add r2, r6, r5 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + lsl r3, r2 + lsl r2, r3, #0x18 + lsl r1, r1, #0x15 + lsr r5, r2, #0x18 + add r3, r0, #0x4 + lsr r2, r1, #0x18 + ldrb r1, [r3, r2] + orr r1, r5 + strb r1, [r3, r2] + ldr r3, [r4, #0x0] + ldr r1, [r4, #0x8] + lsl r5, r3, #0x18 + ldr r3, [r4, #0x4] + lsl r1, r1, #0x18 + lsl r3, r3, #0x18 + lsr r3, r3, #0x8 + ldr r2, [r4, #0xc] + lsr r1, r1, #0x10 + orr r3, r5 + orr r1, r3 + orr r1, r2 + str r1, [r0, #0x0] + _0202A66C: + // pop {r3-r6} + // bx lr + } +} + +THUMB_FUNC void FUN_0202A670(struct Unk0202A670 *arg0) +{ + + MI_CpuFill8(&(arg0->b4), 0, 0xfa); + MI_CpuFill8(arg0, 0, 4); +} + +THUMB_FUNC u32 FUN_0202A68C(struct Unk0202A68C *arg0, struct Unk0202A68C *arg1) +{ + if (arg0->b0 > arg1->b0) { + return 1; + } else if (arg0->b4 > arg1->b4) { + return 1; + } else if (arg0->b8 > arg1->b8) { + return 1; + } + return 0; +} + +THUMB_FUNC void FUN_0202A6B4(u32 arg0, u32 arg1, u32 arg2) +{ + asm { + // push {r3-r7, lr} + sub sp, #0x10 + add r6, r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r7, #0x1 + cmp r6, #0xc8 + bhi _0202A6C8 + cmp r4, #0xa + bls _0202A6CE + _0202A6C8: + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} + _0202A6CE: + ldr r0, [r5, #0x0] + lsr r1, r0, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + lsr r1, r0, #0x10 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x4] + lsr r1, r0, #0x8 + lsl r1, r1, #0x18 + lsl r0, r0, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + str r1, [sp, #0x8] + str r0, [sp, #0xc] + add r0, r3, #0x0 + add r1, sp, #0x0 + bl FUN_0202A68C + cmp r0, #0x0 + beq _0202A706 + add r0, r5, #0x0 + bl FUN_0202A670 + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} + _0202A706: + sub r1, r4, #0x1 + mov r0, #0xc8 + mul r0, r1 + sub r2, r6, #0x1 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1d + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + add r0, r5, r0 + sub r2, r2, r3 + mov r1, #0x1d + ror r2, r1 + add r1, r3, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, r7, #0x0 + lsl r2, r1 + lsl r1, r2, #0x18 + ldrb r0, [r0, #0x4] + lsr r1, r1, #0x18 + tst r0, r1 + beq _0202A73E + add sp, #0x10 + add r0, r7, #0x0 + pop {r3-r7, pc} + _0202A73E: + mov r0, #0x0 + add sp, #0x10 + // pop {r3-r7, pc} + } +} + + +THUMB_FUNC u8 FUN_0202A744(struct Unk0202A744 *unk) +{ + return unk->u_FE; +} + +THUMB_FUNC u8 FUN_0202A74C(struct Unk0202A744 *unk) +{ + return unk->u_FF; +} + +THUMB_FUNC void FUN_0202A754(struct Unk0202A744 *dest, void *src, u8 arg2, u8 arg3) +{ + MI_CpuCopy8(src, &dest->u_104, sizeof(struct Unk0202A744_substruct1)); + dest->u_101 = arg2; + dest->u_100 = arg3; + dest->u_FE = 1; +} + +THUMB_FUNC void FUN_0202A784(struct Unk0202A744 *src, struct Unk0202A784 *dest) +{ + dest->u_0 = src->u_101; + dest->u_1 = src->u_100; +} + +THUMB_FUNC void FUN_0202A798() +{ + asm { + //push {r3-r7, lr} + add r6, r1, #0x0 + mov r1, #0x41 + lsl r1, r1, #0x2 + add r5, r0, r1 + mov r0, #0xe4 + add r4, r2, #0x0 + mul r4, r0 + ldr r0, =0x00002710 + add r7, r6, #0x0 + str r0, [r6, #0x0] + add r0, r5, r4 + add r0, #0xc9 + ldrb r0, [r0, #0x0] + add r7, #0x30 + strh r0, [r6, #0x4] + add r0, r5, r4 + add r0, #0xc8 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _0202A7EE + mov r0, #0x0 + mov r1, #0x1a + mov r2, #0x11 + mov r3, #0xb + bl NewMsgDataFromNarc + add r1, r5, r4 + add r1, #0xc8 + ldrb r1, [r1, #0x0] + add r2, r6, #0x0 + str r0, [sp, #0x0] + lsl r1, r1, #0x1e + lsr r1, r1, #0x1f + add r1, #0x16 + add r2, #0x8 + bl ReadMsgDataIntoU16Array + ldr r0, [sp, #0x0] + bl DestroyMsgData + b _0202A7FC + _0202A7EE: + add r0, r5, r4 + add r1, r6, #0x0 + add r0, #0xa8 + add r1, #0x8 + mov r2, #0x10 + bl MI_CpuCopy8 + _0202A7FC: + add r0, r5, r4 + add r1, r6, #0x0 + add r0, #0xca + add r1, #0x18 + mov r2, #0x8 + bl MI_CpuCopy8 + add r0, r5, r4 + add r1, r6, #0x0 + add r0, #0xd2 + add r1, #0x20 + mov r2, #0x8 + bl MI_CpuCopy8 + add r0, r5, r4 + add r6, #0x28 + add r0, #0xda + add r1, r6, #0x0 + mov r2, #0x8 + bl MI_CpuCopy8 + add r0, r5, r4 + add r1, r7, #0x0 + mov r2, #0xa8 + bl MI_CpuCopy8 + //pop {r3-r7, pc} + //nop + } +} + +THUMB_FUNC void FUN_0202A838(struct Unk0202A744 *dest, void *src, u8 arg2, u8 arg3) +{ + MI_CpuCopy8(src, &dest->u_740, sizeof(dest->u_740)); + dest->u_103 = arg2; + dest->u_102 = arg3; + dest->u_FF = 1; +} + +THUMB_FUNC void FUN_0202A864(struct Unk0202A744 *src, struct Unk0202A784 *dest) +{ + dest->u_0 = src->u_103; + dest->u_1 = src->u_102; +} + +THUMB_FUNC struct Unk0202A744_substruct2 *FUN_0202A878(struct Unk0202A744 *src, u32 heap_id) +{ + struct Unk0202A744_substruct2 *dstp = AllocFromHeap(heap_id, sizeof(struct Unk0202A744_substruct2) /* 1020 */); + MI_CpuCopy8(&src->u_740, dstp, 0x3fc); + return dstp; +} + +THUMB_FUNC s32 FUN_0202A89C() +{ + return 0xD00; // 3328 +} + +THUMB_FUNC void FUN_0202A8A4(struct UnkSaveStruct_0202A5D4 *savStruct) +{ + FUN_0202A1E4(savStruct); + FUN_0202A1F0(&savStruct->u_3C); + FUN_0202A204(&savStruct->messages); + FUN_0202A230(&savStruct->u_1C4); +} + +THUMB_FUNC struct UnkSaveStruct_0202A5D4 *FUN_0202A8CC(struct SaveBlock2* sav2) +{ + return SavArray_get(sav2, 23); +} + +THUMB_FUNC void *FUN_0202A8D8(struct SaveBlock2* sav2) +{ + struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); + return &data->u_3C; +} + +THUMB_FUNC void *FUN_0202A8E4(struct SaveBlock2* sav2) +{ + struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); + return &data->u_1C4; +} \ No newline at end of file -- cgit v1.2.3 From 1fc5a9fcef39d9fbed2b7f96b4a45940ba7e9afd Mon Sep 17 00:00:00 2001 From: who-knows-who Date: Sat, 15 May 2021 16:10:25 +0100 Subject: Match FUN_0202A4B8 --- arm9/src/unk_0202A1E0.c | 80 +++++++++++++++---------------------------------- 1 file changed, 24 insertions(+), 56 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202A1E0.c b/arm9/src/unk_0202A1E0.c index ca9dff64..7de474ee 100644 --- a/arm9/src/unk_0202A1E0.c +++ b/arm9/src/unk_0202A1E0.c @@ -251,63 +251,31 @@ THUMB_FUNC void FUN_0202A498(const void *src, s32 arg1, void *dst) THUMB_FUNC void FUN_0202A4B8(struct Unk0202A4B8 *arg0, struct Unk0202A4B8 *arg1) { - extern void _s32_div_f(); - - asm { - // push {r4-r6, lr} - add r6, r0, #0x0 - ldrb r0, [r1, #0x2] - mov r2, #0xfa - lsl r2, r2, #0x2 - sub r0, r0, #0x1 - add r3, r0, #0x0 - mul r3, r2 - lsl r0, r3, #0x10 - lsr r4, r0, #0x10 - ldrh r3, [r1, #0x4] - mov r0, #0xa - ldrb r5, [r1, #0x3] - mul r0, r3 - mov r3, #0x14 - mul r3, r5 - lsl r0, r0, #0x10 - lsl r3, r3, #0x10 - lsr r0, r0, #0x10 - lsr r3, r3, #0x10 - add r3, r0, r3 - add r0, r2, #0x0 - sub r0, #0x32 - cmp r3, r0 - ble _0202A4EE - mov r5, #0x0 - b _0202A4F6 - _0202A4EE: - sub r2, #0x32 - sub r0, r2, r3 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - _0202A4F6: - ldrh r1, [r1, #0x6] - ldr r0, =0x000003CA - cmp r1, r0 - bls _0202A502 - mov r1, #0x0 - b _0202A510 - _0202A502: - add r0, #0x1e - sub r0, r0, r1 - mov r1, #0x1e - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - _0202A510: - add r0, r4, r5 - add r0, r1, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - strh r0, [r6, #0x16] - // pop {r4-r6, pc} + u16 part1 = (arg1->u_2 - 1) * 1000; + + s32 value = (u16) (arg1->u_4 * 10) + (u16) (arg1->u_3 * 20); + u16 part2; + if (value > 950) + { + part2 = 0; } + else + { + part2 = 950 - value; + } + + u16 part3; + if (arg1->u_6 > 970) + { + part3 = 0; + } + else + { + part3 = (970 + 30 - arg1->u_6) / 30; + } + + // Can't seem to get these shifts to happen with a cast + arg0->u_16 = (u32) ((part1 + part2 + part3) << 16) >> 16; } THUMB_FUNC u16 FUN_0202A520(struct Unk0202A4B8 *unk) -- cgit v1.2.3 From a2a17a9426f16ee601ff17840b8bb7851fef7138 Mon Sep 17 00:00:00 2001 From: who-knows-who Date: Wed, 2 Jun 2021 22:01:18 +0100 Subject: Finished file unk_0202A1E0 --- arm9/src/unk_0202A1E0.c | 431 ++++++++++++++++-------------------------------- 1 file changed, 139 insertions(+), 292 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0202A1E0.c b/arm9/src/unk_0202A1E0.c index 7de474ee..607ea8c3 100644 --- a/arm9/src/unk_0202A1E0.c +++ b/arm9/src/unk_0202A1E0.c @@ -6,36 +6,36 @@ THUMB_FUNC s32 FUN_0202A1E0() { - return 0xe4; // 228 + return 228; } THUMB_FUNC void FUN_0202A1E4(void *dest) { - MI_CpuFill8(dest, 0, 0x3c); // 60 + MI_CpuFill8(dest, 0, 60); } -THUMB_FUNC void FUN_0202A1F0(struct Unk0202A1F0 *unk) +THUMB_FUNC void FUN_0202A1F0(struct Unk0202A1F0 *arg0) { - MI_CpuFill8(unk, 0, 0x168); // 360 - unk->b3 = 1; + MI_CpuFill8(arg0, 0, 360); + arg0->u_3 = 1; } -THUMB_FUNC void FUN_0202A204(struct UnkMailStruct *unk) +THUMB_FUNC void FUN_0202A204(struct UnkMailStruct *arg0) { - MailMsg_init_fromTemplate(&unk->messages[0], 0); - MailMsg_init_fromTemplate(&unk->messages[1], 1); - MailMsg_init_fromTemplate(&unk->messages[2], 2); - MailMsg_init_fromTemplate(&unk->messages[3], 3); + MailMsg_init_fromTemplate(&arg0->messages[0], 0); + MailMsg_init_fromTemplate(&arg0->messages[1], 1); + MailMsg_init_fromTemplate(&arg0->messages[2], 2); + MailMsg_init_fromTemplate(&arg0->messages[3], 3); } THUMB_FUNC void FUN_0202A230(void *dst) { - MI_CpuFill8(dst, 0, 0xB3C); // 2876 + MI_CpuFill8(dst, 0, 2876); } -THUMB_FUNC u32 FUN_0202A240(struct Unk0202A240 *unk, u32 controlVariable, void *dst) +THUMB_FUNC u32 FUN_0202A240(struct Unk0202A240 *unk, u32 mode, void *dst) { - switch (controlVariable) + switch (mode) { case 0: return unk->u_0_2; @@ -67,9 +67,9 @@ THUMB_FUNC u32 FUN_0202A240(struct Unk0202A240 *unk, u32 controlVariable, void * }; } -THUMB_FUNC void FUN_0202A2C4(struct Unk0202A240 *dst, u32 controlVariable, void *src) +THUMB_FUNC void FUN_0202A2C4(struct Unk0202A240 *dst, u32 mode, void *src) { - switch (controlVariable) + switch (mode) { case 0: dst->u_0_2 = *(u8 *)src; @@ -249,33 +249,35 @@ THUMB_FUNC void FUN_0202A498(const void *src, s32 arg1, void *dst) } } -THUMB_FUNC void FUN_0202A4B8(struct Unk0202A4B8 *arg0, struct Unk0202A4B8 *arg1) +THUMB_FUNC u16 FUN_0202A4B8(struct Unk0202A4B8 *arg0, struct Unk0202A4B8 *arg1) { - u16 part1 = (arg1->u_2 - 1) * 1000; + u16 var1, var2, var3, var4, var5, total; + + var1 = (u16) ((arg1->u_2 - 1) * 1000); + var2 = (u16) (arg1->u_4 * 10); + var3 = (u16) (arg1->u_3 * 20); - s32 value = (u16) (arg1->u_4 * 10) + (u16) (arg1->u_3 * 20); - u16 part2; - if (value > 950) + if (var2 + var3 > 950) { - part2 = 0; + var4 = 0; } else { - part2 = 950 - value; + var4 = (u16) (950 - (var2 + var3)); } - u16 part3; if (arg1->u_6 > 970) { - part3 = 0; + var5 = 0; } else { - part3 = (970 + 30 - arg1->u_6) / 30; + var5 = (u16) ((1000 - arg1->u_6) / 30); } - // Can't seem to get these shifts to happen with a cast - arg0->u_16 = (u32) ((part1 + part2 + part3) << 16) >> 16; + total = (u16) (var1 + var4 + var5); + arg0->u_16 = total; + return total; } THUMB_FUNC u16 FUN_0202A520(struct Unk0202A4B8 *unk) @@ -308,56 +310,30 @@ THUMB_FUNC u16 FUN_0202A538(struct Unk0202A4B8 *unk, s32 arg1, s32 arg2) return unk->u_array_C[arg1]; } -THUMB_FUNC u16 FUN_0202A578(struct Unk0202A578 *arg0, u16 arg1, u32 arg2) { - asm{ - //push {r3-r4} - mov r3, #0x1 - mov r4, #0x0 - cmp r1, #0x0 - bls _0202A590 - _0202A582: - add r4, r4, #0x1 - lsl r4, r4, #0x10 - lsl r3, r3, #0x11 - lsr r4, r4, #0x10 - lsr r3, r3, #0x10 - cmp r4, r1 - blo _0202A582 - _0202A590: - cmp r2, #0x0 - beq _0202A5B4 - cmp r2, #0x1 - beq _0202A5AC - cmp r2, #0x2 - bne _0202A5C2 - ldr r1, =0x0000FFFF - eor r1, r3 - lsl r1, r1, #0x10 - lsr r2, r1, #0x10 - ldrh r1, [r0, #0x8] - and r1, r2 - strh r1, [r0, #0x8] - b _0202A5C2 - _0202A5AC: - ldrh r1, [r0, #0x8] - orr r1, r3 - strh r1, [r0, #0x8] - b _0202A5C2 - _0202A5B4: - ldrh r0, [r0, #0x8] - add r2, r0, #0x0 - asr r2, r1 - mov r0, #0x1 - and r0, r2 - pop {r3-r4} - bx lr - _0202A5C2: - mov r0, #0x0 - // pop {r3-r4} - // bx lr - // .balign 4 - // _0202A5C8: .word 0x0000FFFF +THUMB_FUNC BOOL FUN_0202A578(struct Unk0202A578 *arg0, u16 arg1, u32 arg2) +{ + u16 i; + u16 flag = 1; + + for (i = 0; i < arg1 ; i++) + { + flag <<= 1; + } + + switch (arg2) + { + case 2: + flag = (u16) (flag ^ 0xffff); + arg0->u_8 &= flag; + break; + case 1: + arg0->u_8 |= flag; + break; + case 0: + return (BOOL) ((arg0->u_8 >> arg1) & 1); } + + return 0; } @@ -384,159 +360,81 @@ THUMB_FUNC struct MailMessage *FUN_0202A5F4(struct SaveBlock2 *sav2, u32 arg1) return &data->messages.messages[arg1]; } -THUMB_FUNC void FUN_0202A60C(u32 arg0, u32 arg1, u32 arg2, u32 arg3) { - asm { - // push {r3-r6} - add r4, r3, #0x0 - mov r3, #0x1 - cmp r2, #0x0 - beq _0202A66C - cmp r2, #0xc8 - bhi _0202A66C - cmp r1, #0x0 - beq _0202A66C - cmp r1, #0xa - bhi _0202A66C - sub r5, r2, #0x1 - sub r2, r1, #0x1 - mov r1, #0xc8 - mul r1, r2 - add r1, r5, r1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - lsr r6, r1, #0x1f - lsl r5, r1, #0x1d - sub r5, r5, r6 - mov r2, #0x1d - ror r5, r2 - add r2, r6, r5 - lsl r2, r2, #0x18 - lsr r2, r2, #0x18 - lsl r3, r2 - lsl r2, r3, #0x18 - lsl r1, r1, #0x15 - lsr r5, r2, #0x18 - add r3, r0, #0x4 - lsr r2, r1, #0x18 - ldrb r1, [r3, r2] - orr r1, r5 - strb r1, [r3, r2] - ldr r3, [r4, #0x0] - ldr r1, [r4, #0x8] - lsl r5, r3, #0x18 - ldr r3, [r4, #0x4] - lsl r1, r1, #0x18 - lsl r3, r3, #0x18 - lsr r3, r3, #0x8 - ldr r2, [r4, #0xc] - lsr r1, r1, #0x10 - orr r3, r5 - orr r1, r3 - orr r1, r2 - str r1, [r0, #0x0] - _0202A66C: - // pop {r3-r6} - // bx lr +THUMB_FUNC void FUN_0202A60C(struct Unk0202A670 *arg0, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) { + + u8 bitmask = 1; + + if (arg2 == 0 || arg2 > 200) + { + return; + } + + if (arg1 == 0 || arg1 > 10) + { + return; } + + u16 var2 = (u16) ((arg1 - 1) * 200 + (arg2 - 1)); + u8 index = (u8) (var2 / 8); + u8 remainder = (u8) (var2 % 8); + bitmask <<= remainder; + + arg0->u_4[index] |= bitmask; + arg0->u_0 = (arg3->u_0 << 24) | ((arg3->u_4 & 0xff) << 16) | ((arg3->u_8 & 0xff) << 8) | arg3->u_C; } THUMB_FUNC void FUN_0202A670(struct Unk0202A670 *arg0) { - MI_CpuFill8(&(arg0->b4), 0, 0xfa); + MI_CpuFill8(&(arg0->u_4), 0, 250); MI_CpuFill8(arg0, 0, 4); } -THUMB_FUNC u32 FUN_0202A68C(struct Unk0202A68C *arg0, struct Unk0202A68C *arg1) +THUMB_FUNC BOOL FUN_0202A68C(struct Unk0202A68C *arg0, struct Unk0202A68C *arg1) { - if (arg0->b0 > arg1->b0) { - return 1; - } else if (arg0->b4 > arg1->b4) { - return 1; - } else if (arg0->b8 > arg1->b8) { - return 1; + if (arg0->u_0 > arg1->u_0) { + return TRUE; + } else if (arg0->u_4 > arg1->u_4) { + return TRUE; + } else if (arg0->u_8 > arg1->u_8) { + return TRUE; } - return 0; + return FALSE; } -THUMB_FUNC void FUN_0202A6B4(u32 arg0, u32 arg1, u32 arg2) -{ - asm { - // push {r3-r7, lr} - sub sp, #0x10 - add r6, r2, #0x0 - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r7, #0x1 - cmp r6, #0xc8 - bhi _0202A6C8 - cmp r4, #0xa - bls _0202A6CE - _0202A6C8: - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} - _0202A6CE: - ldr r0, [r5, #0x0] - lsr r1, r0, #0x18 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x0] - lsr r1, r0, #0x10 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - str r1, [sp, #0x4] - lsr r1, r0, #0x8 - lsl r1, r1, #0x18 - lsl r0, r0, #0x18 - lsr r1, r1, #0x18 - lsr r0, r0, #0x18 - str r1, [sp, #0x8] - str r0, [sp, #0xc] - add r0, r3, #0x0 - add r1, sp, #0x0 - bl FUN_0202A68C - cmp r0, #0x0 - beq _0202A706 - add r0, r5, #0x0 - bl FUN_0202A670 - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} - _0202A706: - sub r1, r4, #0x1 - mov r0, #0xc8 - mul r0, r1 - sub r2, r6, #0x1 - add r0, r2, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - lsr r3, r0, #0x1f - lsl r2, r0, #0x1d - lsl r0, r0, #0x15 - lsr r0, r0, #0x18 - add r0, r5, r0 - sub r2, r2, r3 - mov r1, #0x1d - ror r2, r1 - add r1, r3, r2 - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r2, r7, #0x0 - lsl r2, r1 - lsl r1, r2, #0x18 - ldrb r0, [r0, #0x4] - lsr r1, r1, #0x18 - tst r0, r1 - beq _0202A73E - add sp, #0x10 - add r0, r7, #0x0 - pop {r3-r7, pc} - _0202A73E: - mov r0, #0x0 - add sp, #0x10 - // pop {r3-r7, pc} +THUMB_FUNC BOOL FUN_0202A6B4(struct Unk0202A670 *arg0, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) +{ + u8 bitmask = 1; + + if (arg2 > 200 || arg1 > 10) + { + return FALSE; + } + + u32 var0 = arg0->u_0; + + Unk0202A68C var1; + var1.u_0 = var0 >> 24 & 0xff; + var1.u_4 = var0 >> 16 & 0xff; + var1.u_8 = var0 >> 8 & 0xff; + var1.u_C = var0 & 0xff; + + if (FUN_0202A68C(arg3, &var1)) + { + FUN_0202A670(arg0); + return FALSE; + } + + u16 var2 = (u16) ((arg1 - 1) * 200 + (arg2 - 1)); + u8 index = (u8) (var2 / 8); + u8 remainder = (u8) (var2 % 8); + bitmask <<= remainder; + + if (arg0->u_4[index] & bitmask) + { + return 1; } + return FALSE; } @@ -564,82 +462,31 @@ THUMB_FUNC void FUN_0202A784(struct Unk0202A744 *src, struct Unk0202A784 *dest) dest->u_1 = src->u_100; } -THUMB_FUNC void FUN_0202A798() -{ - asm { - //push {r3-r7, lr} - add r6, r1, #0x0 - mov r1, #0x41 - lsl r1, r1, #0x2 - add r5, r0, r1 - mov r0, #0xe4 - add r4, r2, #0x0 - mul r4, r0 - ldr r0, =0x00002710 - add r7, r6, #0x0 - str r0, [r6, #0x0] - add r0, r5, r4 - add r0, #0xc9 - ldrb r0, [r0, #0x0] - add r7, #0x30 - strh r0, [r6, #0x4] - add r0, r5, r4 - add r0, #0xc8 - ldrb r0, [r0, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - beq _0202A7EE - mov r0, #0x0 - mov r1, #0x1a - mov r2, #0x11 - mov r3, #0xb - bl NewMsgDataFromNarc - add r1, r5, r4 - add r1, #0xc8 - ldrb r1, [r1, #0x0] - add r2, r6, #0x0 - str r0, [sp, #0x0] - lsl r1, r1, #0x1e - lsr r1, r1, #0x1f - add r1, #0x16 - add r2, #0x8 - bl ReadMsgDataIntoU16Array - ldr r0, [sp, #0x0] - bl DestroyMsgData - b _0202A7FC - _0202A7EE: - add r0, r5, r4 - add r1, r6, #0x0 - add r0, #0xa8 - add r1, #0x8 - mov r2, #0x10 - bl MI_CpuCopy8 - _0202A7FC: - add r0, r5, r4 - add r1, r6, #0x0 - add r0, #0xca - add r1, #0x18 - mov r2, #0x8 - bl MI_CpuCopy8 - add r0, r5, r4 - add r1, r6, #0x0 - add r0, #0xd2 - add r1, #0x20 - mov r2, #0x8 - bl MI_CpuCopy8 - add r0, r5, r4 - add r6, #0x28 - add r0, #0xda - add r1, r6, #0x0 - mov r2, #0x8 - bl MI_CpuCopy8 - add r0, r5, r4 - add r1, r7, #0x0 - mov r2, #0xa8 - bl MI_CpuCopy8 - //pop {r3-r7, pc} - //nop +THUMB_FUNC void FUN_0202A798(struct Unk0202A798_1 *arg0, struct Unk0202A798_2 *arg1, u32 arg2) +{ + struct Unk0202A798_substruct2 *var0 = &arg1->u_0; + u8 *var1 = arg1->u_30; + struct Unk0202A798_substruct1 *src = &arg0->u_104[arg2]; + struct MsgData *message; + + var0->u_0 = 10000; + var0->u_4 = src->u_C9; + + if(src->u_C8_0) + { + message = NewMsgDataFromNarc(0, NARC_MSGDATA_MSG, 17, 11); + ReadMsgDataIntoU16Array(message, (u32) (22 + src->u_C8_1), var0->u_8); + DestroyMsgData(message); + } + else + { + MI_CpuCopy8(src->u_A8, var0->u_8, 16); } + + MI_CpuCopy8(src->u_CA, var0->u_18, 8); + MI_CpuCopy8(src->u_D2, var0->u_20, 8); + MI_CpuCopy8(src->u_DA, var0->u_28, 8); + MI_CpuCopy8(src->u_0, var1, 168); } THUMB_FUNC void FUN_0202A838(struct Unk0202A744 *dest, void *src, u8 arg2, u8 arg3) @@ -659,7 +506,7 @@ THUMB_FUNC void FUN_0202A864(struct Unk0202A744 *src, struct Unk0202A784 *dest) THUMB_FUNC struct Unk0202A744_substruct2 *FUN_0202A878(struct Unk0202A744 *src, u32 heap_id) { struct Unk0202A744_substruct2 *dstp = AllocFromHeap(heap_id, sizeof(struct Unk0202A744_substruct2) /* 1020 */); - MI_CpuCopy8(&src->u_740, dstp, 0x3fc); + MI_CpuCopy8(&src->u_740, dstp, sizeof(struct Unk0202A744_substruct2)); return dstp; } @@ -681,7 +528,7 @@ THUMB_FUNC struct UnkSaveStruct_0202A5D4 *FUN_0202A8CC(struct SaveBlock2* sav2) return SavArray_get(sav2, 23); } -THUMB_FUNC void *FUN_0202A8D8(struct SaveBlock2* sav2) +THUMB_FUNC struct Unk0202A1F0 *FUN_0202A8D8(struct SaveBlock2* sav2) { struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); return &data->u_3C; -- cgit v1.2.3 From 5bbef1bba183ad6654edbd0c8fc8244db38ac5c9 Mon Sep 17 00:00:00 2001 From: who-knows-who Date: Mon, 21 Jun 2021 21:36:37 +0100 Subject: Rename functions --- arm9/src/save_arrays.c | 5 +- arm9/src/unk_0202A1E0.c | 459 ++++++++++++++++++++++++------------------------ arm9/src/unk_0205FA2C.c | 97 +++++----- 3 files changed, 274 insertions(+), 287 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index f4b18b86..1969e3f1 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -16,6 +16,7 @@ #include "unk_020139D8.h" #include "unk_02024E64.h" #include "sav_chatot.h" +#include "unk_0202A1E0.h" extern u32 FUN_0202AC20(void); extern u32 FUN_02034D7C(void); @@ -28,7 +29,6 @@ extern u32 FUN_02028980(void); extern u32 FUN_02029A84(void); extern u32 FUN_02029FB0(void); extern u32 Sav2_Chatot_sizeof(void); -extern u32 FUN_0202A89C(void); extern u32 FUN_0202A8F4(void); extern u32 FUN_0202A924(void); extern u32 FUN_0202ABC8(void); @@ -48,7 +48,6 @@ extern void FUN_0202805C(void *); extern void FUN_02028994(void *); extern void FUN_02029A8C(void *); extern void FUN_02029FB8(void *); -extern void FUN_0202A8A4(void *); extern void FUN_0202A8F8(void *); extern void FUN_0202A92C(void *); extern void FUN_0202ABCC(void *); @@ -88,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = { { 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 }, { 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init }, { 22, 0, (SAVSIZEFN)Sav2_Chatot_sizeof, (SAVINITFN)Sav2_Chatot_init }, - { 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 }, + { 23, 0, (SAVSIZEFN)SaveStruct23_sizeof, (SAVINITFN)SaveStruct23_Init }, { 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 }, { 25, 0, (SAVSIZEFN)FUN_0202A924, (SAVINITFN)FUN_0202A92C }, { 26, 0, (SAVSIZEFN)FUN_0202ABC8, (SAVINITFN)FUN_0202ABCC }, diff --git a/arm9/src/unk_0202A1E0.c b/arm9/src/unk_0202A1E0.c index 607ea8c3..4f32d430 100644 --- a/arm9/src/unk_0202A1E0.c +++ b/arm9/src/unk_0202A1E0.c @@ -4,252 +4,249 @@ #include "heap.h" #include "unk_0202A1E0.h" -THUMB_FUNC s32 FUN_0202A1E0() +THUMB_FUNC s32 SaveStruct23_Substruct4_Substruct1_sizeof() { - return 228; + return sizeof(struct SaveStruct23_Substruct4_Substruct1); // 228 } -THUMB_FUNC void FUN_0202A1E4(void *dest) +THUMB_FUNC void SaveStruct23_Substruct1_Init(struct SaveStruct23_Substruct1 *substruct1) { - MI_CpuFill8(dest, 0, 60); + MI_CpuFill8(substruct1, 0, sizeof(struct SaveStruct23_Substruct1)); } -THUMB_FUNC void FUN_0202A1F0(struct Unk0202A1F0 *arg0) +THUMB_FUNC void SaveStruct23_Substruct2_Init(struct SaveStruct23_Substruct2 *substruct2) { - MI_CpuFill8(arg0, 0, 360); - arg0->u_3 = 1; + MI_CpuFill8(substruct2, 0, sizeof(struct SaveStruct23_Substruct2)); + substruct2->u_3 = 1; } -THUMB_FUNC void FUN_0202A204(struct UnkMailStruct *arg0) +THUMB_FUNC void SaveStruct23_Messages_Init(struct SaveStruct23_Messages *messages) { - MailMsg_init_fromTemplate(&arg0->messages[0], 0); - MailMsg_init_fromTemplate(&arg0->messages[1], 1); - MailMsg_init_fromTemplate(&arg0->messages[2], 2); - MailMsg_init_fromTemplate(&arg0->messages[3], 3); + MailMsg_init_fromTemplate(&messages->messages[0], 0); + MailMsg_init_fromTemplate(&messages->messages[1], 1); + MailMsg_init_fromTemplate(&messages->messages[2], 2); + MailMsg_init_fromTemplate(&messages->messages[3], 3); } -THUMB_FUNC void FUN_0202A230(void *dst) +THUMB_FUNC void SaveStruct23_Substruct4_Init(struct SaveStruct23_Substruct4 *substruct4) { - MI_CpuFill8(dst, 0, 2876); + MI_CpuFill8(substruct4, 0, sizeof(struct SaveStruct23_Substruct4)); } -THUMB_FUNC u32 FUN_0202A240(struct Unk0202A240 *unk, u32 mode, void *dst) +THUMB_FUNC u32 SaveStruct23_Substruct1_GetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *dst) { - switch (mode) + switch (field) { - case 0: - return unk->u_0_2; - case 1: - return unk->u_2; - case 2: - return unk->u_3; - case 3: - return unk->u_4; - case 4: - return unk->u_6; - case 5: - MI_CpuCopy8(&unk->u_8, dst, 4); + case FIELD_0x0_2: + return substruct1->u_0_2; + case FIELD_0x2: + return substruct1->u_2; + case FIELD_0x3: + return substruct1->u_3; + case FIELD_0x4: + return substruct1->u_4; + case FIELD_0x6: + return substruct1->u_6; + case FIELD_0x8: + MI_CpuCopy8(&substruct1->u_8, dst, 4); return 0; - case 6: - MI_CpuCopy8(&unk->u_2C, dst, 16); + case FIELD_0x2C: + MI_CpuCopy8(&substruct1->u_2C, dst, 16); return 0; - case 7: - return unk->u_0_0; - case 8: - MI_CpuCopy8(&unk->u_C, dst, 28); + case FIELD_flag0: + return substruct1->flag0; + case FIELD_0xC: + MI_CpuCopy8(&substruct1->u_C, dst, 28); return 0; - case 9: - return unk->u_0_5; - case 10: - return unk->u_28; + case FIELD_0x0_5: + return substruct1->u_0_5; + case FIELD_0x28: + return substruct1->u_28; default: return 0; }; } -THUMB_FUNC void FUN_0202A2C4(struct Unk0202A240 *dst, u32 mode, void *src) +THUMB_FUNC void SaveStruct23_Substruct1_SetField(struct SaveStruct23_Substruct1 *substruct1, SaveStruct23_Substruct1_Field field, void *value) { - switch (mode) + switch (field) { - case 0: - dst->u_0_2 = *(u8 *)src; + case FIELD_0x0_2: + substruct1->u_0_2 = *(u8 *)value; break; - case 1: - dst->u_2 = *(u8 *)src; + case FIELD_0x2: + substruct1->u_2 = *(u8 *)value; break; - case 2: - dst->u_3 = *(u8 *)src; + case FIELD_0x3: + substruct1->u_3 = *(u8 *)value; break; - case 3: - dst->u_4 = *(u16 *)src; + case FIELD_0x4: + substruct1->u_4 = *(u16 *)value; break; - case 4: - dst->u_6 = *(u16 *)src; + case FIELD_0x6: + substruct1->u_6 = *(u16 *)value; break; - case 5: - MI_CpuCopy8(src, &dst->u_8, 4); + case FIELD_0x8: + MI_CpuCopy8(value, &substruct1->u_8, 4); break; - case 6: - MI_CpuCopy8(src, &dst->u_2C, 16); + case FIELD_0x2C: + MI_CpuCopy8(value, &substruct1->u_2C, 16); break; - case 7: - dst->u_0_0 = *(u8 *)src; + case FIELD_flag0: + substruct1->flag0 = *(u8 *)value; break; - case 8: - MI_CpuCopy8(src, &dst->u_C, 28); + case FIELD_0xC: + MI_CpuCopy8(value, &substruct1->u_C, 28); break; - case 10: - dst->u_28 = *(u32 *)src; + case FIELD_0x28: + substruct1->u_28 = *(u32 *)value; break; - case 9: - dst->u_0_5 = *(u8 *)src; + case FIELD_0x0_5: + substruct1->u_0_5 = *(u8 *)value; break; } } -THUMB_FUNC void FUN_0202A36C(struct Unk0202A240 *unk, s32 arg1, s32 arg2, s32 arg3) +THUMB_FUNC void FUN_0202A36C(struct SaveStruct23_Substruct1 *substruct1, s32 arg1, s32 arg2, s32 arg3) { - if (unk->u_3 + arg1 < 0xff) + if (substruct1->u_3 + arg1 < 0xff) { - unk->u_3 += arg1; + substruct1->u_3 += arg1; } - if (unk->u_4 + arg2 < 0xffff) + if (substruct1->u_4 + arg2 < 0xffff) { - unk->u_4 += arg2; + substruct1->u_4 += arg2; } - if (unk->u_6 + arg3 < 0xffff) + if (substruct1->u_6 + arg3 < 0xffff) { - unk->u_6 += arg3; + substruct1->u_6 += arg3; } } -THUMB_FUNC u8 FUN_0202A398(struct Unk0202A240 *unk) +THUMB_FUNC BOOL SaveStruct23_Substruct1_GetFlag1(struct SaveStruct23_Substruct1 *substruct1) { - return unk->u_0_1; + return substruct1->flag1; } -THUMB_FUNC void FUN_0202A3A0(struct Unk0202A240 *unk, u16 arg1) +THUMB_FUNC void SaveStruct23_Substruct1_SetFlag1(struct SaveStruct23_Substruct1 *substruct1, BOOL flag) { - unk->u_0_1 = arg1; + substruct1->flag1 = flag; } -THUMB_FUNC u16 FUN_0202A3B4(struct Unk0202A3B4 *unk, u16 arg1, s32 controlVariable) +THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0x0(struct SaveStruct23_Substruct2 *substruct2, u16 value, DataSetMode mode) { - switch (controlVariable) + switch (mode) { - case 0: - break; - case 1: - if (arg1 > 0x270F) + case DATA_SET: + if (value > 9999) { - unk->u_0 = 0x270F; + substruct2->u_0 = 9999; } else { - unk->u_0 = arg1; + substruct2->u_0 = value; } break; - case 2: - case 3: - case 4: - break; - case 5: - if (unk->u_0 + arg1 > 0x270F) + case DATA_ADD: + if (substruct2->u_0 + value > 9999) { - unk->u_0 = 0x270F; + substruct2->u_0 = 9999; } else { - unk->u_0 += arg1; + substruct2->u_0 += value; } break; - case 6: - if (unk->u_0 < arg1) + case DATA_SUBSTRACT: + if (substruct2->u_0 < value) { - unk->u_0 = 0; + substruct2->u_0 = 0; } else { - unk->u_0 -= arg1; + substruct2->u_0 -= value; } break; + case DATA_GET: + default: + break; } - return unk->u_0; + return substruct2->u_0; } -THUMB_FUNC u8 FUN_0202A40C(struct Unk0202A40C *unk, s32 controlVariable) +THUMB_FUNC u8 SaveStruct23_Substruct2_SetField_0x2(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode) { - switch (controlVariable) + switch (mode) { - case 2: - unk->u_2 = 0; - unk->u_8_4 = 0; + case DATA_RESET: + substruct2->u_2 = 0; + substruct2->flag4 = 0; break; - case 3: - if (unk->u_8_4 != 0) + case DATA_INCREMENT: + if (substruct2->flag4) { - unk->u_2 += 1; + substruct2->u_2++; } else { - unk->u_2 = 1; - unk->u_8_4 = 1; + substruct2->u_2 = 1; + substruct2->flag4 = 1; } break; } - return unk->u_2; + return substruct2->u_2; } -THUMB_FUNC u8 FUN_0202A444(struct Unk0202A444 *unk, s32 controlVariable) +THUMB_FUNC u8 SaveStruct23_Substruct2_SetField_0x3(struct SaveStruct23_Substruct2 *substruct2, DataSetMode mode) { - switch (controlVariable) + switch (mode) { - case 2: - unk->u_3 = 1; + case DATA_RESET: + substruct2->u_3 = 1; break; - case 3: - if (unk->u_3 < 0xa) + case DATA_INCREMENT: + if (substruct2->u_3 < 10) { - unk->u_3++; + substruct2->u_3++; } break; - case 4: - if (unk->u_3 > 1) + case DATA_DECREMENT: + if (substruct2->u_3 > 1) { - unk->u_3--; + substruct2->u_3--; } break; } - return unk->u_3; + return substruct2->u_3; } -THUMB_FUNC void FUN_0202A474(void *dst, s32 arg1, const void *src) +THUMB_FUNC void SaveStruct23_Substruct2_SetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *src) { - if (arg1 == 0) + if (mode == 0) { - MI_CpuCopy8(src, dst + 0xc0, 0xa8); + MI_CpuCopy8(src, substruct2->u_C0, 168); } else { - MI_CpuCopy8(src, dst + 0x18, 0xa8); + MI_CpuCopy8(src, substruct2->u_18, 168); } } -THUMB_FUNC void FUN_0202A498(const void *src, s32 arg1, void *dst) +THUMB_FUNC void SaveStruct23_Substruct2_GetArray(struct SaveStruct23_Substruct2 *substruct2, s32 mode, void *dst) { - if (arg1 == 0) + if (mode == 0) { - MI_CpuCopy8(src + 0xc0, dst, 0xa8); + MI_CpuCopy8(substruct2->u_C0, dst, 168); } else { - MI_CpuCopy8(src + 0x18, dst, 0xa8); + MI_CpuCopy8(substruct2->u_18, dst, 168); } } -THUMB_FUNC u16 FUN_0202A4B8(struct Unk0202A4B8 *arg0, struct Unk0202A4B8 *arg1) +THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0x16(struct SaveStruct23_Substruct2 *substruct2, struct Unk0202A4B8 *arg1) { u16 var1, var2, var3, var4, var5, total; @@ -276,93 +273,93 @@ THUMB_FUNC u16 FUN_0202A4B8(struct Unk0202A4B8 *arg0, struct Unk0202A4B8 *arg1) } total = (u16) (var1 + var4 + var5); - arg0->u_16 = total; + substruct2->u_16 = total; return total; } -THUMB_FUNC u16 FUN_0202A520(struct Unk0202A4B8 *unk) +THUMB_FUNC u16 SaveStruct23_Substruct2_GetField_0x16(struct SaveStruct23_Substruct2 *substruct2) { - return unk->u_16; + return substruct2->u_16; } -THUMB_FUNC u8 FUN_0202A524(struct Unk0202A4B8 *unk) +THUMB_FUNC u8 FUN_0202A524(struct SaveStruct23_Substruct2 *substruct2) { - return (u8)(unk->u_16 / (0xfa << 2)); + return (u8)(substruct2->u_16 / 1000); } -THUMB_FUNC u16 FUN_0202A538(struct Unk0202A4B8 *unk, s32 arg1, s32 arg2) +THUMB_FUNC u16 SaveStruct23_Substruct2_SetField_0xC(struct SaveStruct23_Substruct2 *substruct2, u16 arg1, DataSetMode mode) { if (arg1 == 5) { return 0; } - switch(arg2) { - case 2: - unk->u_array_C[arg1] = 0; + switch(mode) { + case DATA_RESET: + substruct2->u_C[arg1] = 0; break; - case 3: - if (unk->u_array_C[arg1] < 0xfffe) { - unk->u_array_C[arg1]++; + case DATA_INCREMENT: + if (substruct2->u_C[arg1] < 0xfffe) { + substruct2->u_C[arg1]++; } break; } - return unk->u_array_C[arg1]; + return substruct2->u_C[arg1]; } -THUMB_FUNC BOOL FUN_0202A578(struct Unk0202A578 *arg0, u16 arg1, u32 arg2) +THUMB_FUNC BOOL SaveStruct23_Substruct2_SetFlag(struct SaveStruct23_Substruct2 *substruct2, u16 flagNumber, DataSetMode mode) { u16 i; u16 flag = 1; - for (i = 0; i < arg1 ; i++) + for (i = 0; i < flagNumber ; i++) { flag <<= 1; } - switch (arg2) + switch (mode) { - case 2: + case DATA_RESET: flag = (u16) (flag ^ 0xffff); - arg0->u_8 &= flag; + substruct2->flags &= flag; break; - case 1: - arg0->u_8 |= flag; + case DATA_SET: + substruct2->flags |= flag; break; - case 0: - return (BOOL) ((arg0->u_8 >> arg1) & 1); + case DATA_GET: + return (BOOL) ((substruct2->flags >> flagNumber) & 1); } - return 0; + return FALSE; } -THUMB_FUNC void FUN_0202A5CC(struct Unk0202A5CC *unk, u32 arg1) +THUMB_FUNC void SaveStruct23_Substruct2_SetField_0x4(struct SaveStruct23_Substruct2 *substruct2, u32 value) { - unk->u_4 = arg1; + substruct2->u_4 = value; } -THUMB_FUNC u32 FUN_0202A5D0(struct Unk0202A5CC *unk) +THUMB_FUNC u32 SaveStruct23_Substruct2_GetField_0x4(struct SaveStruct23_Substruct2 *substruct2) { - return unk->u_4; + return substruct2->u_4; } -THUMB_FUNC void FUN_0202A5D4(struct SaveBlock2 *sav2, u32 arg1, struct MailMessage *arg2) +THUMB_FUNC void SaveStruct23_SetMessage(struct SaveBlock2 *sav2, u32 index, struct MailMessage *message) { - struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); - MailMsg_copy(&data->messages.messages[arg1], arg2); + struct SaveStruct23 *data = SavArray_get(sav2, 23); + MailMsg_copy(&data->messages.messages[index], message); } -THUMB_FUNC struct MailMessage *FUN_0202A5F4(struct SaveBlock2 *sav2, u32 arg1) +THUMB_FUNC struct MailMessage *SaveStruct23_GetMessage(struct SaveBlock2 *sav2, u32 index) { - struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); - return &data->messages.messages[arg1]; + struct SaveStruct23 *data = SavArray_get(sav2, 23); + return &data->messages.messages[index]; } -THUMB_FUNC void FUN_0202A60C(struct Unk0202A670 *arg0, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) { +THUMB_FUNC void SaveStruct23_Substruct4_SetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) { - u8 bitmask = 1; + u8 flag = 1; if (arg2 == 0 || arg2 > 200) { @@ -374,44 +371,44 @@ THUMB_FUNC void FUN_0202A60C(struct Unk0202A670 *arg0, u8 arg1, u8 arg2, struct return; } - u16 var2 = (u16) ((arg1 - 1) * 200 + (arg2 - 1)); - u8 index = (u8) (var2 / 8); - u8 remainder = (u8) (var2 % 8); - bitmask <<= remainder; + u16 var1 = (u16) ((arg1 - 1) * 200 + (arg2 - 1)); + u8 index = (u8) (var1 / 8); + u8 remainder = (u8) (var1 % 8); + flag <<= remainder; - arg0->u_4[index] |= bitmask; - arg0->u_0 = (arg3->u_0 << 24) | ((arg3->u_4 & 0xff) << 16) | ((arg3->u_8 & 0xff) << 8) | arg3->u_C; + substruct4->flags[index] |= flag; + substruct4->u_0 = (arg3->u_0 << 24) | ((arg3->u_4 & 0xff) << 16) | ((arg3->u_8 & 0xff) << 8) | arg3->u_C; } -THUMB_FUNC void FUN_0202A670(struct Unk0202A670 *arg0) +THUMB_FUNC void SaveStruct23_Substruct4_ClearArrayFlags(struct SaveStruct23_Substruct4 *substruct4) { - MI_CpuFill8(&(arg0->u_4), 0, 250); - MI_CpuFill8(arg0, 0, 4); + MI_CpuFill8(substruct4->flags, 0, 250); + MI_CpuFill8(&substruct4->u_0, 0, 4); } -THUMB_FUNC BOOL FUN_0202A68C(struct Unk0202A68C *arg0, struct Unk0202A68C *arg1) +THUMB_FUNC BOOL StructUnk0202A68C_Compare(struct Unk0202A68C *struct1, struct Unk0202A68C *struct2) { - if (arg0->u_0 > arg1->u_0) { + if (struct1->u_0 > struct2->u_0) { return TRUE; - } else if (arg0->u_4 > arg1->u_4) { + } else if (struct1->u_4 > struct2->u_4) { return TRUE; - } else if (arg0->u_8 > arg1->u_8) { + } else if (struct1->u_8 > struct2->u_8) { return TRUE; } return FALSE; } -THUMB_FUNC BOOL FUN_0202A6B4(struct Unk0202A670 *arg0, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) +THUMB_FUNC BOOL SaveStruct23_Substruct4_GetArrayFlag(struct SaveStruct23_Substruct4 *substruct4, u8 arg1, u8 arg2, struct Unk0202A68C *arg3) { - u8 bitmask = 1; + u8 flag = 1; if (arg2 > 200 || arg1 > 10) { return FALSE; } - u32 var0 = arg0->u_0; + u32 var0 = substruct4->u_0; Unk0202A68C var1; var1.u_0 = var0 >> 24 & 0xff; @@ -419,123 +416,121 @@ THUMB_FUNC BOOL FUN_0202A6B4(struct Unk0202A670 *arg0, u8 arg1, u8 arg2, struct var1.u_8 = var0 >> 8 & 0xff; var1.u_C = var0 & 0xff; - if (FUN_0202A68C(arg3, &var1)) + if (StructUnk0202A68C_Compare(arg3, &var1)) { - FUN_0202A670(arg0); + SaveStruct23_Substruct4_ClearArrayFlags(substruct4); return FALSE; } u16 var2 = (u16) ((arg1 - 1) * 200 + (arg2 - 1)); u8 index = (u8) (var2 / 8); u8 remainder = (u8) (var2 % 8); - bitmask <<= remainder; + flag <<= remainder; - if (arg0->u_4[index] & bitmask) + if (substruct4->flags[index] & flag) { - return 1; + return TRUE; } return FALSE; } -THUMB_FUNC u8 FUN_0202A744(struct Unk0202A744 *unk) +THUMB_FUNC u8 SaveStruct23_Substruct4_GetField_0xFE(struct SaveStruct23_Substruct4 *substruct4) { - return unk->u_FE; + return substruct4->u_FE; } -THUMB_FUNC u8 FUN_0202A74C(struct Unk0202A744 *unk) +THUMB_FUNC u8 SaveStruct23_Substruct4_GetField_0xFF(struct SaveStruct23_Substruct4 *substruct4) { - return unk->u_FF; + return substruct4->u_FF; } -THUMB_FUNC void FUN_0202A754(struct Unk0202A744 *dest, void *src, u8 arg2, u8 arg3) +THUMB_FUNC void SaveStruct23_Substruct4_SetSubstruct1(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct1 *substruct1, u8 arg2, u8 arg3) { - MI_CpuCopy8(src, &dest->u_104, sizeof(struct Unk0202A744_substruct1)); - dest->u_101 = arg2; - dest->u_100 = arg3; - dest->u_FE = 1; + MI_CpuCopy8(substruct1, &substruct4->substruct1, sizeof(struct SaveStruct23_Substruct4_Substruct1)*7); + substruct4->u_101 = arg2; + substruct4->u_100 = arg3; + substruct4->u_FE = 1; } -THUMB_FUNC void FUN_0202A784(struct Unk0202A744 *src, struct Unk0202A784 *dest) +THUMB_FUNC void FUN_0202A784(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dst) { - dest->u_0 = src->u_101; - dest->u_1 = src->u_100; + dst->u_0 = substruct4->u_101; + dst->u_1 = substruct4->u_100; } -THUMB_FUNC void FUN_0202A798(struct Unk0202A798_1 *arg0, struct Unk0202A798_2 *arg1, u32 arg2) +THUMB_FUNC void FUN_0202A798(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A798 *arg1, u32 arg2) { - struct Unk0202A798_substruct2 *var0 = &arg1->u_0; + struct Unk0202A798_substruct *unk_substruct = &arg1->u_0; u8 *var1 = arg1->u_30; - struct Unk0202A798_substruct1 *src = &arg0->u_104[arg2]; + struct SaveStruct23_Substruct4_Substruct1 *substruct4_substruct1 = &substruct4->substruct1[arg2]; struct MsgData *message; - var0->u_0 = 10000; - var0->u_4 = src->u_C9; + unk_substruct->u_0 = 10000; + unk_substruct->u_4 = substruct4_substruct1->u_C9; - if(src->u_C8_0) + if(substruct4_substruct1->u_C8_0) { message = NewMsgDataFromNarc(0, NARC_MSGDATA_MSG, 17, 11); - ReadMsgDataIntoU16Array(message, (u32) (22 + src->u_C8_1), var0->u_8); + ReadMsgDataIntoU16Array(message, (u32) (22 + substruct4_substruct1->u_C8_1), unk_substruct->u_8); DestroyMsgData(message); } else { - MI_CpuCopy8(src->u_A8, var0->u_8, 16); + MI_CpuCopy8(substruct4_substruct1->u_A8, unk_substruct->u_8, 16); } - MI_CpuCopy8(src->u_CA, var0->u_18, 8); - MI_CpuCopy8(src->u_D2, var0->u_20, 8); - MI_CpuCopy8(src->u_DA, var0->u_28, 8); - MI_CpuCopy8(src->u_0, var1, 168); + MI_CpuCopy8(substruct4_substruct1->u_CA, unk_substruct->u_18, 8); + MI_CpuCopy8(substruct4_substruct1->u_D2, unk_substruct->u_20, 8); + MI_CpuCopy8(substruct4_substruct1->u_DA, unk_substruct->u_28, 8); + MI_CpuCopy8(substruct4_substruct1->u_0, var1, 168); } -THUMB_FUNC void FUN_0202A838(struct Unk0202A744 *dest, void *src, u8 arg2, u8 arg3) +THUMB_FUNC void FUN_0202A838(struct SaveStruct23_Substruct4 *substruct4, struct SaveStruct23_Substruct4_Substruct2 *substruct4_substruct2, u8 arg2, u8 arg3) { - MI_CpuCopy8(src, &dest->u_740, sizeof(dest->u_740)); - dest->u_103 = arg2; - dest->u_102 = arg3; - dest->u_FF = 1; + MI_CpuCopy8(substruct4_substruct2, &substruct4->substruct2, sizeof(struct SaveStruct23_Substruct4_Substruct2)); + substruct4->u_103 = arg2; + substruct4->u_102 = arg3; + substruct4->u_FF = 1; } -THUMB_FUNC void FUN_0202A864(struct Unk0202A744 *src, struct Unk0202A784 *dest) +THUMB_FUNC void FUN_0202A864(struct SaveStruct23_Substruct4 *substruct4, struct Unk0202A784 *dst) { - dest->u_0 = src->u_103; - dest->u_1 = src->u_102; + dst->u_0 = substruct4->u_103; + dst->u_1 = substruct4->u_102; } -THUMB_FUNC struct Unk0202A744_substruct2 *FUN_0202A878(struct Unk0202A744 *src, u32 heap_id) +THUMB_FUNC struct SaveStruct23_Substruct4_Substruct2 *FUN_0202A878(struct SaveStruct23_Substruct4 *substruct4, u32 heap_id) { - struct Unk0202A744_substruct2 *dstp = AllocFromHeap(heap_id, sizeof(struct Unk0202A744_substruct2) /* 1020 */); - MI_CpuCopy8(&src->u_740, dstp, sizeof(struct Unk0202A744_substruct2)); - return dstp; + struct SaveStruct23_Substruct4_Substruct2 *substruct4_substruct2 = AllocFromHeap(heap_id, sizeof(struct SaveStruct23_Substruct4_Substruct2) /* 1020 */); + MI_CpuCopy8(&substruct4->substruct2, substruct4_substruct2, sizeof(struct SaveStruct23_Substruct4_Substruct2)); + return substruct4_substruct2; } -THUMB_FUNC s32 FUN_0202A89C() +THUMB_FUNC s32 SaveStruct23_sizeof() { - return 0xD00; // 3328 + return sizeof(struct SaveStruct23); // 0xD00 (3328) } -THUMB_FUNC void FUN_0202A8A4(struct UnkSaveStruct_0202A5D4 *savStruct) +THUMB_FUNC void SaveStruct23_Init(struct SaveStruct23 *saveStruct23) { - FUN_0202A1E4(savStruct); - FUN_0202A1F0(&savStruct->u_3C); - FUN_0202A204(&savStruct->messages); - FUN_0202A230(&savStruct->u_1C4); + SaveStruct23_Substruct1_Init(&saveStruct23->substruct1); + SaveStruct23_Substruct2_Init(&saveStruct23->substruct2); + SaveStruct23_Messages_Init(&saveStruct23->messages); + SaveStruct23_Substruct4_Init(&saveStruct23->substruct4); } -THUMB_FUNC struct UnkSaveStruct_0202A5D4 *FUN_0202A8CC(struct SaveBlock2* sav2) +THUMB_FUNC struct SaveStruct23_Substruct1 *SaveStruct23_GetSubstruct1(struct SaveBlock2* sav2) { - return SavArray_get(sav2, 23); + return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct1; } -THUMB_FUNC struct Unk0202A1F0 *FUN_0202A8D8(struct SaveBlock2* sav2) +THUMB_FUNC struct SaveStruct23_Substruct2 *SaveStruct23_GetSubstruct2(struct SaveBlock2* sav2) { - struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); - return &data->u_3C; + return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct2; } -THUMB_FUNC void *FUN_0202A8E4(struct SaveBlock2* sav2) +THUMB_FUNC struct SaveStruct23_Substruct4 *SaveStruct23_GetSubstruct4(struct SaveBlock2* sav2) { - struct UnkSaveStruct_0202A5D4 *data = SavArray_get(sav2, 23); - return &data->u_1C4; + return &((struct SaveStruct23 *)SavArray_get(sav2, 23))->substruct4; } \ No newline at end of file diff --git a/arm9/src/unk_0205FA2C.c b/arm9/src/unk_0205FA2C.c index cabd756e..a023ad83 100644 --- a/arm9/src/unk_0205FA2C.c +++ b/arm9/src/unk_0205FA2C.c @@ -1,5 +1,6 @@ #include "unk_0205FA2C.h" #include "unk_020337E8.h" +#include "unk_0202A1E0.h" extern void *UNK_020F96DC; extern void *UNK_020FA6E8; @@ -11,17 +12,9 @@ extern u16 *GetVarPointer(struct UnkSavStruct80 *arg, u16); 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); -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); const u8 UNK_020F7454[] = { 0x00, @@ -327,33 +320,33 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) return 0; } - u32 res2 = FUN_0202A8D8(sav2); + struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2); - u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0); - u8 res4 = (u8)FUN_0202A578(res2, 0, 0); - u8 res5 = (u8)FUN_0202A578(res2, 1, 0); + BOOL flagD = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_GET); + BOOL flag0 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_GET); + BOOL flag1 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_GET); - u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0); - u8 res7 = (u8)FUN_0202A578(res2, 2, 0); - u8 res8 = (u8)FUN_0202A578(res2, 3, 0); + BOOL flagE = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_GET); + BOOL flag2 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_GET); + BOOL flag3 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_GET); - if (res3 != 0 && res4 != 0 && res5 != 0) + if (flagD && flag0 && flag1) { return 0; } u32 res9 = FUN_02026CC4(sav2); - if (res3 == 0) + if (!flagD) { if (FUN_02025D94(res9, 0x55) != 0) { - FUN_0202A578(res2, 0xd, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_SET); return 1; } - if (res6 == 0) + if (!flagE) { - FUN_0202A578(res2, 0xe, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_SET); } return 4; @@ -364,36 +357,36 @@ THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2) return 0; } - if (res4 == 0) + if (!flag0) { if (FUN_02025D94(res9, 0x56) != 0) { - FUN_0202A578(res2, 0, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_SET); return 2; } - if (res7 == 0) + if (!flag2) { - FUN_0202A578(res2, 2, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_SET); } return 4; } - if (res < 100 || res5 != 0) + if (res < 100 || flag1) { return 0; } if (FUN_02025D94(res9, 0x57) != 0) { - FUN_0202A578(res2, 1, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_SET); return 3; } - if (res8 == 0) + if (!flag3) { - FUN_0202A578(res2, 3, 1); + SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_SET); } return 4; @@ -407,24 +400,24 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) return 0; } - u32 res2 = FUN_0202A8D8(sav2); + struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2); - u8 res3 = (u8)FUN_0202A578(res2, 0xd, 0); - u8 res4 = (u8)FUN_0202A578(res2, 0, 0); - u8 res5 = (u8)FUN_0202A578(res2, 1, 0); + BOOL flagD = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xd, DATA_GET); + BOOL flag0 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0, DATA_GET); + BOOL flag1 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 1, DATA_GET); - u8 res6 = (u8)FUN_0202A578(res2, 0xe, 0); - u8 res7 = (u8)FUN_0202A578(res2, 2, 0); - u8 res8 = (u8)FUN_0202A578(res2, 3, 0); + BOOL flagE = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 0xe, DATA_GET); + BOOL flag2 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 2, DATA_GET); + BOOL flag3 = (u8)SaveStruct23_Substruct2_SetFlag(saveStruct23_substruct2, 3, DATA_GET); - if (res3 != 0 && res4 != 0 && res5 != 0) + if (flagD && flag0 && flag1) { return 0; } - if (res3 == 0) + if (!flagD) { - if (res6 != 0) + if (flagE) { return 4; } @@ -437,9 +430,9 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) return 0; } - if (res4 == 0) + if (!flag0) { - if (res7 != 0) + if (flag2) { return 5; } @@ -452,12 +445,12 @@ THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2) return 0; } - if (res5 != 0) + if (flag1) { return 0; } - if (res8 != 0) + if (flag3) { return 6; } @@ -488,42 +481,42 @@ THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2) { u32 res = FUN_02060070(FUN_020287A4(FUN_0202881C(sav2))); - FUN_0202A5CC(FUN_0202A8D8(sav2), res); + SaveStruct23_Substruct2_SetField_0x4(SaveStruct23_GetSubstruct2(sav2), res); return res; } THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2) { - u32 res = FUN_0202A8D8(sav2); + struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2); - u32 res2 = FUN_02060070(FUN_0202A5D0(res)); + u32 res2 = FUN_02060070(SaveStruct23_Substruct2_GetField_0x4(saveStruct23_substruct2)); - FUN_0202A5CC(res, res2); + SaveStruct23_Substruct2_SetField_0x4(saveStruct23_substruct2, res2); u32 res3 = FUN_02060064(res2); - FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3); + SaveStruct23_Substruct1_SetField(SaveStruct23_GetSubstruct1(sav2), FIELD_0x28, &res3); return res3; } THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2) { - u32 res = FUN_0202A8D8(sav2); + struct SaveStruct23_Substruct2 *saveStruct23_substruct2 = SaveStruct23_GetSubstruct2(sav2); - u32 res2 = FUN_0202A8CC(sav2); + struct SaveStruct23_Substruct1 *saveStruct23_substruct1 = SaveStruct23_GetSubstruct1(sav2); - u32 res3 = FUN_02060064(FUN_0202A5D0(res)); + u32 res3 = FUN_02060064(SaveStruct23_Substruct2_GetField_0x4(saveStruct23_substruct2)); int i = 0; - int res4 = FUN_0202A538(res, (u16)FUN_0202A240(res2, 0, 0), 0) * 0x18; + int res4 = SaveStruct23_Substruct2_SetField_0xC(saveStruct23_substruct2, (u16)SaveStruct23_Substruct1_GetField(saveStruct23_substruct1, FIELD_0x0_2, 0), DATA_GET) * 0x18; for (i = 0; i < res4; i++) { res3 = FUN_02060064(res3); } - FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3); + SaveStruct23_Substruct1_SetField(SaveStruct23_GetSubstruct1(sav2), FIELD_0x28, &res3); return res3; } -- cgit v1.2.3 From 9d717596e138c8e24aca0be9b963c6dd22a3716e Mon Sep 17 00:00:00 2001 From: GliMusings Date: Wed, 23 Jun 2021 18:05:55 -0500 Subject: Starting unk_0201C6B4 --- arm9/src/unk_0201C6B4.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 arm9/src/unk_0201C6B4.c (limited to 'arm9/src') diff --git a/arm9/src/unk_0201C6B4.c b/arm9/src/unk_0201C6B4.c new file mode 100644 index 00000000..95a301d6 --- /dev/null +++ b/arm9/src/unk_0201C6B4.c @@ -0,0 +1,75 @@ +#include "global.h" +#include "proto.h" +#include "unk_0201C6B4.h" + +THUMB_FUNC u32 FUN_0201C6B4(s8 * r0) +{ + u32 r2 = 0; + while(r0[r2] != 0) + { + r2++; + } + return r2; +} + +THUMB_FUNC s8 * FUN_0201C6C8(s8 * r0, s8 * r1, s8 r2) +{ + for(u8 r3 = 0; r3 < 256; r3++) + { + r1[r3] = r0[r3]; + if(r2 == r0[r3] || r0[r3] != 0) + { + r1[r3] = 0; + if(r2 == 13 | r0[r3 + 1] == 10) + { + return r0 + r3 + 1; + } + return r0 + r3 + 2; + } + } + return NULL; +} + +THUMB_FUNC s32 FUN_0201C70C(s8 * r4) +{ + u32 r5 = 1; + s32 r6 = 0; + for(u32 r3 = FUN_0201C6B4(r4) - 1; r3 >= 0; r3--) + { + if(r4[r3] < 48 || r4[r3] > 57) + { + if(r3 == 0) + { + return 0; + } + if(r4[r3] == 45) + { + r6 = r6 * -1; + } + } + else + { + r6 += ((r4[r3] - 48) * r5); + } + r5 = r5 * 10; + } + return r6; +} + +THUMB_FUNC void FUN_0201C750(s8 * r5, s8 * r4) +{ + for(u32 r2 = 0; r2 < 4; r2++) + { + r5[r2 << 2] = 0; + } + u32 r0 = FUN_0201C6B4(r4); + for(u32 r2 = 0; r2 < r0; r2++) + { + r5[r2] = r4[r2]; + } +} + +THUMB_FUNC BOOL FUN_0201C78C(u32 r0) +{ + return r0 > 289; +} \ No newline at end of file -- cgit v1.2.3 From 9ff579dac825bf4afa7c9fb4ea3e5a1ffb2d996d Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Thu, 24 Jun 2021 15:55:08 +0200 Subject: cleanup header includes and orders Not complete, but a good start. --- arm9/src/save.c | 1 + arm9/src/timer3.c | 6 ++++++ 2 files changed, 7 insertions(+) (limited to 'arm9/src') diff --git a/arm9/src/save.c b/arm9/src/save.c index 89bd8374..7eb523f6 100644 --- a/arm9/src/save.c +++ b/arm9/src/save.c @@ -3,6 +3,7 @@ #include "save_block_2.h" #include "heap.h" #include "CARD_backup.h" +#include "OS_spinLock.h" #pragma thumb on diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c index d4e8f8a1..4e7b03c7 100644 --- a/arm9/src/timer3.c +++ b/arm9/src/timer3.c @@ -1,5 +1,11 @@ #include "timer3.h" +#include "OS_interrupt.h" +#include "OS_irqTable.h" +#include "OS_timer.h" +#include "OS_system.h" +#include "registers.h" + static BOOL timer3_needReset; static vu64 timer3_counter; -- cgit v1.2.3 From 7897c7e2946a008098d9e1cc7209bcfd00e43d8a Mon Sep 17 00:00:00 2001 From: GliMusings Date: Fri, 25 Jun 2021 21:17:19 -0500 Subject: Not yet matching, 3 registers rotated in FUN_0201C70C --- arm9/src/unk_0201C6B4.c | 60 ++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 28 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0201C6B4.c b/arm9/src/unk_0201C6B4.c index 95a301d6..673866f2 100644 --- a/arm9/src/unk_0201C6B4.c +++ b/arm9/src/unk_0201C6B4.c @@ -1,10 +1,9 @@ #include "global.h" -#include "proto.h" #include "unk_0201C6B4.h" -THUMB_FUNC u32 FUN_0201C6B4(s8 * r0) +THUMB_FUNC int FUN_0201C6B4(s8 * r0) { - u32 r2 = 0; + int r2 = 0; while(r0[r2] != 0) { r2++; @@ -14,56 +13,61 @@ THUMB_FUNC u32 FUN_0201C6B4(s8 * r0) THUMB_FUNC s8 * FUN_0201C6C8(s8 * r0, s8 * r1, s8 r2) { - for(u8 r3 = 0; r3 < 256; r3++) - { + for(int r3 = 0; r3 < 256; r3++) // _0201C6FE jumps to conditional + { // _0201C6D0 r1[r3] = r0[r3]; - if(r2 == r0[r3] || r0[r3] != 0) - { + if(r2 == r0[r3] || r0[r3] == 0) + { // _0201C6DE r1[r3] = 0; - if(r2 == 13 | r0[r3 + 1] == 10) - { - return r0 + r3 + 1; - } - return r0 + r3 + 2; + if(r2 == 13 && r0[r3 + 1] == 10) + { // _0201C6F6 + return (s8 *)((s32)(r0) + (r3 + 2)); + } // _0201C6DE + 44 + return (s8 *)((s32)(r0) + (r3 + 1)); } } return NULL; } -THUMB_FUNC s32 FUN_0201C70C(s8 * r4) +THUMB_FUNC int FUN_0201C70C(s8 * r4) { + s32 unk0 = FUN_0201C6B4(r4); u32 r5 = 1; s32 r6 = 0; - for(u32 r3 = FUN_0201C6B4(r4) - 1; r3 >= 0; r3--) + unk0--; + for(s32 r3 = unk0; r3 >= 0; r3--) { - if(r4[r3] < 48 || r4[r3] > 57) + if(r4[r3] >= 0x30 && r4[r3] <= 0x39) + { + r6 += ((r4[r3] - 0x30) * r5); + } + else { if(r3 == 0) { - return 0; + if(r4[r3] == 0x2d) + { + r6 *= -1; + } } - if(r4[r3] == 45) + else { - r6 = r6 * -1; + return -1; } } - else - { - r6 += ((r4[r3] - 48) * r5); - } - r5 = r5 * 10; + r5 *= 10; } return r6; } THUMB_FUNC void FUN_0201C750(s8 * r5, s8 * r4) { - for(u32 r2 = 0; r2 < 4; r2++) + for(u8 r2 = 0; r2 < 4; r2++) { - r5[r2 << 2] = 0; + ((s32*)(r5))[r2] = 0; } - u32 r0 = FUN_0201C6B4(r4); - for(u32 r2 = 0; r2 < r0; r2++) + u8 r0 = (u8)(FUN_0201C6B4(r4)); + for(u8 r2 = 0; r2 < r0; r2++) { r5[r2] = r4[r2]; } @@ -71,5 +75,5 @@ THUMB_FUNC void FUN_0201C750(s8 * r5, s8 * r4) THUMB_FUNC BOOL FUN_0201C78C(u32 r0) { - return r0 > 289; + return r0 < 289; } \ No newline at end of file -- cgit v1.2.3 From f97bb6e31678d2455999873e14c5a60530f74adb Mon Sep 17 00:00:00 2001 From: GliMusings Date: Fri, 25 Jun 2021 23:40:07 -0500 Subject: OK --- arm9/src/unk_0201C6B4.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0201C6B4.c b/arm9/src/unk_0201C6B4.c index 673866f2..45001877 100644 --- a/arm9/src/unk_0201C6B4.c +++ b/arm9/src/unk_0201C6B4.c @@ -1,9 +1,9 @@ #include "global.h" #include "unk_0201C6B4.h" -THUMB_FUNC int FUN_0201C6B4(s8 * r0) +THUMB_FUNC s32 FUN_0201C6B4(s8 * r0) { - int r2 = 0; + s32 r2 = 0; while(r0[r2] != 0) { r2++; @@ -13,29 +13,29 @@ THUMB_FUNC int FUN_0201C6B4(s8 * r0) THUMB_FUNC s8 * FUN_0201C6C8(s8 * r0, s8 * r1, s8 r2) { - for(int r3 = 0; r3 < 256; r3++) // _0201C6FE jumps to conditional - { // _0201C6D0 + for(int r3 = 0; r3 < 256; r3++) + { r1[r3] = r0[r3]; if(r2 == r0[r3] || r0[r3] == 0) - { // _0201C6DE + { r1[r3] = 0; if(r2 == 13 && r0[r3 + 1] == 10) - { // _0201C6F6 + { return (s8 *)((s32)(r0) + (r3 + 2)); - } // _0201C6DE + 44 + } return (s8 *)((s32)(r0) + (r3 + 1)); } } return NULL; } -THUMB_FUNC int FUN_0201C70C(s8 * r4) +THUMB_FUNC s32 FUN_0201C70C(s8 * r4) { s32 unk0 = FUN_0201C6B4(r4); - u32 r5 = 1; + s32 r3; + s32 r5 = 1; s32 r6 = 0; - unk0--; - for(s32 r3 = unk0; r3 >= 0; r3--) + for(r3 = unk0 - 1; r3 >= 0; r3--) { if(r4[r3] >= 0x30 && r4[r3] <= 0x39) { -- cgit v1.2.3 From 8d466f9e243e6c5616d298f20aed3011905174e5 Mon Sep 17 00:00:00 2001 From: GliMusings Date: Fri, 25 Jun 2021 23:56:40 -0500 Subject: make pretty --- arm9/src/unk_0201C6B4.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0201C6B4.c b/arm9/src/unk_0201C6B4.c index 45001877..d251639d 100644 --- a/arm9/src/unk_0201C6B4.c +++ b/arm9/src/unk_0201C6B4.c @@ -13,17 +13,17 @@ THUMB_FUNC s32 FUN_0201C6B4(s8 * r0) THUMB_FUNC s8 * FUN_0201C6C8(s8 * r0, s8 * r1, s8 r2) { - for(int r3 = 0; r3 < 256; r3++) + for(int r3 = 0; r3 < 0x100; r3++) { r1[r3] = r0[r3]; if(r2 == r0[r3] || r0[r3] == 0) { r1[r3] = 0; - if(r2 == 13 && r0[r3 + 1] == 10) + if(r2 == 0xd && r0[r3 + 1] == 0xa) { - return (s8 *)((s32)(r0) + (r3 + 2)); + return &r0[r3 + 2]; } - return (s8 *)((s32)(r0) + (r3 + 1)); + return &r0[r3 + 1]; } } return NULL; @@ -39,7 +39,7 @@ THUMB_FUNC s32 FUN_0201C70C(s8 * r4) { if(r4[r3] >= 0x30 && r4[r3] <= 0x39) { - r6 += ((r4[r3] - 0x30) * r5); + r6 += (r4[r3] - 0x30) * r5; } else { @@ -55,7 +55,7 @@ THUMB_FUNC s32 FUN_0201C70C(s8 * r4) return -1; } } - r5 *= 10; + r5 *= 0xa; } return r6; } @@ -64,7 +64,8 @@ THUMB_FUNC void FUN_0201C750(s8 * r5, s8 * r4) { for(u8 r2 = 0; r2 < 4; r2++) { - ((s32*)(r5))[r2] = 0; + s32 * unk5 = (s32 *)r5; + unk5[r2] = 0; } u8 r0 = (u8)(FUN_0201C6B4(r4)); for(u8 r2 = 0; r2 < r0; r2++) @@ -75,5 +76,5 @@ THUMB_FUNC void FUN_0201C750(s8 * r5, s8 * r4) THUMB_FUNC BOOL FUN_0201C78C(u32 r0) { - return r0 < 289; + return r0 < 0x121; } \ No newline at end of file -- cgit v1.2.3 From a1b1d3b47fb5b2fbdedd164bcdf5844fab6f9d3a Mon Sep 17 00:00:00 2001 From: GliMusings Date: Sat, 26 Jun 2021 00:05:23 -0500 Subject: Forget newlines --- arm9/src/unk_0201C6B4.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0201C6B4.c b/arm9/src/unk_0201C6B4.c index d251639d..151a9cd6 100644 --- a/arm9/src/unk_0201C6B4.c +++ b/arm9/src/unk_0201C6B4.c @@ -77,4 +77,4 @@ THUMB_FUNC void FUN_0201C750(s8 * r5, s8 * r4) THUMB_FUNC BOOL FUN_0201C78C(u32 r0) { return r0 < 0x121; -} \ No newline at end of file +} -- cgit v1.2.3