diff options
author | yenatch <yenatch@gmail.com> | 2013-02-28 17:28:35 -0500 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2013-02-28 17:28:35 -0500 |
commit | 767cc1376b076db56a6773d49a129d6acc6a5378 (patch) | |
tree | 0adba09834b24c4772cea39294a64246ee8a7274 | |
parent | 37355aef99a0172fe3cf260b2368af8fac8cc60a (diff) |
GetSquareRoot
-rw-r--r-- | main.asm | 34 |
1 files changed, 33 insertions, 1 deletions
@@ -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] |