summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.asm34
1 files changed, 33 insertions, 1 deletions
diff --git a/main.asm b/main.asm
index a90f66e81..a42a499a6 100644
--- a/main.asm
+++ b/main.asm
@@ -4805,7 +4805,39 @@ OpenPartyStats: ; 12e00
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]