pokered/scripts/CinnabarGym.asm

478 lines
11 KiB
NASM
Raw Normal View History

CinnabarGym_Script:
call CinnabarGymSetMapAndTiles
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, CinnabarGym_ScriptPointers
2015-08-31 02:38:41 +00:00
ld a, [wCinnabarGymCurScript]
2014-05-18 18:19:10 +00:00
jp CallFunctionInTable
CinnabarGymSetMapAndTiles:
2016-01-03 19:17:10 +00:00
ld hl, wCurrentMapScriptFlags
2014-05-18 18:19:10 +00:00
bit 6, [hl]
res 6, [hl]
push hl
2020-07-18 18:01:13 +00:00
call nz, .LoadNames
2014-05-18 18:19:10 +00:00
pop hl
bit 5, [hl]
res 5, [hl]
2015-07-21 21:21:14 +00:00
call nz, UpdateCinnabarGymGateTileBlocks
2015-07-21 01:32:02 +00:00
ResetEvent EVENT_2A7
2014-05-18 18:19:10 +00:00
ret
2020-07-18 18:01:13 +00:00
.LoadNames:
ld hl, .CityName
ld de, .LeaderName
2014-05-18 18:19:10 +00:00
jp LoadGymLeaderAndCityName
2020-07-18 18:01:13 +00:00
.CityName:
2014-05-18 18:19:10 +00:00
db "CINNABAR ISLAND@"
2020-07-18 18:01:13 +00:00
.LeaderName:
2014-05-18 18:19:10 +00:00
db "BLAINE@"
CinnabarGymResetScripts:
xor a ; SCRIPT_CINNABARGYM_DEFAULT
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2015-08-31 02:38:41 +00:00
ld [wCinnabarGymCurScript], a
ld [wCurMapScript], a
2015-07-26 02:26:54 +00:00
ld [wOpponentAfterWrongAnswer], a
2014-05-18 18:19:10 +00:00
ret
CinnabarGymSetTrainerHeader:
ldh a, [hSpriteIndexOrTextID]
2014-05-18 18:19:10 +00:00
ld [wTrainerHeaderFlagBit], a
ret
CinnabarGym_ScriptPointers:
def_script_pointers
dw_const CinnabarGymDefaultScript, SCRIPT_CINNABARGYM_DEFAULT
dw_const CinnabarGymGetOpponentTextScript, SCRIPT_CINNABARGYM_GET_OPPONENT_TEXT
dw_const CinnabarGymOpenGateScript, SCRIPT_CINNABARGYM_OPEN_GATE
dw_const CinnabarGymBlainePostBattleScript, SCRIPT_CINNABARGYM_BLAINE_POST_BATTLE
2014-05-18 18:19:10 +00:00
CinnabarGymDefaultScript:
2015-07-26 02:26:54 +00:00
ld a, [wOpponentAfterWrongAnswer]
2014-05-18 18:19:10 +00:00
and a
ret z
ldh [hSpriteIndex], a
cp CINNABARGYM_SUPER_NERD3
jr nz, .not_super_nerd3
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
ld de, MovementNpcToLeftAndUp
jr .MoveSprite
.not_super_nerd3
ld de, MovementNpcToLeft
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_RIGHT
ld [wPlayerMovingDirection], a
.MoveSprite
2014-05-18 18:19:10 +00:00
call MoveSprite
ld a, SCRIPT_CINNABARGYM_GET_OPPONENT_TEXT
2015-08-31 02:38:41 +00:00
ld [wCinnabarGymCurScript], a
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
MovementNpcToLeftAndUp:
db NPC_MOVEMENT_LEFT
db NPC_MOVEMENT_UP
db -1 ; end
2014-05-18 18:19:10 +00:00
MovementNpcToLeft:
db NPC_MOVEMENT_LEFT
db -1 ; end
2014-05-18 18:19:10 +00:00
CinnabarGymGetOpponentTextScript:
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
2015-07-26 02:26:54 +00:00
ld a, [wOpponentAfterWrongAnswer]
2014-05-18 18:19:10 +00:00
ld [wTrainerHeaderFlagBit], a
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
jp DisplayTextID
2016-06-12 00:24:04 +00:00
CinnabarGymFlagAction:
predef_jump FlagActionPredef
2023-11-19 22:24:11 +00:00
CinnabarGymOpenGateScript:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, CinnabarGymResetScripts
2014-05-18 18:19:10 +00:00
ld a, [wTrainerHeaderFlagBit]
ldh [hGymGateIndex], a
2015-07-21 21:21:14 +00:00
AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
2014-05-18 18:19:10 +00:00
ld c, a
2015-07-20 03:45:34 +00:00
ld b, FLAG_TEST
2015-07-21 21:21:14 +00:00
EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
call CinnabarGymFlagAction
2014-05-18 18:19:10 +00:00
ld a, c
and a
2023-11-19 00:44:03 +00:00
jr nz, .no_sound
2014-05-18 18:19:10 +00:00
call WaitForSoundToFinish
2015-07-19 08:46:12 +00:00
ld a, SFX_GO_INSIDE
2014-05-18 18:19:10 +00:00
call PlaySound
call WaitForSoundToFinish
2023-11-19 00:44:03 +00:00
.no_sound
2014-05-18 18:19:10 +00:00
ld a, [wTrainerHeaderFlagBit]
ldh [hGymGateIndex], a
2015-07-21 21:21:14 +00:00
AdjustEventBit EVENT_BEAT_CINNABAR_GYM_TRAINER_0, 2
2014-05-18 18:19:10 +00:00
ld c, a
2015-07-20 03:45:34 +00:00
ld b, FLAG_SET
2015-07-21 21:21:14 +00:00
EventFlagAddress hl, EVENT_BEAT_CINNABAR_GYM_TRAINER_0
call CinnabarGymFlagAction
2014-05-18 18:19:10 +00:00
ld a, [wTrainerHeaderFlagBit]
sub $2
2015-07-21 21:21:14 +00:00
AdjustEventBit EVENT_CINNABAR_GYM_GATE0_UNLOCKED, 0
2014-05-18 18:19:10 +00:00
ld c, a
2015-07-20 03:45:34 +00:00
ld b, FLAG_SET
2015-07-21 21:21:14 +00:00
EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED
call CinnabarGymFlagAction
call UpdateCinnabarGymGateTileBlocks
2014-05-18 18:19:10 +00:00
xor a
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
2015-07-26 02:26:54 +00:00
ld [wOpponentAfterWrongAnswer], a
ld a, SCRIPT_CINNABARGYM_DEFAULT
2015-08-31 02:38:41 +00:00
ld [wCinnabarGymCurScript], a
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
CinnabarGymBlainePostBattleScript:
2015-08-31 02:38:41 +00:00
ld a, [wIsInBattle]
2014-05-18 18:19:10 +00:00
cp $ff
jp z, CinnabarGymResetScripts
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
; fallthrough
CinnabarGymReceiveTM38:
ld a, TEXT_CINNABARGYM_BLAINE_VOLCANO_BADGE_INFO
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
2015-07-21 02:41:23 +00:00
SetEvent EVENT_BEAT_BLAINE
2020-07-06 02:52:27 +00:00
lb bc, TM_FIRE_BLAST, 1
2014-05-18 18:19:10 +00:00
call GiveItem
jr nc, .BagFull
ld a, TEXT_CINNABARGYM_BLAINE_RECEIVED_TM38
ldh [hSpriteIndexOrTextID], a
2014-05-18 18:19:10 +00:00
call DisplayTextID
2015-07-21 02:41:23 +00:00
SetEvent EVENT_GOT_TM38
2019-10-07 05:23:57 +00:00
jr .gymVictory
2014-05-18 18:19:10 +00:00
.BagFull
ld a, TEXT_CINNABARGYM_BLAINE_TM38_NO_ROOM
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_VOLCANOBADGE, [hl]
2015-07-26 02:26:54 +00:00
ld hl, wBeatGymFlags
set BIT_VOLCANOBADGE, [hl]
2014-05-18 18:19:10 +00:00
; deactivate gym trainers
2015-07-21 21:21:14 +00:00
SetEventRange EVENT_BEAT_CINNABAR_GYM_TRAINER_0, EVENT_BEAT_CINNABAR_GYM_TRAINER_6
2014-05-18 18:19:10 +00:00
2016-01-03 19:17:10 +00:00
ld hl, wCurrentMapScriptFlags
2014-05-18 18:19:10 +00:00
set 5, [hl]
jp CinnabarGymResetScripts
2014-05-18 18:19:10 +00:00
CinnabarGym_TextPointers:
def_text_pointers
dw_const CinnabarGymBlaineText, TEXT_CINNABARGYM_BLAINE
dw_const CinnabarGymSuperNerd1, TEXT_CINNABARGYM_SUPER_NERD1
dw_const CinnabarGymSuperNerd2, TEXT_CINNABARGYM_SUPER_NERD2
dw_const CinnabarGymSuperNerd3, TEXT_CINNABARGYM_SUPER_NERD3
dw_const CinnabarGymSuperNerd4, TEXT_CINNABARGYM_SUPER_NERD4
dw_const CinnabarGymSuperNerd5, TEXT_CINNABARGYM_SUPER_NERD5
dw_const CinnabarGymSuperNerd6, TEXT_CINNABARGYM_SUPER_NERD6
dw_const CinnabarGymSuperNerd7, TEXT_CINNABARGYM_SUPER_NERD7
dw_const CinnabarGymGymGuideText, TEXT_CINNABARGYM_GYM_GUIDE
dw_const CinnabarGymBlaineVolcanoBadgeInfoText, TEXT_CINNABARGYM_BLAINE_VOLCANO_BADGE_INFO
dw_const CinnabarGymBlaineReceivedTM38Text, TEXT_CINNABARGYM_BLAINE_RECEIVED_TM38
dw_const CinnabarGymBlaineTM38NoRoomText, TEXT_CINNABARGYM_BLAINE_TM38_NO_ROOM
CinnabarGymStartBattleScript:
ldh a, [hSpriteIndexOrTextID]
2014-09-13 07:50:56 +00:00
ld [wSpriteIndex], a
2014-05-18 18:19:10 +00:00
call EngageMapTrainer
call InitBattleEnemyParameters
ld hl, wd72d
2014-05-18 18:19:10 +00:00
set 6, [hl]
set 7, [hl]
2014-09-13 07:50:56 +00:00
ld a, [wSpriteIndex]
cp CINNABARGYM_BLAINE
jr z, .blaine
ld a, SCRIPT_CINNABARGYM_OPEN_GATE
jr .not_blaine
.blaine
ld a, SCRIPT_CINNABARGYM_BLAINE_POST_BATTLE
.not_blaine
2015-08-31 02:38:41 +00:00
ld [wCinnabarGymCurScript], a
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
CinnabarGymBlaineText:
text_asm
2015-07-21 02:41:23 +00:00
CheckEvent EVENT_BEAT_BLAINE
jr z, .beforeBeat
2015-07-21 02:41:23 +00:00
CheckEventReuseA EVENT_GOT_TM38
jr nz, .afterBeat
call z, CinnabarGymReceiveTM38
2014-05-18 18:19:10 +00:00
call DisableWaitingAfterTextDisplay
jp TextScriptEnd
.afterBeat
ld hl, .PostBattleAdviceText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.beforeBeat
ld hl, .PreBattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, .ReceivedVolcanoBadgeText
ld de, .ReceivedVolcanoBadgeText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2014-05-18 18:19:10 +00:00
ld a, $7
2015-08-31 02:38:41 +00:00
ld [wGymLeaderNo], a
jp CinnabarGymStartBattleScript
2014-05-18 18:19:10 +00:00
.PreBattleText:
text_far _CinnabarGymBlainePreBattleText
text_end
2014-05-18 18:19:10 +00:00
.ReceivedVolcanoBadgeText:
text_far _CinnabarGymBlaineReceivedVolcanoBadgeText
sound_get_key_item ; actually plays the second channel of SFX_BALL_POOF due to the wrong music bank being loaded
text_waitbutton
text_end
2014-05-18 18:19:10 +00:00
.PostBattleAdviceText:
text_far _CinnabarGymBlainePostBattleAdviceText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymBlaineVolcanoBadgeInfoText:
text_far _CinnabarGymBlaineVolcanoBadgeInfoText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymBlaineReceivedTM38Text:
text_far _CinnabarGymBlaineReceivedTM38Text
sound_get_item_1
text_far _CinnabarGymBlaineTM38ExplanationText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymBlaineTM38NoRoomText:
text_far _CinnabarGymBlaineTM38NoRoomText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymSuperNerd1:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_0
jr nz, .defeated
ld hl, .BattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, .EndBattleText
ld de, .EndBattleText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
jp CinnabarGymStartBattleScript
.defeated
ld hl, .AfterBattleText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.BattleText:
text_far _CinnabarGymSuperNerd1BattleText
text_end
2014-05-18 18:19:10 +00:00
.EndBattleText:
text_far _CinnabarGymSuperNerd1EndBattleText
text_end
2014-05-18 18:19:10 +00:00
.AfterBattleText:
text_far _CinnabarGymSuperNerd1AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymSuperNerd2:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_1
jr nz, .defeated
ld hl, .BattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, .EndBattleText
ld de, .EndBattleText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
jp CinnabarGymStartBattleScript
.defeated
ld hl, .AfterBattleText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.BattleText:
text_far _CinnabarGymSuperNerd2BattleText
text_end
2014-05-18 18:19:10 +00:00
.EndBattleText:
text_far _CinnabarGymSuperNerd2EndBattleText
text_end
2014-05-18 18:19:10 +00:00
.AfterBattleText:
text_far _CinnabarGymSuperNerd2AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymSuperNerd3:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_2
jr nz, .defeated
ld hl, .BattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, .EndBattleText
ld de, .EndBattleText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
jp CinnabarGymStartBattleScript
.defeated
ld hl, .AfterBattleText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.BattleText:
text_far _CinnabarGymSuperNerd3BattleText
text_end
2014-05-18 18:19:10 +00:00
.EndBattleText:
text_far _CinnabarGymSuperNerd3EndBattleText
text_end
2014-05-18 18:19:10 +00:00
.AfterBattleText:
text_far _CinnabarGymSuperNerd3AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymSuperNerd4:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_3
jr nz, .defeated
ld hl, .BattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, .EndBattleText
ld de, .EndBattleText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
jp CinnabarGymStartBattleScript
.defeated
ld hl, .AfterBattleText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.BattleText:
text_far _CinnabarGymSuperNerd4BattleText
text_end
2014-05-18 18:19:10 +00:00
.EndBattleText:
text_far _CinnabarGymSuperNerd4EndBattleText
text_end
2014-05-18 18:19:10 +00:00
.AfterBattleText:
text_far _CinnabarGymSuperNerd4AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymSuperNerd5:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_4
jr nz, .defeated
ld hl, .BattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, .EndBattleText
ld de, .EndBattleText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
jp CinnabarGymStartBattleScript
.defeated
ld hl, .AfterBattleText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.BattleText:
text_far _CinnabarGymSuperNerd5BattleText
text_end
2014-05-18 18:19:10 +00:00
.EndBattleText:
text_far _CinnabarGymSuperNerd5EndBattleText
text_end
2014-05-18 18:19:10 +00:00
.AfterBattleText:
text_far _CinnabarGymSuperNerd5AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymSuperNerd6:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_5
jr nz, .defeated
ld hl, .BattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, .EndBattleText
ld de, .EndBattleText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
jp CinnabarGymStartBattleScript
.defeated
ld hl, .AfterBattleText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.BattleText:
text_far _CinnabarGymSuperNerd6BattleText
text_end
2014-05-18 18:19:10 +00:00
.EndBattleText:
text_far _CinnabarGymSuperNerd6EndBattleText
text_end
2014-05-18 18:19:10 +00:00
.AfterBattleText:
text_far _CinnabarGymSuperNerd6AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymSuperNerd7:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_6
jr nz, .defeated
ld hl, .BattleText
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, .EndBattleText
ld de, .EndBattleText
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
jp CinnabarGymStartBattleScript
.defeated
ld hl, .AfterBattleText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.BattleText:
text_far _CinnabarGymSuperNerd7BattleText
text_end
2014-05-18 18:19:10 +00:00
.EndBattleText:
text_far _CinnabarGymSuperNerd7EndBattleText
text_end
2014-05-18 18:19:10 +00:00
.AfterBattleText:
text_far _CinnabarGymSuperNerd7AfterBattleText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymGymGuideText:
text_asm
2015-07-21 02:41:23 +00:00
CheckEvent EVENT_BEAT_BLAINE
jr nz, .afterBeat
ld hl, .ChampInMakingText
jr .done
.afterBeat
ld hl, .BeatBlaineText
.done
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.ChampInMakingText:
text_far _CinnabarGymGymGuideChampInMakingText
text_end
2014-05-18 18:19:10 +00:00
.BeatBlaineText:
text_far _CinnabarGymGymGuideBeatBlaineText
text_end