1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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;
}
|