pokered/scripts/viridiangym.asm
dannye 70dde9d96b Clean up redundant labels
fix trainer header numbering
2016-07-20 00:40:04 -05:00

496 lines
10 KiB
NASM
Executable file

ViridianGymScript:
ld hl, Gym8CityName
ld de, Gym8LeaderName
call LoadGymLeaderAndCityName
call EnableAutoTextBoxDrawing
ld hl, ViridianGymTrainerHeader0
ld de, ViridianGymScriptPointers
ld a, [wViridianGymCurScript]
call ExecuteCurMapScriptInTable
ld [wViridianGymCurScript], a
ret
Gym8CityName:
db "VIRIDIAN CITY@"
Gym8LeaderName:
db "GIOVANNI@"
ViridianGymScript_748d6:
xor a
ld [wJoyIgnore], a
ld [wViridianGymCurScript], a
ld [wCurMapScript], a
ret
ViridianGymScriptPointers:
dw ViridianGymScript0
dw DisplayEnemyTrainerTextAndStartBattle
dw EndTrainerBattle
dw ViridianGymScript3
dw ViridianGymScript4
ViridianGymScript0:
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, $ff
ld [wJoyIgnore], a
ld a, $4
ld [wCurMapScript], a
ret
;format:
;db y,x
;dw pointer to movement
ViridianGymArrowTilePlayerMovement:
db $b,$13
dw ViridianGymArrowMovement1
db $1,$13
dw ViridianGymArrowMovement2
db $2,$12
dw ViridianGymArrowMovement3
db $2,$b
dw ViridianGymArrowMovement4
db $a,$10
dw ViridianGymArrowMovement5
db $6,$4
dw ViridianGymArrowMovement6
db $d,$5
dw ViridianGymArrowMovement7
db $e,$4
dw ViridianGymArrowMovement8
db $f,$0
dw ViridianGymArrowMovement9
db $f,$1
dw ViridianGymArrowMovement10
db $10,$d
dw ViridianGymArrowMovement11
db $11,$d
dw ViridianGymArrowMovement12
db $FF
;format: direction, count
ViridianGymArrowMovement1:
db D_UP,$09,$FF
ViridianGymArrowMovement2:
db D_LEFT,$08,$FF
ViridianGymArrowMovement3:
db D_DOWN,$09,$FF
ViridianGymArrowMovement4:
db D_RIGHT,$06,$FF
ViridianGymArrowMovement5:
db D_DOWN,$02,$FF
ViridianGymArrowMovement6:
db D_DOWN,$07,$FF
ViridianGymArrowMovement7:
db D_RIGHT,$08,$FF
ViridianGymArrowMovement8:
db D_RIGHT,$09,$FF
ViridianGymArrowMovement9:
db D_UP,$08,$FF
ViridianGymArrowMovement10:
db D_UP,$06,$FF
ViridianGymArrowMovement11:
db D_LEFT,$06,$FF
ViridianGymArrowMovement12:
db D_LEFT,$0C,$FF
ViridianGymScript4:
ld a, [wSimulatedJoypadStatesIndex]
and a
jr nz, .asm_74980
xor a
ld [wJoyIgnore], a
ld hl, wd736
res 7, [hl]
ld a, $0
ld [wCurMapScript], a
ret
.asm_74980
jpba LoadSpinnerArrowTiles
ViridianGymScript3:
ld a, [wIsInBattle]
cp $ff
jp z, ViridianGymScript_748d6
ld a, $f0
ld [wJoyIgnore], a
ViridianGymScript3_74995:
ld a, $c
ld [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
lb bc, TM_27, 1
call GiveItem
jr nc, .BagFull
ld a, $d
ld [hSpriteIndexOrTextID], a
call DisplayTextID
SetEvent EVENT_GOT_TM27
jr .asm_749be
.BagFull
ld a, $e
ld [hSpriteIndexOrTextID], a
call DisplayTextID
.asm_749be
ld hl, wObtainedBadges
set 7, [hl]
ld hl, wBeatGymFlags
set 7, [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 ViridianGymScript_748d6
ViridianGymTextPointers:
dw ViridianGymText1
dw ViridianGymText2
dw ViridianGymText3
dw ViridianGymText4
dw ViridianGymText5
dw ViridianGymText6
dw ViridianGymText7
dw ViridianGymText8
dw ViridianGymText9
dw ViridianGymText10
dw PickUpItemText
dw ViridianGymText12
dw ViridianGymText13
dw ViridianGymText14
ViridianGymTrainerHeader0:
dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0
db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_0
dw ViridianGymBattleText1 ; TextBeforeBattle
dw ViridianGymAfterBattleText1 ; TextAfterBattle
dw ViridianGymEndBattleText1 ; TextEndBattle
dw ViridianGymEndBattleText1 ; TextEndBattle
ViridianGymTrainerHeader1:
dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1
db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_1
dw ViridianGymBattleText2 ; TextBeforeBattle
dw ViridianGymAfterBattleText2 ; TextAfterBattle
dw ViridianGymEndBattleText2 ; TextEndBattle
dw ViridianGymEndBattleText2 ; TextEndBattle
ViridianGymTrainerHeader2:
dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2
db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_2
dw ViridianGymBattleText3 ; TextBeforeBattle
dw ViridianGymAfterBattleText3 ; TextAfterBattle
dw ViridianGymEndBattleText3 ; TextEndBattle
dw ViridianGymEndBattleText3 ; TextEndBattle
ViridianGymTrainerHeader3:
dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3
db ($2 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_3
dw ViridianGymBattleText4 ; TextBeforeBattle
dw ViridianGymAfterBattleText4 ; TextAfterBattle
dw ViridianGymEndBattleText4 ; TextEndBattle
dw ViridianGymEndBattleText4 ; TextEndBattle
ViridianGymTrainerHeader4:
dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4
db ($3 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_4
dw ViridianGymBattleText5 ; TextBeforeBattle
dw ViridianGymAfterBattleText5 ; TextAfterBattle
dw ViridianGymEndBattleText5 ; TextEndBattle
dw ViridianGymEndBattleText5 ; TextEndBattle
ViridianGymTrainerHeader5:
dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5
db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_5
dw ViridianGymBattleText6 ; TextBeforeBattle
dw ViridianGymAfterBattleText6 ; TextAfterBattle
dw ViridianGymEndBattleText6 ; TextEndBattle
dw ViridianGymEndBattleText6 ; TextEndBattle
ViridianGymTrainerHeader6:
dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6, 1
db ($3 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_6, 1
dw ViridianGymBattleText7 ; TextBeforeBattle
dw ViridianGymAfterBattleText7 ; TextAfterBattle
dw ViridianGymEndBattleText7 ; TextEndBattle
dw ViridianGymEndBattleText7 ; TextEndBattle
ViridianGymTrainerHeader7:
dbEventFlagBit EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7, 1
db ($4 << 4) ; trainer's view range
dwEventFlagAddress EVENT_BEAT_VIRIDIAN_GYM_TRAINER_7, 1
dw ViridianGymBattleText8 ; TextBeforeBattle
dw ViridianGymAfterBattleText8 ; TextAfterBattle
dw ViridianGymEndBattleText8 ; TextEndBattle
dw ViridianGymEndBattleText8 ; TextEndBattle
db $ff
ViridianGymText1:
TX_ASM
CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
jr z, .asm_6de66
CheckEventReuseA EVENT_GOT_TM27
jr nz, .asm_9fc95
call z, ViridianGymScript3_74995
call DisableWaitingAfterTextDisplay
jr .asm_6dff7
.asm_9fc95
ld a, $1
ld [wDoNotWaitForButtonPressAfterDisplayingText], a
ld hl, ViridianGymText_74ad9
call PrintText
call GBFadeOutToBlack
ld a, HS_VIRIDIAN_GYM_GIOVANNI
ld [wMissableObjectIndex], a
predef HideObject
call UpdateSprites
call Delay3
call GBFadeInFromBlack
jr .asm_6dff7
.asm_6de66
ld hl, ViridianGymText_74ace
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
ld hl, ViridianGymText_74ad3
ld de, ViridianGymText_74ad3
call SaveEndBattleTextPointers
ld a, [H_SPRITEINDEX]
ld [wSpriteIndex], a
call EngageMapTrainer
call InitBattleEnemyParameters
ld a, $8
ld [wGymLeaderNo], a
ld a, $3
ld [wViridianGymCurScript], a
.asm_6dff7
jp TextScriptEnd
ViridianGymText_74ace:
TX_FAR _ViridianGymText_74ace
db "@"
ViridianGymText_74ad3:
TX_FAR _ViridianGymText_74ad3
TX_SFX_LEVEL_UP ; probably supposed to play SFX_GET_ITEM_1 but the wrong music bank is loaded
db "@"
ViridianGymText_74ad9:
TX_FAR _ViridianGymText_74ad9
TX_WAIT
db "@"
ViridianGymText12:
TX_FAR _ViridianGymText12
db "@"
ViridianGymText13:
TX_FAR _ReceivedTM27Text
TX_SFX_ITEM_1
TM27ExplanationText:
TX_FAR _TM27ExplanationText
db "@"
ViridianGymText14:
TX_FAR _TM27NoRoomText
db "@"
ViridianGymText2:
TX_ASM
ld hl, ViridianGymTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
ViridianGymBattleText1:
TX_FAR _ViridianGymBattleText1
db "@"
ViridianGymEndBattleText1:
TX_FAR _ViridianGymEndBattleText1
db "@"
ViridianGymAfterBattleText1:
TX_FAR _ViridianGymAfterBattleText1
db "@"
ViridianGymText3:
TX_ASM
ld hl, ViridianGymTrainerHeader1
call TalkToTrainer
jp TextScriptEnd
ViridianGymBattleText2:
TX_FAR _ViridianGymBattleText2
db "@"
ViridianGymEndBattleText2:
TX_FAR _ViridianGymEndBattleText2
db "@"
ViridianGymAfterBattleText2:
TX_FAR _ViridianGymAfterBattleText2
db "@"
ViridianGymText4:
TX_ASM
ld hl, ViridianGymTrainerHeader2
call TalkToTrainer
jp TextScriptEnd
ViridianGymBattleText3:
TX_FAR _ViridianGymBattleText3
db "@"
ViridianGymEndBattleText3:
TX_FAR _ViridianGymEndBattleText3
db "@"
ViridianGymAfterBattleText3:
TX_FAR _ViridianGymAfterBattleText3
db "@"
ViridianGymText5:
TX_ASM
ld hl, ViridianGymTrainerHeader3
call TalkToTrainer
jp TextScriptEnd
ViridianGymBattleText4:
TX_FAR _ViridianGymBattleText4
db "@"
ViridianGymEndBattleText4:
TX_FAR _ViridianGymEndBattleText4
db "@"
ViridianGymAfterBattleText4:
TX_FAR _ViridianGymAfterBattleText4
db "@"
ViridianGymText6:
TX_ASM
ld hl, ViridianGymTrainerHeader4
call TalkToTrainer
jp TextScriptEnd
ViridianGymBattleText5:
TX_FAR _ViridianGymBattleText5
db "@"
ViridianGymEndBattleText5:
TX_FAR _ViridianGymEndBattleText5
db "@"
ViridianGymAfterBattleText5:
TX_FAR _ViridianGymAfterBattleText5
db "@"
ViridianGymText7:
TX_ASM
ld hl, ViridianGymTrainerHeader5
call TalkToTrainer
jp TextScriptEnd
ViridianGymBattleText6:
TX_FAR _ViridianGymBattleText6
db "@"
ViridianGymEndBattleText6:
TX_FAR _ViridianGymEndBattleText6
db "@"
ViridianGymAfterBattleText6:
TX_FAR _ViridianGymAfterBattleText6
db "@"
ViridianGymText8:
TX_ASM
ld hl, ViridianGymTrainerHeader6
call TalkToTrainer
jp TextScriptEnd
ViridianGymBattleText7:
TX_FAR _ViridianGymBattleText7
db "@"
ViridianGymEndBattleText7:
TX_FAR _ViridianGymEndBattleText7
db "@"
ViridianGymAfterBattleText7:
TX_FAR _ViridianGymAfterBattleText7
db "@"
ViridianGymText9:
TX_ASM
ld hl, ViridianGymTrainerHeader7
call TalkToTrainer
jp TextScriptEnd
ViridianGymBattleText8:
TX_FAR _ViridianGymBattleText8
db "@"
ViridianGymEndBattleText8:
TX_FAR _ViridianGymEndBattleText8
db "@"
ViridianGymAfterBattleText8:
TX_FAR _ViridianGymAfterBattleText8
db "@"
ViridianGymText10:
TX_ASM
CheckEvent EVENT_BEAT_VIRIDIAN_GYM_GIOVANNI
jr nz, .asm_1abd1
ld hl, ViridianGymText_74bd4
call PrintText
jr .asm_6064d
.asm_1abd1
ld hl, ViridianGymText_74bd9
call PrintText
.asm_6064d
jp TextScriptEnd
ViridianGymText_74bd4:
TX_FAR _ViridianGymText_74bd4
db "@"
ViridianGymText_74bd9:
TX_FAR _ViridianGymText_74bd9
db "@"