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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
#include "global.h"
#include "battle.h"
#include "battle_tower.h"
#include "ewram.h"
#include "trainer.h"
#if GERMAN
extern u8 gTrainerClassNames[][13];
extern struct Trainer gTrainers[];
u8 *de_sub_8040FE0(u8 gender)
{
if (gender)
gender++;
gender = TRAINER_CLASS_SCHOOL_KID;
return gTrainerClassNames[gender];
}
u8 *de_sub_8040FF4(u8 gender)
{
if (gender)
gender++;
gender = TRAINER_CLASS_POKEMON_TRAINER_3;
return gTrainerClassNames[gender];
}
u8 *de_sub_804100C(u8 gender)
{
if (gender)
gender++;
gender = TRAINER_CLASS_LEADER;
return gTrainerClassNames[gender];
}
#ifdef NONMATCHING
u8 de_sub_81364AC(void);
u8 get_trainer_class_name_index(void);
u8 de_sub_81364F8(void);
u8 *de_sub_8041024(s32 arg0, u32 arg1)
{
u8 nameIndex, trainerClass, gender;
struct Trainer *trainer;
u8 local2;
switch (arg0)
{
case 0x400:
nameIndex = GetSecretBaseTrainerNameIndex();
gender = eSecretBaseRecord.gender;
if (nameIndex == TRAINER_CLASS_SCHOOL_KID)
return de_sub_8040FE0(gender);
return gTrainerClassNames[nameIndex];
case 0x100:
trainerClass = de_sub_81364AC();
nameIndex = get_trainer_class_name_index();
if (trainerClass == FACILITY_CLASS_SCHOOL_KID_F)
return de_sub_8040FE0(FEMALE);
if (trainerClass == FACILITY_CLASS_MAY_1 || trainerClass == FACILITY_CLASS_MAY_2 || trainerClass == FACILITY_CLASS_MAY_3)
return de_sub_8040FF4(FEMALE);
return gTrainerClassNames[nameIndex];
case 0x800:
trainerClass = de_sub_81364F8();
nameIndex = GetEReaderTrainerClassNameIndex();
if (trainerClass == FACILITY_CLASS_SCHOOL_KID_F)
return de_sub_8040FE0(FEMALE);
if (trainerClass == FACILITY_CLASS_MAY_1 || trainerClass == FACILITY_CLASS_MAY_2 || trainerClass == FACILITY_CLASS_MAY_3)
return de_sub_8040FF4(FEMALE);
return gTrainerClassNames[nameIndex];
default:
trainer = &gTrainers[arg1];
trainerClass = trainer->trainerClass;
local2 = sub_803FC58(arg1);
if (trainerClass == FACILITY_CLASS_LEADER_F)
return de_sub_8040FE0(local2);
if (trainerClass == FACILITY_CLASS_BIRD_KEEPER && local2 == FEMALE)
return de_sub_8040FF4(FEMALE);
if (trainerClass == FACILITY_CLASS_ELITE_FOUR_F)
{
if (gTrainers[arg1].doubleBattle == TRUE)
return de_sub_804100C(FEMALE);
else
return de_sub_804100C(MALE);
}
return gTrainerClassNames[trainerClass];
}
}
#else
NAKED
void de_sub_8041024(void) {
asm(".syntax unified\n\
push {r4-r6,lr}\n\
adds r2, r0, 0\n\
adds r6, r1, 0\n\
movs r0, 0x80\n\
lsls r0, 3\n\
cmp r2, r0\n\
beq _0804104A\n\
cmp r2, r0\n\
bgt _08041040\n\
movs r0, 0x80\n\
lsls r0, 1\n\
cmp r2, r0\n\
beq _08041064\n\
b _0804109C\n\
_08041040:\n\
movs r0, 0x80\n\
lsls r0, 4\n\
cmp r2, r0\n\
beq _08041086\n\
b _0804109C\n\
_0804104A:\n\
bl GetSecretBaseTrainerNameIndex\n\
lsls r0, 24\n\
lsrs r5, r0, 24\n\
ldr r0, _08041060 @ =gSharedMem + 0x17000\n\
ldrb r0, [r0, 0x1]\n\
lsls r0, 27\n\
lsrs r2, r0, 31\n\
cmp r5, 0x1A\n\
beq _080410B8\n\
b _080410F8\n\
.align 2, 0\n\
_08041060: .4byte gSharedMem + 0x17000\n\
_08041064:\n\
bl de_sub_81364AC\n\
lsls r0, 24\n\
lsrs r4, r0, 24\n\
bl get_trainer_class_name_index\n\
_08041070:\n\
lsls r0, 24\n\
lsrs r5, r0, 24\n\
cmp r4, 0x1E\n\
beq _08041094\n\
adds r0, r4, 0\n\
subs r0, 0x3D\n\
lsls r0, 24\n\
lsrs r0, 24\n\
cmp r0, 0x2\n\
bls _080410CC\n\
b _080410F8\n\
_08041086:\n\
bl de_sub_81364F8\n\
lsls r0, 24\n\
lsrs r4, r0, 24\n\
bl GetEReaderTrainerClassNameIndex\n\
b _08041070\n\
_08041094:\n\
movs r0, 0x1\n\
bl de_sub_8040FE0\n\
b _08041102\n\
_0804109C:\n\
ldr r1, _080410C0 @ =gTrainers\n\
lsls r4, r6, 2\n\
adds r0, r4, r6\n\
lsls r0, 3\n\
adds r0, r1\n\
ldrb r5, [r0, 0x1]\n\
lsls r0, r6, 16\n\
lsrs r0, 16\n\
bl sub_803FC58\n\
lsls r0, 24\n\
lsrs r2, r0, 24\n\
cmp r5, 0x1A\n\
bne _080410C4\n\
_080410B8:\n\
adds r0, r2, 0\n\
bl de_sub_8040FE0\n\
b _08041102\n\
.align 2, 0\n\
_080410C0: .4byte gTrainers\n\
_080410C4:\n\
cmp r5, 0x2E\n\
bne _080410D4\n\
cmp r2, 0x1\n\
bne _080410D4\n\
_080410CC:\n\
movs r0, 0x1\n\
bl de_sub_8040FF4\n\
b _08041102\n\
_080410D4:\n\
cmp r5, 0x19\n\
bne _080410F8\n\
ldr r0, _080410F4 @ =gTrainers\n\
adds r1, r4, r6\n\
lsls r1, 3\n\
adds r1, r0\n\
ldrb r0, [r1, 0x18]\n\
movs r2, 0\n\
cmp r0, 0x1\n\
bne _080410EA\n\
movs r2, 0x1\n\
_080410EA:\n\
adds r0, r2, 0\n\
bl de_sub_804100C\n\
b _08041102\n\
.align 2, 0\n\
_080410F4: .4byte gTrainers\n\
_080410F8:\n\
movs r0, 0xD\n\
adds r1, r5, 0\n\
muls r1, r0\n\
ldr r0, _08041108 @ =gTrainerClassNames\n\
adds r0, r1, r0\n\
_08041102:\n\
pop {r4-r6}\n\
pop {r1}\n\
bx r1\n\
.align 2, 0\n\
_08041108: .4byte gTrainerClassNames\n\
.syntax divided\n");
}
#endif
u32 de_sub_804110C(u32 arg0, u32 arg1)
{
return arg1;
}
#endif
|