2022-06-06 21:25:42 +00:00
|
|
|
DEF NUM_SQUARE_ROOTS EQU 255
|
2018-01-16 22:59:05 +00:00
|
|
|
|
2018-06-24 14:09:41 +00:00
|
|
|
GetSquareRoot:
|
2017-12-16 01:10:54 +00:00
|
|
|
; 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.
|
|
|
|
|
2017-12-25 00:35:35 +00:00
|
|
|
ld hl, .Squares
|
2017-12-16 01:10:54 +00:00
|
|
|
ld b, 0
|
|
|
|
.loop
|
|
|
|
; Make sure we don't go past the end of the table.
|
|
|
|
inc b
|
|
|
|
ld a, b
|
2018-01-16 22:59:05 +00:00
|
|
|
cp NUM_SQUARE_ROOTS
|
2017-12-16 01:10:54 +00:00
|
|
|
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 14:09:41 +00:00
|
|
|
.Squares:
|
2021-04-19 20:31:37 +00:00
|
|
|
for x, 1, NUM_SQUARE_ROOTS + 1
|
|
|
|
dw x**2
|
2018-01-16 22:59:05 +00:00
|
|
|
endr
|