pokered/scripts/Route22.asm

445 lines
8.3 KiB
NASM
Raw Normal View History

Route22_Script:
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, Route22_ScriptPointers
2015-08-31 02:38:41 +00:00
ld a, [wRoute22CurScript]
2014-05-18 18:19:10 +00:00
jp CallFunctionInTable
Route22_ScriptPointers:
2014-05-18 18:19:10 +00:00
dw Route22Script0
dw Route22Script1
dw Route22Script2
dw Route22Script3
dw Route22Script4
dw Route22Script5
dw Route22Script6
dw Route22Script7
2016-06-12 00:24:04 +00:00
Route22Script_50ece:
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2016-06-12 00:24:04 +00:00
Route22Script7:
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
Route22Script_50ed6:
2015-08-31 02:38:41 +00:00
ld a, [wRivalStarter]
2014-05-18 18:19:10 +00:00
ld b, a
.asm_50eda
ld a, [hli]
cp b
jr z, .asm_50ee1
inc hl
jr .asm_50eda
.asm_50ee1
ld a, [hl]
2015-08-31 02:38:41 +00:00
ld [wTrainerNo], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
Route22MoveRivalSprite:
ld de, Route22RivalMovementData
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
jr z, .asm_50ef1
inc de
.asm_50ef1
call MoveSprite
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_RIGHT
ldh [hSpriteFacingDirection], a
jp SetSpriteFacingDirectionAndDelay
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22RivalMovementData:
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Script0:
CheckEvent EVENT_ROUTE22_RIVAL_WANTS_BATTLE
2014-05-18 18:19:10 +00:00
ret z
ld hl, .Route22RivalBattleCoords
2014-05-18 18:19:10 +00:00
call ArePlayerCoordsInArray
ret nc
2015-07-18 15:17:29 +00:00
ld a, [wCoordIndex]
ld [wcf0d], a
2014-05-18 18:19:10 +00:00
xor a
ldh [hJoyHeld], a
2014-05-18 18:19:10 +00:00
ld a, $f0
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_LEFT
ld [wPlayerMovingDirection], a
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_1ST_ROUTE22_RIVAL_BATTLE
jr nz, .firstRivalBattle
2015-07-21 17:36:03 +00:00
CheckEventReuseA EVENT_2ND_ROUTE22_RIVAL_BATTLE ; is this the rival at the end of the game?
2014-05-18 18:19:10 +00:00
jp nz, Route22Script_5104e
ret
2014-06-09 20:58:02 +00:00
.Route22RivalBattleCoords
dbmapcoord 29, 4
dbmapcoord 29, 5
db -1 ; end
2014-05-18 18:19:10 +00:00
.firstRivalBattle
2014-05-18 18:19:10 +00:00
ld a, $1
ld [wEmotionBubbleSpriteIndex], a
xor a ; EXCLAMATION_BUBBLE
ld [wWhichEmotionBubble], a
predef EmotionBubble
2014-09-13 07:50:56 +00:00
ld a, [wWalkBikeSurfState]
2014-05-18 18:19:10 +00:00
and a
jr z, .asm_50f4e
ld a, SFX_STOP_ALL_MUSIC
2015-08-09 05:32:44 +00:00
ld [wNewSoundID], a
2014-05-18 18:19:10 +00:00
call PlaySound
.asm_50f4e
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
ld a, $1
ldh [hSpriteIndex], a
call Route22MoveRivalSprite
2014-05-18 18:19:10 +00:00
ld a, $1
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
Route22Script1:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
jr nz, .asm_50f78
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_UP
jr .asm_50f7a
2014-05-18 18:19:10 +00:00
.asm_50f78
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_RIGHT
2014-05-18 18:19:10 +00:00
.asm_50f7a
ldh [hSpriteFacingDirection], a
2014-05-18 18:19:10 +00:00
ld a, $1
ldh [hSpriteIndex], a
call SetSpriteFacingDirectionAndDelay
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ld a, $1
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld hl, wd72d
2014-05-18 18:19:10 +00:00
set 6, [hl]
set 7, [hl]
ld hl, Route22RivalDefeatedText1
2014-05-18 18:19:10 +00:00
ld de, Route22Text_511bc
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2020-07-17 17:27:27 +00:00
ld a, OPP_RIVAL1
2015-08-31 02:38:41 +00:00
ld [wCurOpponent], a
ld hl, StarterMons_50faf
2014-05-18 18:19:10 +00:00
call Route22Script_50ed6
ld a, $2
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
StarterMons_50faf:
; starter the rival picked, rival trainer number
db STARTER2, 4
db STARTER3, 5
db STARTER1, 6
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Script2:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, Route22Script_50ece
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
jr nz, .notDown
ld a, SPRITE_FACING_UP
jr .done
.notDown
ld a, SPRITE_FACING_RIGHT
.done
ldh [hSpriteFacingDirection], a
2014-05-18 18:19:10 +00:00
ld a, $1
ldh [hSpriteIndex], a
call SetSpriteFacingDirectionAndDelay
2014-05-18 18:19:10 +00:00
ld a, $f0
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
2014-05-18 18:19:10 +00:00
ld a, $1
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, SFX_STOP_ALL_MUSIC
2015-08-09 05:32:44 +00:00
ld [wNewSoundID], a
2014-05-18 18:19:10 +00:00
call PlaySound
farcall Music_RivalAlternateStart
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
jr nz, .asm_50fff
2014-05-18 18:19:10 +00:00
call Route22Script_51008
jr .asm_51002
2014-05-18 18:19:10 +00:00
.asm_50fff
call Route22Script_5100d
.asm_51002
ld a, $3
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
Route22Script_51008:
ld de, Route22RivalExitMovementData1
jr Route22MoveRival1
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Script_5100d:
ld de, Route22RivalExitMovementData2
2016-06-12 00:24:04 +00:00
Route22MoveRival1:
2014-05-18 18:19:10 +00:00
ld a, $1
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
jp MoveSprite
2016-06-12 00:24:04 +00:00
Route22RivalExitMovementData1:
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22RivalExitMovementData2:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Script3:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, HS_ROUTE_22_RIVAL_1
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef HideObject
call PlayDefaultMusic
ResetEvents EVENT_1ST_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
2014-05-18 18:19:10 +00:00
ld a, $0
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
Route22Script_5104e:
2014-05-18 18:19:10 +00:00
ld a, $2
ld [wEmotionBubbleSpriteIndex], a
xor a ; EXCLAMATION_BUBBLE
ld [wWhichEmotionBubble], a
predef EmotionBubble
2014-09-13 07:50:56 +00:00
ld a, [wWalkBikeSurfState]
2014-05-18 18:19:10 +00:00
and a
jr z, .skipYVisibilityTesta
ld a, SFX_STOP_ALL_MUSIC
2015-08-09 05:32:44 +00:00
ld [wNewSoundID], a
2014-05-18 18:19:10 +00:00
call PlaySound
.skipYVisibilityTesta
ld a, SFX_STOP_ALL_MUSIC
2015-08-09 05:32:44 +00:00
ld [wNewSoundID], a
2014-05-18 18:19:10 +00:00
call PlaySound
farcall Music_RivalAlternateTempo
2014-05-18 18:19:10 +00:00
ld a, $2
ldh [hSpriteIndex], a
call Route22MoveRivalSprite
2014-05-18 18:19:10 +00:00
ld a, $4
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
Route22Script4:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
ld a, $2
ldh [hSpriteIndex], a
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
jr nz, .asm_510a1
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_UP
2014-05-18 18:19:10 +00:00
jr .asm_510a8
.asm_510a1
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_LEFT
ld [wPlayerMovingDirection], a
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_RIGHT
2014-05-18 18:19:10 +00:00
.asm_510a8
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ld a, $2
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld hl, wd72d
2014-05-18 18:19:10 +00:00
set 6, [hl]
set 7, [hl]
ld hl, Route22RivalDefeatedText2
ld de, Route22Text_511d0
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2020-07-17 17:27:27 +00:00
ld a, OPP_RIVAL2
2015-08-31 02:38:41 +00:00
ld [wCurOpponent], a
ld hl, StarterMons_510d9
2014-05-18 18:19:10 +00:00
call Route22Script_50ed6
ld a, $5
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
StarterMons_510d9:
db STARTER2, 10
db STARTER3, 11
db STARTER1, 12
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Script5:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, Route22Script_50ece
ld a, $2
ldh [hSpriteIndex], a
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
jr nz, .asm_510fb
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_UP
2014-05-18 18:19:10 +00:00
jr .asm_51102
.asm_510fb
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_LEFT
ld [wPlayerMovingDirection], a
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_RIGHT
2014-05-18 18:19:10 +00:00
.asm_51102
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
2014-05-18 18:19:10 +00:00
ld a, $f0
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
2014-05-18 18:19:10 +00:00
ld a, $2
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, SFX_STOP_ALL_MUSIC
2015-08-09 05:32:44 +00:00
ld [wNewSoundID], a
2014-05-18 18:19:10 +00:00
call PlaySound
farcall Music_RivalAlternateStartAndTempo
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
jr nz, .asm_51134
call Route22Script_5113d
jr .asm_51137
.asm_51134
call Route22Script_51142
.asm_51137
ld a, $6
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
Route22Script_5113d:
ld de, MovementData_5114c
jr Route22MoveRival2
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Script_51142:
ld de, MovementData_5114d
2016-06-12 00:24:04 +00:00
Route22MoveRival2:
2014-05-18 18:19:10 +00:00
ld a, $2
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
jp MoveSprite
2016-06-12 00:24:04 +00:00
MovementData_5114c:
db NPC_MOVEMENT_LEFT
2016-06-12 00:24:04 +00:00
MovementData_5114d:
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_LEFT
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Script6:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, HS_ROUTE_22_RIVAL_2
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef HideObject
call PlayDefaultMusic
ResetEvents EVENT_2ND_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
2014-05-18 18:19:10 +00:00
ld a, $7
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
Route22_TextPointers:
2014-05-18 18:19:10 +00:00
dw Route22Text1
dw Route22Text2
dw Route22FrontGateText
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Text1:
text_asm
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
jr z, .asm_5118b
ld hl, Route22RivalAfterBattleText1
2014-05-18 18:19:10 +00:00
call PrintText
jr .asm_51191
.asm_5118b
ld hl, Route22RivalBeforeBattleText1
2014-05-18 18:19:10 +00:00
call PrintText
.asm_51191
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
Route22Text2:
text_asm
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
jr z, .asm_511a4
ld hl, Route22RivalAfterBattleText2
2014-05-18 18:19:10 +00:00
call PrintText
jr .asm_511aa
.asm_511a4
ld hl, Route22RivalBeforeBattleText2
2014-05-18 18:19:10 +00:00
call PrintText
.asm_511aa
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
Route22RivalBeforeBattleText1:
text_far _Route22RivalBeforeBattleText1
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22RivalAfterBattleText1:
text_far _Route22RivalAfterBattleText1
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22RivalDefeatedText1:
text_far _Route22RivalDefeatedText1
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Text_511bc:
text_far _Route22Text_511bc
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22RivalBeforeBattleText2:
text_far _Route22RivalBeforeBattleText2
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22RivalAfterBattleText2:
text_far _Route22RivalAfterBattleText2
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22RivalDefeatedText2:
text_far _Route22RivalDefeatedText2
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22Text_511d0:
text_far _Route22Text_511d0
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
Route22FrontGateText:
text_far _Route22FrontGateText
text_end