pokered/scripts/Route22.asm

447 lines
10 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:
def_script_pointers
dw_const Route22DefaultScript, SCRIPT_ROUTE22_DEFAULT
dw_const Route22Rival1StartBattleScript, SCRIPT_ROUTE22_RIVAL1_START_BATTLE
dw_const Route22Rival1AfterBattleScript, SCRIPT_ROUTE22_RIVAL1_AFTER_BATTLE
dw_const Route22Rival1ExitScript, SCRIPT_ROUTE22_RIVAL1_EXIT
dw_const Route22Rival2StartBattleScript, SCRIPT_ROUTE22_RIVAL2_START_BATTLE
dw_const Route22Rival2AfterBattleScript, SCRIPT_ROUTE22_RIVAL2_AFTER_BATTLE
dw_const Route22Rival2ExitScript, SCRIPT_ROUTE22_RIVAL2_EXIT
dw_const Route22NoopScript, SCRIPT_ROUTE22_NOOP
Route22SetDefaultScript:
xor a ; SCRIPT_ROUTE22_DEFAULT
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
Route22NoopScript:
2014-05-18 18:19:10 +00:00
ret
Route22GetRivalTrainerNoByStarterScript:
2015-08-31 02:38:41 +00:00
ld a, [wRivalStarter]
2014-05-18 18:19:10 +00:00
ld b, a
.next_trainer_no
2014-05-18 18:19:10 +00:00
ld a, [hli]
cp b
jr z, .got_trainer_no
2014-05-18 18:19:10 +00:00
inc hl
jr .next_trainer_no
.got_trainer_no
2014-05-18 18:19:10 +00:00
ld a, [hl]
2015-08-31 02:38:41 +00:00
ld [wTrainerNo], a
2014-05-18 18:19:10 +00:00
ret
Route22MoveRivalRightScript:
ld de, Route22RivalMovementData
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
2023-11-19 00:44:03 +00:00
jr z, .skip_first_right
2014-05-18 18:19:10 +00:00
inc de
2023-11-19 00:44:03 +00:00
.skip_first_right
2014-05-18 18:19:10 +00:00
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
Route22DefaultScript:
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
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
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, Route22FirstRivalBattleScript
CheckEventReuseA EVENT_2ND_ROUTE22_RIVAL_BATTLE
jp nz, Route22SecondRivalBattleScript
2014-05-18 18:19:10 +00:00
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
Route22FirstRivalBattleScript:
ld a, ROUTE22_RIVAL1
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, .walking
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
.walking
2014-05-18 18:19:10 +00:00
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
ld a, ROUTE22_RIVAL1
ldh [hSpriteIndex], a
call Route22MoveRivalRightScript
ld a, SCRIPT_ROUTE22_RIVAL1_START_BATTLE
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
Route22Rival1StartBattleScript:
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, .set_rival_facing_right
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 .set_rival_facing_direction
.set_rival_facing_right
2015-07-18 15:17:29 +00:00
ld a, SPRITE_FACING_RIGHT
.set_rival_facing_direction
ldh [hSpriteFacingDirection], a
ld a, ROUTE22_RIVAL1
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
ld a, TEXT_ROUTE22_RIVAL1
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, Route22Rival1DefeatedText
ld de, Route22Rival1VictoryText
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, .StarterTable
call Route22GetRivalTrainerNoByStarterScript
ld a, SCRIPT_ROUTE22_RIVAL1_AFTER_BATTLE
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
.StarterTable:
; starter the rival picked, rival trainer number
db STARTER2, 4
db STARTER3, 5
db STARTER1, 6
2014-05-18 18:19:10 +00:00
Route22Rival1AfterBattleScript:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, Route22SetDefaultScript
ld a, [wSpritePlayerStateData1FacingDirection]
and a ; cp SPRITE_FACING_DOWN
jr nz, .not_facing_down
ld a, SPRITE_FACING_UP
jr .set_rival_facing
.not_facing_down
ld a, SPRITE_FACING_RIGHT
.set_rival_facing
ldh [hSpriteFacingDirection], a
ld a, ROUTE22_RIVAL1
ldh [hSpriteIndex], a
call SetSpriteFacingDirectionAndDelay
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
ld a, TEXT_ROUTE22_RIVAL1
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, .exit_movement_2
call .RivalExit1Script
jr .next_script
.exit_movement_2
call .RivalExit2Script
.next_script
ld a, SCRIPT_ROUTE22_RIVAL1_EXIT
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
.RivalExit1Script:
ld de, Route22Rival1ExitMovementData1
jr Route22MoveRival1
2014-05-18 18:19:10 +00:00
.RivalExit2Script:
ld de, Route22Rival1ExitMovementData2
2016-06-12 00:24:04 +00:00
Route22MoveRival1:
ld a, ROUTE22_RIVAL1
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
jp MoveSprite
Route22Rival1ExitMovementData1:
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
Route22Rival1ExitMovementData2:
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
Route22Rival1ExitScript:
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
ld a, SCRIPT_ROUTE22_DEFAULT
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
Route22SecondRivalBattleScript:
ld a, ROUTE22_RIVAL2
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, .walking
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
.walking
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
ld a, ROUTE22_RIVAL2
ldh [hSpriteIndex], a
call Route22MoveRivalRightScript
ld a, SCRIPT_ROUTE22_RIVAL2_START_BATTLE
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
Route22Rival2StartBattleScript:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
ld a, ROUTE22_RIVAL2
ldh [hSpriteIndex], a
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
jr nz, .set_player_direction_left
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 .set_rival_facing_direction
.set_player_direction_left
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
.set_rival_facing_direction
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
ld a, TEXT_ROUTE22_RIVAL2
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, Route22Rival2DefeatedText
ld de, Route22Rival2VictoryText
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, .StarterTable
call Route22GetRivalTrainerNoByStarterScript
ld a, SCRIPT_ROUTE22_RIVAL2_AFTER_BATTLE
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
.StarterTable:
db STARTER2, 10
db STARTER3, 11
db STARTER1, 12
2014-05-18 18:19:10 +00:00
Route22Rival2AfterBattleScript:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, Route22SetDefaultScript
ld a, ROUTE22_RIVAL2
ldh [hSpriteIndex], a
ld a, [wcf0d]
2014-05-18 18:19:10 +00:00
cp $1
jr nz, .set_player_direction_left
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 .set_rival_facing_direction
.set_player_direction_left
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
.set_rival_facing_direction
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
ld a, TEXT_ROUTE22_RIVAL2
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, .exit_movement_2
call .RivalExit1Script
jr .next_script
.exit_movement_2
call .RivalExit2Script
.next_script
ld a, SCRIPT_ROUTE22_RIVAL2_EXIT
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
.RivalExit1Script:
ld de, Route22Rival2ExitMovementData1
jr Route22MoveRival2
2014-05-18 18:19:10 +00:00
.RivalExit2Script:
ld de, Route22Rival2ExitMovementData2
2016-06-12 00:24:04 +00:00
Route22MoveRival2:
ld a, ROUTE22_RIVAL2
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
jp MoveSprite
Route22Rival2ExitMovementData1:
db NPC_MOVEMENT_LEFT
Route22Rival2ExitMovementData2:
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_LEFT
db -1 ; end
2014-05-18 18:19:10 +00:00
Route22Rival2ExitScript:
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
ld a, SCRIPT_ROUTE22_NOOP
2015-08-31 02:38:41 +00:00
ld [wRoute22CurScript], a
2014-05-18 18:19:10 +00:00
ret
Route22_TextPointers:
def_text_pointers
dw_const Route22Rival1Text, TEXT_ROUTE22_RIVAL1
dw_const Route22Rival2Text, TEXT_ROUTE22_RIVAL2
dw_const Route22PokemonLeagueSignText, TEXT_ROUTE22_POKEMON_LEAGUE_SIGN
2014-05-18 18:19:10 +00:00
Route22Rival1Text:
text_asm
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_1ST_BATTLE
jr z, .before_battle
ld hl, Route22RivalAfterBattleText1
2014-05-18 18:19:10 +00:00
call PrintText
jr .text_script_end
.before_battle
ld hl, Route22RivalBeforeBattleText1
2014-05-18 18:19:10 +00:00
call PrintText
.text_script_end
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
Route22Rival2Text:
text_asm
CheckEvent EVENT_BEAT_ROUTE22_RIVAL_2ND_BATTLE
jr z, .before_battle
ld hl, Route22RivalAfterBattleText2
2014-05-18 18:19:10 +00:00
call PrintText
jr .text_script_end
.before_battle
ld hl, Route22RivalBeforeBattleText2
2014-05-18 18:19:10 +00:00
call PrintText
.text_script_end
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
Route22Rival1DefeatedText:
text_far _Route22Rival1DefeatedText
text_end
2014-05-18 18:19:10 +00:00
Route22Rival1VictoryText:
text_far _Route22Rival1VictoryText
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
Route22Rival2DefeatedText:
text_far _Route22Rival2DefeatedText
text_end
2014-05-18 18:19:10 +00:00
Route22Rival2VictoryText:
text_far _Route22Rival2VictoryText
text_end
2014-05-18 18:19:10 +00:00
Route22PokemonLeagueSignText:
text_far _Route22PokemonLeagueSignText
text_end