shithub: pokecrystal

Download patch

ref: 767cc1376b076db56a6773d49a129d6acc6a5378
parent: 37355aef99a0172fe3cf260b2368af8fac8cc60a
author: yenatch <[email protected]>
date: Thu Feb 28 12:28:35 EST 2013

GetSquareRoot

--- a/main.asm
+++ b/main.asm
@@ -4805,7 +4805,39 @@
 	ret
 ; 0x12e1b
 
-INCBIN "baserom.gbc",$12e1b,$13d96 - $12e1b
+INCBIN "baserom.gbc",$12e1b,$13b87 - $12e1b
+
+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
+; 13d96
 
 
 SECTION "bank5",DATA,BANK[$5]