summaryrefslogtreecommitdiff
path: root/engine/pokemon/experience.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/pokemon/experience.asm')
-rw-r--r--engine/pokemon/experience.asm90
1 files changed, 45 insertions, 45 deletions
diff --git a/engine/pokemon/experience.asm b/engine/pokemon/experience.asm
index 3c3b10439..1dae3bb61 100644
--- a/engine/pokemon/experience.asm
+++ b/engine/pokemon/experience.asm
@@ -11,15 +11,15 @@ CalcLevel:
call CalcExpAtLevel
push hl
ld hl, wTempMonExp + 2
- ld a, [hProduct + 3]
+ ldh a, [hProduct + 3]
ld c, a
ld a, [hld]
sub c
- ld a, [hProduct + 2]
+ ldh a, [hProduct + 2]
ld c, a
ld a, [hld]
sbc c
- ld a, [hProduct + 1]
+ ldh a, [hProduct + 1]
ld c, a
ld a, [hl]
sbc c
@@ -42,121 +42,121 @@ CalcExpAtLevel:
; Cube the level
call .LevelSquared
ld a, d
- ld [hMultiplier], a
+ ldh [hMultiplier], a
call Multiply
; Multiply by a
ld a, [hl]
and $f0
swap a
- ld [hMultiplier], a
+ ldh [hMultiplier], a
call Multiply
; Divide by b
ld a, [hli]
and $f
- ld [hDivisor], a
+ ldh [hDivisor], a
ld b, 4
call Divide
; Push the cubic term to the stack
- ld a, [hQuotient + 0]
+ ldh a, [hQuotient + 0]
push af
- ld a, [hQuotient + 1]
+ ldh a, [hQuotient + 1]
push af
- ld a, [hQuotient + 2]
+ ldh a, [hQuotient + 2]
push af
; Square the level and multiply by the lower 7 bits of c
call .LevelSquared
ld a, [hl]
and $7f
- ld [hMultiplier], a
+ ldh [hMultiplier], a
call Multiply
; Push the absolute value of the quadratic term to the stack
- ld a, [hProduct + 1]
+ ldh a, [hProduct + 1]
push af
- ld a, [hProduct + 2]
+ ldh a, [hProduct + 2]
push af
- ld a, [hProduct + 3]
+ ldh a, [hProduct + 3]
push af
ld a, [hli]
push af
; Multiply the level by d
xor a
- ld [hMultiplicand + 0], a
- ld [hMultiplicand + 1], a
+ ldh [hMultiplicand + 0], a
+ ldh [hMultiplicand + 1], a
ld a, d
- ld [hMultiplicand + 2], a
+ ldh [hMultiplicand + 2], a
ld a, [hli]
- ld [hMultiplier], a
+ ldh [hMultiplier], a
call Multiply
; Subtract e
ld b, [hl]
- ld a, [hProduct + 3]
+ ldh a, [hProduct + 3]
sub b
- ld [hMultiplicand + 2], a
+ ldh [hMultiplicand + 2], a
ld b, $0
- ld a, [hProduct + 2]
+ ldh a, [hProduct + 2]
sbc b
- ld [hMultiplicand + 1], a
- ld a, [hProduct + 1]
+ ldh [hMultiplicand + 1], a
+ ldh a, [hProduct + 1]
sbc b
- ld [hMultiplicand], a
+ ldh [hMultiplicand], a
; If bit 7 of c is set, c is negative; otherwise, it's positive
pop af
and $80
jr nz, .subtract
; Add c*n**2 to (d*n - e)
pop bc
- ld a, [hProduct + 3]
+ ldh a, [hProduct + 3]
add b
- ld [hMultiplicand + 2], a
+ ldh [hMultiplicand + 2], a
pop bc
- ld a, [hProduct + 2]
+ ldh a, [hProduct + 2]
adc b
- ld [hMultiplicand + 1], a
+ ldh [hMultiplicand + 1], a
pop bc
- ld a, [hProduct + 1]
+ ldh a, [hProduct + 1]
adc b
- ld [hMultiplicand], a
+ ldh [hMultiplicand], a
jr .done_quadratic
.subtract
; Subtract c*n**2 from (d*n - e)
pop bc
- ld a, [hProduct + 3]
+ ldh a, [hProduct + 3]
sub b
- ld [hMultiplicand + 2], a
+ ldh [hMultiplicand + 2], a
pop bc
- ld a, [hProduct + 2]
+ ldh a, [hProduct + 2]
sbc b
- ld [hMultiplicand + 1], a
+ ldh [hMultiplicand + 1], a
pop bc
- ld a, [hProduct + 1]
+ ldh a, [hProduct + 1]
sbc b
- ld [hMultiplicand], a
+ ldh [hMultiplicand], a
.done_quadratic
; Add (a/b)*n**3 to (d*n - e +/- c*n**2)
pop bc
- ld a, [hProduct + 3]
+ ldh a, [hProduct + 3]
add b
- ld [hMultiplicand + 2], a
+ ldh [hMultiplicand + 2], a
pop bc
- ld a, [hProduct + 2]
+ ldh a, [hProduct + 2]
adc b
- ld [hMultiplicand + 1], a
+ ldh [hMultiplicand + 1], a
pop bc
- ld a, [hProduct + 1]
+ ldh a, [hProduct + 1]
adc b
- ld [hMultiplicand], a
+ ldh [hMultiplicand], a
ret
.LevelSquared:
xor a
- ld [hMultiplicand + 0], a
- ld [hMultiplicand + 1], a
+ ldh [hMultiplicand + 0], a
+ ldh [hMultiplicand + 1], a
ld a, d
- ld [hMultiplicand + 2], a
- ld [hMultiplier], a
+ ldh [hMultiplicand + 2], a
+ ldh [hMultiplier], a
jp Multiply
INCLUDE "data/growth_rates.asm"