Start | Super Packer | Atari Graphics Studio | Graph2Font | Mads | MadPascal | Atari Zines | YouTube http://madteam.atari8.info  
MEMBERS
PRODUCTIONS
S C E N E
G A M E S
T O O L S
V B X E
GRAPHICS
WORK IN PROGRESS
Bubble Shooter
HARDWARE
Snes2Joy / Pad4Aatari / TOM rev2
Sio2SD / Pajero
Sio2SD / Rocky
Stereo / Pajero
GTIA / Psychol
ANTIC + VBXE test
ARTICLES / MAGAZINES
DEMO EFFECTS
LINKS
   

Fox/Taquart
Dłuższe ścieżki w MPT
Syzygy #8

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

 

madteam.atari8.info © MadTeam, hosted: www.atari8.info