summaryrefslogtreecommitdiff
path: root/engine/routines/applypokerustick.asm
diff options
context:
space:
mode:
authorRemy Oukaour <remy.oukaour@gmail.com>2017-12-24 19:35:35 -0500
committerRemy Oukaour <remy.oukaour@gmail.com>2017-12-24 19:35:35 -0500
commit7d4486e6a34a5163575400f21e806471be496e3d (patch)
treec0cc5f242b92420325d12a9cdedd6c1a3bcc3a4f /engine/routines/applypokerustick.asm
parent15f1fc7c6ce0444ebfd87b1edc22da0ffd61c667 (diff)
Remove all code from main.asm (some labeled INCBINs, like out-of-context graphics, are still present)
engine/routines/ stores isolated out-of-context routines as individual files. It might be preferable later to append them to their related engine/ files in unique little SECTIONs, relying on the linkerscript to place them appropriately; or some other organization method. In the meantime, they're now easily findable apart from main.asm's other content.
Diffstat (limited to 'engine/routines/applypokerustick.asm')
-rw-r--r--engine/routines/applypokerustick.asm26
1 files changed, 26 insertions, 0 deletions
diff --git a/engine/routines/applypokerustick.asm b/engine/routines/applypokerustick.asm
new file mode 100644
index 000000000..3c97fdc5e
--- /dev/null
+++ b/engine/routines/applypokerustick.asm
@@ -0,0 +1,26 @@
+ApplyPokerusTick: ; 13988
+; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured.
+ ld hl, PartyMon1PokerusStatus ; PartyMon1 + MON_PKRS
+ ld a, [PartyCount]
+ and a
+ ret z ; make sure it's not wasting time on an empty party
+ ld c, a
+.loop
+ ld a, [hl]
+ and $f ; lower nybble is the number of days remaining
+ jr z, .next ; if already 0, skip
+ sub b ; subtract the number of days
+ jr nc, .ok ; max(result, 0)
+ xor a
+.ok
+ ld d, a ; back up this value because we need to preserve the strain (upper nybble)
+ ld a, [hl]
+ and $f0
+ add d
+ ld [hl], a ; this prevents a cured pokemon from recontracting pokerus
+.next
+ ld de, PARTYMON_STRUCT_LENGTH
+ add hl, de
+ dec c
+ jr nz, .loop
+ ret