mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
89 lines
1.2 KiB
NASM
89 lines
1.2 KiB
NASM
|
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
|