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
   

Charlie
Format zapisu modułów CMC, MPT, TMC
Syzygy #3

Na wstępie muszę zaznaczyć, iż artykuł ten powstał na prośbę Vaska, który stwierdził: "byłoby to szalenie interesujące". Format MPT'ka żywcem zerżnąłem z pliku o nazwie "Protokół MPT" Mayoneza, TMC'ka natomiast z instrukcji. Format CMC musiałem rozpracować sam, dlatego nie jestem jego w 100% pewien. Dowiedziałem się ostatnio, że był on zawarty w którymś numerze "Tajemnic Atari", dlatego jeżeli ktoś ma jakieś wątpliwości, to odsyłam go do tej literatury (?).

Ponieważ i tak wszyscy używają playerów Jaskiera, z punktu widzenia użytkownika istotne są tylko dane adresowe, a te są pewne.

Stosowane oznaczenia:

  • M - młodsza połówka bajtu,

  • S - starsza połówka bajtu.


Format modułu CMC v2.0: plik binarny

Adres względem początku w pamięci:

>$000

nagłówek (cmc data file)

>$013

tempo utworu (max. 99)

>$014

młodsze bajty adresów patternów

Jeżeli pattern jest pusty, to ma adres $FFFF

>$054

starsze bajty adresów patternów

>$094

parametry instrumentów (26ins. * 6 bajtów)
Poszczególne bajty oznaczją:

 

1)

M

 - 

rodzaj akcentu,

S

 -

transpozycja akcentu;

2)

M

 -

rodzaj dźwięku CMC,

S

 -

r. zniekształcenia Atari

ustawione bity 3/4 oznaczają:

3-ci

 -

dźwięk wznoszący się,

4-ty

 -

dźwięk opadający;

3)

M

 -

transpozycja dźwięków wibrujących i dwukanałowych,

S

 -

transpozycja podstawowego dźwięku;

4)

czas wybrzmiewania dźwięku ($00 oznacza dźwięk ciągły)

5-6)

tablica akcentów (15 bitów, najmłodszy bit 6-go bajtu nie jest wykorzystywany);

>$130

dane głośności instrumentów (26ins. * 8 bajtów);
Głośność jest zapisana w kolejności M/S, dlatego S 8-go bajtu nie jest wykorzystywana (S=0);

>$200

dane tracku 1;
Poszczególne wartości oznaczają:

 

$00-$3f

 - 

nr pat. do zagrania

$8f

 -

komenda "stop" ()

$9f

 -

komenda "jump" (J:)

$af

 -

komenda "up" (:)

$bf

 -

komenda "down" (:)

$cf

 -

komenda "tempo" (T:)

$df

 -

komenda "repeat" (R:)

$ef

 -

komenda "back" ()

$fe

 -

puste pola w 3 trackach

$ff

 -

puste pole

W edytorze mamy do dyspozycji 84 pola w każdym tracku. W rzeczywistości jest ich 85, ale w tym ostatnim znajduje się komenda "back" playera.

>$255

dane tracku 2;
Znajdują się tutaj numery pat. do zagrania, tudzież argumenty komend tracku 1;
Puste pole - $ff.

>$2AA

dane tracku 3;
Znajdują się tutaj numery pat. do zagrania, tudzież drugi argument dla komendy "repeat";
Puste pole - $ff.

>$2FF

bajt niewykorzystany = $ff

>$300

dane patternów.
Poszczególne wartości oznaczają:

 

$00-$19

 - 

nr instrumentu

$40-$7e

 -

nr dźwięku do zagrania,

$80-$bd

 -

puste pola w patternie ($7f + ilość pól),

$ff

 -

koniec patternu.


Format modułu MPT v2.4: plik binarny.

Adres względem początku w pamięci:

>$000 adresy instrumentów (słowa) (puste ma adres $0000)
>$040 adresy patternów (słowa) (pusty ma adres $0000)
>$0C0 tablica częstotliwości #1
>$100 tablica częstotliwości #2
>$140 tablica częstotliwości #3
>$180 tablica częstotliwości #4
>$1C0 młodsze bajty adresów tracków
>$1C4 starsze bajty adresów tracków
>$1C8 długość patternów (S=1-4/M=0)
>$1C9 tempo utworu ($01-$1f)
>$1CA dane tracku #1;
dane tracku #2;
dane tracku #3;
dane tracku #4;
dane instrumentów;
dane patternów;

Dane tracków

numer patternu, transpozycja
numer patternu, transpozycja
...

Dane instrumentów

aa, bb, aa, bb, aa, bb, ... (16 par aa, bb)
aa - głośnośc i barwa dzwięku
bb - numery akcentów (M)
numery parametrów akcentów * 2 (S)

następne bajty danych instrumentu:
8 bajtów - parametry sterujące ins.
8 bajtów - parametry akcentów

Dane patternów

$01-$3E zagraj nutę o numerze
$40-$5F zmień brzmienie (-$40)
$80-$B5 ustaw ilość pustych pozycji pomiędzy nutami (-$80)
$C0-$CF ustaw głośność (-$C0)
$Ex koniec patternu
$FE wstaw puste pozycje (na początku lub końcu patternu) ($80 = jedna pusta pozycja)
x dowolna cyfra $00-$0F


Format modułu sampli MPT: Plik nie jest binarny!

Adres od początku pliku:

>$00

starsze bajty adresów początku sampli

>$10

młodsze bajty adresów końca sampli

Adresy są zwiększone o $9000.

Dalej dane sampli (S/M).



Format modułu TMC v. 1.00: plik binarny

> $000 bajty informacyjne;
> $01D zawsze spacja ($20);
> $01E tempo, jest to wartość o jeden mniejsza niż w CMC lun MPT;
> $01F częstotliwość odtwarzenia na ramkę;
> $020 młodsze bajty adresów instr.
> $060 starsze bajty adresów instr. (pusty ma adres $0000);
> $0A0 młodsze bajty adresów patternów
> $120 starsze bajty adresów patternów
> $1A0 dane songu;
dane instrumentów;
dane patternów;

Dane songu

Każda pozycja w songu zajmuje 16b.:
t8, p8, t7, p7, ..., t2, p2, t1, p1
gdzie:

tx

 - 

transpozycja tracku x,

px

 -

nr patternu do odegrania na tracku x;


Dane instrumentów

- 21 razy trójka bajtów:

1) S zniekształcenie dźwięku
M głośność obwiedni podstawowej;
2) S typ akcentu,
M głośność obwiedni dodatkowej;
3) parametr akcentu;
- 8 bajtów transpozycji
- 9 bajtów parametrów dźwięku.

W sumie 80 bajtów.


Dane patternów

Poszczególne bajty oznaczają:

$00 zmiana głośności dźwięku, następująca za nim wartość jest negacją (EOR #$FF) głośności używanej w TMC,
$01-$3F graj nutę o tym numerze i ustalonym wcześniej instrumencie. Następuje po tym bajt głośności.
$40 nowy parametr, jeżeli ten bajt ma ustawiony najwyższy bit, to następuje jeszcze za nim bajt zmiany głośności.
$41-$7F graj nutę o numerze zANDowanym liczbą $3F i ustalonym instrumencie. Następuje za tym bajt parametru z ustawionym najwyższym bitem oraz bajt głośności.
$80-$BF zmiana aktualnego instrumentu. Używana przed rozkazem grania nuty tylko przy faktycznej zmianie instrumentu w patternie.
$C0-$FF linie puste w patternie:
  • $C0 to 1 linia pusta,
  • $FF to puste 64 linie, czyli innymi słowy koniec danych patternu, gdyż dowolnie, na której pozycji dotychczas się znajdowaliśmy dodanie do niej 64 powoduje wyjście poza długość patternu. Każdy pattern kończy się tym bajtem, nawet jeżeli na ostatniej pozycji coś się znajduje. Pattern pusty składa się tylko z tego bajtu. Pattern najdłuższy łacznie z tym bajtem ma 257 bajtów długości.

Charlie

 

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