mono napisał/a:Uuuu drogi Panie. Piękne! Napisz coś więcej może jak tej syntezy używać i jak to działa może. I może więcej niż jest na atariage. Bardzo dobra funkcja!
tablice niezbedne do dzialania sa tu - oczywiscie nie wszystkie sa potrzebne :D
https://github.com/bit-hack/SAM/blob/ma … der_tabs.h
a wzor na render tu:
https://github.com/bit-hack/SAM przewin do final output:
A = A1 * sin ( f1 * t ) +
A2 * sin ( f2 * t ) +
A3 * rect( f3 * t )
48087: LDX 43 ; get phase
CLC
LDA 42240,x ; load sine value (high 4 bits)
ORA TabAmpl1,y ; get amplitude (in low 4 bits)
TAX
LDA 42752,x ; multiplication table
STA 56 ; store
LDX 42 ; get phase
LDA 42240,x ; load sine value (high 4 bits)
ORA TabAmpl2,y ; get amplitude (in low 4 bits)
TAX
LDA 42752,x ; multiplication table
ADC Var56 ; add with previous values
STA 56 ; and store
LDX 41 ; get phase
LDA 42496,x ; load rect value (high 4 bits)
ORA TabAmpl3,y ; get amplitude (in low 4 bits)
TAX
LDA 42752,x ; multiplication table
ADC 56 ; add with previous values
ADC #136
LSR A ; get highest 4 bits
LSR A
LSR A
LSR A
STA 54296 ;SID main output command
i taka to tajemnica syntezy mowy ;-)