summaryrefslogtreecommitdiff
path: root/arm9/src
diff options
context:
space:
mode:
authorwho-knows-who <j.williams97@outlook.com>2021-06-02 22:01:18 +0100
committerwho-knows-who <j.williams97@outlook.com>2021-06-02 22:01:18 +0100
commita2a17a9426f16ee601ff17840b8bb7851fef7138 (patch)
tree1e2d632538914f9bdd88641a47f4f94469e0d389 /arm9/src
parent1fc5a9fcef39d9fbed2b7f96b4a45940ba7e9afd (diff)
Finished file unk_0202A1E0
Diffstat (limited to 'arm9/src')
-rw-r--r--arm9/src/unk_0202A1E0.c431
1 files changed, 139 insertions, 292 deletions
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;