Files
pokecrystal/home/array.asm
T
vulcandth 166e5b647d Update remaining wild-Pokémon-related tables to contain 16-bit IDs
Fix Fast Ball code doesn't work

Co-Authored-By: aaaaaa123456789 <aaaaaa123456789@acidch.at>
2025-11-26 21:34:34 -06:00

72 lines
866 B
NASM

IsInArray::
; Find value a for every de bytes in array hl.
; Return index in b and carry if found.
ld b, 0
ld c, a
.loop
ld a, [hl]
cp -1
jr z, .NotInArray
cp c
jr z, .InArray
inc b
add hl, de
jr .loop
.NotInArray:
and a
ret
.InArray:
scf
ret
IsInWordArray_NextItem:
add hl, de
IsInWordArray::
; Same as IsInArray, but for word values. The value is input in bc; index not returned.
ld a, [hli]
and [hl]
inc a
ret z
ld a, [hld]
cp b
jr nz, IsInWordArray_NextItem
ld a, [hl]
cp c
jr nz, IsInWordArray_NextItem
scf
ret
SkipNames::
; Skip a names.
ld bc, NAME_LENGTH
and a
ret z
.loop
add hl, bc
dec a
jr nz, .loop
ret
AddNTimes::
; Add bc * a to hl.
; Preserves bc
and a
ret z
push bc
.loop
rra ; and a from below and above resets carry
jr nc, .noadd
add hl, bc
.noadd
sla c
rl b
and a
jr nz, .loop
.done
pop bc
ret