ref: b0d84c64a696b2525ba6aac846989eae661b1d67
parent: d11cac9e833a9c2188415cfeb6de7d4687336c2f
author: Rangi <[email protected]>
date: Sat Feb 3 08:26:34 EST 2018
Use fixed-point DIV function for a generalized sine_wave table macro
--- a/macros/code.asm
+++ b/macros/code.asm
@@ -41,8 +41,8 @@
; example usage in rejection sampling:
; .loop
; call Random
-; maskbits 30
-; cp 30
+; maskbits 26
+; cp 26
; jr nc, .loop
x = 1
rept 8
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -112,10 +112,11 @@
sine_wave: MACRO
-x = 0.0
+; \1 samples of sin(x) from x=0 to x<32768 (pi radians)
+x = 0
rept \1
dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up
-x = x + 1024.0 ; a circle has 65536.0 "degrees"
+x = x + DIV(32768, \1) ; a circle has 65536 "degrees"
endr
ENDM