W artykule tym opisuję przeróbkę programu Music
ProTracker umożliwiającą tworzenie dłuższej muzyki.
Obecnie jedynym utworem wykorzystującym tę przeróbkę jest trwająca 11,5 minuty ścieżka dźwiękowa
dema Numen.
Kilka słów o historii powstania tej przeróbki. Uzgodniliśmy z X-Rayem, że przez cały czas trwania dema
będzie grany jeden moduł MPT. Już wtedy wiedzieliśmy, że demo będzie trwało ok. 11-12 minut. Nie wiedzieliśmy jednak, że jest to problem dla programu
MPT. 13 lipca odwiedzili mnie X-Ray i Seban. X-Ray
zademonstrował trwającą ok. 8 minut muzykę i oznajmił, że dalsze jej wydłużanie jest niemożliwe. Rzeczywiście, po wstawieniu kilku pozycji w ścieżkach
("trackach") i zapisie na dysku, zamazywały się początkowe pozycje. Zgodnie stwierdziliśmy, że jest to
ograniczenie MPT, spowodowane zapewne zbyt małą
ilością przeznaczonej pamięci, którego nie damy rady
znieść, nie posiadając źródeł programu. Zdecydowaliśmy się na rozwiązanie w postaci zapętlenia muzyki.
Niestety, problematyczne stało się zakończenie
utworu. Rozpatrywałem też, mało wygodne, użycie
dwóch modułów MPT. Postanowiłem zajrzeć do MPT
i dokładniej wybadać sprawę. Jak się okazało, problemem było ograniczenie na 128 pozycji w ścieżce.
Co więcej, procedura zapisu zakładała, że ostatnia
pozycja (7F) zawiera same FF-y (w przeciwnym przy-
padku nie działała prawidłowo). Przy tempie 3 te 127
pozycji starcza na ok. 8 minut. Oczywiste wydało
mi się, że nie da się z tym nic zrobić, skoro SoTe
przeznaczył pamięć tylko na 128 pozycji. Postanowiłem to jednak sprawdzić. Co się okazało? Pamięć jest
zarezerwowana na 256 pozycji. Dlaczego więc program wykorzystuje tylko 128? Zapewne autor nie
przewidział, że ktoś napisze tak długi moduł. Dalej
poszło już łatwo. Zmiana jednego bajtu umożliwiła
zjechanie strzałką w dół do dalszych pozycji. Okazało się, że po wpisaniu numerów patternów były one
odgrywane (a więc player obsługiwał 256 pozycji).
Po jednym bajcie trzeba było zmienić w procedurach
obsługi Shift+Insert i Shift+Delete, aby działały prawidłowo powyżej pozycji 127. W standardowym MPT
skok w ścieżkach (FF zamiast nr-u patternu) był możliwy do pozycji 00-7F. Wartości od 80 wzwyż powodowały zatrzymanie muzyki (jak FE zamiast nr-u patternu). Po drobnej przeróbce możliwy jest skok do
pozycji FD włącznie (FE lub FF zatrzymują odtwarzanie). Ostatnia rzeczą, którą trzeba było poprawić
w progr amie, był odczyt i zapis. MPT używa wewnętrznie innej reprezentacji ścieżek, niż w pliku MPT.
W związku z tym player występujący w tym programie
różni się od zwykłego playera odgrywającego pliki
MPT, a w czasie odczytu i zapisu musi zostać wykonana konwersja ścieżek.
Na dysku z zinem znajdziecie MPTFOX.COM, który
jest zmodyfikowanym w opisany sposób MPT 9.9, który
jest z kolei zmodyfikowanym przez Jaskiera MPT 2.4.
Program ten posiada funkcjonalność MPT - odczytuje
i zapisuje standardowe pliki MPT, a ponadto odczytuje
i zapisuje pliki MPT z dłuższymi ścieżkami. Dla łatwego
rozróżnienia plików z dłuższymi ścieżkami (które nie
będą obsługiwane przez zwykłe MPT ani zwykły
player) proponuję używać rozszerzenia MPF.
MPTFOX.ASX jest źródłem przeróbki w formacie
xasm-a (którego już kiedyś opisywałem w Syzygy,
a jego najnowszą wersję można znaleźć w sieci pod
adresem http://xasm.atari.org).
Zwykły player MPT, odtwarzając moduł MPF, zapętli
się z pozycji 7F do 00. Aby umożliwić odtwarzanie
pozycji od 80 wzwyż, konieczne są drobne przeróbki.
Poniżej opiszę zmiany w moim playerze, którego oryginalną wersję można znaleźć na stronie F magazynu
Energy 2.
1. Cztery linijki:
lda msx+$1c4,x
sta ad+1
ldy #0
pozsng equ *-1
zamieniamy na:
lda #0
pozsng equ *-1
p0 asl @
tay
lda msx+$1c4,x
adc #0
sta ad+1
2. Pięć linijek:
bmi p4
asl @
tay
sta pozsng
bcc p3!
zamieniamy na:
cmp #$fe
bcs p4
sta pozsng
bcc p0!
3. Dwie linijki:
iny
sty pozsng
zamieniamy na:
inc pozsng
Fox/Taquart