summaryrefslogtreecommitdiff
path: root/src/mailbox.c
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2021-09-23 22:49:43 -0700
committerGitHub <noreply@github.com>2021-09-24 00:49:43 -0500
commit0d3b11e81a215875fc533db17895613c47a4da73 (patch)
treed392a83755f1b7631c241c100c9e778d96ef5527 /src/mailbox.c
parent8237e29a164211eb2ec4cd161eb4183cc1947fee (diff)
Data work and decomp some mail/pelipper board (#54)
* data work and decomp some mail/pelipper board * resuce -> rescue * label more data
Diffstat (limited to 'src/mailbox.c')
-rw-r--r--src/mailbox.c186
1 files changed, 186 insertions, 0 deletions
diff --git a/src/mailbox.c b/src/mailbox.c
new file mode 100644
index 0000000..d7301db
--- /dev/null
+++ b/src/mailbox.c
@@ -0,0 +1,186 @@
+#include "global.h"
+#include "memory.h"
+#include "text.h"
+#include "menu.h"
+#include "input.h"
+#include "mailbox.h"
+
+
+extern void sub_802E4B0(void);
+extern void nullsub_133(void);
+extern void sub_802E578(void);
+extern void sub_802E60C(void);
+extern void sub_802E73C(void);
+extern void sub_802E758(void);
+extern void sub_802E774(void);
+extern void sub_802E7D0(void);
+
+
+extern void sub_802E0A0(void);
+extern void sub_802E1AC(void);
+
+extern struct UnkTextStruct2 gUnknown_80E0284;
+extern struct UnkTextStruct2 gUnknown_80E029C;
+extern struct UnkTextStruct2 gUnknown_80E02B4;
+extern struct UnkTextStruct2 gUnknown_80E02CC;
+
+
+extern struct unkStruct_203B304 *gUnknown_203B304;
+extern void sub_802E088(u32);
+extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
+extern void CreateMailboxMenu(void);
+extern void CreateMailActionMenu(void);
+
+extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
+extern void sub_802BD14(u32, u32, u32);
+extern void sub_802BE94(u32);
+extern void CreateMailMenu(void);
+extern void CreateMailAcceptedStatusBox(u32);
+extern u32 sub_8095FE8(u32);
+extern void sub_803B35C(u32, u32 *);
+extern void sub_802DE84(u32 *);
+extern void sub_802C860(u32);
+extern void sub_802B640(u32, u32, u32);
+extern void sub_802B7D0(u32);
+extern void sub_802B9FC(u8);
+
+u32 sub_802DFB0(void)
+{
+ gUnknown_203B304 = MemoryAlloc(sizeof(struct unkStruct_203B304), 8);
+ gUnknown_203B304->unk64 = 0;
+ gUnknown_203B304->unk68 = 0;
+ SetMailboxState(0);
+ return 1;
+}
+
+u32 sub_802DFD8(void)
+{
+ switch(gUnknown_203B304->state)
+ {
+ case 0:
+ SetMailboxState(1);
+ break;
+ case 1:
+ sub_802E4B0();
+ break;
+ case 2:
+ nullsub_133();
+ break;
+ case 4:
+ case 5:
+ sub_802E578();
+ break;
+ case 6:
+ sub_802E60C();
+ break;
+ case 7:
+ sub_802E73C();
+ break;
+ case 8:
+ sub_802E758();
+ break;
+ case 9:
+ case 0xA:
+ sub_802E774();
+ break;
+ case 0xB:
+ sub_802E7D0();
+ break;
+ case 3:
+ default:
+ return 3;
+ }
+ return 0;
+}
+
+void sub_802E06C(void)
+{
+ if(gUnknown_203B304 != NULL)
+ {
+ MemoryFree(gUnknown_203B304);
+ gUnknown_203B304 = NULL;
+ }
+}
+
+void SetMailboxState(u32 newState)
+{
+ gUnknown_203B304->state = newState;
+ sub_802E0A0();
+ sub_802E1AC();
+}
+
+void sub_802E0A0(void)
+{
+ s32 iVar1;
+ sub_8006518(gUnknown_203B304->unk10C);
+ switch(gUnknown_203B304->state)
+ {
+ case 1:
+ for(iVar1 = 0; iVar1 < 4; iVar1++)
+ {
+ gUnknown_203B304->unk10C[iVar1] = gUnknown_80E0284;
+ }
+ CreateMailboxMenu();
+ gUnknown_203B304->unk10C[2] = gUnknown_80E029C;
+ sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
+ break;
+ case 6:
+ CreateMailActionMenu();
+ gUnknown_203B304->unk10C[2] = gUnknown_80E02B4;
+ sub_8012CAC(&gUnknown_203B304->unk10C[2], gUnknown_203B304->unkBC);
+ gUnknown_203B304->unk10C[2].unk0c = 6;
+ gUnknown_203B304->unk10C[3] = gUnknown_80E02CC;
+ break;
+ default:
+ for(iVar1 = 0; iVar1 < 4; iVar1++)
+ {
+ gUnknown_203B304->unk10C[iVar1] = gUnknown_80E0284;
+ }
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B304->unk10C, 1, 1);
+}
+
+void sub_802E1AC(void)
+{
+ switch(gUnknown_203B304->state)
+ {
+ case 1:
+ sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, gUnknown_203B304->unkFC, gUnknown_203B304->unk64, 2);
+ break;
+ case 4:
+ sub_802BD14(0, 0, 4);
+ break;
+ case 5:
+ sub_802BE94(1);
+ break;
+ case 6:
+ CreateMailMenu();
+ CreateMailAcceptedStatusBox(3);
+ sub_8012D60(&gUnknown_203B304->unk6C, gUnknown_203B304->unkBC, 0, 0, gUnknown_203B304->unk68, 2);
+ break;
+ case 7:
+ sub_803B35C(sub_8095FE8(gUnknown_203B304->unk8), &gUnknown_203B304->unkC);
+ gUnknown_203B304->unkC = 3;
+ gUnknown_203B304->unk50 = 0;
+ sub_802DE84(&gUnknown_203B304->unkC);
+ break;
+ case 8:
+ sub_802C860(0);
+ break;
+ case 9:
+ sub_802B640(0, 0, 8);
+ break;
+ case 0xA:
+ sub_802B7D0(1);
+ break;
+ case 0xB:
+ sub_802B9FC(gUnknown_203B304->unk9);
+ break;
+ case 0:
+ case 2:
+ case 3:
+ break;
+ }
+}