mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-01-23 09:16:20 -08:00
Experience and level calculations
This commit is contained in:
parent
40eae001a1
commit
b1dc88b728
@ -7543,7 +7543,7 @@ endr
|
|||||||
call GetBaseData
|
call GetBaseData
|
||||||
push bc
|
push bc
|
||||||
ld d, MAX_LEVEL
|
ld d, MAX_LEVEL
|
||||||
callab Function50e47
|
callab CalcExpAtLevel
|
||||||
pop bc
|
pop bc
|
||||||
ld hl, $000a
|
ld hl, $000a
|
||||||
add hl, bc
|
add hl, bc
|
||||||
@ -7572,7 +7572,7 @@ endr
|
|||||||
xor a ; PARTYMON
|
xor a ; PARTYMON
|
||||||
ld [MonType], a
|
ld [MonType], a
|
||||||
predef CopyPkmnToTempMon
|
predef CopyPkmnToTempMon
|
||||||
callab Function50e1b
|
callab CalcLevel
|
||||||
pop bc
|
pop bc
|
||||||
ld hl, PartyMon1Level - PartyMon1
|
ld hl, PartyMon1Level - PartyMon1
|
||||||
add hl, bc
|
add hl, bc
|
||||||
@ -7864,7 +7864,7 @@ endr
|
|||||||
|
|
||||||
.asm_3f186
|
.asm_3f186
|
||||||
ld d, MAX_LEVEL
|
ld d, MAX_LEVEL
|
||||||
callab Function50e47
|
callab CalcExpAtLevel
|
||||||
ld a, [hMultiplicand]
|
ld a, [hMultiplicand]
|
||||||
ld b, a
|
ld b, a
|
||||||
ld a, [$ffb5]
|
ld a, [$ffb5]
|
||||||
@ -7887,7 +7887,7 @@ endr
|
|||||||
ld [hld], a
|
ld [hld], a
|
||||||
|
|
||||||
.asm_3f1a8
|
.asm_3f1a8
|
||||||
callab Function50e1b
|
callab CalcLevel
|
||||||
ld a, d
|
ld a, d
|
||||||
pop bc
|
pop bc
|
||||||
pop de
|
pop de
|
||||||
@ -8235,7 +8235,7 @@ Function3f39c: ; 3f39c
|
|||||||
push de
|
push de
|
||||||
ld d, b
|
ld d, b
|
||||||
push de
|
push de
|
||||||
callab Function50e47
|
callab CalcExpAtLevel
|
||||||
pop de
|
pop de
|
||||||
ld hl, hMultiplicand
|
ld hl, hMultiplicand
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
@ -8245,7 +8245,7 @@ Function3f39c: ; 3f39c
|
|||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
push af
|
push af
|
||||||
inc d
|
inc d
|
||||||
callab Function50e47
|
callab CalcExpAtLevel
|
||||||
ld hl, $ffb6
|
ld hl, $ffb6
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
ld [$ffba], a
|
ld [$ffba], a
|
||||||
|
@ -1407,11 +1407,11 @@ Function10955: ; 10955
|
|||||||
call DisableLCD
|
call DisableLCD
|
||||||
ld hl, PackMenuGFX
|
ld hl, PackMenuGFX
|
||||||
ld de, VTiles2
|
ld de, VTiles2
|
||||||
ld bc, $0600
|
ld bc, $60 tiles
|
||||||
ld a, BANK(PackMenuGFX)
|
ld a, BANK(PackMenuGFX)
|
||||||
call FarCopyBytes
|
call FarCopyBytes
|
||||||
hlcoord 0, 1
|
hlcoord 0, 1
|
||||||
ld bc, 220
|
ld bc, 11 * SCREEN_WIDTH
|
||||||
ld a, $24
|
ld a, $24
|
||||||
call ByteFill
|
call ByteFill
|
||||||
hlcoord 5, 1
|
hlcoord 5, 1
|
||||||
@ -1419,12 +1419,12 @@ Function10955: ; 10955
|
|||||||
call ClearBox
|
call ClearBox
|
||||||
hlcoord 0, 0
|
hlcoord 0, 0
|
||||||
ld a, $28
|
ld a, $28
|
||||||
ld c, $14
|
ld c, SCREEN_WIDTH
|
||||||
.asm_1098a
|
.loop
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
inc a
|
inc a
|
||||||
dec c
|
dec c
|
||||||
jr nz, .asm_1098a
|
jr nz, .loop
|
||||||
call DrawPocketName
|
call DrawPocketName
|
||||||
call Function109a5
|
call Function109a5
|
||||||
hlcoord 0, 12
|
hlcoord 0, 12
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
sprite_header: MACRO
|
sprite_header: MACRO
|
||||||
dw \1
|
dw \1
|
||||||
db \2 * $40, BANK(\1)
|
db \2 * 4 tiles, BANK(\1)
|
||||||
db \3, \4
|
db \3, \4
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
|
@ -1382,7 +1382,7 @@ RareCandy: ; ef14
|
|||||||
ld [CurPartyLevel], a
|
ld [CurPartyLevel], a
|
||||||
push de
|
push de
|
||||||
ld d, a
|
ld d, a
|
||||||
callba Function50e47
|
callba CalcExpAtLevel
|
||||||
|
|
||||||
pop de
|
pop de
|
||||||
ld a, PartyMon1Exp - PartyMon1
|
ld a, PartyMon1Exp - PartyMon1
|
||||||
|
@ -175,4 +175,5 @@ bcd: MACRO
|
|||||||
endr
|
endr
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
|
tiles EQUS "* $10"
|
||||||
tile EQUS "+ $10 *"
|
tile EQUS "+ $10 *"
|
||||||
|
144
main.asm
144
main.asm
@ -8068,7 +8068,7 @@ endr
|
|||||||
push de
|
push de
|
||||||
ld a, [CurPartyLevel]
|
ld a, [CurPartyLevel]
|
||||||
ld d, a
|
ld d, a
|
||||||
callab Function50e47
|
callab CalcExpAtLevel
|
||||||
pop de
|
pop de
|
||||||
ld a, [hMultiplicand]
|
ld a, [hMultiplicand]
|
||||||
ld [de], a
|
ld [de], a
|
||||||
@ -8527,7 +8527,7 @@ SentGetPkmnIntoFromBox: ; db3f
|
|||||||
add $2
|
add $2
|
||||||
ld [MonType], a
|
ld [MonType], a
|
||||||
predef CopyPkmnToTempMon
|
predef CopyPkmnToTempMon
|
||||||
callab Function50e1b
|
callab CalcLevel
|
||||||
ld a, d
|
ld a, d
|
||||||
ld [CurPartyLevel], a
|
ld [CurPartyLevel], a
|
||||||
pop hl
|
pop hl
|
||||||
@ -8777,7 +8777,7 @@ Functiondd64: ; dd64
|
|||||||
callba HealPartyMon
|
callba HealPartyMon
|
||||||
ld a, [CurPartyLevel]
|
ld a, [CurPartyLevel]
|
||||||
ld d, a
|
ld d, a
|
||||||
callab Function50e47
|
callab CalcExpAtLevel
|
||||||
pop bc
|
pop bc
|
||||||
ld hl, $0008
|
ld hl, $0008
|
||||||
add hl, bc
|
add hl, bc
|
||||||
@ -8892,7 +8892,7 @@ SentPkmnIntoBox: ; de6e
|
|||||||
push de
|
push de
|
||||||
ld a, [CurPartyLevel]
|
ld a, [CurPartyLevel]
|
||||||
ld d, a
|
ld d, a
|
||||||
callab Function50e47
|
callab CalcExpAtLevel
|
||||||
pop de
|
pop de
|
||||||
ld a, [hMultiplicand]
|
ld a, [hMultiplicand]
|
||||||
ld [de], a
|
ld [de], a
|
||||||
@ -10134,7 +10134,7 @@ Functione698: ; e698
|
|||||||
ld de, TempMon
|
ld de, TempMon
|
||||||
ld bc, $0020
|
ld bc, $0020
|
||||||
call CopyBytes
|
call CopyBytes
|
||||||
callab Function50e1b
|
callab CalcLevel
|
||||||
ld a, [wBreedMon1Level]
|
ld a, [wBreedMon1Level]
|
||||||
ld b, a
|
ld b, a
|
||||||
ld a, d
|
ld a, d
|
||||||
@ -10149,7 +10149,7 @@ Functione6b3: ; e6b3
|
|||||||
ld de, TempMon
|
ld de, TempMon
|
||||||
ld bc, $0020
|
ld bc, $0020
|
||||||
call CopyBytes
|
call CopyBytes
|
||||||
callab Function50e1b
|
callab CalcLevel
|
||||||
ld a, [wBreedMon2Level]
|
ld a, [wBreedMon2Level]
|
||||||
ld b, a
|
ld b, a
|
||||||
ld a, d
|
ld a, d
|
||||||
@ -16891,7 +16891,7 @@ LoadEmote:: ; 1442f
|
|||||||
|
|
||||||
emote_header: MACRO
|
emote_header: MACRO
|
||||||
dw \1
|
dw \1
|
||||||
db \2 * $10, BANK(\1)
|
db \2 tiles, BANK(\1)
|
||||||
dw \3
|
dw \3
|
||||||
ENDM
|
ENDM
|
||||||
|
|
||||||
@ -20345,7 +20345,7 @@ Function16a66: ; 16a66
|
|||||||
ld [hl], a
|
ld [hl], a
|
||||||
ld a, [CurPartyLevel]
|
ld a, [CurPartyLevel]
|
||||||
ld d, a
|
ld d, a
|
||||||
callab Function50e47
|
callab CalcExpAtLevel
|
||||||
ld hl, wEggMonExp
|
ld hl, wEggMonExp
|
||||||
ld a, [hMultiplicand]
|
ld a, [hMultiplicand]
|
||||||
ld [hli], a
|
ld [hli], a
|
||||||
@ -44560,7 +44560,7 @@ Function4e0e7: ; 4e0e7 (13:60e7)
|
|||||||
jr z, .asm_4e111
|
jr z, .asm_4e111
|
||||||
inc a
|
inc a
|
||||||
ld d, a
|
ld d, a
|
||||||
callba Function50e47
|
callba CalcExpAtLevel
|
||||||
rept 2
|
rept 2
|
||||||
ld hl, TempMonExp + 2
|
ld hl, TempMonExp + 2
|
||||||
endr
|
endr
|
||||||
@ -48102,43 +48102,43 @@ Function50db9: ; 50db9
|
|||||||
; 50e1b
|
; 50e1b
|
||||||
|
|
||||||
|
|
||||||
Function50e1b: ; 50e1b
|
CalcLevel: ; 50e1b
|
||||||
ld a, [TempMonSpecies]
|
ld a, [TempMonSpecies]
|
||||||
ld [CurSpecies], a
|
ld [CurSpecies], a
|
||||||
call GetBaseData
|
call GetBaseData
|
||||||
ld d, 1
|
ld d, 1
|
||||||
.asm_50e26
|
.next_level
|
||||||
inc d
|
inc d
|
||||||
ld a, d
|
ld a, d
|
||||||
cp (MAX_LEVEL + 1) % $100
|
cp (MAX_LEVEL + 1) % $100
|
||||||
jr z, .asm_50e45
|
jr z, .got_level
|
||||||
call Function50e47
|
call CalcExpAtLevel
|
||||||
push hl
|
push hl
|
||||||
ld hl, TempMonExp + 2
|
ld hl, TempMonExp + 2
|
||||||
ld a, [hMultiplicand + 2]
|
ld a, [hProduct + 3]
|
||||||
ld c, a
|
ld c, a
|
||||||
ld a, [hld]
|
ld a, [hld]
|
||||||
sub c
|
sub c
|
||||||
ld a, [hMultiplicand + 1]
|
ld a, [hProduct + 2]
|
||||||
ld c, a
|
ld c, a
|
||||||
ld a, [hld]
|
ld a, [hld]
|
||||||
sbc c
|
sbc c
|
||||||
ld a, [hMultiplicand + 0]
|
ld a, [hProduct + 1]
|
||||||
ld c, a
|
ld c, a
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
sbc c
|
sbc c
|
||||||
pop hl
|
pop hl
|
||||||
jr nc, .asm_50e26
|
jr nc, .next_level
|
||||||
|
|
||||||
.asm_50e45
|
.got_level
|
||||||
dec d
|
dec d
|
||||||
ret
|
ret
|
||||||
; 50e47
|
; 50e47
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Function50e47: ; 50e47
|
CalcExpAtLevel: ; 50e47
|
||||||
|
; (a/b)*n**3 + c*n**2 + d*n - e
|
||||||
ld a, [BaseGrowthRate]
|
ld a, [BaseGrowthRate]
|
||||||
rept 2
|
rept 2
|
||||||
add a
|
add a
|
||||||
@ -48147,36 +48147,38 @@ endr
|
|||||||
ld b, 0
|
ld b, 0
|
||||||
ld hl, GrowthRates
|
ld hl, GrowthRates
|
||||||
add hl, bc
|
add hl, bc
|
||||||
call Function50eed
|
; Cube the level
|
||||||
|
call .LevelSquared
|
||||||
ld a, d
|
ld a, d
|
||||||
ld [hMultiplier], a
|
ld [hMultiplier], a
|
||||||
call Multiply
|
call Multiply
|
||||||
|
|
||||||
|
; Multiply by a
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
and $f0
|
and $f0
|
||||||
swap a
|
swap a
|
||||||
ld [hMultiplier], a
|
ld [hMultiplier], a
|
||||||
call Multiply
|
call Multiply
|
||||||
|
; Divide by b
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
and $f
|
and $f
|
||||||
ld [hDivisor], a
|
ld [hDivisor], a
|
||||||
ld b, $4
|
ld b, 4
|
||||||
call Divide
|
call Divide
|
||||||
|
; Push the cubic term to the stack
|
||||||
ld a, [hQuotient + 0]
|
ld a, [hQuotient + 0]
|
||||||
push af
|
push af
|
||||||
ld a, [hQuotient + 1]
|
ld a, [hQuotient + 1]
|
||||||
push af
|
push af
|
||||||
ld a, [hQuotient + 2]
|
ld a, [hQuotient + 2]
|
||||||
push af
|
push af
|
||||||
|
; Square the level and multiply by the lower 7 bits of c
|
||||||
call Function50eed
|
call .LevelSquared
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
and $7f
|
and $7f
|
||||||
ld [hMultiplier], a
|
ld [hMultiplier], a
|
||||||
call Multiply
|
call Multiply
|
||||||
|
; Push the absolute value of the quadratic term to the stack
|
||||||
ld a, [hProduct + 1]
|
ld a, [hProduct + 1]
|
||||||
push af
|
push af
|
||||||
ld a, [hProduct + 2]
|
ld a, [hProduct + 2]
|
||||||
@ -48185,7 +48187,7 @@ endr
|
|||||||
push af
|
push af
|
||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
push af
|
push af
|
||||||
|
; Multiply the level by d
|
||||||
xor a
|
xor a
|
||||||
ld [hMultiplicand + 0], a
|
ld [hMultiplicand + 0], a
|
||||||
ld [hMultiplicand + 1], a
|
ld [hMultiplicand + 1], a
|
||||||
@ -48194,68 +48196,70 @@ endr
|
|||||||
ld a, [hli]
|
ld a, [hli]
|
||||||
ld [hMultiplier], a
|
ld [hMultiplier], a
|
||||||
call Multiply
|
call Multiply
|
||||||
|
; Subtract e
|
||||||
ld b, [hl]
|
ld b, [hl]
|
||||||
ld a, [hProduct + 3]
|
ld a, [hProduct + 3]
|
||||||
sub b
|
sub b
|
||||||
ld [$ffb6], a
|
ld [hMultiplicand + 2], a
|
||||||
ld b, $0
|
ld b, $0
|
||||||
ld a, [hProduct + 2]
|
ld a, [hProduct + 2]
|
||||||
sbc b
|
sbc b
|
||||||
ld [$ffb5], a
|
ld [hMultiplicand + 1], a
|
||||||
|
ld a, [hProduct + 1]
|
||||||
|
sbc b
|
||||||
|
ld [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]
|
||||||
|
add b
|
||||||
|
ld [hMultiplicand + 2], a
|
||||||
|
pop bc
|
||||||
|
ld a, [hProduct + 2]
|
||||||
|
adc b
|
||||||
|
ld [hMultiplicand + 1], a
|
||||||
|
pop bc
|
||||||
|
ld a, [hProduct + 1]
|
||||||
|
adc b
|
||||||
|
ld [hMultiplicand], a
|
||||||
|
jr .done_quadratic
|
||||||
|
|
||||||
|
.subtract
|
||||||
|
; Subtract c*n**2 from (d*n - e)
|
||||||
|
pop bc
|
||||||
|
ld a, [hProduct + 3]
|
||||||
|
sub b
|
||||||
|
ld [hMultiplicand + 2], a
|
||||||
|
pop bc
|
||||||
|
ld a, [hProduct + 2]
|
||||||
|
sbc b
|
||||||
|
ld [hMultiplicand + 1], a
|
||||||
|
pop bc
|
||||||
ld a, [hProduct + 1]
|
ld a, [hProduct + 1]
|
||||||
sbc b
|
sbc b
|
||||||
ld [hMultiplicand], a
|
ld [hMultiplicand], a
|
||||||
|
|
||||||
pop af
|
.done_quadratic
|
||||||
and $80
|
; Add (a/b)*n**3 to (d*n - e +/- c*n**2)
|
||||||
jr nz, .asm_50ec8
|
|
||||||
|
|
||||||
pop bc
|
pop bc
|
||||||
ld a, [$ffb6]
|
ld a, [hProduct + 3]
|
||||||
add b
|
add b
|
||||||
ld [$ffb6], a
|
ld [hMultiplicand + 2], a
|
||||||
pop bc
|
pop bc
|
||||||
ld a, [$ffb5]
|
ld a, [hProduct + 2]
|
||||||
adc b
|
adc b
|
||||||
ld [$ffb5], a
|
ld [hMultiplicand + 1], a
|
||||||
pop bc
|
pop bc
|
||||||
ld a, [hMultiplicand]
|
ld a, [hProduct + 1]
|
||||||
adc b
|
|
||||||
ld [hMultiplicand], a
|
|
||||||
jr .asm_50eda
|
|
||||||
|
|
||||||
.asm_50ec8
|
|
||||||
pop bc
|
|
||||||
ld a, [$ffb6]
|
|
||||||
sub b
|
|
||||||
ld [$ffb6], a
|
|
||||||
pop bc
|
|
||||||
ld a, [$ffb5]
|
|
||||||
sbc b
|
|
||||||
ld [$ffb5], a
|
|
||||||
pop bc
|
|
||||||
ld a, [hMultiplicand]
|
|
||||||
sbc b
|
|
||||||
ld [hMultiplicand], a
|
|
||||||
|
|
||||||
.asm_50eda
|
|
||||||
pop bc
|
|
||||||
ld a, [$ffb6]
|
|
||||||
add b
|
|
||||||
ld [$ffb6], a
|
|
||||||
pop bc
|
|
||||||
ld a, [$ffb5]
|
|
||||||
adc b
|
|
||||||
ld [$ffb5], a
|
|
||||||
pop bc
|
|
||||||
ld a, [hMultiplicand]
|
|
||||||
adc b
|
adc b
|
||||||
ld [hMultiplicand], a
|
ld [hMultiplicand], a
|
||||||
ret
|
ret
|
||||||
; 50eed
|
; 50eed
|
||||||
|
|
||||||
Function50eed: ; 50eed
|
.LevelSquared: ; 50eed
|
||||||
xor a
|
xor a
|
||||||
ld [hMultiplicand + 0], a
|
ld [hMultiplicand + 0], a
|
||||||
ld [hMultiplicand + 1], a
|
ld [hMultiplicand + 1], a
|
||||||
|
Loading…
x
Reference in New Issue
Block a user