mirror of
https://github.com/pret/pokeyellow.git
synced 2026-04-25 16:19:51 -05:00
366 lines
9.7 KiB
NASM
366 lines
9.7 KiB
NASM
ViridianCity_Script:
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, ViridianCity_ScriptPointers
|
|
ld a, [wViridianCityCurScript]
|
|
call CallFunctionInTable
|
|
ret
|
|
|
|
ViridianCity_ScriptPointers:
|
|
def_script_pointers
|
|
dw_const ViridianCityDefaultScript, SCRIPT_VIRIDIANCITY_DEFAULT
|
|
dw_const ViridianCityAfterPokedexScript, SCRIPT_VIRIDIANCITY_AFTER_POKEDEX
|
|
dw_const ViridianCityPostCatchTraining, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING
|
|
dw_const ViridianCityOldManStartCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_START_CATCH_TRAINING
|
|
dw_const ViridianCityOldManEndCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING
|
|
dw_const ViridianCityPlayerMovingDownScript, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN
|
|
dw_const ViridianCityPlayerMovingDownPostTrainingScript, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN_POST_TRAINING
|
|
dw_const ViridianCityOldManInitialCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_INITIAL_CATCH_TRAINING
|
|
dw_const ViridianCityOldManEndInitialCatchTrainingScript, SCRIPT_VIRIDIANCITY_OLD_MAN_END_INITIAL_CATCH_TRAINING
|
|
dw_const ViridianCityPostInitialCatchTraining, SCRIPT_VIRIDIANCITY_POST_INITIAL_CATCH_TRAINING
|
|
dw_const ViridianCityOldManMovingDownScript, SCRIPT_VIRIDIANCITY_OLD_MAN_MOVING_DOWN
|
|
|
|
ViridianCityDefaultScript:
|
|
call ViridianCityCheckGymOpenScript
|
|
call ViridianCityCheckSleepingOldMan
|
|
ret
|
|
|
|
ViridianCityAfterPokedexScript:
|
|
call ViridianCityCheckWaitingOldMan
|
|
ViridianCityPostCatchTraining:
|
|
call ViridianCityCheckGymOpenScript
|
|
ret
|
|
|
|
ViridianCityCheckGymOpenScript:
|
|
CheckEvent EVENT_VIRIDIAN_GYM_OPEN
|
|
ret nz
|
|
ld a, [wObtainedBadges]
|
|
cp ~(1 << BIT_EARTHBADGE)
|
|
jr nz, .gym_closed
|
|
SetEvent EVENT_VIRIDIAN_GYM_OPEN
|
|
ret
|
|
.gym_closed
|
|
ld a, [wYCoord]
|
|
cp 8
|
|
ret nz
|
|
ld a, [wXCoord]
|
|
cp 32
|
|
ret nz
|
|
ld a, TEXT_VIRIDIANCITY_GYM_LOCKED
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
call StartSimulatingJoypadStates
|
|
ld a, $1
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
ld a, PAD_DOWN
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
xor a
|
|
ld [wSpritePlayerStateData1FacingDirection], a
|
|
ld [wJoyIgnore], a
|
|
ldh [hJoyHeld], a
|
|
ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN_POST_TRAINING
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
ViridianCityPlayerMovingDownPostTrainingScript:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
call Delay3
|
|
ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
ViridianCityCheckSleepingOldMan:
|
|
ld a, [wYCoord]
|
|
cp 9
|
|
ret nz
|
|
ld a, [wXCoord]
|
|
cp 19
|
|
ret nz
|
|
ld a, TEXT_VIRIDIANCITY_OLD_MAN_SLEEPY
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
call ViridianCityMovePlayerDownScript
|
|
ld a, SCRIPT_VIRIDIANCITY_PLAYER_MOVING_DOWN
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
ViridianCityOldManStartCatchTrainingScript:
|
|
call .SetupSprite
|
|
call .SetupBattle
|
|
ResetEvent EVENT_INITIAL_CATCH_TRAINING
|
|
ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_END_CATCH_TRAINING
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
.SetupBattle:
|
|
xor a
|
|
ld [wListScrollOffset], a
|
|
ld a, BATTLE_TYPE_OLD_MAN
|
|
ld [wBattleType], a
|
|
ld a, 5
|
|
ld [wCurEnemyLevel], a
|
|
ld a, RATTATA
|
|
ld [wCurOpponent], a
|
|
ret
|
|
|
|
.SetupSprite:
|
|
ld a, [wSprite03StateData1YPixels]
|
|
ldh [hSpriteScreenYCoord], a
|
|
ld a, [wSprite03StateData1XPixels]
|
|
ldh [hSpriteScreenXCoord], a
|
|
ld a, [wSprite03StateData2MapY]
|
|
ldh [hSpriteMapYCoord], a
|
|
ld a, [wSprite03StateData2MapX]
|
|
ldh [hSpriteMapXCoord], a
|
|
ret
|
|
|
|
ViridianCityOldManEndCatchTrainingScript:
|
|
call .SetupSprite
|
|
call UpdateSprites
|
|
call Delay3
|
|
SetEvent EVENT_COMPLETED_CATCH_TRAINING_AGAIN
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, TEXT_VIRIDIANCITY_OLD_MAN_YOU_NEED_TO_WEAKEN_THE_TARGET
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
xor a
|
|
ld [wBattleType], a
|
|
ld [wJoyIgnore], a
|
|
ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
.SetupSprite:
|
|
ldh a, [hSpriteScreenYCoord]
|
|
ld [wSprite03StateData1YPixels], a
|
|
ldh a, [hSpriteScreenXCoord]
|
|
ld [wSprite03StateData1XPixels], a
|
|
ldh a, [hSpriteMapYCoord]
|
|
ld [wSprite03StateData2MapY], a
|
|
ldh a, [hSpriteMapXCoord]
|
|
ld [wSprite03StateData2MapX], a
|
|
ret
|
|
|
|
ViridianCityPlayerMovingDownScript:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
call Delay3
|
|
ld a, SCRIPT_VIRIDIANCITY_DEFAULT
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
ViridianCityMovePlayerDownScript:
|
|
call StartSimulatingJoypadStates
|
|
ld a, $1
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
ld a, PAD_DOWN
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
xor a
|
|
ld [wSpritePlayerStateData1FacingDirection], a
|
|
ld [wJoyIgnore], a
|
|
ret
|
|
|
|
ViridianCityCheckWaitingOldMan:
|
|
CheckEvent EVENT_COMPLETED_CATCH_TRAINING
|
|
ret nz
|
|
ld a, [wYCoord]
|
|
cp 9
|
|
ret nz
|
|
ld a, [wXCoord]
|
|
cp 19
|
|
ret nz
|
|
ld a, VIRIDIANCITY_OLD_MAN2
|
|
ldh [hSpriteIndex], a
|
|
ld a, SPRITE_FACING_RIGHT
|
|
ldh [hSpriteFacingDirection], a
|
|
call SetSpriteFacingDirectionAndDelay
|
|
ld a, SPRITE_FACING_LEFT
|
|
ld [wSpritePlayerStateData1FacingDirection], a
|
|
ld a, TEXT_VIRIDIANCITY_OLD_MAN2
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
ret
|
|
|
|
ViridianCityOldManInitialCatchTrainingScript:
|
|
call ViridianCityOldManStartCatchTrainingScript.SetupSprite
|
|
call ViridianCityOldManStartCatchTrainingScript.SetupBattle
|
|
SetEvent EVENT_INITIAL_CATCH_TRAINING
|
|
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_END_INITIAL_CATCH_TRAINING
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
ViridianCityOldManEndInitialCatchTrainingScript:
|
|
call ViridianCityOldManEndCatchTrainingScript.SetupSprite
|
|
call UpdateSprites
|
|
call Delay3
|
|
SetEvent EVENT_COMPLETED_CATCH_TRAINING
|
|
ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD
|
|
ld [wJoyIgnore], a
|
|
ld a, TEXT_VIRIDIANCITY_OLD_MAN2
|
|
ldh [hTextID], a
|
|
call DisplayTextID
|
|
xor a
|
|
ld [wBattleType], a
|
|
dec a
|
|
ld [wJoyIgnore], a
|
|
ld a, SCRIPT_VIRIDIANCITY_POST_INITIAL_CATCH_TRAINING
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
ViridianCityPostInitialCatchTraining:
|
|
ld de, ViridianCityOldManMovementData2
|
|
ld a, [wXCoord]
|
|
cp 19
|
|
jr z, .move_old_man
|
|
callfar ViridianCityMovePikachu
|
|
ld de, ViridianCityOldManMovementData1
|
|
.move_old_man
|
|
ld a, VIRIDIANCITY_OLD_MAN2
|
|
ldh [hSpriteIndex], a
|
|
call MoveSprite
|
|
ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_MOVING_DOWN
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
ViridianCityOldManMovementData1:
|
|
db NPC_MOVEMENT_RIGHT
|
|
ViridianCityOldManMovementData2:
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db NPC_MOVEMENT_DOWN
|
|
db $ff
|
|
|
|
ViridianCityOldManMovingDownScript:
|
|
ld a, [wStatusFlags5]
|
|
bit BIT_SCRIPTED_NPC_MOVEMENT, a
|
|
ret nz
|
|
ld a, HS_OLD_MAN_2
|
|
ld [wMissableObjectIndex], a
|
|
predef HideObject
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld a, SCRIPT_VIRIDIANCITY_POST_CATCH_TRAINING
|
|
ld [wViridianCityCurScript], a
|
|
ret
|
|
|
|
ViridianCity_TextPointers:
|
|
def_text_pointers
|
|
dw_const ViridianCityYoungster1Text, TEXT_VIRIDIANCITY_YOUNGSTER1
|
|
dw_const ViridianCityGambler1Text, TEXT_VIRIDIANCITY_GAMBLER1
|
|
dw_const ViridianCityYoungster2Text, TEXT_VIRIDIANCITY_YOUNGSTER2
|
|
dw_const ViridianCityGirlText, TEXT_VIRIDIANCITY_GIRL
|
|
dw_const ViridianCityOldManSleepyText, TEXT_VIRIDIANCITY_OLD_MAN_SLEEPY
|
|
dw_const ViridianCityFisherText, TEXT_VIRIDIANCITY_FISHER
|
|
dw_const ViridianCityOldManText, TEXT_VIRIDIANCITY_OLD_MAN
|
|
dw_const ViridianCityOldMan2Text, TEXT_VIRIDIANCITY_OLD_MAN2
|
|
dw_const ViridianCitySignText, TEXT_VIRIDIANCITY_SIGN
|
|
dw_const ViridianCityTrainerTips1Text, TEXT_VIRIDIANCITY_TRAINER_TIPS1
|
|
dw_const ViridianCityTrainerTips2Text, TEXT_VIRIDIANCITY_TRAINER_TIPS2
|
|
dw_const MartSignText, TEXT_VIRIDIANCITY_MART_SIGN
|
|
dw_const PokeCenterSignText, TEXT_VIRIDIANCITY_POKECENTER_SIGN
|
|
dw_const ViridianCityGymSignText, TEXT_VIRIDIANCITY_GYM_SIGN
|
|
dw_const ViridianCityGymLockedText, TEXT_VIRIDIANCITY_GYM_LOCKED
|
|
dw_const ViridianCityOldManYouNeedToWeakenTheTargetText, TEXT_VIRIDIANCITY_OLD_MAN_YOU_NEED_TO_WEAKEN_THE_TARGET
|
|
|
|
ViridianCityYoungster1Text:
|
|
text_asm
|
|
farcall ViridianCityPrintYoungster1Text
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityGambler1Text:
|
|
text_asm
|
|
farcall ViridianCityPrintGambler1Text
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityYoungster2Text:
|
|
text_asm
|
|
farcall ViridianCityPrintYoungster2Text
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityGirlText:
|
|
text_asm
|
|
farcall ViridianCityPrintGirlText
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityOldManSleepyText:
|
|
text_asm
|
|
farcall ViridianCityPrintOldManSleepyText
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityFisherText:
|
|
text_asm
|
|
farcall ViridianCityPrintFisherText
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityOldManText:
|
|
text_asm
|
|
farcall ViridianCityPrintOldManText
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityOldManYouNeedToWeakenTheTargetText:
|
|
text_far _ViridianCityOldManYouNeedToWeakenTheTargetText
|
|
text_end
|
|
|
|
ViridianCityOldMan2Text:
|
|
text_asm
|
|
CheckEvent EVENT_COMPLETED_CATCH_TRAINING
|
|
jr nz, .completed_training
|
|
ld hl, .HadMyCoffeeNowText
|
|
call PrintText
|
|
ld c, 2
|
|
call DelayFrames
|
|
ld a, SCRIPT_VIRIDIANCITY_OLD_MAN_INITIAL_CATCH_TRAINING
|
|
ld [wViridianCityCurScript], a
|
|
jr .done
|
|
|
|
.completed_training
|
|
ld hl, .LosingMyTouchText
|
|
call PrintText
|
|
.done
|
|
jp TextScriptEnd
|
|
|
|
.HadMyCoffeeNowText:
|
|
text_far _ViridianCityOldManHadMyCoffeeNowText
|
|
text_end
|
|
|
|
.LosingMyTouchText:
|
|
text_far _ViridianCityOldManLosingMyTouchText
|
|
text_end
|
|
|
|
ViridianCitySignText:
|
|
text_asm
|
|
farcall ViridianCityPrintSignText
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityTrainerTips1Text:
|
|
text_asm
|
|
farcall ViridianCityPrintTrainerTips1Text
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityTrainerTips2Text:
|
|
text_asm
|
|
farcall ViridianCityPrintTrainerTips2Text
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityGymSignText:
|
|
text_asm
|
|
farcall ViridianCityPrintGymSignText
|
|
jp TextScriptEnd
|
|
|
|
ViridianCityGymLockedText:
|
|
text_asm
|
|
farcall ViridianCityPrintGymLockedText
|
|
jp TextScriptEnd
|