FC (format pliku): Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Mono (dyskusja | edycje)
mNie podano opisu zmian
Mono (dyskusja | edycje)
postać skompresowana
Linia 1: Linia 1:
Format modułu muzycznego obsługiwany przez program [[FC|Future Composer]] w wersji 1.32 (mega).
Format modułu muzycznego obsługiwany przez program [[FC|Future Composer]] w wersji 1.32 (mega).
== Postać nieskompresowana ==


<table border=1>
<table border=1>
Linia 44: Linia 46:
* $80..$FE - dane są bezpośrednio zapisywane do AUDCx, a dodatkowo AUDFx ustawiany jest na 0,
* $80..$FE - dane są bezpośrednio zapisywane do AUDCx, a dodatkowo AUDFx ustawiany jest na 0,
* FF - koniec obwiedni.
* FF - koniec obwiedni.
== Postać skompresowana ==
Plik jest zgrywany bez żadnego nagłówka, jako zwykłe dane RAW i łącznie z procedurą odtwarzającą.
<table border=1>
<tr><td>offset</td><td>długość</td><td>opis</td></tr>
<tr><td>$0000</td><td>$0001</td><td>pozycja startowa w tracku</td></tr>
<tr><td>$0001</td><td>$0321</td><td>program playera</td></tr>
<tr><td>$0322</td><td>$0040</td><td>tablica LSB adresów patternów</td></tr>
<tr><td>$0362</td><td>$0020</td><td>tablica LSB adresów obwiedni głośności instrumentów</td></tr>
<tr><td>$0382</td><td>$0040</td><td>tablica MSB adresów patternów</td></tr>
<tr><td>$03C2</td><td>$0020</td><td>tablica MSB adresów obwiedni głośności instrumentów</td></tr>
<tr><td>$03E2</td><td>$0020</td><td>tablica czasów trwania nut obliczona na podstawie tempa utworu (pierwszy bajt jest równoważny tempu)</td></tr>
<tr><td>$0402</td><td>$0003</td><td>tablica LSB adresów tracków</td></tr>
<tr><td>$0405</td><td>$0003</td><td>tablica MSB adresów tracków</td></tr>
<tr><td>$0408</td><td>$0080</td><td>tablica instrumentów ($20*4)</td></tr>
<tr><td>$0488</td><td>...</td><td>dane 64 patternów</td></tr>
<tr><td>...</td><td>...</td><td>dane 32 obwiedni głośności dźwięku</td></tr>
<tr><td>...</td><td>...</td><td>dane 3 tracków</td></tr>
</table>
Na pozycji $0001 w pliku znajduje się rozkaz JSR INIT i na podstawie jego argumentu można odtworzyć adres, pod jaki skompilowano moduł playera i muzyki.
Adres liczy się wzorem:
ADDR = msx[2] + $100 * msx[3] - $10
=== Track ===
W tracku występują następujące rozkazy:
* $00..$3F - numer patternu do odegrania,
* $40 xx - ustawia AUDCTL wartością xx,
* $8x - transponuje dźwięk o x (8 jest uznawane za "poziom zerowy"),
* $FE - koniec odtwarzania,
* $FF - zapętlenie odtwarzania.
=== Pattern ===
W patternie występują następujące rozkazy:
* $00..$3F - nuta,
* $40..$7F - czas trwania dźwięku (bity 0..4),
* $80..$9F - instrument (bity 0..4),
* $FF - koniec patternu.
=== Instrument ===
Instrument składa się z pól:
* $00: numer obwiedni głośności,
* $01: zniekształcenie (AUDCx),
* $02: vibrato,
* $03: efekt.
=== Obwiednia głośności ===
W obwiedni występują następujące rozkazy:
* $00..$FE - dane obwiedni,
* $FF - koniec obwiedni.


[[Kategoria: Formaty plików]]
[[Kategoria: Formaty plików]]

Wersja z 21 sie 2011, 13:19

Format modułu muzycznego obsługiwany przez program Future Composer w wersji 1.32 (mega).

Postać nieskompresowana

offsetdługośćopis
$0000$0002identyfikator: $26,$23
$0002$0001tempo
$0003$0100dane tracka 1
$0103$0100dane tracka 2
$0203$0100dane tracka 3
$0303$0080dane 32 instrumentów (każdy z nich składa się z 4 bajtów)
$0383...dane 64 patternów
......dane 32 obwiedni dźwięku

Dane tracków

Znaczenie poszczególnych poleceń:

  • $00..$3F - numer patternu,
  • $40 xx - ustawia AUDCTL wartością xx,
  • $8x - ustawia transpozycję dla tracka (8 jest przyjmowane, jako transpozycja "zerowa").
  • $FE - koniec songu,
  • $FF - zapętlenie songu.

Dane patternów

Znaczenie poszczególnych poleceń:

  • $00..$3F - zagranie nuty ($00 = C-1, $01 = C#1, ...),
  • $40..$5f - odstęp między nutami (ilość definiują bity 0..4 - można w ten sposób zapisać odstęp o 32 pozycje patternu),
  • $80..$9f - zmiana instrumentu (numer definiują bity 0..4),
  • $FF - koniec patternu.

Dane instrumentów

Każdy instrument zdefiniowany jest za pomocą 4 bajtów:

  • $00: numer obwiedni ($00..$1F),
  • $01: zniekształcenia wpisywane do AUDCx,
  • $02: głębokość efektu powstałego przez naprzemienne granie dźwięku podstawowego i podniesionego o podaną ilość półtonów,
  • $03: efekt specjalny ($00 - brak, bit 7 - 0=vibrato, 1=slide down).

Dane obwiedni

Znaczenie poszczególnych poleceń:

  • $00..$7F - dane są ORowane ze zniekształceniem instrumentu i wynik zapisywany jest do AUDCx,
  • $80..$FE - dane są bezpośrednio zapisywane do AUDCx, a dodatkowo AUDFx ustawiany jest na 0,
  • FF - koniec obwiedni.

Postać skompresowana

Plik jest zgrywany bez żadnego nagłówka, jako zwykłe dane RAW i łącznie z procedurą odtwarzającą.

offsetdługośćopis
$0000$0001pozycja startowa w tracku
$0001$0321program playera
$0322$0040tablica LSB adresów patternów
$0362$0020tablica LSB adresów obwiedni głośności instrumentów
$0382$0040tablica MSB adresów patternów
$03C2$0020tablica MSB adresów obwiedni głośności instrumentów
$03E2$0020tablica czasów trwania nut obliczona na podstawie tempa utworu (pierwszy bajt jest równoważny tempu)
$0402$0003tablica LSB adresów tracków
$0405$0003tablica MSB adresów tracków
$0408$0080tablica instrumentów ($20*4)
$0488...dane 64 patternów
......dane 32 obwiedni głośności dźwięku
......dane 3 tracków

Na pozycji $0001 w pliku znajduje się rozkaz JSR INIT i na podstawie jego argumentu można odtworzyć adres, pod jaki skompilowano moduł playera i muzyki. Adres liczy się wzorem:

ADDR = msx[2] + $100 * msx[3] - $10

Track

W tracku występują następujące rozkazy:

  • $00..$3F - numer patternu do odegrania,
  • $40 xx - ustawia AUDCTL wartością xx,
  • $8x - transponuje dźwięk o x (8 jest uznawane za "poziom zerowy"),
  • $FE - koniec odtwarzania,
  • $FF - zapętlenie odtwarzania.

Pattern

W patternie występują następujące rozkazy:

  • $00..$3F - nuta,
  • $40..$7F - czas trwania dźwięku (bity 0..4),
  • $80..$9F - instrument (bity 0..4),
  • $FF - koniec patternu.

Instrument

Instrument składa się z pól:

  • $00: numer obwiedni głośności,
  • $01: zniekształcenie (AUDCx),
  • $02: vibrato,
  • $03: efekt.

Obwiednia głośności

W obwiedni występują następujące rozkazy:

  • $00..$FE - dane obwiedni,
  • $FF - koniec obwiedni.