Rozdzielczość waha się od 4 do 8 bitów, zależnie od techniki odtwarzania. W najprymitywniejszej LDA próbka, STA $d201 potrzebujesz jednobajtowych wartości w postaci xxx1yyyy (binarnie), gdzie xxx są dowolne a yyyy to 4-bitowa wartość próbki.
Większość narzędzi pecetowych potrafi zrobić próbki 8-bitowe bez znaku, które są dobrym punktem wyjścia do dalszej obróbki. Nie zapomnij odfiltrować przed resamplingiem!
Plik zapisujesz jako wave PCM, lub, jeśli masz możliwość, raw PCM. W tym pierwszym przypadku po prostu olewasz 44-bajtowy nagłówek. W tym drugim masz już dane jak należy, można wypuszczać bezpośrednio na Covox, lub przerobić do postaci jak w poprzednim akapicie przy pomocy własnoręcznie napisanego jednolinijkowca (obcinając najmniej znaczące bity).
Jeśli gra jest raczej statyczna, to sprawa jest prosta:
pętla: STA WSYNC
LDA a:adr ; lub a:adr,x lub (adr),y - zależy od różnych rzeczy.
STA $d201
... następny adres
JMP pętla
W przypadku kiedy na ekranie coś się jednak dzieje, zwykle niełatwo to pogodzić z docyklowaniem odtwarzania sampla, dlatego wygodniej będzie pewnie puścić sample na przerwaniu Pokeya.
W tym przypadku masz bezcenną możliwość dobrania takiej częstotliwości odtwarzania, która pogodzi jakość dźwięku i ilość zajętej pamięci z płynnością animacji. Przerazisz się, bo nie jest to łatwe - sporo czasu pożre ci obsługa przerwania. Jak już znajdziesz, wracasz do pecetowego edytora dźwięku, resamplujesz z oryginału do tejże częstotliwości i opcjonalnie robisz dalszą konwersję.
Odtwarzanie na Pokeyu można sobie utrudnić na różne sposoby, na przykład:
- Jeśli masz mało pamięci, możesz pakować sample. Dwie próbki radośnie mieszczą się w bajcie i wystarczy tu zamaskować, tam przesunąć.
- Możesz spróbować odtwarzać sample 5-bitowe, 6-bitowe - wymaga to zapisu do kilku kanałów Pokeya z możliwie najmniejszym opóźnieniem, czyli najlepiej STA, STX, STY bezpośrednio po sobie. Poprawa jakości dźwięku jest jednakowoż dyskusyjna.
- Zamiast sterowania samym poziomem na wyjściu (xxx1yyyy w AUDC) możesz puścić ultradźwiękowy prostokąt o różnej głośności (AUDF = 0, AUDCTL = 0, AUDC = 1x10yyyy). Podobno od tego wyjście się nieco linearyzuje, ale sam nie mierzyłem.
Jeśli chcesz mieć sample stereo, to można ułożyć dane na wiele sposobów.
- Twój pecetowy edytor dźwięku najprawdopodobniej zapisze dźwięk stereo przeplatając na przemian próbkę 0 lewą, próbkę 0 prawą, próbkę 1 lewą itd., czasami to jest wygodne.
- Możesz chcieć trzymać kanał lewy i prawy w osobnych tablicach.
- Możesz chcieć przeplatać je np. co stronę - takie rozwiązanie okazało się optymalne przy odtwarzaniu danych doczytywanych na bieżąco z twardego dysku.