diff options
author | Bryan Bishop <kanzure@gmail.com> | 2012-01-21 22:56:46 -0600 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2012-01-21 22:56:46 -0600 |
commit | e51029c125fa45c8f605c6307f4980fe28dd36b3 (patch) | |
tree | 78e82556f6e3eff69949841dd8e3aa24af719e14 | |
parent | 2d2d187399efc6e16bc0c506931202fd6779806b (diff) |
commenting for DecrementPP from DarkShikari
hg-commit-id: 4fc5d67d4912
-rw-r--r-- | common.asm | 57 |
1 files changed, 34 insertions, 23 deletions
@@ -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 |