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
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
|
CeladonGymScript: ; 4890a (12:490a)
ld hl, $d126
bit 6, [hl]
res 6, [hl]
call nz, CeladonGymScript_48927
call EnableAutoTextBoxDrawing
ld hl, CeladonGymTrainerHeaders
ld de, CeladonGymScriptPointers
ld a, [W_CELADONGYMCURSCRIPT]
call ExecuteCurMapScriptInTable
ld [W_CELADONGYMCURSCRIPT], a
ret
CeladonGymScript_48927: ; 48927 (12:4927)
ld hl, Gym4CityName ; $4930
ld de, Gym4LeaderName ; $493d
jp LoadGymLeaderAndCityName
Gym4CityName: ; 48930 (12:4930)
db "CELADON CITY@"
Gym4LeaderName: ; 4893d (12:493d)
db "ERIKA@"
CeladonGymText_48943: ; 48943 (12:4943)
xor a
ld [wJoypadForbiddenButtonsMask], a
ld [W_CELADONGYMCURSCRIPT], a
ld [W_CURMAPSCRIPT], a
ret
CeladonGymScriptPointers: ; 4894e (12:494e)
dw CheckFightingMapTrainers
dw Func_324c
dw EndTrainerBattle
dw CeladonGymScript3
CeladonGymScript3: ; 48956 (12:4956)
ld a, [W_ISINBATTLE] ; $d057
cp $ff
jp z, CeladonGymText_48943
ld a, $f0
ld [wJoypadForbiddenButtonsMask], a
CeladonGymText_48963: ; 48963 (12:4963)
ld a, $9
ld [H_DOWNARROWBLINKCNT2], a ; $ff8c
call DisplayTextID
ld hl, $d77c
set 1, [hl]
ld bc, (TM_21 << 8) | 1
call GiveItem
jr nc, .BagFull
ld a, $a
ld [H_DOWNARROWBLINKCNT2], a ; $ff8c
call DisplayTextID
ld hl, $d77c
set 0, [hl]
jr .asm_4898c
.BagFull
ld a, $b
ld [H_DOWNARROWBLINKCNT2], a ; $ff8c
call DisplayTextID
.asm_4898c
ld hl, W_OBTAINEDBADGES
set 3, [hl]
ld hl, $d72a
set 3, [hl]
; deactivate gym trainers
ld a, [$d77c]
or %11111100
ld [$d77c], a
ld hl, $d77d
set 0, [hl]
jp CeladonGymText_48943
CeladonGymTextPointers: ; 489a6 (12:49a6)
dw CeladonGymText1
dw CeladonGymText2
dw CeladonGymText3
dw CeladonGymText4
dw CeladonGymText5
dw CeladonGymText6
dw CeladonGymText7
dw CeladonGymText8
dw CeladonGymText9
dw TM21Text
dw TM21NoRoomText
CeladonGymTrainerHeaders: ; 489bc (12:49bc)
CeladonGymTrainerHeader0: ; 489bc (12:49bc)
db $2 ; flag's bit
db ($2 << 4) ; trainer's view range
dw $d77c ; flag's byte
dw CeladonGymBattleText2 ; 0x4a8b TextBeforeBattle
dw CeladonGymAfterBattleText2 ; 0x4a95 TextAfterBattle
dw CeladonGymEndBattleText2 ; 0x4a90 TextEndBattle
dw CeladonGymEndBattleText2 ; 0x4a90 TextEndBattle
CeladonGymTrainerHeader2: ; 489c8 (12:49c8)
db $3 ; flag's bit
db ($2 << 4) ; trainer's view range
dw $d77c ; flag's byte
dw CeladonGymBattleText3 ; 0x4aa4 TextBeforeBattle
dw CeladonGymAfterBattleText3 ; 0x4aae TextAfterBattle
dw CeladonGymEndBattleText3 ; 0x4aa9 TextEndBattle
dw CeladonGymEndBattleText3 ; 0x4aa9 TextEndBattle
CeladonGymTrainerHeader3: ; 489d4 (12:49d4)
db $4 ; flag's bit
db ($4 << 4) ; trainer's view range
dw $d77c ; flag's byte
dw CeladonGymBattleText4 ; 0x4abd TextBeforeBattle
dw CeladonGymAfterBattleText4 ; 0x4ac7 TextAfterBattle
dw CeladonGymEndBattleText4 ; 0x4ac2 TextEndBattle
dw CeladonGymEndBattleText4 ; 0x4ac2 TextEndBattle
CeladonGymTrainerHeader4: ; 489e0 (12:49e0)
db $5 ; flag's bit
db ($4 << 4) ; trainer's view range
dw $d77c ; flag's byte
dw CeladonGymBattleText5 ; 0x4ad6 TextBeforeBattle
dw CeladonGymAfterBattleText5 ; 0x4ae0 TextAfterBattle
dw CeladonGymEndBattleText5 ; 0x4adb TextEndBattle
dw CeladonGymEndBattleText5 ; 0x4adb TextEndBattle
CeladonGymTrainerHeader5: ; 489ec (12:49ec)
db $6 ; flag's bit
db ($2 << 4) ; trainer's view range
dw $d77c ; flag's byte
dw CeladonGymBattleText6 ; 0x4aef TextBeforeBattle
dw CeladonGymAfterBattleText6 ; 0x4af9 TextAfterBattle
dw CeladonGymEndBattleText6 ; 0x4af4 TextEndBattle
dw CeladonGymEndBattleText6 ; 0x4af4 TextEndBattle
CeladonGymTrainerHeader6: ; 489f8 (12:49f8)
db $7 ; flag's bit
db ($2 << 4) ; trainer's view range
dw $d77c ; flag's byte
dw CeladonGymBattleText7 ; 0x4b08 TextBeforeBattle
dw CeladonGymAfterBattleText7 ; 0x4b12 TextAfterBattle
dw CeladonGymEndBattleText7 ; 0x4b0d TextEndBattle
dw CeladonGymEndBattleText7 ; 0x4b0d TextEndBattle
CeladonGymTrainerHeader7: ; 48a04 (12:4a04)
db $8 ; flag's bit
db ($3 << 4) ; trainer's view range
dw $d77c ; flag's byte
dw CeladonGymBattleText8 ; 0x4b21 TextBeforeBattle
dw CeladonGymAfterBattleText8 ; 0x4b2b TextAfterBattle
dw CeladonGymEndBattleText8 ; 0x4b26 TextEndBattle
dw CeladonGymEndBattleText8 ; 0x4b26 TextEndBattle
db $ff
CeladonGymText1: ; 48a11 (12:4a11)
db $08 ; asm
ld a, [$d77c]
bit 1, a
jr z, .asm_16064 ; 0x48a17
bit 0, a
jr nz, .asm_3b22c ; 0x48a1b
call z, CeladonGymText_48963
call DisableWaitingAfterTextDisplay
jr .asm_96252 ; 0x48a23
.asm_3b22c ; 0x48a25
ld hl, CeladonGymText_48a68
call PrintText
jr .asm_96252 ; 0x48a2b
.asm_16064 ; 0x48a2d
ld hl, CeladonGymText_48a5e
call PrintText
ld hl, $d72d
set 6, [hl]
set 7, [hl]
ld hl, CeladonGymText_48a63
ld de, CeladonGymText_48a63
call PreBattleSaveRegisters
ldh a, [$8c]
ld [$cf13], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $4
ld [$d05c], a
ld a, $3
ld [W_CELADONGYMCURSCRIPT], a
ld [W_CURMAPSCRIPT], a
.asm_96252 ; 0x48a5b
jp TextScriptEnd
CeladonGymText_48a5e: ; 48a5e (12:4a5e)
TX_FAR _CeladonGymText_48a5e
db "@"
CeladonGymText_48a63: ; 48a63 (12:4a63)
TX_FAR _CeladonGymText_48a63
db "@"
CeladonGymText_48a68: ; 48a68 (12:4a68)
TX_FAR _CeladonGymText_48a68
db "@"
CeladonGymText9: ; 48a6d (12:4a6d)
TX_FAR _CeladonGymText9
db "@"
TM21Text: ; 48a72 (12:4a72)
TX_FAR _ReceivedTM21Text
db $0B
TX_FAR _TM21ExplanationText
db "@"
TM21NoRoomText: ; 48a7c (12:4a7c)
TX_FAR _TM21NoRoomText
db "@"
CeladonGymText2: ; 48a81 (12:4a81)
db $08 ; asm
ld hl, CeladonGymTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
CeladonGymBattleText2: ; 48a8b (12:4a8b)
TX_FAR _CeladonGymBattleText2
db "@"
CeladonGymEndBattleText2: ; 48a90 (12:4a90)
TX_FAR _CeladonGymEndBattleText2
db "@"
CeladonGymAfterBattleText2: ; 48a95 (12:4a95)
TX_FAR _CeladonGymAfterBattleText2
db "@"
CeladonGymText3: ; 48a9a (12:4a9a)
db $08 ; asm
ld hl, CeladonGymTrainerHeader2
call TalkToTrainer
jp TextScriptEnd
CeladonGymBattleText3: ; 48aa4 (12:4aa4)
TX_FAR _CeladonGymBattleText3
db "@"
CeladonGymEndBattleText3: ; 48aa9 (12:4aa9)
TX_FAR _CeladonGymEndBattleText3
db "@"
CeladonGymAfterBattleText3: ; 48aae (12:4aae)
TX_FAR _CeladonGymAfterBattleText3
db "@"
CeladonGymText4: ; 48ab3 (12:4ab3)
db $08 ; asm
ld hl, CeladonGymTrainerHeader3
call TalkToTrainer
jp TextScriptEnd
CeladonGymBattleText4: ; 48abd (12:4abd)
TX_FAR _CeladonGymBattleText4
db "@"
CeladonGymEndBattleText4: ; 48ac2 (12:4ac2)
TX_FAR _CeladonGymEndBattleText4
db "@"
CeladonGymAfterBattleText4: ; 48ac7 (12:4ac7)
TX_FAR _CeladonGymAfterBattleText4
db "@"
CeladonGymText5: ; 48acc (12:4acc)
db $08 ; asm
ld hl, CeladonGymTrainerHeader4
call TalkToTrainer
jp TextScriptEnd
CeladonGymBattleText5: ; 48ad6 (12:4ad6)
TX_FAR _CeladonGymBattleText5
db "@"
CeladonGymEndBattleText5: ; 48adb (12:4adb)
TX_FAR _CeladonGymEndBattleText5
db "@"
CeladonGymAfterBattleText5: ; 48ae0 (12:4ae0)
TX_FAR _CeladonGymAfterBattleText5
db "@"
CeladonGymText6: ; 48ae5 (12:4ae5)
db $08 ; asm
ld hl, CeladonGymTrainerHeader5
call TalkToTrainer
jp TextScriptEnd
CeladonGymBattleText6: ; 48aef (12:4aef)
TX_FAR _CeladonGymBattleText6
db "@"
CeladonGymEndBattleText6: ; 48af4 (12:4af4)
TX_FAR _CeladonGymEndBattleText6
db "@"
CeladonGymAfterBattleText6: ; 48af9 (12:4af9)
TX_FAR _CeladonGymAfterBattleText6
db "@"
CeladonGymText7: ; 48afe (12:4afe)
db $08 ; asm
ld hl, CeladonGymTrainerHeader6
call TalkToTrainer
jp TextScriptEnd
CeladonGymBattleText7: ; 48b08 (12:4b08)
TX_FAR _CeladonGymBattleText7
db "@"
CeladonGymEndBattleText7: ; 48b0d (12:4b0d)
TX_FAR _CeladonGymEndBattleText7
db "@"
CeladonGymAfterBattleText7: ; 48b12 (12:4b12)
TX_FAR _CeladonGymAfterBattleText7
db "@"
CeladonGymText8: ; 48b17 (12:4b17)
db $08 ; asm
ld hl, CeladonGymTrainerHeader7
call TalkToTrainer
jp TextScriptEnd
CeladonGymBattleText8: ; 48b21 (12:4b21)
TX_FAR _CeladonGymBattleText8
db "@"
CeladonGymEndBattleText8: ; 48b26 (12:4b26)
TX_FAR _CeladonGymEndBattleText8
db "@"
CeladonGymAfterBattleText8: ; 48b2b (12:4b2b)
TX_FAR _CeladonGymAfterBattleText8
db "@"
|