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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
#include "unk_0206015C.h"
#include "heap.h"
#include "event_data.h"
#include "main.h"
#include "unk_0204AF24.h"
/* Note to future reader, there might be some errors
in the return type / parameters. They are right for this code
but they might not be for every code, please do not blindly
trust these prototypes if you are decompiling these functions. */
extern u32 MOD06_02244DB0(u32);
extern void MOD06_02244DBC(void*);
extern void MOD06_02244DC4(void*, void*);
extern void MOD06_02244EF8(void*);
extern void MOD06_02244F18(void*);
extern BOOL MOD06_02244F24(void*);
extern void MOD06_02244F2C(void*);
extern void * MOD06_02245088(struct UnkSavStruct80 * savStruct);
extern u32 MOD06_02245114(u32, struct UnkSavStruct80*);
extern void MOD06_02245190(u32);
extern void MOD06_02245198(u8, u32);
extern u32 MOD06_022451F0(u32);
extern void PlaySE(u32);
extern void FUN_02049160(struct UnkStruct_0204639C*, u32);
extern void FUN_0204C1B4(struct UnkStruct_0204639C*, u32,u32,u32,u32,u32,u32,u32);
extern u32 FUN_020553A0(u32);
extern void FUN_0205889C(u32, u32);
extern void FUN_0205F1C4(struct ScriptState *);
extern void FUN_0205F1D4(struct ScriptState *);
extern void FUN_0206367C(struct UnkSavStruct80 *, u32);
THUMB_FUNC void FUN_0206015C(struct UnkSavStruct80 *savStruct)
{
struct UnkStruct_0206015C *unkStruct = AllocFromHeapAtEnd(0xb, 0x10);
unkStruct->unk0 = MOD06_02244DB0(0xb);
unkStruct->unk4 = MOD06_02245114(0xb, savStruct);
unkStruct->unkC = 0;
unkStruct->unkD = 0;
FUN_0204640C(savStruct->unk10, FUN_02060194, (u32 *)unkStruct);
}
THUMB_FUNC BOOL FUN_02060194(struct UnkStruct_0204639C *unkStruct0)
{
struct UnkSavStruct80 *savStruct = FUN_02046528(unkStruct0);
struct UnkStruct_0204652C *unkStruct1 = (struct UnkStruct_0204652C *)FUN_0204652C(unkStruct0);
switch (unkStruct1->action)
{
case 0:
FUN_0206367C(savStruct, 1);
MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4);
unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4);
FUN_0204AFC8(unkStruct0);
unkStruct1->action = 1;
break;
case 1:
FUN_0204AF3C(unkStruct0);
unkStruct1->action = 2;
break;
case 2:
struct ScriptState *scrState = SavArray_Flags_get(savStruct->saveBlock2);
u8 unkD = unkStruct1->unkD;
if (unkD == 0)
{
FUN_0205F1C4(scrState);
}
else if (unkD == 5)
{
FUN_0205F1D4(scrState);
}
FUN_02049160(unkStruct0, unkStruct1->unk8);
unkStruct1->action = 3;
break;
case 3:
FUN_0204AF84(unkStruct0);
unkStruct1->action = 4;
break;
case 4:
u32 unk0 = FUN_020553A0(savStruct->unk38);
unkStruct1->unkD += 1;
if (unkStruct1->unkD <= 5)
{
void *unkAddr = MOD06_02245088(savStruct);
FUN_0205889C(unk0, 1);
MOD06_02244DC4(unkStruct1->unk0, unkAddr);
MOD06_02244EF8(unkStruct1->unk0);
unkStruct1->unkE = 0;
PlaySE(1657);
FUN_0204C1B4(unkStruct0, 0x3, 0x11, 0x0000FFFF, 0, 6, 1, 0xb);
unkStruct1->action = 5;
}
else
{
FUN_0205889C(unk0, 0);
FUN_0204B00C(unkStruct0);
unkStruct1->action = 8;
}
break;
case 5:
unkStruct1->unkE += 1;
if (unkStruct1->unkE < 0x3c && !(gMain.newKeys & 1))
break;
MOD06_02245198(unkStruct1->unkD, unkStruct1->unk4);
unkStruct1->unk8 = MOD06_022451F0(unkStruct1->unk4);
PlaySE(1657);
FUN_0204C1B4(unkStruct0, 0x3, 0x10, 0x0000FFFF, 0, 6, 1, 0xb);
unkStruct1->action = 6;
break;
case 6:
MOD06_02244F18(unkStruct1->unk0);
unkStruct1->action = 7;
break;
case 7:
if (MOD06_02244F24(unkStruct1->unk0))
{
MOD06_02244F2C(unkStruct1->unk0);
unkStruct1->action = 1;
}
break;
case 8:
FUN_0206367C(savStruct, 0);
MOD06_02245190(unkStruct1->unk4);
MOD06_02244DBC(unkStruct1->unk0);
FreeToHeap(unkStruct1);
return TRUE;
default:
break;
}
return FALSE;
}
|