summaryrefslogtreecommitdiff
path: root/src/pelipper_board.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/pelipper_board.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/pelipper_board.c')
-rw-r--r--src/pelipper_board.c184
1 files changed, 184 insertions, 0 deletions
diff --git a/src/pelipper_board.c b/src/pelipper_board.c
new file mode 100644
index 0000000..41bb023
--- /dev/null
+++ b/src/pelipper_board.c
@@ -0,0 +1,184 @@
+#include "global.h"
+#include "memory.h"
+#include "text.h"
+#include "menu.h"
+#include "input.h"
+
+// Guessing based off of 203B304
+struct unkStruct_203B308
+{
+ // size: 0xB6 << 1
+ u32 state;
+ u32 unk4;
+ u8 unk8;
+ u8 fill9[0xC - 9];
+ u32 unkC;
+ u8 fill10[0x50 - 0x10];
+ u8 unk50;
+ u8 fill51[0x64 - 0x51];
+ u32 unk64;
+ u32 unk68;
+ u32 unk6C;
+ u8 fill70[0xBC - 0x70];
+ struct MenuItem unkBC[8];
+ u16 unkFC[8];
+ struct UnkTextStruct2 unk10C[4];
+};
+extern struct unkStruct_203B308 *gUnknown_203B308;
+extern void SetPelipperBoardState(u32);
+extern struct UnkTextStruct2 gUnknown_80E0330;
+extern struct UnkTextStruct2 gUnknown_80E0348;
+extern struct UnkTextStruct2 gUnknown_80E0360;
+extern struct UnkTextStruct2 gUnknown_80E0378;
+extern void sub_8012CAC(struct UnkTextStruct2 *, struct MenuItem *);
+extern void sub_802ECB4(void);
+extern void nullsub_134(void);
+extern void sub_802ED4C(void);
+extern void sub_802EDBC(void);
+extern void sub_802EEA0(void);
+extern void sub_802EEBC(void);
+extern void sub_802E94C(void);
+extern void sub_802EA58(void);
+extern void CreatePelipperBoardMenu(void);
+extern void sub_802EC10(void);
+
+extern void sub_8012D60(u32 *, struct MenuItem *, u32, u16 *, u32, u32);
+extern void sub_802C10C(u32, u32, u32);
+extern void sub_802C28C(u32);
+extern void sub_802C39C(void);
+extern void CreatePelipperAcceptedStatusBox(u32);
+extern u32 sub_8096574(u32);
+extern void sub_803B35C(u32, u32 *);
+extern void sub_802DE84(u32 *);
+extern void sub_802C860(u32);
+
+u32 sub_802E864(void)
+{
+ gUnknown_203B308 = MemoryAlloc(sizeof(struct unkStruct_203B308), 8);
+ gUnknown_203B308->unk64 = 0;
+ gUnknown_203B308->unk68 = 0;
+ gUnknown_203B308->unk4 = 0;
+ SetPelipperBoardState(0);
+ return 1;
+}
+
+u32 sub_802E890(void)
+{
+ switch(gUnknown_203B308->state)
+ {
+ case 0:
+ SetPelipperBoardState(1);
+ break;
+ case 1:
+ sub_802ECB4();
+ break;
+ case 2:
+ nullsub_134();
+ break;
+ case 4:
+ case 5:
+ sub_802ED4C();
+ break;
+ case 6:
+ sub_802EDBC();
+ break;
+ case 7:
+ sub_802EEA0();
+ break;
+ case 8:
+ sub_802EEBC();
+ break;
+ case 3:
+ default:
+ return 3;
+ }
+ return 0;
+}
+
+u32 sub_802E90C(void)
+{
+ return gUnknown_203B308->unk4;
+}
+
+void sub_802E918(void)
+{
+ if(gUnknown_203B308 != NULL)
+ {
+ MemoryFree(gUnknown_203B308);
+ gUnknown_203B308 = NULL;
+ }
+}
+
+void SetPelipperBoardState(u32 newState)
+{
+ gUnknown_203B308->state = newState;
+ sub_802E94C();
+ sub_802EA58();
+}
+
+void sub_802E94C(void)
+{
+ s32 iVar1;
+ sub_8006518(gUnknown_203B308->unk10C);
+ switch(gUnknown_203B308->state)
+ {
+ case 1:
+ for(iVar1 = 0; iVar1 < 4; iVar1++)
+ {
+ gUnknown_203B308->unk10C[iVar1] = gUnknown_80E0330;
+ }
+ CreatePelipperBoardMenu();
+ gUnknown_203B308->unk10C[2] = gUnknown_80E0348;
+ sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC);
+ break;
+ case 6:
+ sub_802EC10();
+ gUnknown_203B308->unk10C[2] = gUnknown_80E0360;
+ sub_8012CAC(&gUnknown_203B308->unk10C[2], gUnknown_203B308->unkBC);
+ gUnknown_203B308->unk10C[2].unk0c = 6;
+ gUnknown_203B308->unk10C[3] = gUnknown_80E0378;
+ break;
+ default:
+ for(iVar1 = 0; iVar1 < 4; iVar1++)
+ {
+ gUnknown_203B308->unk10C[iVar1] = gUnknown_80E0330;
+ }
+ break;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B308->unk10C, 1, 1);
+}
+
+void sub_802EA58(void)
+{
+ switch(gUnknown_203B308->state)
+ {
+ case 1:
+ sub_8012D60(&gUnknown_203B308->unk6C, gUnknown_203B308->unkBC, 0, gUnknown_203B308->unkFC, gUnknown_203B308->unk64, 2);
+ break;
+ case 4:
+ sub_802C10C(0, 0, 4);
+ break;
+ case 5:
+ sub_802C28C(1);
+ break;
+ case 6:
+ sub_802C39C();
+ CreatePelipperAcceptedStatusBox(3);
+ sub_8012D60(&gUnknown_203B308->unk6C, gUnknown_203B308->unkBC, 0, 0, gUnknown_203B308->unk68, 2);
+ break;
+ case 7:
+ sub_803B35C(sub_8096574(gUnknown_203B308->unk8), &gUnknown_203B308->unkC);
+ gUnknown_203B308->unkC = 3;
+ gUnknown_203B308->unk50 = 0;
+ sub_802DE84(&gUnknown_203B308->unkC);
+ break;
+ case 8:
+ sub_802C860(0);
+ break;
+ case 0:
+ case 2:
+ case 3:
+ break;
+ }
+}