pokered/scripts/SSAnne2F.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

216 lines
4.5 KiB
NASM

SSAnne2F_Script:
call EnableAutoTextBoxDrawing
ld hl, SSAnne2F_ScriptPointers
ld a, [wSSAnne2FCurScript]
jp CallFunctionInTable
SSAnne2FResetScripts:
xor a
ld [wJoyIgnore], a
ld [wSSAnne2FCurScript], a
ret
SSAnne2F_ScriptPointers:
def_script_pointers
dw_const SSAnne2FDefaultScript, SCRIPT_SSANNE2F_DEFAULT
dw_const SSAnne2FRivalStartBattleScript, SCRIPT_SSANNE2F_RIVAL_START_BATTLE
dw_const SSAnne2FRivalAfterBattleScript, SCRIPT_SSANNE2F_RIVAL_AFTER_BATTLE
dw_const SSAnne2FRivalExitScript, SCRIPT_SSANNE2F_RIVAL_EXIT
dw_const SSAnne2FNoopScript, SCRIPT_SSANNE2F_NOOP
SSAnne2FNoopScript:
ret
SSAnne2FDefaultScript:
ld hl, .PlayerCoordinatesArray
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
ld a, [wCoordIndex]
ldh [hSavedCoordIndex], a
ld a, HS_SS_ANNE_2F_RIVAL
ld [wMissableObjectIndex], a
predef ShowObject
call Delay3
ld a, SSANNE2F_RIVAL
ldh [hSpriteIndex], a
call SetSpriteMovementBytesToFF
xor a
ldh [hJoyHeld], a
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
ldh a, [hSavedCoordIndex]
cp $2
jr nz, .player_standing_right
ld de, .RivalDownFourMovement
jr .move_sprite
.player_standing_right
ld de, .RivalDownThreeMovement
.move_sprite
call MoveSprite
ld a, SCRIPT_SSANNE2F_RIVAL_START_BATTLE
ld [wSSAnne2FCurScript], a
ret
.RivalDownFourMovement:
db NPC_MOVEMENT_DOWN
.RivalDownThreeMovement:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
.PlayerCoordinatesArray:
dbmapcoord 36, 8
dbmapcoord 37, 8
db -1 ; end
SSAnne2FSetFacingDirectionScript:
ld a, [wXCoord]
cp 37
jr nz, .player_standing_left
ld a, PLAYER_DIR_LEFT
ld [wPlayerMovingDirection], a
ld a, SPRITE_FACING_RIGHT
jr .set_facing_direction
.player_standing_left
xor a ; SPRITE_FACING_DOWN
.set_facing_direction
ldh [hSpriteFacingDirection], a
ld a, SSANNE2F_RIVAL
ldh [hSpriteIndex], a
jp SetSpriteFacingDirectionAndDelay
SSAnne2FRivalStartBattleScript:
ld a, [wd730]
bit 0, a
ret nz
call SSAnne2FSetFacingDirectionScript
xor a
ld [wJoyIgnore], a
ld a, TEXT_SSANNE2F_RIVAL
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
call Delay3
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, $1
jr .done
.NotSquirtle
cp STARTER3
jr nz, .Charmander
ld a, $2
jr .done
.Charmander
ld a, $3
.done
ld [wTrainerNo], a
call SSAnne2FSetFacingDirectionScript
ld a, SCRIPT_SSANNE2F_RIVAL_AFTER_BATTLE
ld [wSSAnne2FCurScript], a
ret
SSAnne2FRivalAfterBattleScript:
ld a, [wIsInBattle]
cp $ff
jp z, SSAnne2FResetScripts
call SSAnne2FSetFacingDirectionScript
ld a, D_RIGHT | D_LEFT | D_UP | D_DOWN
ld [wJoyIgnore], a
ld a, TEXT_SSANNE2F_RIVAL_CUT_MASTER
ldh [hSpriteIndexOrTextID], a
call DisplayTextID
ld a, SSANNE2F_RIVAL
ldh [hSpriteIndex], a
call SetSpriteMovementBytesToFF
ld a, [wXCoord]
cp 37
jr nz, .player_standing_left
ld de, .RivalDownFourMovement
jr .move_sprite
.player_standing_left
ld de, .RivalWalkAroundPlayerMovement
.move_sprite
ld a, SSANNE2F_RIVAL
ldh [hSpriteIndex], a
call MoveSprite
ld a, SFX_STOP_ALL_MUSIC
ld [wNewSoundID], a
call PlaySound
farcall Music_RivalAlternateStart
ld a, SCRIPT_SSANNE2F_RIVAL_EXIT
ld [wSSAnne2FCurScript], a
ret
.RivalWalkAroundPlayerMovement:
db NPC_MOVEMENT_RIGHT
db NPC_MOVEMENT_DOWN
.RivalDownFourMovement:
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db NPC_MOVEMENT_DOWN
db -1 ; end
SSAnne2FRivalExitScript:
ld a, [wd730]
bit 0, a
ret nz
xor a
ld [wJoyIgnore], a
ld a, HS_SS_ANNE_2F_RIVAL
ld [wMissableObjectIndex], a
predef HideObject
call PlayDefaultMusic
ld a, SCRIPT_SSANNE2F_NOOP
ld [wSSAnne2FCurScript], a
ret
SSAnne2F_TextPointers:
def_text_pointers
dw_const SSAnne2FWaiterText, TEXT_SSANNE2F_WAITER
dw_const SSAnne2FRivalText, TEXT_SSANNE2F_RIVAL
dw_const SSAnne2FRivalCutMasterText, TEXT_SSANNE2F_RIVAL_CUT_MASTER
SSAnne2FWaiterText:
text_far _SSAnne2FWaiterText
text_end
SSAnne2FRivalText:
text_asm
ld hl, .Text
call PrintText
ld hl, wd72d
set 6, [hl]
set 7, [hl]
ld hl, SSAnne2FRivalDefeatedText
ld de, SSAnne2FRivalVictoryText
call SaveEndBattleTextPointers
jp TextScriptEnd
.Text:
text_far _SSAnne2FRivalText
text_end
SSAnne2FRivalDefeatedText:
text_far _SSAnne2FRivalDefeatedText
text_end
SSAnne2FRivalVictoryText:
text_far _SSAnne2FRivalVictoryText
text_end
SSAnne2FRivalCutMasterText:
text_far _SSAnne2FRivalCutMasterText
text_end