pokecrystal-board/engine/math/get_square_root.asm

31 lines
495 B
NASM
Raw Permalink Normal View History

DEF NUM_SQUARE_ROOTS EQU 255
2018-01-16 14:59:05 -08:00
2018-06-24 07:09:41 -07:00
GetSquareRoot:
; Return the square root of de in b.
; Rather than calculating the result, we take the index of the
; first value in a table of squares that isn't lower than de.
ld hl, .Squares
ld b, 0
.loop
; Make sure we don't go past the end of the table.
inc b
ld a, b
2018-01-16 14:59:05 -08:00
cp NUM_SQUARE_ROOTS
ret z
; Iterate over the table until b**2 >= de.
ld a, [hli]
sub e
ld a, [hli]
sbc d
jr c, .loop
ret
2018-06-24 07:09:41 -07:00
.Squares:
2021-04-19 13:31:37 -07:00
for x, 1, NUM_SQUARE_ROOTS + 1
dw x**2
2018-01-16 14:59:05 -08:00
endr