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.
259 lines
6.4 KiB
NASM
259 lines
6.4 KiB
NASM
VermilionCity_Script:
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, wCurrentMapScriptFlags
|
|
bit 6, [hl]
|
|
res 6, [hl]
|
|
push hl
|
|
call nz, VermilionCityLeftSSAnneCallbackScript
|
|
pop hl
|
|
bit 5, [hl]
|
|
res 5, [hl]
|
|
call nz, .setFirstLockTrashCanIndex
|
|
ld hl, VermilionCity_ScriptPointers
|
|
ld a, [wVermilionCityCurScript]
|
|
jp CallFunctionInTable
|
|
|
|
.setFirstLockTrashCanIndex
|
|
call Random
|
|
ldh a, [hRandomSub]
|
|
and $e
|
|
ld [wFirstLockTrashCanIndex], a
|
|
ret
|
|
|
|
VermilionCityLeftSSAnneCallbackScript:
|
|
CheckEventHL EVENT_SS_ANNE_LEFT
|
|
ret z
|
|
CheckEventReuseHL EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT
|
|
SetEventReuseHL EVENT_WALKED_PAST_GUARD_AFTER_SS_ANNE_LEFT
|
|
ret nz
|
|
ld a, SCRIPT_VERMILIONCITY_PLAYER_EXIT_SHIP
|
|
ld [wVermilionCityCurScript], a
|
|
ret
|
|
|
|
VermilionCity_ScriptPointers:
|
|
def_script_pointers
|
|
dw_const VermilionCityDefaultScript, SCRIPT_VERMILIONCITY_DEFAULT
|
|
dw_const VermilionCityPlayerMovingUp1Script, SCRIPT_VERMILIONCITY_PLAYER_MOVING_UP1
|
|
dw_const VermilionCityPlayerExitShipScript, SCRIPT_VERMILIONCITY_PLAYER_EXIT_SHIP
|
|
dw_const VermilionCityPlayerMovingUp2Script, SCRIPT_VERMILIONCITY_PLAYER_MOVING_UP2
|
|
dw_const VermilionCityPlayerAllowedToPassScript, SCRIPT_VERMILIONCITY_PLAYER_ALLOWED_TO_PASS
|
|
|
|
VermilionCityDefaultScript:
|
|
ld a, [wSpritePlayerStateData1FacingDirection]
|
|
and a ; cp SPRITE_FACING_DOWN
|
|
ret nz
|
|
ld hl, SSAnneTicketCheckCoords
|
|
call ArePlayerCoordsInArray
|
|
ret nc
|
|
xor a
|
|
ldh [hJoyHeld], a
|
|
ld [wcf0d], a
|
|
ld a, TEXT_VERMILIONCITY_SAILOR1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
call DisplayTextID
|
|
CheckEvent EVENT_SS_ANNE_LEFT
|
|
jr nz, .ship_departed
|
|
ld b, S_S_TICKET
|
|
predef GetQuantityOfItemInBag
|
|
ld a, b
|
|
and a
|
|
ret nz
|
|
.ship_departed
|
|
ld a, D_UP
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
ld a, $1
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, SCRIPT_VERMILIONCITY_PLAYER_MOVING_UP1
|
|
ld [wVermilionCityCurScript], a
|
|
ret
|
|
|
|
SSAnneTicketCheckCoords:
|
|
dbmapcoord 18, 30
|
|
db -1 ; end
|
|
|
|
VermilionCityPlayerAllowedToPassScript:
|
|
ld hl, SSAnneTicketCheckCoords
|
|
call ArePlayerCoordsInArray
|
|
ret c
|
|
ld a, SCRIPT_VERMILIONCITY_DEFAULT
|
|
ld [wVermilionCityCurScript], a
|
|
ret
|
|
|
|
VermilionCityPlayerExitShipScript:
|
|
ld a, A_BUTTON | B_BUTTON | SELECT | START | D_RIGHT | D_LEFT | D_UP | D_DOWN
|
|
ld [wJoyIgnore], a
|
|
ld a, D_UP
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
ld [wSimulatedJoypadStatesEnd + 1], a
|
|
ld a, 2
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
call StartSimulatingJoypadStates
|
|
ld a, SCRIPT_VERMILIONCITY_PLAYER_MOVING_UP2
|
|
ld [wVermilionCityCurScript], a
|
|
ret
|
|
|
|
VermilionCityPlayerMovingUp2Script:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ldh [hJoyHeld], a
|
|
ld a, SCRIPT_VERMILIONCITY_DEFAULT
|
|
ld [wVermilionCityCurScript], a
|
|
ret
|
|
|
|
VermilionCityPlayerMovingUp1Script:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
ld c, 10
|
|
call DelayFrames
|
|
ld a, SCRIPT_VERMILIONCITY_DEFAULT
|
|
ld [wVermilionCityCurScript], a
|
|
ret
|
|
|
|
VermilionCity_TextPointers:
|
|
def_text_pointers
|
|
dw_const VermilionCityBeautyText, TEXT_VERMILIONCITY_BEAUTY
|
|
dw_const VermilionCityGambler1Text, TEXT_VERMILIONCITY_GAMBLER1
|
|
dw_const VermilionCitySailor1Text, TEXT_VERMILIONCITY_SAILOR1
|
|
dw_const VermilionCityGambler2Text, TEXT_VERMILIONCITY_GAMBLER2
|
|
dw_const VermilionCityMachopText, TEXT_VERMILIONCITY_MACHOP
|
|
dw_const VermilionCitySailor2Text, TEXT_VERMILIONCITY_SAILOR2
|
|
dw_const VermilionCitySignText, TEXT_VERMILIONCITY_SIGN
|
|
dw_const VermilionCityNoticeSignText, TEXT_VERMILIONCITY_NOTICE_SIGN
|
|
dw_const MartSignText, TEXT_VERMILIONCITY_MART_SIGN
|
|
dw_const PokeCenterSignText, TEXT_VERMILIONCITY_POKECENTER_SIGN
|
|
dw_const VermilionCityPokemonFanClubSignText, TEXT_VERMILIONCITY_POKEMON_FAN_CLUB_SIGN
|
|
dw_const VermilionCityGymSignText, TEXT_VERMILIONCITY_GYM_SIGN
|
|
dw_const VermilionCityHarborSignText, TEXT_VERMILIONCITY_HARBOR_SIGN
|
|
|
|
VermilionCityBeautyText:
|
|
text_far _VermilionCityBeautyText
|
|
text_end
|
|
|
|
VermilionCityGambler1Text:
|
|
text_asm
|
|
CheckEvent EVENT_SS_ANNE_LEFT
|
|
jr nz, .ship_departed
|
|
ld hl, .DidYouSeeText
|
|
call PrintText
|
|
jr .text_script_end
|
|
.ship_departed
|
|
ld hl, .SSAnneDepartedText
|
|
call PrintText
|
|
.text_script_end
|
|
jp TextScriptEnd
|
|
|
|
.DidYouSeeText:
|
|
text_far _VermilionCityGambler1DidYouSeeText
|
|
text_end
|
|
|
|
.SSAnneDepartedText:
|
|
text_far _VermilionCityGambler1SSAnneDepartedText
|
|
text_end
|
|
|
|
VermilionCitySailor1Text:
|
|
text_asm
|
|
CheckEvent EVENT_SS_ANNE_LEFT
|
|
jr nz, .ship_departed
|
|
ld a, [wSpritePlayerStateData1FacingDirection]
|
|
cp SPRITE_FACING_RIGHT
|
|
jr z, .greet_player
|
|
ld hl, .inFrontOfOrBehindGuardCoords
|
|
call ArePlayerCoordsInArray
|
|
jr nc, .greet_player_and_check_ticket
|
|
.greet_player
|
|
ld hl, .WelcomeToSSAnneText
|
|
call PrintText
|
|
jr .end
|
|
.greet_player_and_check_ticket
|
|
ld hl, .DoYouHaveATicketText
|
|
call PrintText
|
|
ld b, S_S_TICKET
|
|
predef GetQuantityOfItemInBag
|
|
ld a, b
|
|
and a
|
|
jr nz, .player_has_ticket
|
|
ld hl, .YouNeedATicketText
|
|
call PrintText
|
|
jr .end
|
|
.player_has_ticket
|
|
ld hl, .FlashedTicketText
|
|
call PrintText
|
|
ld a, SCRIPT_VERMILIONCITY_PLAYER_ALLOWED_TO_PASS
|
|
ld [wVermilionCityCurScript], a
|
|
jr .end
|
|
.ship_departed
|
|
ld hl, .ShipSetSailText
|
|
call PrintText
|
|
.end
|
|
jp TextScriptEnd
|
|
|
|
.inFrontOfOrBehindGuardCoords
|
|
dbmapcoord 19, 29 ; in front of guard
|
|
dbmapcoord 19, 31 ; behind guard
|
|
db -1 ; end
|
|
|
|
.WelcomeToSSAnneText:
|
|
text_far _VermilionCitySailor1WelcomeToSSAnneText
|
|
text_end
|
|
|
|
.DoYouHaveATicketText:
|
|
text_far _VermilionCitySailor1DoYouHaveATicketText
|
|
text_end
|
|
|
|
.FlashedTicketText:
|
|
text_far _VermilionCitySailor1FlashedTicketText
|
|
text_end
|
|
|
|
.YouNeedATicketText:
|
|
text_far _VermilionCitySailor1YouNeedATicketText
|
|
text_end
|
|
|
|
.ShipSetSailText:
|
|
text_far _VermilionCitySailor1ShipSetSailText
|
|
text_end
|
|
|
|
VermilionCityGambler2Text:
|
|
text_far _VermilionCityGambler2Text
|
|
text_end
|
|
|
|
VermilionCityMachopText:
|
|
text_far _VermilionCityMachopText
|
|
text_asm
|
|
ld a, MACHOP
|
|
call PlayCry
|
|
call WaitForSoundToFinish
|
|
ld hl, .StompingTheLandFlatText
|
|
ret
|
|
|
|
.StompingTheLandFlatText:
|
|
text_far _VermilionCityMachopStompingTheLandFlatText
|
|
text_end
|
|
|
|
VermilionCitySailor2Text:
|
|
text_far _VermilionCitySailor2Text
|
|
text_end
|
|
|
|
VermilionCitySignText:
|
|
text_far _VermilionCitySignText
|
|
text_end
|
|
|
|
VermilionCityNoticeSignText:
|
|
text_far _VermilionCityNoticeSignText
|
|
text_end
|
|
|
|
VermilionCityPokemonFanClubSignText:
|
|
text_far _VermilionCityPokemonFanClubSignText
|
|
text_end
|
|
|
|
VermilionCityGymSignText:
|
|
text_far _VermilionCityGymSignText
|
|
text_end
|
|
|
|
VermilionCityHarborSignText:
|
|
text_far _VermilionCityHarborSignText
|
|
text_end
|