summaryrefslogtreecommitdiff
path: root/engine/experience.asm
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2015-07-18 20:49:52 -0700
committerYamaArashi <shadow962@live.com>2015-07-18 21:58:55 -0700
commitc169073eed4f0362ef42170098a141a2fcbd71d0 (patch)
treea4f97ff8eff1a9fc80cadc4dba3fe9d088410656 /engine/experience.asm
parentb96ef8d2d495b8c39f703742e8c1965c774fc54f (diff)
misc
Diffstat (limited to 'engine/experience.asm')
-rwxr-xr-xengine/experience.asm84
1 files changed, 44 insertions, 40 deletions
diff --git a/engine/experience.asm b/engine/experience.asm
index 752536cf..b43fbcf9 100755
--- a/engine/experience.asm
+++ b/engine/experience.asm
@@ -10,15 +10,15 @@ CalcLevelFromExperience: ; 58f43 (16:4f43)
push hl
ld hl, wLoadedMonExp + 2 ; current exp
; compare exp needed for level d with current exp
- ld a, [H_MULTIPLICAND + 2]
+ ld a, [hExperience + 2]
ld c, a
ld a, [hld]
sub c
- ld a, [H_MULTIPLICAND + 1]
+ ld a, [hExperience + 1]
ld c, a
ld a, [hld]
sbc c
- ld a, [H_MULTIPLICAND]
+ ld a, [hExperience]
ld c, a
ld a, [hl]
sbc c
@@ -33,7 +33,7 @@ CalcExperience: ; 58f6a (16:4f6a)
add a
add a
ld c, a
- ld b, $0
+ ld b, 0
ld hl, GrowthRateTable
add hl, bc
call CalcDSquared
@@ -50,96 +50,100 @@ CalcExperience: ; 58f6a (16:4f6a)
ld [H_DIVISOR], a
ld b, $4
call Divide
- ld a, [H_MULTIPLICAND] ; (aliases: H_NUMTOPRINT)
+ ld a, [H_QUOTIENT + 1]
push af
- ld a, [H_MULTIPLICAND+1]
+ ld a, [H_QUOTIENT + 2]
push af
- ld a, [H_MULTIPLICAND+2]
+ ld a, [H_QUOTIENT + 3]
push af
call CalcDSquared
ld a, [hl]
and $7f
ld [H_MULTIPLIER], a
call Multiply
- ld a, [H_MULTIPLICAND] ; (aliases: H_NUMTOPRINT)
+ ld a, [H_PRODUCT + 1]
push af
- ld a, [H_MULTIPLICAND+1]
+ ld a, [H_PRODUCT + 2]
push af
- ld a, [H_MULTIPLICAND+2]
+ ld a, [H_PRODUCT + 3]
push af
ld a, [hli]
push af
xor a
ld [H_MULTIPLICAND], a
- ld [H_MULTIPLICAND+1], a
+ ld [H_MULTIPLICAND + 1], a
ld a, d
- ld [H_MULTIPLICAND+2], a
+ ld [H_MULTIPLICAND + 2], a
ld a, [hli]
ld [H_MULTIPLIER], a
call Multiply
ld b, [hl]
- ld a, [H_MULTIPLICAND+2]
+ ld a, [H_PRODUCT + 3]
sub b
- ld [H_MULTIPLICAND+2], a
+ ld [H_PRODUCT + 3], a
ld b, $0
- ld a, [H_MULTIPLICAND+1]
+ ld a, [H_PRODUCT + 2]
sbc b
- ld [H_MULTIPLICAND+1], a
- ld a, [H_MULTIPLICAND]
+ ld [H_PRODUCT + 2], a
+ ld a, [H_PRODUCT + 1]
sbc b
- ld [H_MULTIPLICAND], a
+ ld [H_PRODUCT + 1], a
+; The difference of the linear term and the constant term consists of 3 bytes
+; starting at H_PRODUCT + 1. Below, hExperience (an alias of that address) will
+; be used instead for the further work of adding or subtracting the squared
+; term and adding the cubed term.
pop af
and $80
jr nz, .subtractSquaredTerm ; check sign
pop bc
- ld a, [H_MULTIPLICAND+2]
+ ld a, [hExperience + 2]
add b
- ld [H_MULTIPLICAND+2], a
+ ld [hExperience + 2], a
pop bc
- ld a, [H_MULTIPLICAND+1]
+ ld a, [hExperience + 1]
adc b
- ld [H_MULTIPLICAND+1], a
+ ld [hExperience + 1], a
pop bc
- ld a, [H_MULTIPLICAND]
+ ld a, [hExperience]
adc b
- ld [H_MULTIPLICAND], a
+ ld [hExperience], a
jr .addCubedTerm
.subtractSquaredTerm
pop bc
- ld a, [H_MULTIPLICAND+2]
+ ld a, [hExperience + 2]
sub b
- ld [H_MULTIPLICAND+2], a
+ ld [hExperience + 2], a
pop bc
- ld a, [H_MULTIPLICAND+1]
+ ld a, [hExperience + 1]
sbc b
- ld [H_MULTIPLICAND+1], a
+ ld [hExperience + 1], a
pop bc
- ld a, [H_MULTIPLICAND]
+ ld a, [hExperience]
sbc b
- ld [H_MULTIPLICAND], a
+ ld [hExperience], a
.addCubedTerm
pop bc
- ld a, [H_MULTIPLICAND+2]
+ ld a, [hExperience + 2]
add b
- ld [H_MULTIPLICAND+2], a
+ ld [hExperience + 2], a
pop bc
- ld a, [H_MULTIPLICAND+1]
+ ld a, [hExperience + 1]
adc b
- ld [H_MULTIPLICAND+1], a
+ ld [hExperience + 1], a
pop bc
- ld a, [H_MULTIPLICAND]
+ ld a, [hExperience]
adc b
- ld [H_MULTIPLICAND], a
+ ld [hExperience], a
ret
; calculates d*d
CalcDSquared: ; 59010 (16:5010)
xor a
- ld [H_MULTIPLICAND], a ; (aliases: H_NUMTOPRINT)
- ld [H_MULTIPLICAND+1], a
+ ld [H_MULTIPLICAND], a
+ ld [H_MULTIPLICAND + 1], a
ld a, d
- ld [H_MULTIPLICAND+2], a
- ld [H_MULTIPLIER], a ; (aliases: H_DIVISOR, H_REMAINDER, H_POWEROFTEN)
+ ld [H_MULTIPLICAND + 2], a
+ ld [H_MULTIPLIER], a
jp Multiply
; each entry has the following scheme: