pokered/scripts/CinnabarGym.asm

476 lines
9.7 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:
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 [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:
2014-05-18 18:19:10 +00:00
dw CinnabarGymScript0
dw CinnabarGymScript1
dw CinnabarGymScript2
dw CinnabarGymBlainePostBattle
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
CinnabarGymScript0:
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
2014-05-18 18:19:10 +00:00
cp $4
jr nz, .asm_757c3
2015-07-20 00:52:26 +00:00
ld a, PLAYER_DIR_DOWN
ld [wPlayerMovingDirection], a
ld de, MovementNpcToLeftAndUp
jr .MoveSprite
2014-05-18 18:19:10 +00:00
.asm_757c3
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, $1
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
2016-06-12 00:24:04 +00:00
CinnabarGymScript1:
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
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
CinnabarGymScript2:
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
jr nz, .asm_7581b
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
.asm_7581b
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
2014-05-18 18:19:10 +00:00
ld a, $0
2015-08-31 02:38:41 +00:00
ld [wCinnabarGymCurScript], a
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
ret
CinnabarGymBlainePostBattle:
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, $f0
2014-05-25 17:51:53 +00:00
ld [wJoyIgnore], a
; fallthrough
CinnabarGymReceiveTM38:
2014-05-18 18:19:10 +00:00
ld a, $a
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, $b
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, $c
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:
dw BlaineText
dw CinnabarGymTrainerText1
dw CinnabarGymTrainerText2
dw CinnabarGymTrainerText3
dw CinnabarGymTrainerText4
dw CinnabarGymTrainerText5
dw CinnabarGymTrainerText6
dw CinnabarGymTrainerText7
dw CinnabarGymGuideText
dw BlaineVolcanoBadgeInfoText
2014-05-18 18:19:10 +00:00
dw ReceivedTM38Text
dw TM38NoRoomText
2016-06-12 00:24:04 +00:00
CinnabarGymScript_758b7:
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]
2014-05-18 18:19:10 +00:00
cp $1
jr z, .asm_758d4
ld a, $2
jr .asm_758d6
.asm_758d4
ld a, $3
.asm_758d6
2015-08-31 02:38:41 +00:00
ld [wCinnabarGymCurScript], a
ld [wCurMapScript], a
2014-05-18 18:19:10 +00:00
jp TextScriptEnd
BlaineText:
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, BlainePostBattleAdviceText
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
.beforeBeat
ld hl, BlainePreBattleText
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
2014-05-18 18:19:10 +00:00
jp CinnabarGymScript_758b7
BlainePreBattleText:
text_far _BlainePreBattleText
text_end
2014-05-18 18:19:10 +00:00
ReceivedVolcanoBadgeText:
text_far _ReceivedVolcanoBadgeText
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
BlainePostBattleAdviceText:
text_far _BlainePostBattleAdviceText
text_end
2014-05-18 18:19:10 +00:00
BlaineVolcanoBadgeInfoText:
text_far _BlaineVolcanoBadgeInfoText
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
ReceivedTM38Text:
text_far _ReceivedTM38Text
sound_get_item_1
text_far _TM38ExplanationText
text_end
2014-05-18 18:19:10 +00:00
2016-06-12 00:24:04 +00:00
TM38NoRoomText:
text_far _TM38NoRoomText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymTrainerText1:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_0
jr nz, .asm_46bb4
ld hl, CinnabarGymBattleText2
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, CinnabarGymEndBattleText2
ld de, CinnabarGymEndBattleText2
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2014-05-18 18:19:10 +00:00
jp CinnabarGymScript_758b7
.asm_46bb4
ld hl, CinnabarGymAfterBattleText2
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
CinnabarGymBattleText2:
text_far _CinnabarGymBattleText2
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymEndBattleText2:
text_far _CinnabarGymEndBattleText2
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymAfterBattleText2:
text_far _CinnabarGymAfterBattleText2
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymTrainerText2:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_1
jr nz, .asm_4b406
ld hl, CinnabarGymBattleText1
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, CinnabarGymEndBattleText1
ld de, CinnabarGymEndBattleText1
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2014-05-18 18:19:10 +00:00
jp CinnabarGymScript_758b7
.asm_4b406
ld hl, CinnabarGymAfterBattleText1
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
CinnabarGymBattleText1:
text_far _CinnabarGymBattleText1
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymEndBattleText1:
text_far _CinnabarGymEndBattleText1
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymAfterBattleText1:
text_far _CinnabarGymAfterBattleText1
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymTrainerText3:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_2
jr nz, .afterBeat
ld hl, CinnabarGymBattleText3
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, CinnabarGymEndBattleText3
ld de, CinnabarGymEndBattleText3
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2014-05-18 18:19:10 +00:00
jp CinnabarGymScript_758b7
.afterBeat
ld hl, CinnabarGymAfterBattleText3
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
CinnabarGymBattleText3:
text_far _CinnabarGymBattleText3
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymEndBattleText3:
text_far _CinnabarGymEndBattleText3
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymAfterBattleText3:
text_far _CinnabarGymAfterBattleText3
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymTrainerText4:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_3
jr nz, .afterBeat
ld hl, CinnabarGymBattleText4
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, CinnabarGymEndBattleText4
ld de, CinnabarGymEndBattleText4
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2014-05-18 18:19:10 +00:00
jp CinnabarGymScript_758b7
.afterBeat
ld hl, CinnabarGymAfterBattleText4
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
CinnabarGymBattleText4:
text_far _CinnabarGymBattleText4
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymEndBattleText4:
text_far _CinnabarGymEndBattleText4
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymAfterBattleText4:
text_far _CinnabarGymAfterBattleText4
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymTrainerText5:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_4
jr nz, .afterBeat
ld hl, CinnabarGymBattleText5
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, CinnabarGymEndBattleText5
ld de, CinnabarGymEndBattleText5
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2014-05-18 18:19:10 +00:00
jp CinnabarGymScript_758b7
.afterBeat
ld hl, CinnabarGymAfterBattleText5
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
CinnabarGymBattleText5:
text_far _CinnabarGymBattleText5
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymEndBattleText5:
text_far _CinnabarGymEndBattleText5
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymAfterBattleText5:
text_far _CinnabarGymAfterBattleText5
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymTrainerText6:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_5
jr nz, .afterBeat
ld hl, CinnabarGymBattleText6
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, CinnabarGymEndBattleText6
ld de, CinnabarGymEndBattleText6
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2014-05-18 18:19:10 +00:00
jp CinnabarGymScript_758b7
.afterBeat
ld hl, CinnabarGymAfterBattleText6
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
CinnabarGymBattleText6:
text_far _CinnabarGymBattleText6
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymEndBattleText6:
text_far _CinnabarGymEndBattleText6
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymAfterBattleText6:
text_far _CinnabarGymAfterBattleText6
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymTrainerText7:
text_asm
call CinnabarGymSetTrainerHeader
2015-07-21 21:21:14 +00:00
CheckEvent EVENT_BEAT_CINNABAR_GYM_TRAINER_6
jr nz, .afterBeat
ld hl, CinnabarGymBattleText7
2014-05-18 18:19:10 +00:00
call PrintText
ld hl, CinnabarGymEndBattleText7
ld de, CinnabarGymEndBattleText7
2014-09-14 18:29:18 +00:00
call SaveEndBattleTextPointers
2014-05-18 18:19:10 +00:00
jp CinnabarGymScript_758b7
.afterBeat
ld hl, CinnabarGymAfterBattleText7
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
CinnabarGymBattleText7:
text_far _CinnabarGymBattleText7
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymEndBattleText7:
text_far _CinnabarGymEndBattleText7
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymAfterBattleText7:
text_far _CinnabarGymAfterBattleText7
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymGuideText:
text_asm
2015-07-21 02:41:23 +00:00
CheckEvent EVENT_BEAT_BLAINE
jr nz, .afterBeat
ld hl, CinnabarGymGuidePreBattleText
jr .done
.afterBeat
ld hl, CinnabarGymGuidePostBattleText
.done
2014-05-18 18:19:10 +00:00
call PrintText
jp TextScriptEnd
CinnabarGymGuidePreBattleText:
text_far _CinnabarGymGuidePreBattleText
text_end
2014-05-18 18:19:10 +00:00
CinnabarGymGuidePostBattleText:
text_far _CinnabarGymGuidePostBattleText
text_end