summaryrefslogtreecommitdiff
path: root/items
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2015-10-21 10:43:42 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2015-10-21 10:43:42 -0400
commit97cc513f54b6213a31070b0875fd85e920a2109b (patch)
tree29a92dcd0203ad6a48595c566fa61a350b6ec7d5 /items
parent6c25592b8c43afe9780968da88f9b06cbb526e72 (diff)
Plus 4 on person events; feeble attempt to annotate color functions
Diffstat (limited to 'items')
-rw-r--r--items/item_effects.asm164
1 files changed, 86 insertions, 78 deletions
diff --git a/items/item_effects.asm b/items/item_effects.asm
index 77f278ebd..9a529c9b6 100644
--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -2286,7 +2286,7 @@ PokeDoll: ; f48f
inc a
ld [wd232], a
ld a, [wd0ee]
- and $c0
+ and 3 << 6
or $2
ld [wd0ee], a
jp Functionf789
@@ -2368,7 +2368,7 @@ PokeFlute: ; f50c
.asm_f512
xor a
- ld [wd002], a
+ ld [MiscBuffer2], a
ld b, $ff ^ SLP
@@ -2391,7 +2391,7 @@ PokeFlute: ; f50c
and b
ld [hl], a
- ld a, [wd002]
+ ld a, [MiscBuffer2]
and a
ld hl, UnknownText_0xf56c
jp z, PrintText
@@ -2416,7 +2416,7 @@ PokeFlute: ; f50c
and SLP
jr z, .asm_f564
ld a, 1
- ld [wd002], a
+ ld [MiscBuffer2], a
.asm_f564
pop af
and b
@@ -2517,27 +2517,27 @@ MaxEther:
Elixer:
Mysteryberry: ; f5bf
ld a, [CurItem]
- ld [wd002], a
+ ld [MiscBuffer2], a
-.asm_f5c5
+.loop
ld b, $1
call Functionf1f9
jp c, Functionf6e0
-.asm_f5cd
- ld a, [wd002]
+.loop2
+ ld a, [MiscBuffer2]
cp MAX_ELIXER
- jp z, Functionf6af
+ jp z, Elixer_RestorePPofAllMoves
cp ELIXER
- jp z, Functionf6af
+ jp z, Elixer_RestorePPofAllMoves
ld hl, UnknownText_0xf725
- ld a, [wd002]
+ ld a, [MiscBuffer2]
cp PP_UP
- jr z, .asm_f5e7
+ jr z, .ppup
ld hl, UnknownText_0xf72a
-.asm_f5e7
+.ppup
call PrintText
ld a, [CurMoveNum]
@@ -2551,10 +2551,10 @@ Mysteryberry: ; f5bf
pop bc
ld a, b
ld [CurMoveNum], a
- jr nz, .asm_f5c5
+ jr nz, .loop
ld hl, PartyMon1Moves
ld bc, PartyMon2 - PartyMon1
- call Functionf963
+ call GetMthMoveOfNthPartymon
push hl
ld a, [hl]
@@ -2563,28 +2563,28 @@ Mysteryberry: ; f5bf
call CopyName1
pop hl
- ld a, [wd002]
+ ld a, [MiscBuffer2]
cp PP_UP
jp nz, Functionf6a7
ld a, [hl]
- cp $a6
- jr z, .asm_f62f
+ cp SKETCH
+ jr z, .CantUsePPUpOnSketch
ld bc, $0015
add hl, bc
ld a, [hl]
- cp $c0
- jr c, .asm_f637
+ cp 3 << 6
+ jr c, .do_ppup
-.asm_f62f
+.CantUsePPUpOnSketch
ld hl, UnknownText_0xf72f
call PrintText
- jr .asm_f5cd
+ jr .loop2
-.asm_f637
+.do_ppup
ld a, [hl]
- add $40
+ add 1 << 6
ld [hl], a
ld a, $1
ld [wd265], a
@@ -2657,37 +2657,37 @@ Functionf652: ; f652
; f6a7
Functionf6a7: ; f6a7
- call Functionf6e8
+ call RestorePP
jr nz, Functionf652
jp Functionf6dd
; f6af
-Functionf6af: ; f6af
+Elixer_RestorePPofAllMoves: ; f6af
xor a
ld hl, wcfa9
ld [hli], a
ld [hl], a
ld b, NUM_MOVES
-.asm_f6b7
+.moveLoop
push bc
ld hl, PartyMon1Moves
ld bc, PartyMon2 - PartyMon1
- call Functionf963
+ call GetMthMoveOfNthPartymon
ld a, [hl]
and a
- jr z, .asm_f6ce
+ jr z, .cant_restore_pp
- call Functionf6e8
- jr z, .asm_f6ce
+ call RestorePP
+ jr z, .cant_restore_pp
ld hl, wcfaa
inc [hl]
-.asm_f6ce
+.cant_restore_pp
ld hl, wcfa9
inc [hl]
pop bc
dec b
- jr nz, .asm_f6b7
+ jr nz, .moveLoop
ld a, [wcfaa]
and a
jp nz, Functionf652
@@ -2702,48 +2702,48 @@ Functionf6e0: ; f6e0
ret
; f6e8
-Functionf6e8: ; f6e8
+RestorePP: ; f6e8
xor a ; PARTYMON
ld [MonType], a
call Functionf8ec
ld hl, PartyMon1PP
ld bc, PartyMon2 - PartyMon1
- call Functionf963
+ call GetMthMoveOfNthPartymon
ld a, [wd265]
ld b, a
ld a, [hl]
- and $3f
+ and (1 << 6) - 1
cp b
- jr nc, .asm_f723
+ jr nc, .dont_restore
- ld a, [wd002]
+ ld a, [MiscBuffer2]
cp MAX_ELIXER
- jr z, .asm_f71d
+ jr z, .restore_all
cp MAX_ETHER
- jr z, .asm_f71d
+ jr z, .restore_all
ld c, 5
cp MYSTERYBERRY
- jr z, .asm_f715
+ jr z, .restore_some
ld c, 10
-.asm_f715
+.restore_some
ld a, [hl]
- and $3f
+ and (1 << 6) - 1
add c
cp b
- jr nc, .asm_f71d
+ jr nc, .restore_all
ld b, a
-.asm_f71d
+.restore_all
ld a, [hl]
- and $c0
+ and 3 << 6
or b
ld [hl], a
ret
-.asm_f723
+.dont_restore
xor a
ret
; f725
@@ -3127,9 +3127,9 @@ Functionf84c: ; f84c
.asm_f876
ld a, [hl]
- and $c0
- ld a, [de]
- call nz, Functionf881
+ and 3 << 6
+ ld a, [de] ; wasted cycle
+ call nz, ComputeMaxPP
.asm_f87d
inc hl
@@ -3139,8 +3139,9 @@ Functionf84c: ; f84c
-Functionf881: ; f881
+ComputeMaxPP: ; f881
push bc
+ ; Divide the base PP by 5.
ld a, [de]
ld [hDividend + 3], a
xor a
@@ -3151,6 +3152,7 @@ Functionf881: ; f881
ld [hDivisor], a
ld b, 4
call Divide
+ ; Get the number of PP, which are bits 6 and 7 of the PP value stored in RAM.
ld a, [hl]
ld b, a
swap a
@@ -3158,24 +3160,30 @@ Functionf881: ; f881
srl a
srl a
ld c, a
+ ; If this value is 0, we are done
and a
- jr z, .asm_f8b6
-.asm_f8a3
- ld a, [$ffb6]
+ jr z, .NoPPUp
+
+.loop
+ ; Normally, a move with 40 PP would have 64 PP with three PP Ups.
+ ; Since this would overflow into bit 6, we prevent that from happening
+ ; by decreasing the extra amount of PP each PP Up provides, resulting
+ ; in a maximum of 61.
+ ld a, [hQuotient + 2]
cp $8
- jr c, .asm_f8ab
+ jr c, .okay
ld a, $7
-.asm_f8ab
+.okay
add b
ld b, a
ld a, [wd265]
dec a
- jr z, .asm_f8b6
+ jr z, .NoPPUp
dec c
- jr nz, .asm_f8a3
+ jr nz, .loop
-.asm_f8b6
+.NoPPUp
ld [hl], b
pop bc
ret
@@ -3203,7 +3211,7 @@ Functionf8b9: ; f8b9
pop bc
pop de
ld a, [de]
- and $c0
+ and 3 << 6
ld b, a
ld a, [wd265]
add b
@@ -3229,30 +3237,30 @@ Functionf8ec: ; f8ec
ld hl, PartyMon1Moves
ld bc, PartyMon2 - PartyMon1
- jr z, .asm_f91a ; PARTYMON
+ jr z, .got_partymon ; PARTYMON
ld hl, OTPartyMon1Moves
dec a
- jr z, .asm_f91a ; OTPARTYMON
+ jr z, .got_partymon ; OTPARTYMON
ld hl, TempMonMoves
dec a
- jr z, .asm_f915 ; BOXMON
+ jr z, .got_nonpartymon ; BOXMON
ld hl, TempMonMoves ; Wasted cycles
dec a
- jr z, .asm_f915 ; BREEDMON
+ jr z, .got_nonpartymon ; BREEDMON
ld hl, BattleMonMoves ; WILDMON
-.asm_f915 ; BOXMON, BREEDMON, WILDMON
- call Functionf969
- jr .asm_f91d
+.got_nonpartymon ; BOXMON, BREEDMON, WILDMON
+ call GetMthMoveOfCurrentMon
+ jr .gotdatmove
-.asm_f91a ; PARTYMON, OTPARTYMON
- call Functionf963
+.got_partymon ; PARTYMON, OTPARTYMON
+ call GetMthMoveOfNthPartymon
-.asm_f91d
+.gotdatmove
ld a, [hl]
dec a
@@ -3271,12 +3279,12 @@ Functionf8ec: ; f8ec
ld bc, PartyMon1PP - PartyMon1Moves
ld a, [MonType]
cp WILDMON
- jr nz, .asm_f942
+ jr nz, .notwild
ld bc, EnemyMonPP - EnemyMonMoves
-.asm_f942
+.notwild
add hl, bc
ld a, [hl]
- and $c0
+ and 3 << 6
pop bc
or b
@@ -3284,10 +3292,10 @@ Functionf8ec: ; f8ec
ld [hl], a
xor a
ld [wd265], a
- ld a, b
- call Functionf881
+ ld a, b ; this gets lost anyway
+ call ComputeMaxPP
ld a, [hl]
- and $3f
+ and (1 << 6) - 1
ld [wd265], a
pop af
@@ -3297,11 +3305,11 @@ Functionf8ec: ; f8ec
ret
; f963
-Functionf963: ; f963
+GetMthMoveOfNthPartymon: ; f963
ld a, [CurPartyMon]
call AddNTimes
-Functionf969: ; f969
+GetMthMoveOfCurrentMon: ; f969
ld a, [wcfa9]
ld c, a
ld b, 0