diff options
Diffstat (limited to 'battle')
-rw-r--r-- | battle/core.asm | 46 | ||||
-rw-r--r-- | battle/effect_commands.asm | 151 |
2 files changed, 100 insertions, 97 deletions
diff --git a/battle/core.asm b/battle/core.asm index c44400baa..291d6162c 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -5093,14 +5093,14 @@ DrawEnemyHUD: ; 3e043 rr a srl b rr a - ld [$ffb6], a + ld [hProduct + 3], a ld a, b - ld [$ffb5], a + ld [hProduct + 2], a .asm_3e105 - ld a, [$ffb5] + ld a, [hProduct + 2] ld [hDividend + 0], a - ld a, [$ffb6] + ld a, [hProduct + 3] ld [hDividend + 1], a ld a, $2 ld b, a @@ -7796,17 +7796,17 @@ Function3f0d4: ; 3f0d4 DoubleExp: ; 3f106 push bc - ld a, [$ffb5] + ld a, [hProduct + 2] ld b, a - ld a, [$ffb6] + ld a, [hProduct + 3] ld c, a srl b rr c add c - ld [$ffb6], a - ld a, [$ffb5] + ld [hProduct + 3], a + ld a, [hProduct + 2] adc b - ld [$ffb5], a + ld [hProduct + 2], a pop bc ret ; 3f11b @@ -7846,10 +7846,10 @@ Function3f136: ; 3f136 cp MAX_LEVEL jp nc, .asm_3f219 - ld a, [$ffb6] + ld a, [hProduct + 3] ld [wd004], a push af - ld a, [$ffb5] + ld a, [hProduct + 2] ld [wd003], a push af xor a @@ -7883,11 +7883,11 @@ endr .asm_3f186 ld d, MAX_LEVEL callab CalcExpAtLevel - ld a, [hMultiplicand] + ld a, [hProduct + 1] ld b, a - ld a, [$ffb5] + ld a, [hProduct + 2] ld c, a - ld a, [$ffb6] + ld a, [hProduct + 3] ld d, a ld hl, TempMonExp + 2 ld a, [hld] @@ -7958,9 +7958,9 @@ endr call Function3f22c call Function3dfe pop af - ld [$ffb5], a + ld [hProduct + 2], a pop af - ld [$ffb6], a + ld [hProduct + 3], a .asm_3f219 pop bc @@ -8264,14 +8264,14 @@ Function3f39c: ; 3f39c push af inc d callab CalcExpAtLevel - ld hl, $ffb6 + ld hl, hProduct + 3 ld a, [hl] - ld [$ffba], a + ld [hPrintNum8], a pop bc sub b ld [hld], a ld a, [hl] - ld [$ffb9], a + ld [hPrintNum7], a pop bc sbc b ld [hld], a @@ -8281,7 +8281,7 @@ Function3f39c: ; 3f39c sbc b ld [hl], a pop de - ld hl, $ffb5 + ld hl, hProduct + 2 ld a, [hli] push af ld a, [hl] @@ -8289,13 +8289,13 @@ Function3f39c: ; 3f39c ld a, [de] dec de ld c, a - ld a, [$ffba] + ld a, [hPrintNum8] sub c ld [hld], a ld a, [de] dec de ld b, a - ld a, [$ffb9] + ld a, [hPrintNum7] sbc b ld [hld], a ld a, [de] @@ -9194,7 +9194,7 @@ endr add hl, bc dec d jr nz, .asm_3fa62 - ld bc, $ffee + ld bc, -18 add hl, bc push hl diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm index d31e635b3..1c5d117ca 100644 --- a/battle/effect_commands.asm +++ b/battle/effect_commands.asm @@ -1966,18 +1966,18 @@ BattleCommand_CheckHit: ; 34d32 ld a, [hQuotient + 1] or b jr nz, .asm_34ea2 - ld [$ffb5], a + ld [hQuotient + 1], a ld a, $1 - ld [$ffb6], a + ld [hQuotient + 2], a .asm_34ea2 ld b, c dec d jr nz, .asm_34e7a - ld a, [$ffb5] + ld a, [hQuotient + 1] and a - ld a, [$ffb6] + ld a, [hQuotient + 2] jr z, .asm_34eaf ld a, $ff @@ -2683,7 +2683,7 @@ BattleCommand_RageDamage: ; 3527b dec a add hl, bc jr nc, .asm_35290 - ld hl, $ffff + ld hl, -1 .asm_3529a ld a, h ld [CurDamage], a @@ -3371,33 +3371,33 @@ BattleCommand_DamageCalc: ; 35612 ; Selfdestruct and Explosion halve defense. cp EFFECT_EXPLOSION - jr nz, .asm_35620 + jr nz, .dont_explode srl c - jr nz, .asm_35620 + jr nz, .dont_explode inc c -.asm_35620 +.dont_explode ; Variable-hit moves and Conversion can have a power of 0. cp EFFECT_MULTI_HIT - jr z, .asm_3562b + jr z, .skip_zero_damage_check cp EFFECT_CONVERSION - jr z, .asm_3562b + jr z, .skip_zero_damage_check ; No damage if move power is 0. ld a, d and a ret z -.asm_3562b +.skip_zero_damage_check ; Minimum defense value is 1. ld a, c and a - jr nz, .asm_35631 + jr nz, .not_dividing_by_zero ld c, 1 -.asm_35631 +.not_dividing_by_zero xor a ld hl, hDividend @@ -3409,9 +3409,9 @@ endr ; Level * 2 ld a, e add a - jr nc, .asm_3563e + jr nc, .level_not_overflowing ld [hl], $1 -.asm_3563e +.level_not_overflowing inc hl ld [hli], a @@ -3493,44 +3493,44 @@ endr ; Update CurDamage (capped at 997). ld hl, CurDamage ld b, [hl] - ld a, [hQuotient + 2] + ld a, [hProduct + 3] add b - ld [$ffb6], a - jr nc, .asm_356a5 + ld [hProduct + 3], a + jr nc, .dont_cap_1 - ld a, [hQuotient + 1] + ld a, [hProduct + 2] inc a - ld [$ffb5], a + ld [hProduct + 2], a and a jr z, .Cap -.asm_356a5 - ld a, [$ffb3] +.dont_cap_1 + ld a, [hProduct] ld b, a - ld a, [$ffb4] + ld a, [hProduct + 1] or a jr nz, .Cap - ld a, [$ffb5] + ld a, [hProduct + 2] cp 998 / $100 - jr c, .asm_356bd + jr c, .dont_cap_2 cp 998 / $100 + 1 jr nc, .Cap - ld a, [$ffb6] + ld a, [hProduct + 3] cp 998 % $100 jr nc, .Cap -.asm_356bd +.dont_cap_2 inc hl - ld a, [$ffb6] + ld a, [hProduct + 3] ld b, [hl] add b ld [hld], a - ld a, [$ffb5] + ld a, [hProduct + 2] ld b, [hl] adc b ld [hl], a @@ -3538,7 +3538,7 @@ endr ld a, [hl] cp 998 / $100 - jr c, .asm_356df + jr c, .dont_cap_3 cp 998 / $100 + 1 jr nc, .Cap @@ -3546,7 +3546,7 @@ endr inc hl ld a, [hld] cp 998 % $100 - jr c, .asm_356df + jr c, .dont_cap_3 .Cap ld a, 997 / $100 @@ -3555,15 +3555,15 @@ endr ld [hld], a -.asm_356df +.dont_cap_3 ; Minimum neutral damage is 2 (bringing the cap to 999). inc hl ld a, [hl] add 2 ld [hld], a - jr nc, .asm_356e7 + jr nc, .dont_floor inc [hl] -.asm_356e7 +.dont_floor ld a, 1 and a @@ -3576,20 +3576,20 @@ endr ret z ; x2 - ld a, [$ffb6] + ld a, [hQuotient + 2] add a - ld [$ffb6], a + ld [hProduct + 3], a - ld a, [$ffb5] + ld a, [hQuotient + 1] rl a - ld [$ffb5], a + ld [hProduct + 2], a ; Cap at $ffff. ret nc ld a, $ff - ld [$ffb5], a - ld [$ffb6], a + ld [hProduct + 2], a + ld [hProduct + 3], a ret ; 35703 @@ -3623,55 +3623,56 @@ BattleCommand_ConstantDamage: ; 35726 ld hl, BattleMonLevel ld a, [hBattleTurn] and a - jr z, .asm_35731 + jr z, .got_turn ld hl, EnemyMonLevel -.asm_35731 +.got_turn ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_LEVEL_DAMAGE ld b, [hl] ld a, 0 - jr z, .asm_3578c + jr z, .got_power ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_PSYWAVE - jr z, .asm_35758 + jr z, .psywave cp EFFECT_SUPER_FANG - jr z, .asm_3576b + jr z, .super_fang cp EFFECT_REVERSAL - jr z, .asm_35792 + jr z, .reversal ld a, BATTLE_VARS_MOVE_POWER call GetBattleVar ld b, a ld a, $0 - jr .asm_3578c + jr .got_power -.asm_35758 +.psywave ld a, b srl a add b ld b, a -.asm_3575d +.psywave_loop call BattleRandom and a - jr z, .asm_3575d ; 35761 $fa + jr z, .psywave_loop ; 35761 $fa cp b - jr nc, .asm_3575d ; 35764 $f7 + jr nc, .psywave_loop ; 35764 $f7 ld b, a ld a, $0 - jr .asm_3578c ; 35769 $21 -.asm_3576b + jr .got_power ; 35769 $21 + +.super_fang ld hl, EnemyMonHP ld a, [hBattleTurn] and a - jr z, .asm_35776 ; 35771 $3 + jr z, .got_hp ; 35771 $3 ld hl, BattleMonHP -.asm_35776 +.got_hp ld a, [hli] srl a ld b, a @@ -3681,26 +3682,28 @@ BattleCommand_ConstantDamage: ; 35726 ld a, b pop bc and a - jr nz, .asm_3578c ; 35781 $9 + jr nz, .got_power ; 35781 $9 or b ld a, $0 - jr nz, .asm_3578c ; 35786 $4 + jr nz, .got_power ; 35786 $4 ld b, $1 - jr .asm_3578c ; 3578a $0 -.asm_3578c + jr .got_power ; 3578a $0 + +.got_power ld hl, CurDamage ld [hli], a ld [hl], b ret -.asm_35792 + +.reversal ld hl, BattleMonHP ld a, [hBattleTurn] and a - jr z, .asm_3579d ; 35798 $3 + jr z, .reversal_got_hp ; 35798 $3 ld hl, EnemyMonHP -.asm_3579d +.reversal_got_hp xor a - ld [$ffb3], a + ld [hDividend], a ld [hMultiplicand + 0], a ld a, [hli] ld [hMultiplicand + 1], a @@ -3715,9 +3718,9 @@ BattleCommand_ConstantDamage: ; 35726 ld [hDivisor], a ld a, b and a - jr z, .asm_357d6 + jr z, .skip_to_divide - ld a, [$ffb7] + ld a, [hProduct + 4] srl b rr a srl b @@ -3734,21 +3737,21 @@ BattleCommand_ConstantDamage: ; 35726 ld a, b ld [hDividend + 2], a -.asm_357d6 +.skip_to_divide ld b, $4 call Divide ld a, [hQuotient + 2] ld b, a ld hl, .FlailPower -.asm_357e1 +.reversal_loop ld a, [hli] cp b - jr nc, .asm_357e8 + jr nc, .break_loop inc hl - jr .asm_357e1 + jr .reversal_loop -.asm_357e8 +.break_loop ld a, [hBattleTurn] and a ld a, [hl] @@ -6277,16 +6280,16 @@ endr jr c, .not_maxed_out ld a, 999 % $100 - ld [$ffb6], a + ld [hQuotient + 2], a ld a, 999 / $100 - ld [$ffb5], a + ld [hQuotient + 1], a .not_maxed_out pop bc - ld a, [$ffb5] + ld a, [hQuotient + 1] ld [bc], a inc bc - ld a, [$ffb6] + ld a, [hQuotient + 2] ld [bc], a inc bc pop hl |