summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlibjet <libj3t@gmail.com>2020-05-21 02:47:21 +0100
committerlibjet <libj3t@gmail.com>2020-05-21 02:47:21 +0100
commitb2eabaf767c3bf327e55ed4f528a0bd99418f56f (patch)
tree778e18a8f468a3cb8dbce25de1fa9cbddc32ec3b
parent3d99b8e8596b508621df807928a46e88b7afe3d1 (diff)
Add start_battle.asm
-rwxr-xr-xengine/battle/start_battle.asm144
-rw-r--r--main.asm7
-rw-r--r--wram.asm2
3 files changed, 146 insertions, 7 deletions
diff --git a/engine/battle/start_battle.asm b/engine/battle/start_battle.asm
new file mode 100755
index 00000000..7627a100
--- /dev/null
+++ b/engine/battle/start_battle.asm
@@ -0,0 +1,144 @@
+PlayBattleMusic:
+ push hl
+ push de
+ push bc
+
+ xor a
+ ld [wMusicFade], a
+ ld de, MUSIC_NONE
+ call PlayMusic
+ call DelayFrame
+ call MaxVolume
+
+ ; 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
+
+ ; They should have included EXECUTIVEM, EXECUTIVEF, and SCIENTIST too...
+ 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 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
diff --git a/main.asm b/main.asm
index e271f1c5..31eb277f 100644
--- a/main.asm
+++ b/main.asm
@@ -349,12 +349,7 @@ SECTION "bank11", ROMX
INCLUDE "engine/events/fruit_trees.asm"
INCLUDE "engine/battle/ai/move.asm"
INCLUDE "engine/pokedex/pokedex_2.asm"
-
-PlayBattleMusic::
- dr $44556, $445f2
-ClearBattleRAM::
- dr $445f2, $44648
-
+INCLUDE "engine/battle/start_battle.asm"
INCLUDE "engine/gfx/place_graphic.asm"
INCLUDE "engine/pokemon/mail.asm"
diff --git a/wram.asm b/wram.asm
index 59730d68..8e291533 100644
--- a/wram.asm
+++ b/wram.asm
@@ -599,7 +599,7 @@ wBattleAnimOAMPointerLo:: db ; ca18
ds 207
-wBattle: ; cae8
+wBattle:: ; cae8
wEnemyMoveStruct:: move_struct wEnemyMoveStruct
wPlayerMoveStruct:: move_struct wPlayerMoveStruct