diff options
Diffstat (limited to 'engine/math')
-rwxr-xr-x | engine/math/math.asm | 23 | ||||
-rw-r--r-- | engine/math/sine.asm | 39 |
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 |