summaryrefslogtreecommitdiff
path: root/engine/math
diff options
context:
space:
mode:
Diffstat (limited to 'engine/math')
-rwxr-xr-xengine/math/math.asm23
-rw-r--r--engine/math/sine.asm39
2 files changed, 14 insertions, 48 deletions
diff --git a/engine/math/math.asm b/engine/math/math.asm
index cdac2d37..d5df3c34 100755
--- a/engine/math/math.asm
+++ b/engine/math/math.asm
@@ -1,11 +1,10 @@
-_Multiply:: ; 67bd
-
+_Multiply::
; hMultiplier is one byte.
ld a, 8
ld b, a
xor a
- ldh [hProduct], a
+ ldh [hMultiplicand - 1], a
ldh [hMathBuffer + 1], a
ldh [hMathBuffer + 2], a
ldh [hMathBuffer + 3], a
@@ -37,7 +36,7 @@ _Multiply:: ; 67bd
ldh a, [hMathBuffer + 1]
ld c, a
- ldh a, [hProduct]
+ ldh a, [hMultiplicand - 1]
adc c
ldh [hMathBuffer + 1], a
@@ -59,9 +58,9 @@ _Multiply:: ; 67bd
rla
ldh [hMultiplicand + 0], a
- ldh a, [hProduct]
+ ldh a, [hMultiplicand - 1]
rla
- ldh [hProduct], a
+ ldh [hMultiplicand - 1], a
jr .loop
@@ -80,7 +79,7 @@ _Multiply:: ; 67bd
ret
-_Divide:: ; 681d
+_Divide::
xor a
ldh [hMathBuffer + 0], a
ldh [hMathBuffer + 1], a
@@ -173,18 +172,18 @@ _Divide:: ; 681d
.done
ldh a, [hDividend + 1]
- ldh [hDivisor], a
+ ldh [hRemainder], a
ldh a, [hMathBuffer + 4]
- ldh [hDividend + 3], a
+ ldh [hQuotient + 3], a
ldh a, [hMathBuffer + 3]
- ldh [hDividend + 2], a
+ ldh [hQuotient + 2], a
ldh a, [hMathBuffer + 2]
- ldh [hDividend + 1], a
+ ldh [hQuotient + 1], a
ldh a, [hMathBuffer + 1]
- ldh [hDividend + 0], a
+ ldh [hQuotient + 0], a
ret
diff --git a/engine/math/sine.asm b/engine/math/sine.asm
index e22d785a..5db3bd60 100644
--- a/engine/math/sine.asm
+++ b/engine/math/sine.asm
@@ -1,40 +1,7 @@
-_Sine:: ; 8ac9 (2:4ac9)
+_Sine::
+; a = d * sin(e * pi/256)
ld a, e
- and $3f
- cp $20
- jr nc, .negative
- call .GetSine
- ld a, h
- ret
-.negative
- and $1f
- call .GetSine
- ld a, h
- xor $ff
- inc a
- ret
-
-.GetSine: ; 8adf (2:4adf)
- ld e, a
- ld a, d
- ld d, $0
- ld hl, .SineWave
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $0
-.loop
- srl a
- jr nc, .no_add
- add hl, de
-.no_add
- sla e
- rl d
- and a
- jr nz, .loop
- ret
+ calc_sine_wave .SineWave
.SineWave:
sine_table $100