Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pret
GitHub Repository: pret/pokered
Path: blob/master/scripts/ChampionsRoom.asm
1270 views
1
ChampionsRoom_Script:
2
call EnableAutoTextBoxDrawing
3
ld hl, ChampionsRoom_ScriptPointers
4
ld a, [wChampionsRoomCurScript]
5
jp CallFunctionInTable
6
7
ResetRivalScript:
8
xor a ; SCRIPT_CHAMPIONSROOM_DEFAULT
9
ld [wJoyIgnore], a
10
ld [wChampionsRoomCurScript], a
11
ret
12
13
ChampionsRoom_ScriptPointers:
14
def_script_pointers
15
dw_const ChampionsRoomDefaultScript, SCRIPT_CHAMPIONSROOM_DEFAULT
16
dw_const ChampionsRoomPlayerEntersScript, SCRIPT_CHAMPIONSROOM_PLAYER_ENTERS
17
dw_const ChampionsRoomRivalReadyToBattleScript, SCRIPT_CHAMPIONSROOM_RIVAL_READY_TO_BATTLE
18
dw_const ChampionsRoomRivalDefeatedScript, SCRIPT_CHAMPIONSROOM_RIVAL_DEFEATED
19
dw_const ChampionsRoomOakArrivesScript, SCRIPT_CHAMPIONSROOM_OAK_ARRIVES
20
dw_const ChampionsRoomOakCongratulatesPlayerScript, SCRIPT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
21
dw_const ChampionsRoomOakDisappointedWithRivalScript, SCRIPT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL
22
dw_const ChampionsRoomOakComeWithMeScript, SCRIPT_CHAMPIONSROOM_OAK_COME_WITH_ME
23
dw_const ChampionsRoomOakExitsScript, SCRIPT_CHAMPIONSROOM_OAK_EXITS
24
dw_const ChampionsRoomPlayerFollowsOakScript, SCRIPT_CHAMPIONSROOM_PLAYER_FOLLOWS_OAK
25
dw_const ChampionsRoomCleanupScript, SCRIPT_CHAMPIONSROOM_CLEANUP_SCRIPT
26
27
ChampionsRoomDefaultScript:
28
ret
29
30
ChampionsRoomPlayerEntersScript:
31
ld a, PAD_BUTTONS | PAD_CTRL_PAD
32
ld [wJoyIgnore], a
33
ld hl, wSimulatedJoypadStatesEnd
34
ld de, RivalEntrance_RLEMovement
35
call DecodeRLEList
36
dec a
37
ld [wSimulatedJoypadStatesIndex], a
38
call StartSimulatingJoypadStates
39
ld a, SCRIPT_CHAMPIONSROOM_RIVAL_READY_TO_BATTLE
40
ld [wChampionsRoomCurScript], a
41
ret
42
43
RivalEntrance_RLEMovement:
44
db PAD_UP, 1
45
db PAD_RIGHT, 1
46
db PAD_UP, 3
47
db -1 ; end
48
49
ChampionsRoomRivalReadyToBattleScript:
50
ld a, [wSimulatedJoypadStatesIndex]
51
and a
52
ret nz
53
call Delay3
54
xor a
55
ld [wJoyIgnore], a
56
ld hl, wOptions
57
res BIT_BATTLE_ANIMATION, [hl]
58
ld a, TEXT_CHAMPIONSROOM_RIVAL
59
ldh [hTextID], a
60
call DisplayTextID
61
call Delay3
62
ld hl, wStatusFlags3
63
set BIT_TALKED_TO_TRAINER, [hl]
64
set BIT_PRINT_END_BATTLE_TEXT, [hl]
65
ld hl, RivalDefeatedText
66
ld de, RivalVictoryText
67
call SaveEndBattleTextPointers
68
ld a, OPP_RIVAL3
69
ld [wCurOpponent], a
70
71
; select which team to use during the encounter
72
ld a, [wRivalStarter]
73
cp STARTER2
74
jr nz, .NotStarter2
75
ld a, $1
76
jr .saveTrainerId
77
.NotStarter2
78
cp STARTER3
79
jr nz, .NotStarter3
80
ld a, $2
81
jr .saveTrainerId
82
.NotStarter3
83
ld a, $3
84
.saveTrainerId
85
ld [wTrainerNo], a
86
87
xor a
88
ldh [hJoyHeld], a
89
ld a, SCRIPT_CHAMPIONSROOM_RIVAL_DEFEATED
90
ld [wChampionsRoomCurScript], a
91
ret
92
93
ChampionsRoomRivalDefeatedScript:
94
ld a, [wIsInBattle]
95
cp $ff
96
jp z, ResetRivalScript
97
call UpdateSprites
98
SetEvent EVENT_BEAT_CHAMPION_RIVAL
99
ld a, PAD_CTRL_PAD
100
ld [wJoyIgnore], a
101
ld a, TEXT_CHAMPIONSROOM_RIVAL
102
ldh [hTextID], a
103
call ChampionsRoom_DisplayTextID_AllowABSelectStart
104
ld a, CHAMPIONSROOM_RIVAL
105
ldh [hSpriteIndex], a
106
call SetSpriteMovementBytesToFF
107
ld a, SCRIPT_CHAMPIONSROOM_OAK_ARRIVES
108
ld [wChampionsRoomCurScript], a
109
ret
110
111
ChampionsRoomOakArrivesScript:
112
farcall Music_Cities1AlternateTempo
113
ld a, TEXT_CHAMPIONSROOM_OAK
114
ldh [hTextID], a
115
call ChampionsRoom_DisplayTextID_AllowABSelectStart
116
ld a, CHAMPIONSROOM_OAK
117
ldh [hSpriteIndex], a
118
call SetSpriteMovementBytesToFF
119
ld de, OakEntranceAfterVictoryMovement
120
ld a, CHAMPIONSROOM_OAK
121
ldh [hSpriteIndex], a
122
call MoveSprite
123
ld a, HS_CHAMPIONS_ROOM_OAK
124
ld [wMissableObjectIndex], a
125
predef ShowObject
126
ld a, SCRIPT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
127
ld [wChampionsRoomCurScript], a
128
ret
129
130
OakEntranceAfterVictoryMovement:
131
db NPC_MOVEMENT_UP
132
db NPC_MOVEMENT_UP
133
db NPC_MOVEMENT_UP
134
db NPC_MOVEMENT_UP
135
db NPC_MOVEMENT_UP
136
db -1 ; end
137
138
ChampionsRoomOakCongratulatesPlayerScript:
139
ld a, [wStatusFlags5]
140
bit BIT_SCRIPTED_NPC_MOVEMENT, a
141
ret nz
142
ld a, PLAYER_DIR_LEFT
143
ld [wPlayerMovingDirection], a
144
ld a, CHAMPIONSROOM_RIVAL
145
ldh [hSpriteIndex], a
146
ld a, SPRITE_FACING_LEFT
147
ldh [hSpriteFacingDirection], a
148
call SetSpriteFacingDirectionAndDelay
149
ld a, CHAMPIONSROOM_OAK
150
ldh [hSpriteIndex], a
151
xor a ; SPRITE_FACING_DOWN
152
ldh [hSpriteFacingDirection], a
153
call SetSpriteFacingDirectionAndDelay
154
ld a, TEXT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
155
ldh [hTextID], a
156
call ChampionsRoom_DisplayTextID_AllowABSelectStart
157
ld a, SCRIPT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL
158
ld [wChampionsRoomCurScript], a
159
ret
160
161
ChampionsRoomOakDisappointedWithRivalScript:
162
ld a, CHAMPIONSROOM_OAK
163
ldh [hSpriteIndex], a
164
ld a, SPRITE_FACING_RIGHT
165
ldh [hSpriteFacingDirection], a
166
call SetSpriteFacingDirectionAndDelay
167
ld a, TEXT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL
168
ldh [hTextID], a
169
call ChampionsRoom_DisplayTextID_AllowABSelectStart
170
ld a, SCRIPT_CHAMPIONSROOM_OAK_COME_WITH_ME
171
ld [wChampionsRoomCurScript], a
172
ret
173
174
ChampionsRoomOakComeWithMeScript:
175
ld a, CHAMPIONSROOM_OAK
176
ldh [hSpriteIndex], a
177
xor a ; SPRITE_FACING_DOWN
178
ldh [hSpriteFacingDirection], a
179
call SetSpriteFacingDirectionAndDelay
180
ld a, TEXT_CHAMPIONSROOM_OAK_COME_WITH_ME
181
ldh [hTextID], a
182
call ChampionsRoom_DisplayTextID_AllowABSelectStart
183
ld de, OakExitChampionsRoomMovement
184
ld a, CHAMPIONSROOM_OAK
185
ldh [hSpriteIndex], a
186
call MoveSprite
187
ld a, SCRIPT_CHAMPIONSROOM_OAK_EXITS
188
ld [wChampionsRoomCurScript], a
189
ret
190
191
OakExitChampionsRoomMovement:
192
db NPC_MOVEMENT_UP
193
db NPC_MOVEMENT_UP
194
db -1 ; end
195
196
ChampionsRoomOakExitsScript:
197
ld a, [wStatusFlags5]
198
bit BIT_SCRIPTED_NPC_MOVEMENT, a
199
ret nz
200
ld a, HS_CHAMPIONS_ROOM_OAK
201
ld [wMissableObjectIndex], a
202
predef HideObject
203
ld a, SCRIPT_CHAMPIONSROOM_PLAYER_FOLLOWS_OAK
204
ld [wChampionsRoomCurScript], a
205
ret
206
207
ChampionsRoomPlayerFollowsOakScript:
208
ld a, PAD_BUTTONS | PAD_CTRL_PAD
209
ld [wJoyIgnore], a
210
ld hl, wSimulatedJoypadStatesEnd
211
ld de, WalkToHallOfFame_RLEMovement
212
call DecodeRLEList
213
dec a
214
ld [wSimulatedJoypadStatesIndex], a
215
call StartSimulatingJoypadStates
216
ld a, SCRIPT_CHAMPIONSROOM_CLEANUP_SCRIPT
217
ld [wChampionsRoomCurScript], a
218
ret
219
220
WalkToHallOfFame_RLEMovement:
221
db PAD_UP, 4
222
db PAD_LEFT, 1
223
db -1 ; end
224
225
ChampionsRoomCleanupScript:
226
ld a, [wSimulatedJoypadStatesIndex]
227
and a
228
ret nz
229
xor a
230
ld [wJoyIgnore], a
231
ld a, SCRIPT_CHAMPIONSROOM_DEFAULT
232
ld [wChampionsRoomCurScript], a
233
ret
234
235
ChampionsRoom_DisplayTextID_AllowABSelectStart:
236
ld a, PAD_CTRL_PAD
237
ld [wJoyIgnore], a
238
call DisplayTextID
239
ld a, PAD_BUTTONS | PAD_CTRL_PAD
240
ld [wJoyIgnore], a
241
ret
242
243
ChampionsRoom_TextPointers:
244
def_text_pointers
245
dw_const ChampionsRoomRivalText, TEXT_CHAMPIONSROOM_RIVAL
246
dw_const ChampionsRoomOakText, TEXT_CHAMPIONSROOM_OAK
247
dw_const ChampionsRoomOakCongratulatesPlayerText, TEXT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
248
dw_const ChampionsRoomOakDisappointedWithRivalText, TEXT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL
249
dw_const ChampionsRoomOakComeWithMeText, TEXT_CHAMPIONSROOM_OAK_COME_WITH_ME
250
251
ChampionsRoomRivalText:
252
text_asm
253
CheckEvent EVENT_BEAT_CHAMPION_RIVAL
254
ld hl, .IntroText
255
jr z, .printText
256
ld hl, ChampionsRoomRivalAfterBattleText
257
.printText
258
call PrintText
259
jp TextScriptEnd
260
261
.IntroText:
262
text_far _ChampionsRoomRivalIntroText
263
text_end
264
265
RivalDefeatedText:
266
text_far _RivalDefeatedText
267
text_end
268
269
RivalVictoryText:
270
text_far _RivalVictoryText
271
text_end
272
273
ChampionsRoomRivalAfterBattleText:
274
text_far _ChampionsRoomRivalAfterBattleText
275
text_end
276
277
ChampionsRoomOakText:
278
text_far _ChampionsRoomOakText
279
text_end
280
281
ChampionsRoomOakCongratulatesPlayerText:
282
text_asm
283
ld a, [wPlayerStarter]
284
ld [wNamedObjectIndex], a
285
call GetMonName
286
ld hl, .Text
287
call PrintText
288
jp TextScriptEnd
289
290
.Text:
291
text_far _ChampionsRoomOakCongratulatesPlayerText
292
text_end
293
294
ChampionsRoomOakDisappointedWithRivalText:
295
text_far _ChampionsRoomOakDisappointedWithRivalText
296
text_end
297
298
ChampionsRoomOakComeWithMeText:
299
text_far _ChampionsRoomOakComeWithMeText
300
text_end
301
302