diff options
Diffstat (limited to 'battle/core.asm')
-rw-r--r-- | battle/core.asm | 217 |
1 files changed, 114 insertions, 103 deletions
diff --git a/battle/core.asm b/battle/core.asm index 64246f723..d090593bb 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -149,7 +149,7 @@ WildFled_EnemyFled_LinkBattleCanceled: ; 3c0e5 call StdBattleTextBox .asm_3c118 - call Function3ceec + call StopDangerSound call Function3d2e0 jr c, .asm_3c126 @@ -264,40 +264,40 @@ Function3c1c0: ; 3c1c0 Function3c1d6: ; 3c1d6 ld a, [$ffcb] cp $1 - jr z, .asm_3c1fe - call Function3c23c + jr z, .CheckEnemyFirst + call CheckFaint_PlayerThenEnemy ret c call Function3ca26 - call Function3c23c + call CheckFaint_PlayerThenEnemy ret c call HandleWeather - call Function3c23c + call CheckFaint_PlayerThenEnemy ret c call Function3c874 - call Function3c23c + call CheckFaint_PlayerThenEnemy ret c call Function3c801 - call Function3c23c + call CheckFaint_PlayerThenEnemy ret c - jr .asm_3c21e + jr .NoMoreFaintingConditions -.asm_3c1fe - call Function3c25c +.CheckEnemyFirst + call CheckFaint_EnemyThenPlayer ret c call Function3ca26 - call Function3c25c + call CheckFaint_EnemyThenPlayer ret c call HandleWeather - call Function3c25c + call CheckFaint_EnemyThenPlayer ret c call Function3c874 - call Function3c25c + call CheckFaint_EnemyThenPlayer ret c call Function3c801 - call Function3c25c + call CheckFaint_EnemyThenPlayer ret c -.asm_3c21e +.NoMoreFaintingConditions call Function3c8eb call Function3c93c call HanleDefrost @@ -310,52 +310,52 @@ Function3c1d6: ; 3c1d6 jp Function3c4df ; 3c23c -Function3c23c: ; 3c23c +CheckFaint_PlayerThenEnemy: ; 3c23c call HasPlayerFainted - jr nz, .asm_3c24a - call Function3d14e + jr nz, .PlayerNotFainted + call HandlePlayerMonFaint ld a, [BattleEnded] and a - jr nz, .asm_3c25a + jr nz, .BattleIsOver -.asm_3c24a +.PlayerNotFainted call HasEnemyFainted - jr nz, .asm_3c258 - call Function3cd55 + jr nz, .BattleContinues + call HandleEnemyMonFaint ld a, [BattleEnded] and a - jr nz, .asm_3c25a + jr nz, .BattleIsOver -.asm_3c258 +.BattleContinues and a ret -.asm_3c25a +.BattleIsOver scf ret ; 3c25c -Function3c25c: ; 3c25c +CheckFaint_EnemyThenPlayer: ; 3c25c call HasEnemyFainted - jr nz, .asm_3c26a - call Function3cd55 + jr nz, .EnemyNotFainted + call HandleEnemyMonFaint ld a, [BattleEnded] and a - jr nz, .asm_3c27a + jr nz, .BattleIsOver -.asm_3c26a +.EnemyNotFainted call HasPlayerFainted - jr nz, .asm_3c278 - call Function3d14e + jr nz, .BattleContinues + call HandlePlayerMonFaint ld a, [BattleEnded] and a - jr nz, .asm_3c27a + jr nz, .BattleIsOver -.asm_3c278 +.BattleContinues and a ret -.asm_3c27a +.BattleIsOver scf ret ; 3c27c @@ -952,14 +952,14 @@ Function3c5fe: ; 3c5fe and a ret nz call HasPlayerFainted - jp z, Function3d14e + jp z, HandlePlayerMonFaint call HasEnemyFainted - jp z, Function3cd55 + jp z, HandleEnemyMonFaint .asm_3c62f call SetEnemyTurn call ResidualDamage - jp z, Function3cd55 + jp z, HandleEnemyMonFaint call RefreshBattleHuds call Function3c6cf call Function3d2e0 @@ -968,12 +968,12 @@ Function3c5fe: ; 3c5fe and a ret nz call HasEnemyFainted - jp z, Function3cd55 + jp z, HandleEnemyMonFaint call HasPlayerFainted - jp z, Function3d14e + jp z, HandlePlayerMonFaint call SetPlayerTurn call ResidualDamage - jp z, Function3d14e + jp z, HandlePlayerMonFaint call RefreshBattleHuds xor a ld [wd0ec], a @@ -994,14 +994,14 @@ Function3c664: ; 3c664 call Function3d2e0 ret c call HasEnemyFainted - jp z, Function3cd55 + jp z, HandleEnemyMonFaint call HasPlayerFainted - jp z, Function3d14e + jp z, HandlePlayerMonFaint push bc call SetPlayerTurn call ResidualDamage pop bc - jp z, Function3d14e + jp z, HandlePlayerMonFaint push bc call RefreshBattleHuds pop af @@ -1016,14 +1016,14 @@ Function3c664: ; 3c664 and a ret nz call HasPlayerFainted - jp z, Function3d14e + jp z, HandlePlayerMonFaint call HasEnemyFainted - jp z, Function3cd55 + jp z, HandleEnemyMonFaint .asm_3c6be call SetEnemyTurn call ResidualDamage - jp z, Function3cd55 + jp z, HandleEnemyMonFaint call RefreshBattleHuds xor a ld [wd0ec], a @@ -2095,12 +2095,12 @@ Function3cd3c: ; 3cd3c ret ; 3cd55 -Function3cd55: ; 3cd55 - call Function3cf14 +HandleEnemyMonFaint: ; 3cd55 + call FaintEnemyPokemon ld hl, BattleMonHP ld a, [hli] or [hl] - call z, Function3cef1 + call z, FaintYourPokemon xor a ld [wc6f7], a call Function3ce01 @@ -2121,15 +2121,15 @@ Function3cd55: ; 3cd55 ld a, [wBattleMode] dec a - jr nz, .asm_3cd8c + jr nz, .trainer ld a, 1 ld [BattleEnded], a ret -.asm_3cd8c - call Function3cf35 - jp z, Function3cfa4 +.trainer + call CheckEnemyTrainerDefeated + jp z, WinTrainerBattle ld hl, BattleMonHP ld a, [hli] @@ -2221,7 +2221,7 @@ Function3ce01: ; 3ce01 jr .asm_3ce37 .asm_3ce2f - call Function3ceec + call StopDangerSound ld a, $1 ld [wc6fd], a @@ -2342,20 +2342,20 @@ Function3ceaa: ; 3ceaa -Function3ceec: ; 3ceec +StopDangerSound: ; 3ceec xor a ld [Danger], a ret ; 3cef1 -Function3cef1: ; 3cef1 - call Function3ceec +FaintYourPokemon: ; 3cef1 + call StopDangerSound call WaitSFX ld a, $f0 ld [CryTracks], a ld a, [BattleMonSpecies] call PlayStereoCry - call Function3d43b + call PlayerMonFaintedAnimation hlcoord 9, 7 lb bc, 5, 11 call ClearBox @@ -2363,11 +2363,11 @@ Function3cef1: ; 3cef1 jp StdBattleTextBox ; 3cf14 -Function3cf14: ; 3cf14 +FaintEnemyPokemon: ; 3cf14 call WaitSFX ld de, SFX_KINESIS call PlaySFX - call Function3d432 + call EnemyMonFaintedAnimation ld de, SFX_FAINT call PlaySFX hlcoord 1, 0 @@ -2377,20 +2377,22 @@ Function3cf14: ; 3cf14 jp StdBattleTextBox ; 3cf35 -Function3cf35: ; 3cf35 +CheckEnemyTrainerDefeated: ; 3cf35 ld a, [OTPartyCount] ld b, a xor a ld hl, OTPartyMon1HP ld de, PartyMon2 - PartyMon1 -.asm_3cf40 + +.loop or [hl] inc hl or [hl] dec hl add hl, de dec b - jr nz, .asm_3cf40 + jr nz, .loop + and a ret ; 3cf4a @@ -2447,8 +2449,8 @@ EnemyPartyMonEntrance: ; 3cf78 ret ; 3cfa4 -Function3cfa4: ; 3cfa4 - call Function3ceec +WinTrainerBattle: ; 3cfa4 + call StopDangerSound ld a, $1 ld [wc6fd], a ld [BattleEnded], a @@ -2750,12 +2752,12 @@ KantoGymLeaders: db -1 -Function3d14e: ; 3d14e - call Function3cef1 +HandlePlayerMonFaint: ; 3d14e + call FaintYourPokemon ld hl, EnemyMonHP ld a, [hli] or [hl] - call z, Function3cf14 + call z, FaintEnemyPokemon ld a, $1 ld [wc6f7], a call Function3d1aa @@ -2766,20 +2768,20 @@ Function3d14e: ; 3d14e ld hl, EnemyMonHP ld a, [hli] or [hl] - jr nz, .asm_3d185 + jr nz, .notfainted call Function3ce01 ld a, [wBattleMode] dec a - jr nz, .asm_3d17f + jr nz, .trainer ld a, $1 ld [BattleEnded], a ret -.asm_3d17f - call Function3cf35 - jp z, Function3cfa4 +.trainer + call CheckEnemyTrainerDefeated + jp z, WinTrainerBattle -.asm_3d185 +.notfainted call Function3d1f8 jr nc, .asm_3d190 ld a, $1 @@ -3086,7 +3088,7 @@ LostBattle: ; 3d38e ; Remove the enemy from the screen. hlcoord 0, 0 - ld bc, $0815 + lb bc, 8, 21 call ClearBox call Function3ebd8 @@ -3103,7 +3105,7 @@ LostBattle: ; 3d38e .asm_3d3bd ; Remove the enemy from the screen. hlcoord 0, 0 - ld bc, $0815 + lb bc, 8, 21 call ClearBox call Function3ebd8 @@ -3131,7 +3133,7 @@ LostBattle: ; 3d38e .LostLinkBattle call UpdateEnemyMonInParty - call Function3cf35 + call CheckEnemyTrainerDefeated jr nz, .asm_3d40a ld hl, TiedAgainstText ld a, [wd0ee] @@ -3155,7 +3157,7 @@ LostBattle: ; 3d38e .asm_3d417 ; Remove the enemy from the screen. hlcoord 0, 0 - ld bc, $0815 + lb bc, 8, 21 call ClearBox call Function3ebd8 @@ -3169,38 +3171,40 @@ LostBattle: ; 3d38e ; 3d432 -Function3d432: ; 3d432 +EnemyMonFaintedAnimation: ; 3d432 hlcoord 12, 5 decoord 12, 6 - jp Function3d444 + jp MonFaintedAnimation ; 3d43b -Function3d43b: ; 3d43b +PlayerMonFaintedAnimation: ; 3d43b hlcoord 1, 10 decoord 1, 11 - jp Function3d444 + jp MonFaintedAnimation ; 3d444 -Function3d444: ; 3d444 +MonFaintedAnimation: ; 3d444 ld a, [wcfbe] push af set 6, a ld [wcfbe], a - ld b, $7 -.asm_3d44f + ld b, 7 + +.OuterLoop push bc push de push hl - ld b, $6 -.asm_3d454 + ld b, 6 + +.InnerLoop push bc push hl push de - ld bc, $0007 + ld bc, 7 call CopyBytes pop de pop hl - ld bc, -20 + ld bc, -SCREEN_WIDTH add hl, bc push hl ld h, d @@ -3211,7 +3215,8 @@ Function3d444: ; 3d444 pop hl pop bc dec b - jr nz, .asm_3d454 + jr nz, .InnerLoop + ld bc, 20 add hl, bc ld de, .Spaces @@ -3222,7 +3227,8 @@ Function3d444: ; 3d444 pop de pop bc dec b - jr nz, .asm_3d44f + jr nz, .OuterLoop + pop af ld [wcfbe], a ret @@ -4007,7 +4013,7 @@ Function3d8b3: ; 3d8b3 and $c0 add b ld [wd0ee], a - call Function3ceec + call StopDangerSound push de ld de, SFX_RUN call WaitPlaySFX @@ -4021,7 +4027,7 @@ Function3d8b3: ; 3d8b3 ret .asm_3d9f5 - call Function3ceec + call StopDangerSound ld hl, wcd2a bit 4, [hl] jr nz, .asm_3da05 @@ -4387,7 +4393,7 @@ Function3dc5b: ; 3dc5b ld hl, wc664 ld b, $0 predef FlagPredef - call Function3d43b + call PlayerMonFaintedAnimation ld hl, BattleText_PkmnFainted jr .asm_3dcdf @@ -4403,7 +4409,7 @@ Function3dc5b: ; 3dc5b ld de, SFX_FAINT call PlaySFX call WaitSFX - call Function3d432 + call EnemyMonFaintedAnimation ld hl, BattleText_EnemyPkmnFainted .asm_3dcdf @@ -6837,7 +6843,8 @@ Function3ebd8: ; 3ebd8 callab GetTrainerPic hlcoord 19, 0 ld c, $0 -.asm_3ebf3 + +.outer_loop inc c ld a, c cp $7 @@ -6848,14 +6855,16 @@ Function3ebd8: ; 3ebd8 ld d, $0 push bc push hl -.asm_3ec01 + +.inner_loop call Function3ec1a inc hl ld a, $7 add d ld d, a dec c - jr nz, .asm_3ec01 + jr nz, .inner_loop + ld a, $1 ld [hBGMapMode], a ld c, $4 @@ -6863,7 +6872,7 @@ Function3ebd8: ; 3ebd8 pop hl pop bc dec hl - jr .asm_3ebf3 + jr .outer_loop ; 3ec1a Function3ec1a: ; 3ec1a @@ -6871,13 +6880,15 @@ Function3ec1a: ; 3ec1a push de push bc ld e, $7 -.asm_3ec1f + +.loop ld [hl], d - ld bc, $0014 + ld bc, SCREEN_WIDTH add hl, bc inc d dec e - jr nz, .asm_3ec1f + jr nz, .loop + pop bc pop de pop hl |