pokered/scripts/PokemonTower2F.asm
vulcandth d001ced41b
Add macros, constants, and labels for map scripts and text (#367)
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.
2023-07-13 21:27:56 -04:00

194 lines
4.4 KiB
NASM

PokemonTower2F_Script:
call EnableAutoTextBoxDrawing
ld hl, PokemonTower2F_ScriptPointers
ld a, [wPokemonTower2FCurScript]
jp CallFunctionInTable
PokemonTower2FResetRivalEncounter:
xor a ; SCRIPT_POKEMONTOWER2F_DEFAULT
ld [wJoyIgnore], a
ld [wPokemonTower2FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower2F_ScriptPointers:
def_script_pointers
dw_const PokemonTower2FDefaultScript, SCRIPT_POKEMONTOWER2F_DEFAULT
dw_const PokemonTower2FDefeatedRivalScript, SCRIPT_POKEMONTOWER2F_DEFEATED_RIVAL
dw_const PokemonTower2FRivalExitsScript, SCRIPT_POKEMONTOWER2F_RIVAL_EXITS
PokemonTower2FDefaultScript:
IF DEF(_DEBUG)
call DebugPressedOrHeldB
ret nz
ENDC
CheckEvent EVENT_BEAT_POKEMON_TOWER_RIVAL
ret nz
ld hl, PokemonTower2FRivalEncounterEventCoords
call ArePlayerCoordsInArray
ret nc
ld a, SFX_STOP_ALL_MUSIC
ld [wNewSoundID], a
call PlaySound
ld c, BANK(Music_MeetRival)
ld a, MUSIC_MEET_RIVAL
call PlayMusic
ResetEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
ld a, [wCoordIndex]
cp $1
ld a, PLAYER_DIR_UP
ld b, SPRITE_FACING_DOWN
jr nz, .player_below_rival
; the rival is on the left side and the player is on the right side
SetEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
ld a, PLAYER_DIR_LEFT
ld b, SPRITE_FACING_RIGHT
.player_below_rival
ld [wPlayerMovingDirection], a
ld a, POKEMONTOWER2F_RIVAL
ldh [hSpriteIndex], a
ld a, b
ldh [hSpriteFacingDirection], a
call SetSpriteFacingDirectionAndDelay
ld a, TEXT_POKEMONTOWER2F_RIVAL
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
xor a
ldh [hJoyHeld], a
ldh [hJoyPressed], a
ret
PokemonTower2FRivalEncounterEventCoords:
dbmapcoord 15, 5
dbmapcoord 14, 6
db $0F ; end? (should be $ff?)
PokemonTower2FDefeatedRivalScript:
ld a, [wIsInBattle]
cp $ff
jp z, PokemonTower2FResetRivalEncounter
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
SetEvent EVENT_BEAT_POKEMON_TOWER_RIVAL
ld a, TEXT_POKEMONTOWER2F_RIVAL
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld de, PokemonTower2FRivalDownThenRightMovement
CheckEvent EVENT_POKEMON_TOWER_RIVAL_ON_LEFT
jr nz, .got_movement
ld de, PokemonTower2FRivalRightThenDownMovement
.got_movement
ld a, POKEMONTOWER2F_RIVAL
ldh [hSpriteIndex], a
call MoveSprite
ld a, SFX_STOP_ALL_MUSIC
ld [wNewSoundID], a
call PlaySound
farcall Music_RivalAlternateStart
ld a, SCRIPT_POKEMONTOWER2F_RIVAL_EXITS
ld [wPokemonTower2FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower2FRivalRightThenDownMovement:
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db -1 ; end
PokemonTower2FRivalDownThenRightMovement:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
PokemonTower2FRivalExitsScript:
ld a, [wd730]
bit 0, a
ret nz
ld a, HS_POKEMON_TOWER_2F_RIVAL
ld [wMissableObjectIndex], a
predef HideObject
xor a
ld [wJoyIgnore], a
call PlayDefaultMusic
ld a, SCRIPT_POKEMONTOWER2F_DEFAULT
ld [wPokemonTower2FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower2F_TextPointers:
def_text_pointers
dw_const PokemonTower2FRivalText, TEXT_POKEMONTOWER2F_RIVAL
dw_const PokemonTower2FChannelerText, TEXT_POKEMONTOWER2F_CHANNELER
PokemonTower2FRivalText:
text_asm
CheckEvent EVENT_BEAT_POKEMON_TOWER_RIVAL
jr z, .do_battle
ld hl, .HowsYourDexText
call PrintText
jr .text_script_end
.do_battle
ld hl, .WhatBringsYouHereText
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
ld hl, .DefeatedText
ld de, .VictoryText
call SaveEndBattleTextPointers
ld a, OPP_RIVAL2
ld [wCurOpponent], a
; select which team to use during the encounter
ld a, [wRivalStarter]
cp STARTER2
jr nz, .NotSquirtle
ld a, $4
jr .done
.NotSquirtle
cp STARTER3
jr nz, .Charmander
ld a, $5
jr .done
.Charmander
ld a, $6
.done
ld [wTrainerNo], a
ld a, SCRIPT_POKEMONTOWER2F_DEFEATED_RIVAL
ld [wPokemonTower2FCurScript], a
ld [wCurMapScript], a
.text_script_end
jp TextScriptEnd
.WhatBringsYouHereText:
text_far _PokemonTower2FRivalWhatBringsYouHereText
text_end
.DefeatedText:
text_far _PokemonTower2FRivalDefeatedText
text_end
.VictoryText:
text_far _PokemonTower2FRivalVictoryText
text_end
.HowsYourDexText:
text_far _PokemonTower2FRivalHowsYourDexText
text_end
PokemonTower2FChannelerText:
text_far _PokemonTower2FChannelerText
text_end