Programowanie: Odtwarzanie sampli
From Atariki
Wersja z dnia 21:54, 7 maj 2018
Odtwarzanie sampli możliwe jest poprzez bezpośrednie sterowanie wychyleniem membrany w dowolnym rejestrze AUDCx.
Włączenie trybu bezpośredniego sterowania membraną odbywa się przez ustawienie bitu 4. Bity odpowiadające za głośność (0..3) odpowiadają wtedy za wychylenie membrany: $0 - bez wychylenia, $F - maksymalne wychylenie.
$F : == $E : == $D : == $C : == $B : == $A : == $9 : == $8 : == $7 : == $6 : == $5 : == $4 : == $3 : == $2 : == $1 : == $0 +==------------------------------
Przetworniki DAC dla każdego kanału POKEY-a mają liniową charakterystykę więc nie jest potrzebne dodatkowe przetwarzanie wartości sampla.
Mając więc w młodszej połówce akumulatora wartość próbki wystarczy:
ora #$10 sta AUDCx
Jeśli próbka znajduje się w starszej połówce akumulatora można:
sec ror ror ror ror sta AUDCx
co można nieco zoptymalizować za pomocą tablicy konwersji (sample powinien wtedy znajdować się w górnej połówce rejestru indeksowego X)
lda convtabh,x sta AUDCx ... convtabh: :256 .byte (# >> 4) | $10
Dysponując próbką w młodszej połówce rejestru indeksowego (w poniższym przykładzie X) można zastosować analogiczną metodę
lda convtabl,x sta AUDCx ... convtabl: :256 .byte (# & $F) | $10