mirror of
https://github.com/thornAvery/jep-hack.git
synced 2025-09-16 18:20:50 +12:00
72 lines
866 B
NASM
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
|