pokered/scripts/ChampionsRoom.asm

301 lines
7.9 KiB
NASM
Raw Normal View History

ChampionsRoom_Script:
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, ChampionsRoom_ScriptPointers
ld a, [wChampionsRoomCurScript]
2014-05-18 18:19:10 +00:00
jp CallFunctionInTable
ResetRivalScript:
xor a ; SCENE_CHAMPIONSROOM_DEFAULT
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
ChampionsRoom_ScriptPointers:
def_script_pointers
dw_const ChampionsRoomDefaultScript, SCRIPT_CHAMPIONSROOM_DEFAULT
dw_const ChampionsRoomPlayerEntersScript, SCRIPT_CHAMPIONSROOM_PLAYER_ENTERS
dw_const ChampionsRoomRivalReadyToBattleScript, SCRIPT_CHAMPIONSROOM_RIVAL_READY_TO_BATTLE
dw_const ChampionsRoomRivalDefeatedScript, SCRIPT_CHAMPIONSROOM_RIVAL_DEFEATED
dw_const ChampionsRoomOakArrivesScript, SCRIPT_CHAMPIONSROOM_OAK_ARRIVES
dw_const ChampionsRoomOakCongratulatesPlayerScript, SCRIPT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
dw_const ChampionsRoomOakDisappointedWithRivalScript, SCRIPT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL
dw_const ChampionsRoomOakComeWithMeScript, SCRIPT_CHAMPIONSROOM_OAK_COME_WITH_ME
dw_const ChampionsRoomOakExitsScript, SCRIPT_CHAMPIONSROOM_OAK_EXITS
dw_const ChampionsRoomPlayerFollowsOakScript, SCRIPT_CHAMPIONSROOM_PLAYER_FOLLOWS_OAK
dw_const ChampionsRoomCleanupScript, SCRIPT_CHAMPIONSROOM_CLEANUP_SCRIPT
2014-05-18 18:19:10 +00:00
ChampionsRoomDefaultScript:
2014-05-18 18:19:10 +00:00
ret
ChampionsRoomPlayerEntersScript:
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld hl, wSimulatedJoypadStatesEnd
ld de, RivalEntrance_RLEMovement
2014-05-18 18:19:10 +00:00
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, SCRIPT_CHAMPIONSROOM_RIVAL_READY_TO_BATTLE
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
RivalEntrance_RLEMovement:
db D_UP, 1
db D_RIGHT, 1
db D_UP, 3
db -1 ; end
2014-05-18 18:19:10 +00:00
ChampionsRoomRivalReadyToBattleScript:
ld a, [wSimulatedJoypadStatesIndex]
2014-05-18 18:19:10 +00:00
and a
ret nz
call Delay3
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2015-08-31 02:38:41 +00:00
ld hl, wOptions
res 7, [hl] ; Turn on battle animations to make the battle feel more epic.
ld a, TEXT_CHAMPIONSROOM_RIVAL
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
call Delay3
ld hl, wd72d
2014-05-18 18:19:10 +00:00
set 6, [hl]
set 7, [hl]
ld hl, RivalDefeatedText
ld de, RivalVictoryText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2020-07-17 17:27:27 +00:00
ld a, OPP_RIVAL3
2015-08-31 02:38:41 +00:00
ld [wCurOpponent], a
2014-05-18 18:19:10 +00:00
; select which team to use during the encounter
2015-08-31 02:38:41 +00:00
ld a, [wRivalStarter]
2014-05-21 12:48:30 +00:00
cp STARTER2
jr nz, .NotStarter2
2014-05-18 18:19:10 +00:00
ld a, $1
jr .saveTrainerId
.NotStarter2
2014-05-21 12:48:30 +00:00
cp STARTER3
jr nz, .NotStarter3
2014-05-18 18:19:10 +00:00
ld a, $2
jr .saveTrainerId
.NotStarter3
2014-05-18 18:19:10 +00:00
ld a, $3
.saveTrainerId
2015-08-31 02:38:41 +00:00
ld [wTrainerNo], a
2014-05-18 18:19:10 +00:00
xor a
ldh [hJoyHeld], a
ld a, SCRIPT_CHAMPIONSROOM_RIVAL_DEFEATED
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
ChampionsRoomRivalDefeatedScript:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, ResetRivalScript
call UpdateSprites
2015-07-21 17:36:03 +00:00
SetEvent EVENT_BEAT_CHAMPION_RIVAL
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, TEXT_CHAMPIONSROOM_RIVAL
ldh [hSpriteIndexOrTextID], a
2023-11-19 00:44:03 +00:00
call ChampionsRoom_DisplayTextID_AllowABSelectStart
ld a, CHAMPIONSROOM_RIVAL
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call SetSpriteMovementBytesToFF
ld a, SCRIPT_CHAMPIONSROOM_OAK_ARRIVES
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
ChampionsRoomOakArrivesScript:
farcall Music_Cities1AlternateTempo
ld a, TEXT_CHAMPIONSROOM_OAK
ldh [hSpriteIndexOrTextID], a
2023-11-19 00:44:03 +00:00
call ChampionsRoom_DisplayTextID_AllowABSelectStart
ld a, CHAMPIONSROOM_OAK
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call SetSpriteMovementBytesToFF
ld de, OakEntranceAfterVictoryMovement
ld a, CHAMPIONSROOM_OAK
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call MoveSprite
ld a, HS_CHAMPIONS_ROOM_OAK
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef ShowObject
ld a, SCRIPT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
OakEntranceAfterVictoryMovement:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1 ; end
2014-05-18 18:19:10 +00:00
ChampionsRoomOakCongratulatesPlayerScript:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_LEFT
ld [wPlayerMovingDirection], a
ld a, CHAMPIONSROOM_RIVAL
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_LEFT
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
ld a, CHAMPIONSROOM_OAK
ldh [hSpriteIndex], a
xor a ; SPRITE_FACING_DOWN
ldh [hSpriteFacingDirection], a
2015-07-18 15:17:29 +00:00
call SetSpriteFacingDirectionAndDelay
ld a, TEXT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
ldh [hSpriteIndexOrTextID], a
2023-11-19 00:44:03 +00:00
call ChampionsRoom_DisplayTextID_AllowABSelectStart
ld a, SCRIPT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
ChampionsRoomOakDisappointedWithRivalScript:
ld a, CHAMPIONSROOM_OAK
ldh [hSpriteIndex], a
ld a, SPRITE_FACING_RIGHT
ldh [hSpriteFacingDirection], a
2015-07-18 15:17:29 +00:00
call SetSpriteFacingDirectionAndDelay
ld a, TEXT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL
ldh [hSpriteIndexOrTextID], a
2023-11-19 00:44:03 +00:00
call ChampionsRoom_DisplayTextID_AllowABSelectStart
ld a, SCRIPT_CHAMPIONSROOM_OAK_COME_WITH_ME
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
ChampionsRoomOakComeWithMeScript:
ld a, CHAMPIONSROOM_OAK
ldh [hSpriteIndex], a
xor a ; SPRITE_FACING_DOWN
ldh [hSpriteFacingDirection], a
2015-07-18 15:17:29 +00:00
call SetSpriteFacingDirectionAndDelay
ld a, TEXT_CHAMPIONSROOM_OAK_COME_WITH_ME
ldh [hSpriteIndexOrTextID], a
2023-11-19 00:44:03 +00:00
call ChampionsRoom_DisplayTextID_AllowABSelectStart
ld de, OakExitChampionsRoomMovement
ld a, CHAMPIONSROOM_OAK
ldh [hSpriteIndex], a
2014-05-18 18:19:10 +00:00
call MoveSprite
ld a, SCRIPT_CHAMPIONSROOM_OAK_EXITS
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
OakExitChampionsRoomMovement:
db NPC_MOVEMENT_UP
db NPC_MOVEMENT_UP
db -1 ; end
2014-05-18 18:19:10 +00:00
ChampionsRoomOakExitsScript:
ld a, [wd730]
2014-05-18 18:19:10 +00:00
bit 0, a
ret nz
ld a, HS_CHAMPIONS_ROOM_OAK
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef HideObject
ld a, SCRIPT_CHAMPIONSROOM_PLAYER_FOLLOWS_OAK
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
ChampionsRoomPlayerFollowsOakScript:
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld hl, wSimulatedJoypadStatesEnd
ld de, WalkToHallOfFame_RLEMovement
2014-05-18 18:19:10 +00:00
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, SCRIPT_CHAMPIONSROOM_CLEANUP_SCRIPT
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
WalkToHallOfFame_RLEMovement:
db D_UP, 4
db D_LEFT, 1
db -1 ; end
2014-05-18 18:19:10 +00:00
ChampionsRoomCleanupScript:
ld a, [wSimulatedJoypadStatesIndex]
2014-05-18 18:19:10 +00:00
and a
ret nz
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld a, SCRIPT_CHAMPIONSROOM_DEFAULT
ld [wChampionsRoomCurScript], a
2014-05-18 18:19:10 +00:00
ret
2023-11-19 00:44:03 +00:00
ChampionsRoom_DisplayTextID_AllowABSelectStart:
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ret
ChampionsRoom_TextPointers:
def_text_pointers
dw_const ChampionsRoomRivalText, TEXT_CHAMPIONSROOM_RIVAL
dw_const ChampionsRoomOakText, TEXT_CHAMPIONSROOM_OAK
dw_const ChampionsRoomOakCongratulatesPlayerText, TEXT_CHAMPIONSROOM_OAK_CONGRATULATES_PLAYER
dw_const ChampionsRoomOakDisappointedWithRivalText, TEXT_CHAMPIONSROOM_OAK_DISAPPOINTED_WITH_RIVAL
dw_const ChampionsRoomOakComeWithMeText, TEXT_CHAMPIONSROOM_OAK_COME_WITH_ME
2014-05-18 18:19:10 +00:00
ChampionsRoomRivalText:
text_asm
2015-07-21 17:36:03 +00:00
CheckEvent EVENT_BEAT_CHAMPION_RIVAL
ld hl, .IntroText
jr z, .printText
ld hl, ChampionsRoomRivalAfterBattleText
.printText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.IntroText:
text_far _ChampionsRoomRivalIntroText
text_end
2014-05-18 18:19:10 +00:00
RivalDefeatedText:
text_far _RivalDefeatedText
text_end
2014-05-18 18:19:10 +00:00
RivalVictoryText:
text_far _RivalVictoryText
text_end
2014-05-18 18:19:10 +00:00
ChampionsRoomRivalAfterBattleText:
text_far _ChampionsRoomRivalAfterBattleText
text_end
2014-05-18 18:19:10 +00:00
ChampionsRoomOakText:
text_far _ChampionsRoomOakText
text_end
2014-05-18 18:19:10 +00:00
ChampionsRoomOakCongratulatesPlayerText:
text_asm
2015-08-31 02:38:41 +00:00
ld a, [wPlayerStarter]
ld [wd11e], a
2014-05-18 18:19:10 +00:00
call GetMonName
ld hl, .Text
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.Text:
text_far _ChampionsRoomOakCongratulatesPlayerText
text_end
2014-05-18 18:19:10 +00:00
ChampionsRoomOakDisappointedWithRivalText:
text_far _ChampionsRoomOakDisappointedWithRivalText
text_end
2014-05-18 18:19:10 +00:00
ChampionsRoomOakComeWithMeText:
text_far _ChampionsRoomOakComeWithMeText
text_end