ShowLinkBattleParticipants: ; If we're not in a communications room, ; we don't need to be here. ld a, [wLinkMode] and a ret z farcall _ShowLinkBattleParticipants ld c, 150 call DelayFrames call ClearTilemap call ClearSprites ret FindFirstAliveMonAndStartBattle: xor a ldh [hMapAnims], a call DelayFrame ld b, PARTY_LENGTH ld hl, wPartyMon1HP ld de, PARTYMON_STRUCT_LENGTH - 1 .loop ld a, [hli] or [hl] jr nz, .okay add hl, de dec b jr nz, .loop .okay ld de, MON_LEVEL - MON_HP add hl, de ld a, [hl] ld [wBattleMonLevel], a predef DoBattleTransition farcall _LoadBattleFontsHPBar ld a, 1 ldh [hBGMapMode], a call ClearSprites call ClearTilemap xor a ldh [hBGMapMode], a ldh [hWY], a ldh [rWY], a ldh [hMapAnims], a ret PlayBattleMusic: push hl push de push bc xor a ld [wMusicFade], a ld de, MUSIC_NONE call PlayMusic call DelayFrame call MaxVolume ld a, [wBattleType] cp BATTLETYPE_SUICUNE ld de, MUSIC_SUICUNE_BATTLE jp z, .done cp BATTLETYPE_ROAMING jp z, .done ; Are we fighting a trainer? ld a, [wOtherTrainerClass] and a jr nz, .trainermusic ld de, MUSIC_JOHTO_WILD_BATTLE ld a, [wTimeOfDay] cp NITE_F jr nz, .done ld de, MUSIC_JOHTO_WILD_BATTLE_NIGHT jr .done .trainermusic ld de, MUSIC_CHAMPION_BATTLE cp CHAMPION jr z, .done cp RED jr z, .done ; BUG: Team Rocket battle music is not used for Executives or Scientists (see docs/bugs_and_glitches.md) ld de, MUSIC_ROCKET_BATTLE cp GRUNTM jr z, .done cp GRUNTF jr z, .done ld de, MUSIC_KANTO_GYM_LEADER_BATTLE farcall IsKantoGymLeader jr c, .done ; IsGymLeader also counts CHAMPION, RED, and the Kanto gym leaders ; but they have been taken care of before this ld de, MUSIC_JOHTO_GYM_LEADER_BATTLE farcall IsGymLeader jr c, .done ld de, MUSIC_RIVAL_BATTLE ld a, [wOtherTrainerClass] cp RIVAL1 jr z, .done cp RIVAL2 jr nz, .othertrainer ld a, [wOtherTrainerID] cp RIVAL2_2_CHIKORITA ; Rival in Indigo Plateau jr c, .done ld de, MUSIC_CHAMPION_BATTLE jr .done .othertrainer ld de, MUSIC_JOHTO_TRAINER_BATTLE .done call PlayMusic pop bc pop de pop hl ret ClearBattleRAM: xor a ld [wBattlePlayerAction], a ld [wBattleResult], a ld hl, wPartyMenuCursor ld [hli], a ld [hli], a ld [hli], a ld [hl], a ld [wMenuScrollPosition], a ld [wCriticalHit], a ld [wBattleMonSpecies], a ld [wBattleParticipantsNotFainted], a ld [wCurBattleMon], a ld [wForcedSwitch], a ld [wTimeOfDayPal], a ld [wPlayerTurnsTaken], a ld [wEnemyTurnsTaken], a ld [wEvolvableFlags], a ld hl, wPlayerHPPal ld [hli], a ld [hl], a ld hl, wBattleMonDVs ld [hli], a ld [hl], a ld hl, wEnemyMonDVs ld [hli], a ld [hl], a ; Clear the entire BattleMons area ld hl, wBattle ld bc, wBattleEnd - wBattle xor a call ByteFill callfar ResetEnemyStatLevels call ClearWindowData ld hl, hBGMapAddress xor a ; LOW(vBGMap0) ld [hli], a ld [hl], HIGH(vBGMap0) ret