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
|
PokemonTower7F_Script:
call EnableAutoTextBoxDrawing
ld hl, PokemonTower7F_ScriptPointers
ld a, [wPokemonTower7FCurScript]
call CallFunctionInTable
ret
PokemonTower7FSetDefaultScript:
xor a
ld [wJoyIgnore], a
PokemonTower7FSetScript:
ld [wPokemonTower7FCurScript], a
ret
PokemonTower7F_ScriptPointers:
def_script_pointers
dw_const PokemonTower7FScript0, SCRIPT_POKEMONTOWER7F_SCRIPT0
dw_const PokemonTower7FScript1, SCRIPT_POKEMONTOWER7F_SCRIPT1
dw_const PokemonTower7FScript2, SCRIPT_POKEMONTOWER7F_SCRIPT2
dw_const PokemonTower7FScript3, SCRIPT_POKEMONTOWER7F_SCRIPT3
dw_const PokemonTower7FScript4, SCRIPT_POKEMONTOWER7F_SCRIPT4
dw_const PokemonTower7FScript5, SCRIPT_POKEMONTOWER7F_SCRIPT5
dw_const PokemonTower7FScript6, SCRIPT_POKEMONTOWER7F_SCRIPT6
dw_const PokemonTower7FScript7, SCRIPT_POKEMONTOWER7F_SCRIPT7
dw_const PokemonTower7FScript8, SCRIPT_POKEMONTOWER7F_SCRIPT8
dw_const PokemonTower7FScript9, SCRIPT_POKEMONTOWER7F_SCRIPT9
dw_const PokemonTower7FScript10, SCRIPT_POKEMONTOWER7F_SCRIPT10
dw_const PokemonTower7FWarpToMrFujiHouseScript, SCRIPT_POKEMONTOWER7F_WARP_TO_MR_FUJI_HOUSE
PokemonTower7FScript0:
IF DEF(_DEBUG)
call DebugPressedOrHeldB
ret nz
ENDC
CheckEvent EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES
call z, PokemonTower7FScript_60d2a
ret
PokemonTower7FScript_60d2a:
ld a, [wYCoord]
cp $c
ret nz
ResetEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
ld a, [wXCoord]
cp $a
jr z, .asm_60d47
ld a, [wXCoord] ; why?
cp $b
ret nz
SetEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
.asm_60d47
call StopAllMusic
ld c, BANK(Music_MeetJessieJames)
ld a, MUSIC_MEET_JESSIE_JAMES
call PlayMusic
xor a
ldh [hJoyHeld], a
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, TOGGLE_POKEMON_TOWER_7F_JESSIE
call PokemonTower7FScript_ShowObject
ld a, TOGGLE_POKEMON_TOWER_7F_JAMES
call PokemonTower7FScript_ShowObject
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, TEXT_POKEMONTOWER7F_TEXT4
ldh [hTextID], a
call DisplayTextID
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, SCRIPT_POKEMONTOWER7F_SCRIPT1
call PokemonTower7FSetScript
ret
PokemonTower7FMovementData_60d7a:
db $4
PokemonTower7FMovementData_60d7b:
db $4
db $4
db $4
db $FF
PokemonTower7FScript1:
ld de, PokemonTower7FMovementData_60d7b
CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
jr z, .asm_60d8c
ld de, PokemonTower7FMovementData_60d7a
.asm_60d8c
ld a, POKEMONTOWER7F_JESSIE
ldh [hSpriteIndex], a
call MoveSprite
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, SCRIPT_POKEMONTOWER7F_SCRIPT2
call PokemonTower7FSetScript
ret
PokemonTower7FScript2:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
PokemonTower7FScript3:
ld a, SPRITE_FACING_DOWN
ld [wSprite01StateData1FacingDirection], a
CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
jr z, .asm_60dba
ld a, SPRITE_FACING_RIGHT
ld [wSprite01StateData1FacingDirection], a
.asm_60dba
ld a, $2
ld [wSprite01StateData1MovementStatus], a
PokemonTower7FScript4:
ld de, PokemonTower7FMovementData_60d7a
CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
jr z, .asm_60dcc
ld de, PokemonTower7FMovementData_60d7b
.asm_60dcc
ld a, POKEMONTOWER7F_JAMES
ldh [hSpriteIndex], a
call MoveSprite
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, SCRIPT_POKEMONTOWER7F_SCRIPT5
call PokemonTower7FSetScript
ret
PokemonTower7FScript5:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, [wStatusFlags5]
bit BIT_SCRIPTED_NPC_MOVEMENT, a
ret nz
PokemonTower7FScript6:
ld a, $2
ld [wSprite02StateData1MovementStatus], a
ld a, SPRITE_FACING_LEFT
ld [wSprite02StateData1FacingDirection], a
CheckEvent EVENT_POKEMONTOWER_7_JESSIE_JAMES_ON_LEFT
jr z, .asm_60dff
ld a, SPRITE_FACING_DOWN
ld [wSprite02StateData1FacingDirection], a
.asm_60dff
call Delay3
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, TEXT_POKEMONTOWER7F_TEXT5
ldh [hTextID], a
call DisplayTextID
PokemonTower7FScript7:
ld hl, wStatusFlags3
set BIT_TALKED_TO_TRAINER, [hl]
set BIT_PRINT_END_BATTLE_TEXT, [hl]
ld hl, PokemonTower7FJessieJamesEndBattleText
ld de, PokemonTower7FJessieJamesEndBattleText
call SaveEndBattleTextPointers
ld a, OPP_ROCKET
ld [wCurOpponent], a
ld a, $2c
ld [wTrainerNo], a
xor a
ldh [hJoyHeld], a
ld [wJoyIgnore], a
ld a, SCRIPT_POKEMONTOWER7F_SCRIPT8
call PokemonTower7FSetScript
ret
PokemonTower7FScript8:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, [wIsInBattle]
cp $ff
jp z, PokemonTower7FSetDefaultScript
ld a, $2
ld [wSprite01StateData1MovementStatus], a
ld [wSprite02StateData1MovementStatus], a
xor a
ld [wSprite01StateData1FacingDirection], a
ld [wSprite02StateData1FacingDirection], a
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld a, TEXT_POKEMONTOWER7F_TEXT6
ldh [hTextID], a
call DisplayTextID
xor a
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
call StopAllMusic
ld c, BANK(Music_MeetJessieJames)
ld a, MUSIC_MEET_JESSIE_JAMES
call PlayMusic
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, SCRIPT_POKEMONTOWER7F_SCRIPT9
call PokemonTower7FSetScript
ret
PokemonTower7FScript9:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
call GBFadeOutToBlack
ld a, TOGGLE_POKEMON_TOWER_7F_JESSIE
call PokemonTower7FScript_HideObject
ld a, TOGGLE_POKEMON_TOWER_7F_JAMES
call PokemonTower7FScript_HideObject
call UpdateSprites
call Delay3
call GBFadeInFromBlack
ld a, SCRIPT_POKEMONTOWER7F_SCRIPT10
call PokemonTower7FSetScript
ret
PokemonTower7FScript10:
call PlayDefaultMusic
xor a
ldh [hJoyHeld], a
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_POKEMONTOWER_7_JESSIE_JAMES
ld a, SCRIPT_POKEMONTOWER7F_SCRIPT0
call PokemonTower7FSetScript
ret
PokemonTower7FScript_ShowObject:
ld [wToggleableObjectIndex], a
predef ShowObject
call UpdateSprites
call Delay3
ret
PokemonTower7FScript_HideObject:
ld [wToggleableObjectIndex], a
predef HideObject
ret
PokemonTower7FWarpToMrFujiHouseScript:
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, TOGGLE_POKEMON_TOWER_7F_MR_FUJI
ld [wToggleableObjectIndex], a
predef HideObject
ld a, SPRITE_FACING_UP
ld [wSpritePlayerStateData1FacingDirection], a
ld a, MR_FUJIS_HOUSE
ldh [hWarpDestinationMap], a
ld a, $1
ld [wDestinationWarpID], a
ld a, LAVENDER_TOWN
ld [wLastMap], a
ld hl, wStatusFlags3
set BIT_WARP_FROM_CUR_SCRIPT, [hl]
ld a, SCRIPT_POKEMONTOWER7F_SCRIPT0
ld [wPokemonTower7FCurScript], a
ret
PokemonTower7F_TextPointers:
def_text_pointers
dw_const PokemonTower7FJessieJamesText, TEXT_POKEMONTOWER7F_JESSIE
dw_const PokemonTower7FJessieJamesText, TEXT_POKEMONTOWER7F_JAMES
dw_const PokemonTower7FMrFujiText, TEXT_POKEMONTOWER7F_MR_FUJI
dw_const PokemonTower7FText4, TEXT_POKEMONTOWER7F_TEXT4
dw_const PokemonTower7FText5, TEXT_POKEMONTOWER7F_TEXT5
dw_const PokemonTower7FText6, TEXT_POKEMONTOWER7F_TEXT6
PokemonTower7FJessieJamesText:
text_end
PokemonTower7FText4:
text_far _PokemonTowerJessieJamesText1
text_asm
ld c, 10
call DelayFrames
ld a, PLAYER_DIR_UP
ld [wPlayerMovingDirection], a
ld a, $0
ld [wEmotionBubbleSpriteIndex], a
ld a, EXCLAMATION_BUBBLE
ld [wWhichEmotionBubble], a
predef EmotionBubble
ld c, 20
call DelayFrames
jp TextScriptEnd
PokemonTower7FText5:
text_far _PokemonTowerJessieJamesText2
text_end
PokemonTower7FJessieJamesEndBattleText:
text_far _PokemonTowerJessieJamesText3
text_end
PokemonTower7FText6:
text_far _PokemonTowerJessieJamesText4
text_asm
ld c, 64
call DelayFrames
jp TextScriptEnd
PokemonTower7FMrFujiText:
text_asm
ld hl, .RescueText
call PrintText
SetEvent EVENT_RESCUED_MR_FUJI
SetEvent EVENT_RESCUED_MR_FUJI_2
ld a, TOGGLE_MR_FUJIS_HOUSE_MR_FUJI
ld [wToggleableObjectIndex], a
predef ShowObject
ld a, TOGGLE_SAFFRON_CITY_E
ld [wToggleableObjectIndex], a
predef HideObject
ld a, TOGGLE_SAFFRON_CITY_F
ld [wToggleableObjectIndex], a
predef ShowObject
ld a, SCRIPT_POKEMONTOWER7F_WARP_TO_MR_FUJI_HOUSE
ld [wPokemonTower7FCurScript], a
jp TextScriptEnd
.RescueText:
text_far _PokemonTower7FMrFujiRescueText
text_end
|