jep-hack/home/array.asm
Zeta_Null 2f8a41f833 First Commit
Upload literally everything from the pokecrystal16 expand-move-ID branch
2023-09-10 12:35:35 -04: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