diff options
author | Remy Oukaour <remy.oukaour@gmail.com> | 2017-12-26 18:45:04 -0500 |
---|---|---|
committer | Remy Oukaour <remy.oukaour@gmail.com> | 2017-12-26 18:45:04 -0500 |
commit | 35a3a19fda87d95e829aa99bf1b6cf18a839c1a6 (patch) | |
tree | 7dd8a2dc82721b02b336740219fd3fb5f72274a8 /engine/battle_anims/getpokeballwobble.asm | |
parent | b5417fafec7dd37cb4be391f3bd3d4541a2a381e (diff) |
Use "battle_anims" and "sprite_anims" for clarity, not just "anims"
Diffstat (limited to 'engine/battle_anims/getpokeballwobble.asm')
-rwxr-xr-x | engine/battle_anims/getpokeballwobble.asm | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/engine/battle_anims/getpokeballwobble.asm b/engine/battle_anims/getpokeballwobble.asm new file mode 100755 index 000000000..7fb4d3e38 --- /dev/null +++ b/engine/battle_anims/getpokeballwobble.asm @@ -0,0 +1,88 @@ +GetPokeBallWobble: ; f971 (3:7971) +; Returns whether a Poke Ball will wobble in the catch animation. +; Whether a Pokemon is caught is determined beforehand. + + push de + + ld a, [rSVBK] + ld d, a + push de + + ld a, 1 ; BANK(Buffer2) + ld [rSVBK], a + + ld a, [Buffer2] + inc a + ld [Buffer2], a + +; Wobble up to 3 times. + cp 3 + 1 + jr z, .finished + + ld a, [wWildMon] + and a + ld c, 0 ; next + jr nz, .done + + ld hl, .WobbleProbabilities + ld a, [Buffer1] + ld b, a +.loop + ld a, [hli] + cp b + jr nc, .checkwobble + inc hl + jr .loop + +.checkwobble + ld b, [hl] + call Random + cp b + ld c, 0 ; next + jr c, .done + ld c, 2 ; escaped + jr .done + +.finished + ld a, [wWildMon] + and a + ld c, 1 ; caught + jr nz, .done + ld c, 2 ; escaped + +.done + pop de + ld e, a + ld a, d + ld [rSVBK], a + ld a, e + pop de + ret + +.WobbleProbabilities: ; f9ba +; catch rate, chance of wobbling / 255 +; nLeft/255 = (nRight/255) ** 4 + db 1, 63 + db 2, 75 + db 3, 84 + db 4, 90 + db 5, 95 + db 7, 103 + db 10, 113 + db 15, 126 + db 20, 134 + db 30, 149 + db 40, 160 + db 50, 169 + db 60, 177 + db 80, 191 + db 100, 201 + db 120, 211 + db 140, 220 + db 160, 227 + db 180, 234 + db 200, 240 + db 220, 246 + db 240, 251 + db 254, 253 + db 255, 255 |