Organize the engine/ directory, director's cut

Cleaned up `engine/routines`, in favor of moving files into more
appropriate directories. predef-related routines are now in top-level
`engine`.
`rtc/delete_save_change_clock.asm` has been split into both
`menus/delete_save.asm` and `rtc/reset_password.asm`.

Made a new subdirectory:
* engine/math: Contains all generic math-related routines.
This commit is contained in:
mid-kid
2018-03-25 18:24:14 +02:00
parent 0d9241889f
commit be76ee56a8
13 changed files with 52 additions and 53 deletions

View File

@@ -0,0 +1,32 @@
NUM_SQUARE_ROOTS EQU 255
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 NUM_SQUARE_ROOTS
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
x = 1
rept NUM_SQUARE_ROOTS
dw x * x
x = x + 1
endr