pokered/engine/battle/15.asm
yenatch 40c17c906b Remove most static wram addresses. Use labels instead.
For unknown addresses, use "w<address>".

Label overleads are still an issue.
2014-05-26 22:04:39 -07:00

366 lines
5.7 KiB
NASM
Executable file

GainExperience: ; 5524f (15:524f)
ld a, [W_ISLINKBATTLE] ; W_ISLINKBATTLE
cp $4
ret z
call Func_5546c
ld hl, W_PARTYMON1_NUM ; W_PARTYMON1_NUM (aliases: W_PARTYMON1DATA)
xor a
ld [wWhichPokemon], a ; wWhichPokemon
Func_5525f: ; 5525f (15:525f)
inc hl
ld a, [hli]
or [hl]
jp z, Func_55436
push hl
ld hl, W_PLAYERMONSALIVEFLAGS
ld a, [wWhichPokemon] ; wWhichPokemon
ld c, a
ld b, $2
ld a, $10 ; FlagActionPredef
call Predef
ld a, c
and a
pop hl
jp z, Func_55436
ld de, $10
add hl, de
ld d, h
ld e, l
ld hl, wd002
ld c, $5
.asm_55285
ld a, [hli]
ld b, a
ld a, [de]
add b
ld [de], a
jr nc, .asm_5529a
dec de
ld a, [de]
inc a
jr z, .asm_55295
ld [de], a
inc de
jr .asm_5529a
.asm_55295
ld a, $ff
ld [de], a
inc de
ld [de], a
.asm_5529a
dec c
jr z, .asm_552a1
inc de
inc de
jr .asm_55285
.asm_552a1
xor a
ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
ld [$ff97], a
ld a, [wd008]
ld [$ff98], a
ld a, [W_ENEMYMONLEVEL] ; W_ENEMYMONLEVEL
ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
call Multiply
ld a, $7
ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
ld b, $4
call Divide
ld hl, $fff2
add hl, de
ld b, [hl]
inc hl
ld a, [wPlayerID] ; wPlayerID
cp b
jr nz, .asm_552d1
ld b, [hl]
ld a, [wPlayerID + 1] ; wd35a
cp b
ld a, $0
jr z, .asm_552d6
.asm_552d1
call Func_5549f
ld a, $1
.asm_552d6
ld [wcf4d], a
ld a, [W_ISINBATTLE] ; W_ISINBATTLE
dec a
call nz, Func_5549f
inc hl
inc hl
inc hl
ld b, [hl]
ld a, [$ff98]
ld [wcf4c], a
add b
ld [hld], a
ld b, [hl]
ld a, [$ff97]
ld [wcf4b], a
adc b
ld [hl], a
jr nc, .asm_552f8
dec hl
inc [hl]
inc hl
.asm_552f8
inc hl
push hl
ld a, [wWhichPokemon] ; wWhichPokemon
ld c, a
ld b, $0
ld hl, W_PARTYMON1 ; W_PARTYMON1
add hl, bc
ld a, [hl]
ld [wd0b5], a
call GetMonHeader
ld d, $64
callab CalcExperience
ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND)
ld b, a
ld a, [$ff97]
ld c, a
ld a, [$ff98]
ld d, a
pop hl
ld a, [hld]
sub d
ld a, [hld]
sbc c
ld a, [hl]
sbc b
jr c, .asm_5532e
ld a, b
ld [hli], a
ld a, c
ld [hli], a
ld a, d
ld [hld], a
dec hl
.asm_5532e
push hl
ld a, [wWhichPokemon] ; wWhichPokemon
ld hl, W_PARTYMON1NAME ; W_PARTYMON1NAME
call GetPartyMonName
ld hl, GainedText
call PrintText
xor a
ld [wcc49], a
call LoadMonData
pop hl
ld bc, $13
add hl, bc
push hl
callba Func_58f43
pop hl
ld a, [hl]
cp d
jp z, Func_55436
ld a, [W_CURENEMYLVL] ; W_CURENEMYLVL
push af
push hl
ld a, d
ld [W_CURENEMYLVL], a ; W_CURENEMYLVL
ld [hl], a
ld bc, $ffdf
add hl, bc
ld a, [hl]
ld [wd0b5], a
ld [wd11e], a
call GetMonHeader
ld bc, $23
add hl, bc
push hl
ld a, [hld]
ld c, a
ld b, [hl]
push bc
ld d, h
ld e, l
ld bc, $ffee
add hl, bc
ld b, $1
call CalcStats
pop bc
pop hl
ld a, [hld]
sub c
ld c, a
ld a, [hl]
sbc b
ld b, a
ld de, $ffe0
add hl, de
ld a, [hl]
add c
ld [hld], a
ld a, [hl]
adc b
ld [hl], a
ld a, [wPlayerMonNumber] ; wPlayerMonNumber
ld b, a
ld a, [wWhichPokemon] ; wWhichPokemon
cp b
jr nz, .asm_553f7
ld de, W_PLAYERMONCURHP ; wd015
ld a, [hli]
ld [de], a
inc de
ld a, [hl]
ld [de], a
ld bc, $1f
add hl, bc
push hl
ld de, W_PLAYERMONLEVEL ; W_PLAYERMONLEVEL
ld bc, $b
call CopyData
pop hl
ld a, [W_PLAYERBATTSTATUS3] ; W_PLAYERBATTSTATUS3
bit 3, a
jr nz, .asm_553c8
ld de, wcd0f
ld bc, $b
call CopyData
.asm_553c8
xor a
ld [wd11e], a
callab Func_3ed99
callab Func_3ed1a
callab Func_3ee19
callab Func_3cd60
callab Func_3ee94
call SaveScreenTilesToBuffer1
.asm_553f7
ld hl, GrewLevelText
call PrintText
xor a
ld [wcc49], a
call LoadMonData
ld d, $1
callab PrintStatsBox
call WaitForTextScrollButtonPress
call LoadScreenTilesFromBuffer1
xor a
ld [wcc49], a
ld a, [wd0b5]
ld [wd11e], a
ld a, $1a
call Predef ; indirect jump to Func_3af5b (3af5b (e:6f5b))
ld hl, wccd3
ld a, [wWhichPokemon] ; wWhichPokemon
ld c, a
ld b, $1
ld a, $10 ; FlagActionPredef
call Predef
pop hl
pop af
ld [W_CURENEMYLVL], a ; W_CURENEMYLVL
Func_55436: ; 55436 (15:5436)
ld a, [W_NUMINPARTY] ; W_NUMINPARTY
ld b, a
ld a, [wWhichPokemon] ; wWhichPokemon
inc a
cp b
jr z, .asm_55450
ld [wWhichPokemon], a ; wWhichPokemon
ld bc, $2c
ld hl, W_PARTYMON1_NUM ; W_PARTYMON1_NUM (aliases: W_PARTYMON1DATA)
call AddNTimes
jp Func_5525f
.asm_55450
ld hl, W_PLAYERMONSALIVEFLAGS
xor a
ld [hl], a
ld a, [wPlayerMonNumber] ; wPlayerMonNumber
ld c, a
ld b, $1
push bc
ld a, $10 ; FlagActionPredef
call Predef
ld hl, wccf5
xor a
ld [hl], a
pop bc
ld a, $10 ; FlagActionPredef
jp Predef
Func_5546c: ; 5546c (15:546c)
ld a, [W_PLAYERMONSALIVEFLAGS]
ld b, a
xor a
ld c, $8
ld d, $0
.asm_55475
xor a
srl b
adc d
ld d, a
dec c
jr nz, .asm_55475
cp $2
ret c
ld [wd11e], a
ld hl, wd002
ld c, $7
.asm_55488
xor a
ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
ld a, [hl]
ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
ld a, [wd11e]
ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
ld b, $2
call Divide
ld a, [$ff98]
ld [hli], a
dec c
jr nz, .asm_55488
ret
Func_5549f: ; 5549f (15:549f)
ld a, [$ff97]
ld b, a
ld a, [$ff98]
ld c, a
srl b
rr c
add c
ld [$ff98], a
ld a, [$ff97]
adc b
ld [$ff97], a
ret
GainedText: ; 554b2 (15:54b2)
TX_FAR _GainedText
db $08 ; asm
ld a, [wcc5b]
ld hl, WithExpAllText
and a
ret nz
ld hl, ExpPointsText
ld a, [wcf4d]
and a
ret z
ld hl, BoostedText
ret
WithExpAllText: ; 554cb (15:54cb)
TX_FAR _WithExpAllText
db $08 ; asm
ld hl, ExpPointsText
ret
BoostedText: ; 554d4 (15:54d4)
TX_FAR _BoostedText
ExpPointsText: ; 554d8 (15:54d8)
TX_FAR _ExpPointsText
db "@"
GrewLevelText: ; 554dd (15:54dd)
TX_FAR _GrewLevelText
db $0b
db "@"