summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2012-01-21 22:56:46 -0600
committerBryan Bishop <kanzure@gmail.com>2012-01-21 22:56:46 -0600
commite51029c125fa45c8f605c6307f4980fe28dd36b3 (patch)
tree78e82556f6e3eff69949841dd8e3aa24af719e14
parent2d2d187399efc6e16bc0c506931202fd6779806b (diff)
commenting for DecrementPP from DarkShikari
hg-commit-id: 4fc5d67d4912
-rw-r--r--common.asm57
1 files changed, 34 insertions, 23 deletions
diff --git a/common.asm b/common.asm
index ba082d97..ee63f3d5 100644
--- a/common.asm
+++ b/common.asm
@@ -44432,32 +44432,43 @@ SECTION "bank1A",DATA,BANK[$1A]
DecrementPP: ; 0x68000
; after using a move, decrement pp in battle and (if not transformed?) in party
- ld a,[de]
- cp a,STRUGGLE
- ret z
- ld hl,$D062
- ld a,[hli]
- and a,7
- ret nz
- bit 6,[hl]
- ret nz
- ld hl,$D02D ; PP of first move (in battle)
+ ld a, [de]
+ cp a, STRUGGLE
+ ret z ; if the pokemon is using "struggle", there's nothing to do
+ ; we don't decrement PP for "struggle"
+ ld hl, $D062
+ ld a, [hli] ; load the $D062 pokemon status flags and increment hl to load the
+ ; $D063 status flags later
+ and a, 7 ; check to see if bits 0, 1, or 2 are set
+ ret nz ; if any of these statuses are true, don't decrement PP
+ bit 6, [hl] ; check 6th bit status flag on $D063
+ ret nz ; and return if it is set
+ ld hl, $D02D ; PP of first move (in battle)
call .DecrementPP\@
- ld a,[$D064]
- bit 3,a ; XXX transform status?
- ret nz
-
- ld hl,$D188 ; PP of first move (in party)
- ld a,[$CC2F] ; which mon in party is active
- ld bc,$2C
- call AddNTimes
+ ld a, [$D064] ; load pokemon status bits?
+ bit 3, a ; XXX transform status?
+ ret nz ; If it is, return. Pokemon Red stores the "current pokemon's" PP
+ ; separately from the "Pokemon in your party's" PP. This is
+ ; duplication -- in all cases *other* than Pokemon with Transform.
+ ; Normally, this means we have to go on and make the same
+ ; modification to the "party's pokemon" PP that we made to the
+ ; "current pokemon's" PP. But, if we're dealing with a Transformed
+ ; Pokemon, it has separate PP for the move set that it copied from
+ ; its opponent, which is *not* the same as its real PP as part of your
+ ; party. So we return, and don't do that part.
+
+ ld hl, $D188 ; PP of first move (in party)
+ ld a, [$CC2F] ; which mon in party is active
+ ld bc, $2C ; XXX probably size of party pokemon's data structure
+ call AddNTimes ; calculate address of the mon to modify
.DecrementPP\@
- ld a,[$CC2E] ; which move (0, 1, 2, 3) did we use?
- ld c,a
- ld b,0
- add hl,bc
- dec [hl] ; Decrement PP
+ ld a, [$CC2E] ; which move (0, 1, 2, 3) did we use?
+ ld c, a
+ ld b, 0
+ add hl ,bc ; calculate the address in memory of the PP we need to decrement
+ ; based on the move chosen.
+ dec [hl] ; Decrement PP
ret
; 0x6802f