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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
#include "global.h"
#include "pokemon.h"
#include "unk_0206B688.h"
#pragma thumb on
u16 BoxMon_GetAlternateForme(struct BoxPokemon * boxmon);
u32 FUN_0206B6D4(u32 species, u32 is_egg, u32 forme);
u32 FUN_0206B688(struct BoxPokemon * boxmon)
{
BOOL decry = AcquireBoxMonLock(boxmon);
u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL);
u32 is_egg = GetBoxMonData(boxmon, MON_DATA_IS_EGG, NULL);
u32 forme = BoxMon_GetAlternateForme(boxmon);
u32 ret = FUN_0206B6D4(species, is_egg, forme);
ReleaseBoxMonLock(boxmon, decry);
return ret;
}
u32 FUN_0206B6C8(struct Pokemon * pokemon)
{
return FUN_0206B688(FUN_020690E4(pokemon));
}
u32 FUN_0206B6D4(u32 species, u32 is_egg, u32 forme)
{
if (is_egg == TRUE)
{
if (species == SPECIES_MANAPHY)
return 502;
else
return 501;
}
if (forme != 0)
{
if (species == SPECIES_DEOXYS)
return 502 + forme;
if (species == SPECIES_UNOWN)
return 506 + forme;
if (species == SPECIES_BURMY)
return 533 + forme;
if (species == SPECIES_WORMADAM)
return 535 + forme;
if (species == SPECIES_SHELLOS)
return 537 + forme;
if (species == SPECIES_GASTRODON)
return 538 + forme;
}
return (species <= SPECIES_ARCEUS ? species : 0) + 7;
}
u16 BoxMon_GetAlternateForme(struct BoxPokemon * boxmon)
{
u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL);
switch (species)
{
case SPECIES_UNOWN:
return GetBoxMonUnownLetter(boxmon);
case SPECIES_DEOXYS:
case SPECIES_BURMY:
case SPECIES_WORMADAM:
case SPECIES_SHELLOS:
case SPECIES_GASTRODON:
return (u16) GetBoxMonData(boxmon, MON_DATA_FORME, NULL);
default:
return 0;
}
}
const u8 UNK_020F8074[] = {
0, 1, 1, 1, 0, 0, 0, 0, 2, 2, 1, 1, 0, 1, 2, 2,
0, 0, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2,
2, 2, 2, 0, 0, 2, 1, 0, 0, 2, 2, 1, 0, 0, 0, 0,
0, 2, 2, 2, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 2,
2, 2, 0, 2, 0, 1, 1, 1, 2, 2, 1, 1, 1, 0, 0, 0,
0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 1, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 1, 2, 2, 1,
1, 0, 0, 1, 0, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 2,
2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1,
0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 2, 2,
2, 2, 2, 2, 2, 0, 0, 1, 0, 2, 2, 0, 0, 0, 1, 2,
2, 0, 0, 2, 0, 0, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1,
1, 1, 0, 0, 2, 2, 2, 0, 0, 0, 0, 1, 0, 2, 2, 2,
0, 0, 2, 0, 0, 1, 2, 0, 0, 2, 0, 0, 2, 2, 0, 0,
0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 1, 1,
1, 1, 1, 0, 2, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0,
0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 1, 1, 1,
1, 1, 1, 0, 2, 2, 0, 0, 1, 1, 1, 2, 0, 1, 1, 2,
2, 1, 1, 1, 1, 0, 2, 2, 2, 1, 2, 0, 0, 2, 2, 2,
2, 2, 2, 0, 0, 1, 0, 0, 0, 0, 2, 0, 1, 2, 0, 0,
2, 0, 1, 0, 1, 0, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0,
2, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0,
1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0,
0, 1, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0,
1, 0, 0, 1, 1, 1, 1, 0, 0, 2, 2, 0, 0, 0, 0, 2,
2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 0,
2, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2,
2, 1, 1, 0, 2, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1,
0, 2, 1, 0, 2, 1, 1, 0, 2, 2, 0, 1, 0, 2, 2, 0,
0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 0, 0, 0
};
u32 FUN_0206B7BC(u32 species, u32 forme, u32 is_egg)
{
if (is_egg == TRUE)
{
if (species == SPECIES_MANAPHY)
species = 495;
else
species = 494;
}
else if (species > SPECIES_ARCEUS)
species = 0;
else if (forme != 0)
{
if (species == SPECIES_DEOXYS)
species = 495 + forme;
else if (species == SPECIES_UNOWN)
species = 498 + forme;
else if (species == SPECIES_BURMY)
species = 526 + forme;
else if (species == SPECIES_WORMADAM)
species = 528 + forme;
else if (species == SPECIES_SHELLOS)
species = 530 + forme;
else if (species == SPECIES_GASTRODON)
species = 531 + forme;
}
return UNK_020F8074[species];
}
u32 FUN_0206B83C(struct BoxPokemon * boxmon)
{
BOOL decry = AcquireBoxMonLock(boxmon);
u32 forme = BoxMon_GetAlternateForme(boxmon);
u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL);
u32 is_egg = GetBoxMonData(boxmon, MON_DATA_IS_EGG, NULL);
ReleaseBoxMonLock(boxmon, decry);
return FUN_0206B7BC(species, forme, is_egg);
}
u32 FUN_0206B87C(struct Pokemon * pokemon)
{
return FUN_0206B83C(FUN_020690E4(pokemon));
}
u32 FUN_0206B888(void)
{
return 0;
}
u32 FUN_0206B88C(void)
{
return 2;
}
u32 FUN_0206B890(void)
{
return 4;
}
u32 FUN_0206B894(void)
{
return 6;
}
u32 FUN_0206B898(void)
{
return 1;
}
u32 FUN_0206B89C(void)
{
return 3;
}
u32 FUN_0206B8A0(void)
{
return 5;
}
|