mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-11-16 11:27:33 -08:00
7d4486e6a3
engine/routines/ stores isolated out-of-context routines as individual files. It might be preferable later to append them to their related engine/ files in unique little SECTIONs, relying on the linkerscript to place them appropriately; or some other organization method. In the meantime, they're now easily findable apart from main.asm's other content.
31 lines
480 B
NASM
31 lines
480 B
NASM
GetSquareRoot: ; 13b87
|
|
; 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
|
|
cp $ff
|
|
ret z
|
|
|
|
; Iterate over the table until b**2 >= de.
|
|
ld a, [hli]
|
|
sub e
|
|
ld a, [hli]
|
|
sbc d
|
|
|
|
jr c, .loop
|
|
ret
|
|
|
|
.Squares: ; 13b98
|
|
root set 1
|
|
rept $ff
|
|
dw root*root
|
|
root set root+1
|
|
endr
|