pokered/scripts/ViridianGym.asm

441 lines
9.5 KiB
NASM
Raw Normal View History

ViridianGym_Script:
2020-07-18 18:01:13 +00:00
ld hl, .CityName
ld de, .LeaderName
2014-05-18 18:19:10 +00:00
call LoadGymLeaderAndCityName
call EnableAutoTextBoxDrawing
ld hl, ViridianGymTrainerHeaders
ld de, ViridianGym_ScriptPointers
2015-08-31 02:38:41 +00:00
ld a, [wViridianGymCurScript]
2014-05-18 18:19:10 +00:00
call ExecuteCurMapScriptInTable
2015-08-31 02:38:41 +00:00
ld [wViridianGymCurScript], a
2014-05-18 18:19:10 +00:00
ret
2020-07-18 18:01:13 +00:00
.CityName:
2014-05-18 18:19:10 +00:00
db "VIRIDIAN CITY@"
2020-07-18 18:01:13 +00:00
.LeaderName:
2014-05-18 18:19:10 +00:00
db "GIOVANNI@"
ViridianGymResetScripts:
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 [wViridianGymCurScript], a
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
ViridianGym_ScriptPointers:
2014-05-18 18:19:10 +00:00
dw ViridianGymScript0
2014-09-14 18:29:18 +00:00
dw DisplayEnemyTrainerTextAndStartBattle
2014-05-18 18:19:10 +00:00
dw EndTrainerBattle
dw ViridianGymGiovanniPostBattle
2014-05-18 18:19:10 +00:00
dw ViridianGymScript4
2016-06-12 00:24:04 +00:00
ViridianGymScript0:
2015-08-31 02:38:41 +00:00
ld a, [wYCoord]
2014-05-18 18:19:10 +00:00
ld b, a
2015-08-31 02:38:41 +00:00
ld a, [wXCoord]
2014-05-18 18:19:10 +00:00
ld c, a
ld hl, ViridianGymArrowTilePlayerMovement
2014-09-14 18:29:18 +00:00
call DecodeArrowMovementRLE
2014-05-18 18:19:10 +00:00
cp $ff
jp z, CheckFightingMapTrainers
call StartSimulatingJoypadStates
ld hl, wd736
2014-05-18 18:19:10 +00:00
set 7, [hl]
2015-07-19 08:46:12 +00:00
ld a, SFX_ARROW_TILES
2014-05-18 18:19:10 +00:00
call PlaySound
ld a, $ff
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2014-05-18 18:19:10 +00:00
ld a, $4
2015-08-31 02:38:41 +00:00
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
2016-06-12 00:24:04 +00:00
ViridianGymArrowTilePlayerMovement:
map_coord_movement 19, 11, ViridianGymArrowMovement1
map_coord_movement 19, 1, ViridianGymArrowMovement2
map_coord_movement 18, 2, ViridianGymArrowMovement3
map_coord_movement 11, 2, ViridianGymArrowMovement4
map_coord_movement 16, 10, ViridianGymArrowMovement5
map_coord_movement 4, 6, ViridianGymArrowMovement6
map_coord_movement 5, 13, ViridianGymArrowMovement7
map_coord_movement 4, 14, ViridianGymArrowMovement8
map_coord_movement 0, 15, ViridianGymArrowMovement9
map_coord_movement 1, 15, ViridianGymArrowMovement10
map_coord_movement 13, 16, ViridianGymArrowMovement11
map_coord_movement 13, 17, ViridianGymArrowMovement12
db -1 ; end
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement1:
db D_UP, 9
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement2:
db D_LEFT, 8
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement3:
db D_DOWN, 9
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement4:
db D_RIGHT, 6
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement5:
db D_DOWN, 2
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement6:
db D_DOWN, 7
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement7:
db D_RIGHT, 8
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement8:
db D_RIGHT, 9
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement9:
db D_UP, 8
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement10:
db D_UP, 6
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement11:
db D_LEFT, 6
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymArrowMovement12:
db D_LEFT, 12
db -1 ; end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymScript4:
ld a, [wSimulatedJoypadStatesIndex]
2014-05-18 18:19:10 +00:00
and a
jr nz, .ViridianGymLoadSpinnerArrow
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
ld hl, wd736
2014-05-18 18:19:10 +00:00
res 7, [hl]
ld a, $0
2015-08-31 02:38:41 +00:00
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
.ViridianGymLoadSpinnerArrow
farjp LoadSpinnerArrowTiles
2014-05-18 18:19:10 +00:00
ViridianGymGiovanniPostBattle:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, ViridianGymResetScripts
2014-05-18 18:19:10 +00:00
ld a, $f0
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
; fallthrough
ViridianGymReceiveTM27:
2014-05-18 18:19:10 +00:00
ld a, $c
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
2015-07-21 02:41:23 +00:00
SetEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
2020-07-06 02:52:27 +00:00
lb bc, TM_FISSURE, 1
2014-05-18 18:19:10 +00:00
call GiveItem
jr nc, .BagFull
ld a, $d
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
2015-07-21 02:41:23 +00:00
SetEvent EVENT_GOT_TM27
2019-10-07 05:23:57 +00:00
jr .gymVictory
2014-05-18 18:19:10 +00:00
.BagFull
ld a, $e
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
2019-10-07 05:23:57 +00:00
.gymVictory
2015-08-31 02:38:41 +00:00
ld hl, wObtainedBadges
set BIT_EARTHBADGE, [hl]
2015-07-26 02:26:54 +00:00
ld hl, wBeatGymFlags
set BIT_EARTHBADGE, [hl]
2014-05-18 18:19:10 +00:00
; deactivate gym trainers
2015-07-21 01:32:02 +00:00
SetEventRange EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0, EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7
2014-05-18 18:19:10 +00:00
ld a, HS_ROUTE_22_RIVAL_2
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef ShowObject
SetEvents EVENT_2ND_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
jp ViridianGymResetScripts
2014-05-18 18:19:10 +00:00
ViridianGym_TextPointers:
dw GiovanniText
dw ViridianGymTrainerText1
dw ViridianGymTrainerText2
dw ViridianGymTrainerText3
dw ViridianGymTrainerText4
dw ViridianGymTrainerText5
dw ViridianGymTrainerText6
dw ViridianGymTrainerText7
dw ViridianGymTrainerText8
dw ViridianGymGuideText
2015-07-18 15:17:29 +00:00
dw PickUpItemText
dw GiovanniEarthBadgeInfoText
dw ReceivedTM27Text
dw TM27NoRoomText
2014-05-18 18:19:10 +00:00
ViridianGymTrainerHeaders:
def_trainers 2
2016-06-12 00:24:04 +00:00
ViridianGymTrainerHeader0:
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0, 4, ViridianGymBattleText1, ViridianGymEndBattleText1, ViridianGymAfterBattleText1
2016-06-12 00:24:04 +00:00
ViridianGymTrainerHeader1:
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1, 4, ViridianGymBattleText2, ViridianGymEndBattleText2, ViridianGymAfterBattleText2
2016-06-12 00:24:04 +00:00
ViridianGymTrainerHeader2:
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2, 4, ViridianGymBattleText3, ViridianGymEndBattleText3, ViridianGymAfterBattleText3
2016-06-12 00:24:04 +00:00
ViridianGymTrainerHeader3:
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3, 2, ViridianGymBattleText4, ViridianGymEndBattleText4, ViridianGymAfterBattleText4
2016-06-12 00:24:04 +00:00
ViridianGymTrainerHeader4:
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4, 3, ViridianGymBattleText5, ViridianGymEndBattleText5, ViridianGymAfterBattleText5
2016-06-12 00:24:04 +00:00
ViridianGymTrainerHeader5:
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5, 4, ViridianGymBattleText6, ViridianGymEndBattleText6, ViridianGymAfterBattleText6
2016-06-12 00:24:04 +00:00
ViridianGymTrainerHeader6:
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6, 3, ViridianGymBattleText7, ViridianGymEndBattleText7, ViridianGymAfterBattleText7
2016-06-12 00:24:04 +00:00
ViridianGymTrainerHeader7:
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7, 4, ViridianGymBattleText8, ViridianGymEndBattleText8, ViridianGymAfterBattleText8
db -1 ; end
2014-05-18 18:19:10 +00:00
GiovanniText:
text_asm
2015-07-21 02:41:23 +00:00
CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
jr z, .beforeBeat
2015-07-21 02:41:23 +00:00
CheckEventReuseA EVENT_GOT_TM27
jr nz, .afterBeat
call z, ViridianGymReceiveTM27
2014-05-18 18:19:10 +00:00
call DisableWaitingAfterTextDisplay
2019-10-07 05:23:57 +00:00
jr .done
.afterBeat
2014-05-18 18:19:10 +00:00
ld a, $1
2014-09-13 07:50:56 +00:00
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, GiovanniPostBattleAdviceText
2014-05-18 18:19:10 +00:00
call PrintText
2014-09-13 07:50:56 +00:00
call GBFadeOutToBlack
ld a, HS_VIRIDIAN_GYM_GIOVANNI
2015-07-25 03:27:59 +00:00
ld [wMissableObjectIndex], a
predef HideObject
2014-05-18 18:19:10 +00:00
call UpdateSprites
call Delay3
2014-09-13 07:50:56 +00:00
call GBFadeInFromBlack
2019-10-07 05:23:57 +00:00
jr .done
.beforeBeat
ld hl, GiovanniPreBattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, wd72d
2014-05-18 18:19:10 +00:00
set 6, [hl]
set 7, [hl]
ld hl, ReceivedEarthBadgeText
ld de, ReceivedEarthBadgeText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
ldh a, [hSpriteIndex]
2014-09-13 07:50:56 +00:00
ld [wSpriteIndex], a
2014-05-18 18:19:10 +00:00
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $8
2015-08-31 02:38:41 +00:00
ld [wGymLeaderNo], a
2014-05-18 18:19:10 +00:00
ld a, $3
2015-08-31 02:38:41 +00:00
ld [wViridianGymCurScript], a
2019-10-07 05:23:57 +00:00
.done
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
GiovanniPreBattleText:
text_far _GiovanniPreBattleText
text_end
2014-05-18 18:19:10 +00:00
ReceivedEarthBadgeText:
text_far _ReceivedEarthBadgeText
sound_level_up ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
text_end
2014-05-18 18:19:10 +00:00
GiovanniPostBattleAdviceText:
text_far _GiovanniPostBattleAdviceText
text_waitbutton
text_end
2014-05-18 18:19:10 +00:00
GiovanniEarthBadgeInfoText:
text_far _GiovanniEarthBadgeInfoText
text_end
2014-05-18 18:19:10 +00:00
ReceivedTM27Text:
text_far _ReceivedTM27Text
sound_get_item_1
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
TM27ExplanationText:
text_far _TM27ExplanationText
text_end
2014-05-18 18:19:10 +00:00
TM27NoRoomText:
text_far _TM27NoRoomText
text_end
2014-05-18 18:19:10 +00:00
ViridianGymTrainerText1:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, ViridianGymTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
ViridianGymBattleText1:
text_far _ViridianGymBattleText1
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymEndBattleText1:
text_far _ViridianGymEndBattleText1
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymAfterBattleText1:
text_far _ViridianGymAfterBattleText1
text_end
2014-05-18 18:19:10 +00:00
ViridianGymTrainerText2:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, ViridianGymTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
ViridianGymBattleText2:
text_far _ViridianGymBattleText2
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymEndBattleText2:
text_far _ViridianGymEndBattleText2
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymAfterBattleText2:
text_far _ViridianGymAfterBattleText2
text_end
2014-05-18 18:19:10 +00:00
ViridianGymTrainerText3:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, ViridianGymTrainerHeader2
call TalkToTrainer
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
ViridianGymBattleText3:
text_far _ViridianGymBattleText3
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymEndBattleText3:
text_far _ViridianGymEndBattleText3
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymAfterBattleText3:
text_far _ViridianGymAfterBattleText3
text_end
2014-05-18 18:19:10 +00:00
ViridianGymTrainerText4:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, ViridianGymTrainerHeader3
call TalkToTrainer
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
ViridianGymBattleText4:
text_far _ViridianGymBattleText4
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymEndBattleText4:
text_far _ViridianGymEndBattleText4
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymAfterBattleText4:
text_far _ViridianGymAfterBattleText4
text_end
2014-05-18 18:19:10 +00:00
ViridianGymTrainerText5:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, ViridianGymTrainerHeader4
call TalkToTrainer
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
ViridianGymBattleText5:
text_far _ViridianGymBattleText5
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymEndBattleText5:
text_far _ViridianGymEndBattleText5
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymAfterBattleText5:
text_far _ViridianGymAfterBattleText5
text_end
2014-05-18 18:19:10 +00:00
ViridianGymTrainerText6:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, ViridianGymTrainerHeader5
call TalkToTrainer
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
ViridianGymBattleText6:
text_far _ViridianGymBattleText6
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymEndBattleText6:
text_far _ViridianGymEndBattleText6
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymAfterBattleText6:
text_far _ViridianGymAfterBattleText6
text_end
2014-05-18 18:19:10 +00:00
ViridianGymTrainerText7:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, ViridianGymTrainerHeader6
call TalkToTrainer
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
ViridianGymBattleText7:
text_far _ViridianGymBattleText7
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymEndBattleText7:
text_far _ViridianGymEndBattleText7
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymAfterBattleText7:
text_far _ViridianGymAfterBattleText7
text_end
2014-05-18 18:19:10 +00:00
ViridianGymTrainerText8:
text_asm
2014-05-18 18:19:10 +00:00
ld hl, ViridianGymTrainerHeader7
call TalkToTrainer
jp TextScriptEnd
2016-06-12 00:24:04 +00:00
ViridianGymBattleText8:
text_far _ViridianGymBattleText8
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymEndBattleText8:
text_far _ViridianGymEndBattleText8
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ViridianGymAfterBattleText8:
text_far _ViridianGymAfterBattleText8
text_end
2014-05-18 18:19:10 +00:00
ViridianGymGuideText:
text_asm
2015-07-21 02:41:23 +00:00
CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
jr nz, .afterBeat
ld hl, ViridianGymGuidePreBattleText
2014-05-18 18:19:10 +00:00
call PrintText
jr .done
.afterBeat
ld hl, ViridianGymGuidePostBattleText
2014-05-18 18:19:10 +00:00
call PrintText
.done
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
ViridianGymGuidePreBattleText:
text_far _ViridianGymGuidePreBattleText
text_end
2014-05-18 18:19:10 +00:00
ViridianGymGuidePostBattleText:
text_far _ViridianGymGuidePostBattleText
text_end