summaryrefslogtreecommitdiff
path: root/src/unk_menu_203B360.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/unk_menu_203B360.c')
-rw-r--r--src/unk_menu_203B360.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/unk_menu_203B360.c b/src/unk_menu_203B360.c
new file mode 100644
index 0000000..6d778c2
--- /dev/null
+++ b/src/unk_menu_203B360.c
@@ -0,0 +1,104 @@
+#include "global.h"
+#include "input.h"
+#include "main_menu.h"
+
+struct unkData
+{
+ u8 unk0[14];
+ u16 unkD;
+ u16 unk10;
+ u16 unk12;
+ u8 *unk14;
+};
+
+struct unkStruct_203B360
+{
+ // size: 0x1b4
+ u32 currMenu;
+ u32 unk4; // state
+ u32 unk8;
+ u8 fill8[0x148 - 0xC];
+ struct unkData unk148[4];
+ u32 unk1A8;
+ u32 unk1AC;
+ u32 unk1B0; // sprite count?
+};
+
+extern struct unkStruct_203B360 *gUnknown_203B360;
+extern struct unkData gUnknown_80E6E7C;
+extern u32 gUnknown_80E6E94;
+extern u32 gUnknown_80E6EAC;
+
+extern void *MemoryAlloc(u32, u32);
+extern void MemoryFill8(u8 *, u8, u32);
+extern void MemoryFree(void *);
+extern void sub_8038440();
+extern void sub_8035CF4(u32 *, u32, u32);
+extern void sub_800641C(void *, u32, u32);
+extern void SetMenuItems(void *, void *, u32, u32 *, u32 *, u32, u32, u32);
+extern u8 sub_80130A8(u32 *);
+extern void sub_8013114(u32 *, u32 *);
+extern void sub_80384D0();
+
+void sub_80382E4(s32 param_1)
+{
+ s32 iVar4;
+
+ if (gUnknown_203B360 == NULL) {
+ gUnknown_203B360 = MemoryAlloc(sizeof(struct unkStruct_203B360), 8);
+ MemoryFill8((u8 *)gUnknown_203B360, 0, sizeof(struct unkStruct_203B360));
+ }
+ for(iVar4 = 0; iVar4 < 4; iVar4++){
+ gUnknown_203B360->unk148[iVar4] = gUnknown_80E6E7C;
+ }
+ ResetUnusedInputStruct();
+ sub_800641C(gUnknown_203B360->unk148,1,1);
+ if (param_1 == 0x25) {
+ SetMenuItems(&gUnknown_203B360->unk8,gUnknown_203B360->unk148,0,&gUnknown_80E6E94,&gUnknown_80E6EAC,
+ 0,4,0);
+ }
+ sub_8035CF4(&gUnknown_203B360->unk8,0,1);
+ gUnknown_203B360->currMenu = param_1;
+ gUnknown_203B360->unk4 = 0;
+ sub_8038440();
+}
+
+void sub_80383A8(void)
+{
+ ResetUnusedInputStruct();
+ sub_800641C(0,1,1);
+ if (gUnknown_203B360 != 0) {
+ MemoryFree(gUnknown_203B360);
+ gUnknown_203B360 = 0;
+ }
+}
+
+u32 sub_80383D4(void)
+{
+ u32 nextMenu;
+ u32 menuAction;
+
+ menuAction = 2;
+ nextMenu = MENU_NO_SCREEN_CHANGE;
+
+ if (gUnknown_203B360->unk4 == 0){
+ if (sub_80130A8(&gUnknown_203B360->unk8) == '\0') {
+ sub_8013114(&gUnknown_203B360->unk8, &menuAction);
+ }
+ switch(menuAction)
+ {
+ case 3:
+ case 1:
+ gUnknown_203B360->unk4 = 0;
+ nextMenu = MENU_MAIN_SCREEN;
+ break;
+ case 2:
+ gUnknown_203B360->unk4 = 0;
+ default:
+ break;
+ }
+ sub_80384D0();
+ }
+
+ return nextMenu;
+}