mirror of
https://github.com/pret/pokered.git
synced 2024-10-23 06:58:24 +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.
194 lines
4.4 KiB
NASM
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
|