mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-09-17 02:30:50 +12:00

This fixes the executive music bug and ensures Giovanni also gets it. I removed the female Executive since it's usually just Ariana. Can use it another time if something comes up, but right now, no need.
210 lines
3.3 KiB
NASM
210 lines
3.3 KiB
NASM
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
|
|
|
|
farcall RegionCheck
|
|
ld a, e
|
|
and a
|
|
jr nz, .kantowild
|
|
|
|
ld de, MUSIC_JOHTO_WILD_BATTLE
|
|
ld a, [wTimeOfDay]
|
|
cp NITE_F
|
|
jr nz, .done
|
|
ld de, MUSIC_JOHTO_WILD_BATTLE_NIGHT
|
|
jr .done
|
|
|
|
.kantowild
|
|
ld de, MUSIC_KANTO_WILD_BATTLE
|
|
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
|
|
cp COATGIOVANNI
|
|
jr z, .done
|
|
cp EXECUTIVEM ; placeholder
|
|
jr z, .done
|
|
cp ARCHER
|
|
jr z, .done
|
|
cp ARIANA
|
|
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 PASSERBY
|
|
jr z, .done
|
|
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 a, [wLinkMode]
|
|
and a
|
|
jr nz, .johtotrainer
|
|
|
|
farcall RegionCheck
|
|
ld a, e
|
|
and a
|
|
jr nz, .kantotrainer
|
|
|
|
.johtotrainer
|
|
ld de, MUSIC_JOHTO_TRAINER_BATTLE
|
|
jr .done
|
|
|
|
.kantotrainer
|
|
ld de, MUSIC_KANTO_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
|