summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-10 21:46:27 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-10 21:46:27 -0400
commit3dc03263f5a796901b7f68a970e9167f37259eaf (patch)
tree4f52ee21ffac8e86f5513d1fb62bd2daaa4af602
parent46b72e9169cc912246f8c2483fb715c72ec4b063 (diff)
Decompile unk_02085338
-rw-r--r--arm9/asm/unk_02085338.s286
-rw-r--r--arm9/src/mail_message.c13
-rw-r--r--arm9/src/unk_02085338.c165
-rw-r--r--include/mail_message.h2
-rw-r--r--include/unk_02085338.h47
5 files changed, 220 insertions, 293 deletions
diff --git a/arm9/asm/unk_02085338.s b/arm9/asm/unk_02085338.s
deleted file mode 100644
index 4b4a6ec4..00000000
--- a/arm9/asm/unk_02085338.s
+++ /dev/null
@@ -1,286 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02085338
-FUN_02085338: ; 0x02085338
- push {r3-r7, lr}
- add r5, r0, #0x0
- add r7, r1, #0x0
- add r0, r3, #0x0
- mov r1, #0x24
- add r6, r2, #0x0
- bl AllocFromHeap
- add r4, r0, #0x0
- strb r5, [r4, #0x0]
- strb r7, [r4, #0x1]
- add r0, r6, #0x0
- bl Sav2_Pokedex_get
- str r0, [r4, #0xc]
- add r0, r6, #0x0
- bl FUN_02013B5C
- str r0, [r4, #0x10]
- add r0, r6, #0x0
- bl SavArray_Flags_get
- bl FUN_0205ED0C
- strb r0, [r4, #0x4]
- mov r1, #0x0
- strb r1, [r4, #0x5]
- mov r0, #0x1
- strb r0, [r4, #0x2]
- add r0, r6, #0x0
- strb r1, [r4, #0x3]
- bl Sav2_PlayerData_GetOptionsAddr
- bl Options_GetFrame
- str r0, [r4, #0x8]
- cmp r5, #0x2
- bne _02085390
- add r0, r4, #0x0
- add r0, #0x14
- mov r1, #0x3
- bl MailMsg_init_withBank
- b _020853A0
-_02085390:
- ldr r0, _020853A4 ; =0x0000FFFF
- mov r1, #0x0
- add r2, r4, #0x0
-_02085396:
- add r1, r1, #0x1
- strh r0, [r2, #0x1c]
- add r2, r2, #0x2
- cmp r1, #0x2
- blt _02085396
-_020853A0:
- add r0, r4, #0x0
- pop {r3-r7, pc}
- .balign 4
-_020853A4: .word 0x0000FFFF
-
- thumb_func_start FUN_020853A8
-FUN_020853A8: ; 0x020853A8
- ldr r3, _020853AC ; =FreeToHeap
- bx r3
- .balign 4
-_020853AC: .word FreeToHeap
-
- thumb_func_start FUN_020853B0
-FUN_020853B0: ; 0x020853B0
- strh r1, [r0, #0x1c]
- bx lr
-
- thumb_func_start FUN_020853B4
-FUN_020853B4: ; 0x020853B4
- strh r1, [r0, #0x1c]
- strh r2, [r0, #0x1e]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853BC
-FUN_020853BC: ; 0x020853BC
- ldrh r2, [r1, #0x0]
- strh r2, [r0, #0x14]
- ldrh r2, [r1, #0x2]
- strh r2, [r0, #0x16]
- ldrh r2, [r1, #0x4]
- strh r2, [r0, #0x18]
- ldrh r1, [r1, #0x6]
- strh r1, [r0, #0x1a]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853D0
-FUN_020853D0: ; 0x020853D0
- mov r1, #0x1
- strb r1, [r0, #0x2]
- mov r1, #0x0
- strb r1, [r0, #0x3]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853DC
-FUN_020853DC: ; 0x020853DC
- mov r1, #0x1
- strb r1, [r0, #0x5]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853E4
-FUN_020853E4: ; 0x020853E4
- ldrb r0, [r0, #0x2]
- bx lr
-
- thumb_func_start FUN_020853E8
-FUN_020853E8: ; 0x020853E8
- ldrb r0, [r0, #0x3]
- bx lr
-
- thumb_func_start FUN_020853EC
-FUN_020853EC: ; 0x020853EC
- ldrh r0, [r0, #0x1c]
- bx lr
-
- thumb_func_start FUN_020853F0
-FUN_020853F0: ; 0x020853F0
- ldrh r2, [r0, #0x1c]
- strh r2, [r1, #0x0]
- ldrh r0, [r0, #0x1e]
- strh r0, [r1, #0x2]
- bx lr
- .balign 4
-
- thumb_func_start FUN_020853FC
-FUN_020853FC: ; 0x020853FC
- add r2, r0, #0x0
- ldr r3, _02085408 ; =MailMsg_copy
- add r2, #0x14
- add r0, r1, #0x0
- add r1, r2, #0x0
- bx r3
- .balign 4
-_02085408: .word MailMsg_copy
-
- thumb_func_start FUN_0208540C
-FUN_0208540C: ; 0x0208540C
- ldrb r0, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_02085410
-FUN_02085410: ; 0x02085410
- ldrb r0, [r0, #0x1]
- bx lr
-
- thumb_func_start FUN_02085414
-FUN_02085414: ; 0x02085414
- ldr r0, [r0, #0x8]
- bx lr
-
- thumb_func_start FUN_02085418
-FUN_02085418: ; 0x02085418
- ldr r0, [r0, #0xc]
- bx lr
-
- thumb_func_start FUN_0208541C
-FUN_0208541C: ; 0x0208541C
- ldr r0, [r0, #0x10]
- bx lr
-
- thumb_func_start FUN_02085420
-FUN_02085420: ; 0x02085420
- ldrb r0, [r0, #0x4]
- bx lr
-
- thumb_func_start FUN_02085424
-FUN_02085424: ; 0x02085424
- ldrb r0, [r0, #0x5]
- bx lr
-
- thumb_func_start FUN_02085428
-FUN_02085428: ; 0x02085428
- ldrb r3, [r0, #0x0]
- cmp r3, #0x0
- beq _02085438
- cmp r3, #0x1
- beq _0208543E
- cmp r3, #0x2
- beq _02085448
- bx lr
-_02085438:
- ldrh r0, [r0, #0x1c]
- strh r0, [r1, #0x0]
- bx lr
-_0208543E:
- ldrh r2, [r0, #0x1c]
- strh r2, [r1, #0x0]
- ldrh r0, [r0, #0x1e]
- strh r0, [r1, #0x2]
- bx lr
-_02085448:
- ldrh r1, [r0, #0x14]
- strh r1, [r2, #0x0]
- ldrh r1, [r0, #0x16]
- strh r1, [r2, #0x2]
- ldrh r1, [r0, #0x18]
- strh r1, [r2, #0x4]
- ldrh r0, [r0, #0x1a]
- strh r0, [r2, #0x6]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0208545C
-FUN_0208545C: ; 0x0208545C
- push {r3, lr}
- ldrb r3, [r0, #0x0]
- cmp r3, #0x0
- beq _0208546C
- cmp r3, #0x1
- beq _0208547C
- cmp r3, #0x2
- b _02085494
-_0208546C:
- ldrh r1, [r1, #0x0]
- ldrh r0, [r0, #0x1c]
- cmp r1, r0
- bne _02085478
- mov r0, #0x1
- pop {r3, pc}
-_02085478:
- mov r0, #0x0
- pop {r3, pc}
-_0208547C:
- ldrh r3, [r1, #0x0]
- ldrh r2, [r0, #0x1c]
- cmp r3, r2
- bne _02085490
- ldrh r1, [r1, #0x2]
- ldrh r0, [r0, #0x1e]
- cmp r1, r0
- bne _02085490
- mov r0, #0x1
- pop {r3, pc}
-_02085490:
- mov r0, #0x0
- pop {r3, pc}
-_02085494:
- add r0, #0x14
- add r1, r2, #0x0
- bl MailMsg_compare
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_020854A0
-FUN_020854A0: ; 0x020854A0
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- add r6, r2, #0x0
- bl FUN_0208545C
- cmp r0, #0x0
- bne _020854B4
- mov r0, #0x1
- b _020854B6
-_020854B4:
- mov r0, #0x0
-_020854B6:
- strb r0, [r5, #0x3]
- mov r1, #0x0
- strb r1, [r5, #0x2]
- add r2, r5, #0x0
-_020854BE:
- ldrh r0, [r4, #0x0]
- add r1, r1, #0x1
- add r4, r4, #0x2
- strh r0, [r2, #0x1c]
- add r2, r2, #0x2
- cmp r1, #0x2
- blt _020854BE
- ldrh r0, [r6, #0x0]
- strh r0, [r5, #0x14]
- ldrh r0, [r6, #0x2]
- strh r0, [r5, #0x16]
- ldrh r0, [r6, #0x4]
- strh r0, [r5, #0x18]
- ldrh r0, [r6, #0x6]
- strh r0, [r5, #0x1a]
- pop {r4-r6, pc}
- .balign 4
diff --git a/arm9/src/mail_message.c b/arm9/src/mail_message.c
index a5837d89..751a3ff0 100644
--- a/arm9/src/mail_message.c
+++ b/arm9/src/mail_message.c
@@ -3,6 +3,7 @@
#include "script_buffers.h"
#include "unk_0201B8B8.h"
#include "mail_message.h"
+#include "msgdata/msg.naix"
#pragma thumb on
@@ -19,11 +20,11 @@ struct UnkStruct_020ED556
extern u16 GetECWordIndexByPair(s16 bank, u16 num);
const u16 UNK_020ED54C[] = {
- 397,
- 399,
- 395,
- 396,
- 398
+ NARC_msg_narc_0397_bin,
+ NARC_msg_narc_0399_bin,
+ NARC_msg_narc_0395_bin,
+ NARC_msg_narc_0396_bin,
+ NARC_msg_narc_0398_bin
};
const struct UnkStruct_020ED556 UNK_020ED556[] = {
@@ -155,7 +156,7 @@ u16 MailMsg_GetMsgNo(struct MailMessage * mailMsg)
return mailMsg->msg_no;
}
-BOOL MailMsg_compare(struct MailMessage * mailMsg, struct MailMessage * a1)
+BOOL MailMsg_compare(const struct MailMessage *mailMsg, const struct MailMessage *a1)
{
s32 i;
if (mailMsg->msg_bank != a1->msg_bank || mailMsg->msg_no != a1->msg_no)
diff --git a/arm9/src/unk_02085338.c b/arm9/src/unk_02085338.c
new file mode 100644
index 00000000..b22b3974
--- /dev/null
+++ b/arm9/src/unk_02085338.c
@@ -0,0 +1,165 @@
+#include "global.h"
+#include "heap.h"
+#include "event_data.h"
+#include "unk_02085338.h"
+
+extern BOOL FUN_0205ED0C(struct ScriptState * state);
+
+THUMB_FUNC struct UnkStruct_02085338 * FUN_02085338(u8 r5, u8 r7, struct SaveBlock2 * sav2, u32 heap_id)
+{
+ struct UnkStruct_02085338 * ret = (struct UnkStruct_02085338 *) AllocFromHeap(heap_id, sizeof(struct UnkStruct_02085338));
+ ret->unk_00 = r5;
+ ret->unk_01 = r7;
+ ret->unk_0c = Sav2_Pokedex_get(sav2);
+ ret->unk_10 = FUN_02013B5C(sav2);
+ ret->unk_04 = (u8)FUN_0205ED0C(SavArray_Flags_get(sav2));
+ ret->unk_05 = 0;
+ ret->unk_02 = 1;
+ ret->unk_03 = 0;
+ ret->unk_08 = Options_GetFrame(Sav2_PlayerData_GetOptionsAddr(sav2));
+ if (r5 == 2)
+ {
+ MailMsg_init_withBank(&ret->unk_14, 3);
+ }
+ else
+ {
+ for (int i = 0; i < 2; i++)
+ {
+ ret->unk_1c[i] = 0xFFFF;
+ }
+ }
+ return ret;
+}
+
+THUMB_FUNC void FUN_020853A8(struct UnkStruct_02085338 * ptr)
+{
+ FreeToHeap(ptr);
+}
+
+THUMB_FUNC void FUN_020853B0(struct UnkStruct_02085338 * ptr, u16 a1)
+{
+ ptr->unk_1c[0] = a1;
+}
+
+THUMB_FUNC void FUN_020853B4(struct UnkStruct_02085338 * ptr, u16 a1, u16 a2)
+{
+ ptr->unk_1c[0] = a1;
+ ptr->unk_1c[1] = a2;
+}
+
+THUMB_FUNC void FUN_020853BC(struct UnkStruct_02085338 * ptr, const struct MailMessage * a1)
+{
+ ptr->unk_14 = *a1;
+}
+
+THUMB_FUNC void FUN_020853D0(struct UnkStruct_02085338 * ptr)
+{
+ ptr->unk_02 = 1;
+ ptr->unk_03 = 0;
+}
+
+THUMB_FUNC void FUN_020853DC(struct UnkStruct_02085338 * ptr)
+{
+ ptr->unk_05 = 1;
+}
+
+THUMB_FUNC u8 FUN_020853E4(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_02;
+}
+
+THUMB_FUNC u8 FUN_020853E8(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_03;
+}
+
+THUMB_FUNC u16 FUN_020853EC(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_1c[0];
+}
+
+THUMB_FUNC void FUN_020853F0(struct UnkStruct_02085338 * ptr, u16 * a1)
+{
+ a1[0] = ptr->unk_1c[0];
+ a1[1] = ptr->unk_1c[1];
+}
+
+THUMB_FUNC void FUN_020853FC(struct UnkStruct_02085338 * ptr, struct MailMessage * a1)
+{
+ return MailMsg_copy(a1, &ptr->unk_14);
+}
+
+THUMB_FUNC u8 FUN_0208540C(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_00;
+}
+
+THUMB_FUNC u8 FUN_02085410(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_01;
+}
+
+THUMB_FUNC u32 FUN_02085414(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_08;
+}
+
+THUMB_FUNC struct Pokedex * FUN_02085418(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_0c;
+}
+
+THUMB_FUNC struct UnkStruct_02013B28 * FUN_0208541C(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_10;
+}
+
+THUMB_FUNC u8 FUN_02085420(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_04;
+}
+
+THUMB_FUNC u8 FUN_02085424(struct UnkStruct_02085338 * ptr)
+{
+ return ptr->unk_05;
+}
+
+THUMB_FUNC void FUN_02085428(struct UnkStruct_02085338 * ptr, u16 * a1, struct MailMessage * a2)
+{
+ switch (ptr->unk_00)
+ {
+ case 0:
+ a1[0] = ptr->unk_1c[0];
+ break;
+ case 1:
+ a1[0] = ptr->unk_1c[0];
+ a1[1] = ptr->unk_1c[1];
+ break;
+ case 2:
+ *a2 = ptr->unk_14;
+ break;
+ }
+}
+
+THUMB_FUNC BOOL FUN_0208545C(struct UnkStruct_02085338 * ptr, const u16 * a1, const struct MailMessage * a2)
+{
+ switch (ptr->unk_00)
+ {
+ case 0:
+ return a1[0] == ptr->unk_1c[0];
+ case 1:
+ return a1[0] == ptr->unk_1c[0] && a1[1] == ptr->unk_1c[1];
+ case 2:
+ default:
+ return MailMsg_compare(&ptr->unk_14, a2);
+ }
+}
+
+THUMB_FUNC void FUN_020854A0(struct UnkStruct_02085338 * r5, u16 * r4, struct MailMessage * r6)
+{
+ r5->unk_03 = (u8)(!FUN_0208545C(r5, r4, r6) ? 1 : 0);
+ r5->unk_02 = 0;
+ for (int i = 0; i < 2; i++)
+ r5->unk_1c[i] = r4[i];
+ r5->unk_14 = *r6;
+}
diff --git a/include/mail_message.h b/include/mail_message.h
index 5772fdd3..c0ea2039 100644
--- a/include/mail_message.h
+++ b/include/mail_message.h
@@ -20,7 +20,7 @@ u32 MailMsg_NumFields(u16 bank, u16 num);
u16 MailMsg_GetFieldI(struct MailMessage * mailMsg, u32 a1);
u16 MailMsg_GetMsgBank(struct MailMessage * mailMsg);
u16 MailMsg_GetMsgNo(struct MailMessage * mailMsg);
-BOOL MailMsg_compare(struct MailMessage * mailMsg, struct MailMessage * a1);
+BOOL MailMsg_compare(const struct MailMessage *mailMsg, const struct MailMessage *a1);
void MailMsg_copy(struct MailMessage * mailMsg, const struct MailMessage * a1);
u32 MailMsg_NumMsgsInBank(u16 bank);
void MailMsg_SetMsgBankAndNum(struct MailMessage * mailMsg, u16 bank, u16 num);
diff --git a/include/unk_02085338.h b/include/unk_02085338.h
new file mode 100644
index 00000000..0517bf26
--- /dev/null
+++ b/include/unk_02085338.h
@@ -0,0 +1,47 @@
+#ifndef POKEDIAMOND_UNK_02085338_H
+#define POKEDIAMOND_UNK_02085338_H
+
+#include "save_block_2.h"
+#include "pokedex.h"
+#include "unk_020139D8.h"
+
+struct UnkStruct_02085338
+{
+ u8 unk_00;
+ u8 unk_01;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04;
+ u8 unk_05;
+ u32 unk_08;
+ struct Pokedex * unk_0c;
+ struct UnkStruct_02013B28 * unk_10;
+ struct MailMessage unk_14;
+ u16 unk_1c[2];
+ u8 padding_20[4];
+};
+
+struct UnkStruct_02085338 * FUN_02085338(u8 r5, u8 r7, struct SaveBlock2 * sav2, u32 heap_id);
+void FUN_020853A8(struct UnkStruct_02085338 * ptr);
+void FUN_020853B0(struct UnkStruct_02085338 * ptr, u16 a1);
+void FUN_020853B4(struct UnkStruct_02085338 * ptr, u16 a1, u16 a2);
+void FUN_020853BC(struct UnkStruct_02085338 * ptr, const struct MailMessage * a1);
+void FUN_020853D0(struct UnkStruct_02085338 * ptr);
+void FUN_020853DC(struct UnkStruct_02085338 * ptr);
+u8 FUN_020853E4(struct UnkStruct_02085338 * ptr);
+u8 FUN_020853E8(struct UnkStruct_02085338 * ptr);
+u16 FUN_020853EC(struct UnkStruct_02085338 * ptr);
+void FUN_020853F0(struct UnkStruct_02085338 * ptr, u16 * a1);
+void FUN_020853FC(struct UnkStruct_02085338 * ptr, struct MailMessage * a1);
+u8 FUN_0208540C(struct UnkStruct_02085338 * ptr);
+u8 FUN_02085410(struct UnkStruct_02085338 * ptr);
+u32 FUN_02085414(struct UnkStruct_02085338 * ptr);
+struct Pokedex * FUN_02085418(struct UnkStruct_02085338 * ptr);
+struct UnkStruct_02013B28 * FUN_0208541C(struct UnkStruct_02085338 * ptr);
+u8 FUN_02085420(struct UnkStruct_02085338 * ptr);
+u8 FUN_02085424(struct UnkStruct_02085338 * ptr);
+void FUN_02085428(struct UnkStruct_02085338 * ptr, u16 * a1, struct MailMessage * a2);
+BOOL FUN_0208545C(struct UnkStruct_02085338 * ptr, const u16 * a1, const struct MailMessage * a2);
+void FUN_020854A0(struct UnkStruct_02085338 * r5, u16 * r4, struct MailMessage * r6);
+
+#endif //POKEDIAMOND_UNK_02085338_H