diff options
author | Remy Oukaour <remy.oukaour@gmail.com> | 2017-12-24 19:35:35 -0500 |
---|---|---|
committer | Remy Oukaour <remy.oukaour@gmail.com> | 2017-12-24 19:35:35 -0500 |
commit | 7d4486e6a34a5163575400f21e806471be496e3d (patch) | |
tree | c0cc5f242b92420325d12a9cdedd6c1a3bcc3a4f /engine/routines/getsquareroot.asm | |
parent | 15f1fc7c6ce0444ebfd87b1edc22da0ffd61c667 (diff) |
Remove all code from main.asm (some labeled INCBINs, like out-of-context graphics, are still present)
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.
Diffstat (limited to 'engine/routines/getsquareroot.asm')
-rw-r--r-- | engine/routines/getsquareroot.asm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/engine/routines/getsquareroot.asm b/engine/routines/getsquareroot.asm new file mode 100644 index 000000000..009d9f4fe --- /dev/null +++ b/engine/routines/getsquareroot.asm @@ -0,0 +1,30 @@ +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 |