diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2015-10-21 10:43:42 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-10-21 10:43:42 -0400 |
commit | 97cc513f54b6213a31070b0875fd85e920a2109b (patch) | |
tree | 29a92dcd0203ad6a48595c566fa61a350b6ec7d5 /items | |
parent | 6c25592b8c43afe9780968da88f9b06cbb526e72 (diff) |
Plus 4 on person events; feeble attempt to annotate color functions
Diffstat (limited to 'items')
-rw-r--r-- | items/item_effects.asm | 164 |
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 |