FC (format pliku)
From Atariki
(Różnice między wersjami)
Wersja z dnia 20:03, 15 sie 2011 Mono (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 11:19, 21 sie 2011 Mono (Dyskusja | wkład) (postać skompresowana) Next diff → |
||
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 dnia 11:19, 21 sie 2011
Format modułu muzycznego obsługiwany przez program Future Composer w wersji 1.32 (mega).
Spis treści |
Postać nieskompresowana
offset | długość | opis |
$0000 | $0002 | identyfikator: $26,$23 |
$0002 | $0001 | tempo |
$0003 | $0100 | dane tracka 1 |
$0103 | $0100 | dane tracka 2 |
$0203 | $0100 | dane tracka 3 |
$0303 | $0080 | dane 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ą.
offset | długość | opis |
$0000 | $0001 | pozycja startowa w tracku |
$0001 | $0321 | program playera |
$0322 | $0040 | tablica LSB adresów patternów |
$0362 | $0020 | tablica LSB adresów obwiedni głośności instrumentów |
$0382 | $0040 | tablica MSB adresów patternów |
$03C2 | $0020 | tablica MSB adresów obwiedni głośności instrumentów |
$03E2 | $0020 | tablica czasów trwania nut obliczona na podstawie tempa utworu (pierwszy bajt jest równoważny tempu) |
$0402 | $0003 | tablica LSB adresów tracków |
$0405 | $0003 | tablica MSB adresów tracków |
$0408 | $0080 | tablica 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.