blob: 1e0a8aed300f25af6a4dc819766b02d0e63689ee (
plain)
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
105
|
#include "global.h"
#include "input.h"
#include "memory.h"
struct unkStruct_203B344
{
u32 state; // state variable
u32 unk4; // timer??
};
struct unkStruct_203B340
{
// size: 0x84
u32 unk0;
};
extern void sub_80015C0(u32, u32);
extern u16 gUnknown_80E5990[];
extern struct unkStruct_203B344 *gUnknown_203B344;
extern struct unkStruct_203B340 *gUnknown_203B340;
extern s32 sub_8001658(u32, u32);
void sub_803565C(void)
{
if(gUnknown_203B340 != NULL)
{
MemoryFree(gUnknown_203B340);
gUnknown_203B340 = NULL;
}
}
u32 sub_8035678(void)
{
gUnknown_203B344 = MemoryAlloc(sizeof(struct unkStruct_203B344), 8);
gUnknown_203B344->state = 0;
gUnknown_203B344->unk4 = 0;
sub_80015C0(0, 0x39);
return 1;
}
u32 sub_80356A0(void)
{
u16 uVar1;
u16 held_input;
held_input = gRealInputs.held;
uVar1 = gUnknown_80E5990[gUnknown_203B344->unk4];
switch(gUnknown_203B344->state) {
case 0:
gUnknown_203B344->state = 3;
break;
case 1:
if (uVar1 == 0)
gUnknown_203B344->state = 4;
else {
if (held_input == uVar1)
gUnknown_203B344->state = 2;
else {
// NOTE: couldn't match with OR'd condition so split up to match
if ((uVar1 & held_input) != held_input)
gUnknown_203B344->state = 3;
else
{
if (gUnknown_203B344->unk4 == 0)
gUnknown_203B344->state = 3;
}
}
}
break;
case 2:
if (held_input == 0) {
gUnknown_203B344->state = 1;
gUnknown_203B344->unk4++;
}
else {
if ((uVar1 & held_input) != held_input)
gUnknown_203B344->state = 3;
}
break;
case 3:
return 2;
case 4:
return 3; // sub_809C478 clears the flash data when this is returned
}
if (sub_8001658(0,0x39) != 0) {
gUnknown_203B344->state = 3;
return 2;
}
else {
return 0;
}
}
void sub_8035758(void)
{
if(gUnknown_203B344 != NULL)
{
MemoryFree(gUnknown_203B344);
gUnknown_203B344 = NULL;
}
}
|