mirror of
https://github.com/pret/pokered.git
synced 2024-10-22 22:55:31 +00:00
d001ced41b
This introduces `def_script_pointers`, `def_text_pointers`, and `object_const_def` macros, and applies them to all maps. Most other map labels have also been identified.
442 lines
12 KiB
NASM
442 lines
12 KiB
NASM
ViridianGym_Script:
|
|
ld hl, .CityName
|
|
ld de, .LeaderName
|
|
call LoadGymLeaderAndCityName
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, ViridianGymTrainerHeaders
|
|
ld de, ViridianGym_ScriptPointers
|
|
ld a, [wViridianGymCurScript]
|
|
call ExecuteCurMapScriptInTable
|
|
ld [wViridianGymCurScript], a
|
|
ret
|
|
|
|
.CityName:
|
|
db "VIRIDIAN CITY@"
|
|
|
|
.LeaderName:
|
|
db "GIOVANNI@"
|
|
|
|
ViridianGymResetScripts:
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wViridianGymCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
ViridianGym_ScriptPointers:
|
|
def_script_pointers
|
|
dw_const ViridianGymDefaultScript, SCRIPT_VIRIDIANGYM_DEFAULT
|
|
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_VIRIDIANGYM_START_BATTLE
|
|
dw_const EndTrainerBattle, SCRIPT_VIRIDIANGYM_END_BATTLE
|
|
dw_const ViridianGymGiovanniPostBattle, SCRIPT_VIRIDIANGYM_GIOVANNI_POST_BATTLE
|
|
dw_const ViridianGymPlayerSpinningScript, SCRIPT_VIRIDIANGYM_PLAYER_SPINNING
|
|
|
|
ViridianGymDefaultScript:
|
|
ld a, [wYCoord]
|
|
ld b, a
|
|
ld a, [wXCoord]
|
|
ld c, a
|
|
ld hl, ViridianGymArrowTilePlayerMovement
|
|
call DecodeArrowMovementRLE
|
|
cp $ff
|
|
jp z, CheckFightingMapTrainers
|
|
call StartSimulatingJoypadStates
|
|
ld hl, wd736
|
|
set 7, [hl]
|
|
ld a, SFX_ARROW_TILES
|
|
call PlaySound
|
|
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
|
|
ld [wJoyIgnore], a
|
|
ld a, SCRIPT_VIRIDIANGYM_PLAYER_SPINNING
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
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
|
|
|
|
ViridianGymArrowMovement1:
|
|
db D_UP, 9
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement2:
|
|
db D_LEFT, 8
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement3:
|
|
db D_DOWN, 9
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement4:
|
|
db D_RIGHT, 6
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement5:
|
|
db D_DOWN, 2
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement6:
|
|
db D_DOWN, 7
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement7:
|
|
db D_RIGHT, 8
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement8:
|
|
db D_RIGHT, 9
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement9:
|
|
db D_UP, 8
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement10:
|
|
db D_UP, 6
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement11:
|
|
db D_LEFT, 6
|
|
db -1 ; end
|
|
|
|
ViridianGymArrowMovement12:
|
|
db D_LEFT, 12
|
|
db -1 ; end
|
|
|
|
ViridianGymPlayerSpinningScript:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
jr nz, .ViridianGymLoadSpinnerArrow
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld hl, wd736
|
|
res 7, [hl]
|
|
ld a, SCRIPT_VIRIDIANGYM_DEFAULT
|
|
ld [wCurMapScript], a
|
|
ret
|
|
.ViridianGymLoadSpinnerArrow
|
|
farjp LoadSpinnerArrowTiles
|
|
|
|
ViridianGymGiovanniPostBattle:
|
|
ld a, [wIsInBattle]
|
|
cp $ff
|
|
jp z, ViridianGymResetScripts
|
|
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
|
|
ld [wJoyIgnore], a
|
|
; fallthrough
|
|
ViridianGymReceiveTM27:
|
|
ld a, TEXT_VIRIDIANGYM_GIOVANNI_EARTH_BADGE_INFO
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
|
|
lb bc, TM_FISSURE, 1
|
|
call GiveItem
|
|
jr nc, .bag_full
|
|
ld a, TEXT_VIRIDIANGYM_GIOVANNI_RECEIVED_TM27
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
SetEvent EVENT_GOT_TM27
|
|
jr .gym_victory
|
|
.bag_full
|
|
ld a, TEXT_VIRIDIANGYM_GIOVANNI_TM27_NO_ROOM
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
.gym_victory
|
|
ld hl, wObtainedBadges
|
|
set BIT_EARTHBADGE, [hl]
|
|
ld hl, wBeatGymFlags
|
|
set BIT_EARTHBADGE, [hl]
|
|
|
|
; deactivate gym trainers
|
|
SetEventRange EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0, EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7
|
|
|
|
ld a, HS_ROUTE_22_RIVAL_2
|
|
ld [wMissableObjectIndex], a
|
|
predef ShowObject
|
|
SetEvents EVENT_2ND_ROUTE22_RIVAL_BATTLE, EVENT_ROUTE22_RIVAL_WANTS_BATTLE
|
|
jp ViridianGymResetScripts
|
|
|
|
ViridianGym_TextPointers:
|
|
def_text_pointers
|
|
dw_const ViridianGymGiovanniText, TEXT_VIRIDIANGYM_GIOVANNI
|
|
dw_const ViridianGymCooltrainerM1Text, TEXT_VIRIDIANGYM_COOLTRAINER_M1
|
|
dw_const ViridianGymHiker1Text, TEXT_VIRIDIANGYM_HIKER1
|
|
dw_const ViridianGymRocker1Text, TEXT_VIRIDIANGYM_ROCKER1
|
|
dw_const ViridianGymHiker2Text, TEXT_VIRIDIANGYM_HIKER2
|
|
dw_const ViridianGymCooltrainerM2Text, TEXT_VIRIDIANGYM_COOLTRAINER_M2
|
|
dw_const ViridianGymHiker3Text, TEXT_VIRIDIANGYM_HIKER3
|
|
dw_const ViridianGymRocker2Text, TEXT_VIRIDIANGYM_ROCKER2
|
|
dw_const ViridianGymCooltrainerM3Text, TEXT_VIRIDIANGYM_COOLTRAINER_M3
|
|
dw_const ViridianGymGymGuideText, TEXT_VIRIDIANGYM_GYM_GUIDE
|
|
dw_const PickUpItemText, TEXT_VIRIDIANGYM_REVIVE
|
|
dw_const ViridianGymGiovanniEarthBadgeInfoText, TEXT_VIRIDIANGYM_GIOVANNI_EARTH_BADGE_INFO
|
|
dw_const ViridianGymGiovanniReceivedTM27Text, TEXT_VIRIDIANGYM_GIOVANNI_RECEIVED_TM27
|
|
dw_const ViridianGymGiovanniTM27NoRoomText, TEXT_VIRIDIANGYM_GIOVANNI_TM27_NO_ROOM
|
|
|
|
ViridianGymTrainerHeaders:
|
|
def_trainers 2
|
|
ViridianGymTrainerHeader0:
|
|
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0, 4, ViridianGymCooltrainerM1BattleText, ViridianGymCooltrainerM1EndBattleText, ViridianGymCooltrainerM1AfterBattleText
|
|
ViridianGymTrainerHeader1:
|
|
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1, 4, ViridianGymHiker1BattleText, ViridianGymHiker1EndBattleText, ViridianGymHiker1AfterBattleText
|
|
ViridianGymTrainerHeader2:
|
|
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2, 4, ViridianGymRocker1BattleText, ViridianGymRocker1EndBattleText, ViridianGymRocker1AfterBattleText
|
|
ViridianGymTrainerHeader3:
|
|
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3, 2, ViridianGymHiker2BattleText, ViridianGymHiker2EndBattleText, ViridianGymHiker2AfterBattleText
|
|
ViridianGymTrainerHeader4:
|
|
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4, 3, ViridianGymCooltrainerM2BattleText, ViridianGymCooltrainerM2EndBattleText, ViridianGymCooltrainerM2AfterBattleText
|
|
ViridianGymTrainerHeader5:
|
|
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5, 4, ViridianGymHiker3BattleText, ViridianGymHiker3EndBattleText, ViridianGymHiker3AfterBattleText
|
|
ViridianGymTrainerHeader6:
|
|
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6, 3, ViridianGymRocker2BattleText, ViridianGymRocker2EndBattleText, ViridianGymRocker2AfterBattleText
|
|
ViridianGymTrainerHeader7:
|
|
trainer EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7, 4, ViridianGymCooltrainerM3BattleText, ViridianGymCooltrainerM3EndBattleText, ViridianGymCooltrainerM3AfterBattleText
|
|
db -1 ; end
|
|
|
|
ViridianGymGiovanniText:
|
|
text_asm
|
|
CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
|
|
jr z, .beforeBeat
|
|
CheckEventReuseA EVENT_GOT_TM27
|
|
jr nz, .afterBeat
|
|
call z, ViridianGymReceiveTM27
|
|
call DisableWaitingAfterTextDisplay
|
|
jr .text_script_end
|
|
.afterBeat
|
|
ld a, $1
|
|
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
|
|
ld hl, .PostBattleAdviceText
|
|
call PrintText
|
|
call GBFadeOutToBlack
|
|
ld a, HS_VIRIDIAN_GYM_GIOVANNI
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
call UpdateSprites
|
|
call Delay3
|
|
call GBFadeInFromBlack
|
|
jr .text_script_end
|
|
.beforeBeat
|
|
ld hl, .PreBattleText
|
|
call PrintText
|
|
ld hl, wd72d
|
|
set 6, [hl]
|
|
set 7, [hl]
|
|
ld hl, .ReceivedEarthBadgeText
|
|
ld de, .ReceivedEarthBadgeText
|
|
call SaveEndBattleTextPointers
|
|
ldh a, [hSpriteIndex]
|
|
ld [wSpriteIndex], a
|
|
call EngageMapTrainer
|
|
call InitBattleEnemyParameters
|
|
ld a, $8
|
|
ld [wGymLeaderNo], a
|
|
ld a, SCRIPT_VIRIDIANGYM_GIOVANNI_POST_BATTLE
|
|
ld [wViridianGymCurScript], a
|
|
.text_script_end
|
|
jp TextScriptEnd
|
|
|
|
.PreBattleText:
|
|
text_far _ViridianGymGiovanniPreBattleText
|
|
text_end
|
|
|
|
.ReceivedEarthBadgeText:
|
|
text_far _ViridianGymGiovanniReceivedEarthBadgeText
|
|
sound_level_up ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
|
|
text_end
|
|
|
|
.PostBattleAdviceText:
|
|
text_far _ViridianGymGiovanniPostBattleAdviceText
|
|
text_waitbutton
|
|
text_end
|
|
|
|
ViridianGymGiovanniEarthBadgeInfoText:
|
|
text_far _ViridianGymGiovanniEarthBadgeInfoText
|
|
text_end
|
|
|
|
ViridianGymGiovanniReceivedTM27Text:
|
|
text_far _ViridianGymGiovanniReceivedTM27Text
|
|
sound_get_item_1
|
|
|
|
ViridianGymGiovanniTM27ExplanationText:
|
|
text_far _ViridianGymGiovanniTM27ExplanationText
|
|
text_end
|
|
|
|
ViridianGymGiovanniTM27NoRoomText:
|
|
text_far _ViridianGymGiovanniTM27NoRoomText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM1Text:
|
|
text_asm
|
|
ld hl, ViridianGymTrainerHeader0
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymCooltrainerM1BattleText:
|
|
text_far _ViridianGymCooltrainerM1BattleText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM1EndBattleText:
|
|
text_far _ViridianGymCooltrainerM1EndBattleText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM1AfterBattleText:
|
|
text_far _ViridianGymCooltrainerM1AfterBattleText
|
|
text_end
|
|
|
|
ViridianGymHiker1Text:
|
|
text_asm
|
|
ld hl, ViridianGymTrainerHeader1
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymHiker1BattleText:
|
|
text_far _ViridianGymHiker1BattleText
|
|
text_end
|
|
|
|
ViridianGymHiker1EndBattleText:
|
|
text_far _ViridianGymHiker1EndBattleText
|
|
text_end
|
|
|
|
ViridianGymHiker1AfterBattleText:
|
|
text_far _ViridianGymHiker1AfterBattleText
|
|
text_end
|
|
|
|
ViridianGymRocker1Text:
|
|
text_asm
|
|
ld hl, ViridianGymTrainerHeader2
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymRocker1BattleText:
|
|
text_far _ViridianGymRocker1BattleText
|
|
text_end
|
|
|
|
ViridianGymRocker1EndBattleText:
|
|
text_far _ViridianGymRocker1EndBattleText
|
|
text_end
|
|
|
|
ViridianGymRocker1AfterBattleText:
|
|
text_far _ViridianGymRocker1AfterBattleText
|
|
text_end
|
|
|
|
ViridianGymHiker2Text:
|
|
text_asm
|
|
ld hl, ViridianGymTrainerHeader3
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymHiker2BattleText:
|
|
text_far _ViridianGymHiker2BattleText
|
|
text_end
|
|
|
|
ViridianGymHiker2EndBattleText:
|
|
text_far _ViridianGymHiker2EndBattleText
|
|
text_end
|
|
|
|
ViridianGymHiker2AfterBattleText:
|
|
text_far _ViridianGymHiker2AfterBattleText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM2Text:
|
|
text_asm
|
|
ld hl, ViridianGymTrainerHeader4
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymCooltrainerM2BattleText:
|
|
text_far _ViridianGymCooltrainerM2BattleText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM2EndBattleText:
|
|
text_far _ViridianGymCooltrainerM2EndBattleText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM2AfterBattleText:
|
|
text_far _ViridianGymCooltrainerM2AfterBattleText
|
|
text_end
|
|
|
|
ViridianGymHiker3Text:
|
|
text_asm
|
|
ld hl, ViridianGymTrainerHeader5
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymHiker3BattleText:
|
|
text_far _ViridianGymHiker3BattleText
|
|
text_end
|
|
|
|
ViridianGymHiker3EndBattleText:
|
|
text_far _ViridianGymHiker3EndBattleText
|
|
text_end
|
|
|
|
ViridianGymHiker3AfterBattleText:
|
|
text_far _ViridianGymHiker3AfterBattleText
|
|
text_end
|
|
|
|
ViridianGymRocker2Text:
|
|
text_asm
|
|
ld hl, ViridianGymTrainerHeader6
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymRocker2BattleText:
|
|
text_far _ViridianGymRocker2BattleText
|
|
text_end
|
|
|
|
ViridianGymRocker2EndBattleText:
|
|
text_far _ViridianGymRocker2EndBattleText
|
|
text_end
|
|
|
|
ViridianGymRocker2AfterBattleText:
|
|
text_far _ViridianGymRocker2AfterBattleText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM3Text:
|
|
text_asm
|
|
ld hl, ViridianGymTrainerHeader7
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymCooltrainerM3BattleText:
|
|
text_far _ViridianGymCooltrainerM3BattleText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM3EndBattleText:
|
|
text_far _ViridianGymCooltrainerM3EndBattleText
|
|
text_end
|
|
|
|
ViridianGymCooltrainerM3AfterBattleText:
|
|
text_far _ViridianGymCooltrainerM3AfterBattleText
|
|
text_end
|
|
|
|
ViridianGymGymGuideText:
|
|
text_asm
|
|
CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
|
|
jr nz, .afterBeat
|
|
ld hl, ViridianGymGuidePreBattleText
|
|
call PrintText
|
|
jr .done
|
|
.afterBeat
|
|
ld hl, ViridianGymGuidePostBattleText
|
|
call PrintText
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
ViridianGymGuidePreBattleText:
|
|
text_far _ViridianGymGuidePreBattleText
|
|
text_end
|
|
|
|
ViridianGymGuidePostBattleText:
|
|
text_far _ViridianGymGuidePostBattleText
|
|
text_end
|