; Sinus table generator - using lua script, because sjasmplus itself does not have
; floating point arithmetics and sin/cos/... functions.
org $8000
sin_table: ; check listing file to see resulting table bytes
lua allpass ; EVERY pass must emit the machine code to not affect following labels
-- 256 bytes (index 0..255):
for i = 0, 255, 1 do
-- index 0..255 will cover angle range < 0, 2Pi )
-- i.e. going in sinus values 0 -> +1 -> 0 -> -1 -> 0
-- For different range, the /128.0 must be modified:
-- /256.0 is 0..Pi, /512.0 is 0..Pi/2, etc
-- The *15.5 is amplitude of final values
-- to be -15 .. +15 (+0.5 for "floor" compensation)
-- in this example values are signed byte (-15 == 241 == 0xF1)
sj.add_byte(math.floor(math.sin(math.pi * i / 128.0) * 15.5))
end
endlua
jr start
start: