ZAJMAVOSTI O CMC¢-----------------¢¢ Zkratka "CMC" v titulu tohoto ⇨l⇧nku znamen⇧ "Chaos Music Composer", coə je p❎kn⑨ hudebn editor od Janusze Pelce z polska, vydan⑨ firmou L.K.Avalon. Tento editor dos⇧hl pom❎rn❎ zna⇨n⑦ho roz③ ②en , p②ed n❎kolika lety v n❎m vznikaly t⑦m❎② v③echny hudebn skladby v polsk⑨ch programech. Dnes je sice vytla⇨ov⇧n ze sc⑦ny programem Music ProTracker, kter⑨ m⇧ o n❎co v❎t③ moənosti, v jednoduchosti ovl⇧d⇧n je v③ak CMC prakticky neporaziteln⑨. To ho spolu se st⇧le nadpr
m❎rn⑨mi zvukov⑨mi moənostmi do budoucna p②edur⇨uje p②edev③ m pro "m⑦n❎ profesion⇧ln " uəivatele, kte② ho asi sotva n❎kdy zcela opust .¢ CMC m⇧ bohuəel i nev⑨hody. N⇧vod dod⇧van⑨ s programem obsahuje v③echny nezbytn⑦ informace, v n⇧ro⇨n❎j③ ch p② padech za⇨leov⇧n hudby do vlastn ch program
se v③ak m
əe uk⇧zat p②ece jen p② li③ stru⇨n⑨. Krom❎ toho obsahuje p②ehr⇧vac rutina generovan⇧ CMC n❎kter⑦ chyby - mohou m t za n⇧sledek nep② jemn⑦ "v⑨k②iky" v pauz⇧ch p
vodn skladby, jejichə v⑨skyt zd⇧nliv❎ postr⇧d⇧ logick⑨ vztah k ⇨emukoliv.¢ Tento ⇨l⇧nek si klade za c l podat alespo n❎kolik m⇧lo uəite⇨n⑨ch informac o CMC.¢¢ FORM①T SOUBOR♪¢¢ V n❎kter⑨ch situac ch je uəite⇨n⑦ zn⇧t form⇧t soubor
, do kter⑨ch CMC ukl⇧d⇧ hudebn skladby. Tyto soubory slouə sou⇨asn❎ jako vstupn data pro p②ehr⇧vac rutinu p②i za⇨leov⇧n hudby do vlastn ch program
.¢ Jedn⇧ se o b❎ən⑦ bin⇧rn segmentovan⑦ soubory, kter⑦ pochopiteln❎ za⇨ naj standardn hlavi⇨kou. P②esun hudby na jinou adresu v③ak nelze realizovat pouhou zm❎nou hlavi⇨ky - soubor obsahuje i dal③ absolutn adresy, kter⑦ um spr⇧vn❎ upravit pouze CMC.¢ Obsah souboru je n⇧sleduj c (pozice jsou v datov⑦m bloku - nap②. v pam❎ti - pozice v souboru z sk⇧me p②i⇨ten m ③esti):¢¢ 0: Identifikace souboru (19 byt
). Jedn⇧ se o inverzn text " cmc data file " dopln❎n⑨ je③t❎ o n❎kolik grafick⑨ch znak
.¢¢ $13: Tempo.¢¢ $14: Adresy definic "pattern
" - niə③ byty.¢ $54: Adresy definic "pattern
" - vy③③ byty. M
əe jich b⑨t aə 64, tato tabulka obsahuje absolutn adresy, na kter⑨ch p② slu③n⑦ definice za⇨ naj . (To je tak⑦ d
vodem, pro⇨ mus b⑨t soubor p②i p②esunu na jinou adresu upraven CMC.) Pr⇧zdn⑦ "patterny" nemaj definice, v tom p② pad❎ obsahuje vy③③ byte v t⑦to tabulce hodnotu $FF.¢¢ $94: Definice n⇧stroj
- prvn tabulka.¢ $130: Definice n⇧stroj
- druh⇧ tabulka. N⇧stroj
je celkem 26, kaəd⑦mu z nich pat② 6 byt
v prvn tabulce a 8 byt
v druh⑦. Prvn 4 byte z prvn tabulky odpov daj ② dic m kd
m, kter⑦ v CMC vid me na prav⑦ stran❎ ok⑦nka "instr". Bity D2 a D3 v prvn m bytu (kter⑦ nejsou v CMC b❎ən❎ p② stupn⑦) jsou vyuəity pro jak⑦si intern ⑤⇨ely, bity D3 a D4 ve druh⑦m bytu (rovn❎ə v CMC nedostupn⑦) pak definuj klouzav⑦ zvuky nahoru resp. dol
, kter⑦ v CMC ozna⇨uje mal⇧ ③ipka. Zb⑨vaj c 2 byty z prvn tabulky obsahuj tzv. akcenty - zobrazovan⑦ v CMC pod definic hlasitosti. Kaəd⑦ pozici p② slu③ jeden bit, prvn je nejvy③③ . V③ech osm byt
z druh⑦ tabulky pak obsahuje definici pr
b❎hu hlasitosti - dv❎ pozice v jednom bytu, prvn je spodn polovina.¢¢ $200: Prvn stopa "songu".¢ $255: Druh⇧ stopa "songu".¢ $2AA: T②et stopa "songu". Tyto stopy odpov daj t②em sloupc
m v okn❎ "song" v CMC, kaəd⇧ m⇧ 85 byt
. Obsahuj ⇨ sla "pattern
", nebo hodnotu $FF pro pr⇧zdn⑦ pozice. Prvn stopa m
əe nav c obsahovat n⇧sleduj c zvl⇧③tn kdy:¢ $8F: Stop (SHIFT S)¢ $9F: Jump (SHIFT J)¢ $AF: Relativn skok nahoru (SHIFT+U)¢ $BF: Relativn skok dol
(SHIFT+D)¢ $CF: Nov⑦ tempo (SHIFT+T)¢ $DF: Opakov⇧n (SHIFT+R)¢ $EF: Break (SHIFT+B)¢ $FE: Pr⇧zdn⑨ ②⇧dek - bude p②esko⇨en¢ Parametry jsou uloəeny v dal③ ch stop⇧ch, stejn❎ jako v okn❎ "song" v CMC.¢¢ $300: Za⇨⇧tek definic "pattern
", d⑦lka z⇧vis na jejich po⇨tu a obsahu. Pouəit⑦ kdy jsou n⇧sleduj c :¢ $00-$19: Nastaven ⇨ sla n⇧stroje pro dal③ tny¢ $40-$7E: Tny ($40 je C-1, $41 je C#1 atd.)¢ $80-$BD: Po⇨et pr⇧zdn⑨ch ②⇧dk
zv❎t③en⑨ o $7F¢ $FF: Konec.¢¢¢ PEHR①VAC RUTINA¢¢ Jak v me z n⇧vodu, p②ehr⇧vac rutina m⇧ na sv⑦m po⇨⇧tku t②i instrukce JMP a t②i prom❎nn⑦ ur⇨en⑦ ke spolupr⇧ci s nad② zen⑨m programem (pozice jsou od po⇨⇧tku p②ehr⇧vac rutiny):¢ 0: JMP rutina pro BASIC¢ 3: JMP komunika⇨n rutina¢ 6: JMP p②ehr⇧vac rutina¢ 9: Hlasitost (3 byte pro 3 hlasy)¢ Prvn rutina se vol⇧ z BASICu pro zah⇧jen hudby p② kazem USR (adresa p②ehr⇧vac rutiny, ⇨ slo skladby, adresa hudebn ho souboru v pam❎ti), pro ukon⇨en pak USR (adresa p②ehr⇧vac rutiny). Pokud je v souboru v ce skladeb, mus b⑨t v okn❎ "song" odd❎leny povelem SHIFT+S nebo SHIFT+B; v BASICu se ⇨ sluj od jedn⑦.¢ Druh⇧ a t②et rutina slouə pro pr⇧ci v assembleru. Druhou rutinu pouə v⇧me k ovl⇧d⇧n p②ehr⇧va⇨e, t②et mus me za②adit do obsluhy VBI, nebo ji jin⑨m zp
sobem pravideln❎ vyvol⇧vat. Nastaven registr
pro druhou rutinu je n⇧sleduj c :¢ A=0, X=⇨ slo skladby (zde od 0) - Zah⇧jit p②ehr⇧v⇧n ¢ A=$10, X=pozice - Zah⇧jit p②ehr⇧v⇧n ¢ A=$20+⇨ slo kan⇧lu, X=⇨ slo tnu (zde od 0), Y=⇨ slo n⇧stroje - Vnucen ciz ho tnu do skladby (zvukov⑨ efekt)¢ A=$30, X=tempo - Zm❎na rychlosti¢ A=$40 - Konec p②ehr⇧v⇧n (ticho)¢ A=$50 - P②eru③en p②ehr⇧v⇧n (n⇧stroje dozn )¢ A=$60 - Pokra⇨ov⇧n po p②eru③en ¢ A=$70, Y/X=horn /doln byte adresy hudebn ho souboru - Inicializace, MUS b⑨t prvn operac !¢¢ To je v③e, co se v n⇧vodu do⇨teme. Obvykle to sta⇨ , pokud v③ak chceme zvukov⑦ efekty synchronizovat s rytmem hudby, nebo dokonce podle pot②eby p②ep nat r
zn⑦ ⇨⇧sti melodie, mus me komunika⇨n rutinu vyvolat "v prav⑨ ⇨as". Ten rozpozn⇧me ⇨ten m n⇧sleduj c ch vnit②n ch pom❎nn⑨ch p②ehr⇧va⇨e:¢ $0C: P② ③t pozice v "patternu". Nula zde znamen⇧, əe je t②eba p②e⇨ st dal③ ②⇧dek ze "songu" (to b⑨v⇧ ten zm n❎n⑨ "prav⑨ ⇨as", je v③ak t②eba vz t v ⑤vahu tak⑦ ⇨ ta⇨ pro tempo).¢ $0D: P② ③t pozice v "songu"¢ $3E: ⑥ sla "pattern
" pro v③echny t②i kan⇧ly¢ $55: ⑥ ta⇨ pro tempo. Po⇨ t⇧ p②i kaəd⑦m vyvol⇧n p②ehr⇧vac rutiny, od hodnoty "tempo" k nule.¢¢ V⑨③e uveden⑦ adresy se t⑨kaj p②ehr⇧va⇨e, kter⑨ generuje CMC verze 2.0. Nev m, zda existuj je③t❎ jin⑦ verze, proto si rad❎ji p②ed pouəit m uveden⑨ch informac ⇨ slo verze zkontrolujte!¢¢ Zaj mav⑨m p② kladem pouəit v⑨③e uveden⑨ch adres je hudba ze hry HELIX, kter⇧ je zkomponov⇧na ve 3/4 taktu. Jednoduch⇧ rutina obsluhy VBI v t⑦to h②e p②inut p②ehr⇧vac rutinu k p②eskakov⇧n posledn ⇨tvrtiny kaəd⑦ho "patternu":¢ VBI JSR REPLAY+6¢ LDA REPLAY+$0C¢ EOR #$30¢ BNE VBIEXIT¢ STA REPLAY+$0C¢ VBIEXIT JMP $E462¢¢ Na z⇧v❎r je③t❎ jedna rada: Pokud nepouə v⇧me BASIC, m
əeme s klidn⑨m sv❎dom m p②emazat ⇨⇧st p②ehr⇧vac rutiny (z CMC verze 2.0) od pozice REPLAY+$75A do konce. Tato ⇨⇧st obsahuje pouze podprogram pro vol⇧n z BASICu.¢¢¢ CHYBY PEHR①VA⑥E¢¢ P②ehr⇧vac rutina z CMC bohuəel obsahuje dv❎ chyby, kter⑦ mohou zp
sobit neo⇨ek⇧van⑦ reakce hudby na zm❎ny v jinak nesouvisej c ch oblastech pam❎ti. Nej⇨ast❎ji se jedn⇧ o p②ekvapiv⑦ "v⑨k②iky" v pauz⇧ch, kter⑦ se objev zpravidla po odklopen OS-ROM.¢ Prvn chyba: P②ehr⇧va⇨ spr⇧vn❎ nerozpozn⇧v⇧ pr⇧zdn⑦ pozice v "songu", kter⑦ pak interpretuje jako podivn⑨ "pattern" z t⑦m❎② libovoln⑦ adresy v pam❎ti.¢ N⇧prava: Instrukci CMP #$40 na pozici REPLAY+$409 zm❎nit na CPY #$40. (Autor se zjevn❎ dopustil p②eklepu.)¢ Druh⇧ chyba: Pokud je v "songu" specifikov⇧n "pattern", kter⑨ je pr⇧zdn⑨, m
əe b⑨t p②ehr⇧na nahodil⇧ sekvence z n❎jak⑦ adresy $FFxx. P②ehr⇧va⇨ totiə v
bec nepo⇨ t⇧ s pr⇧zdn⑨mi "patterny", jejichə ozna⇨en hodnotou $FF m sto horn ho bytu adresy interpretuje jako adresu $FFxx.¢ N⇧prava: P②ed spu③t❎n m hudby prov⑦st ⑤pravu hudebn ho souboru pomoc n⇧sleduj c rutiny. T m budou v③echny pr⇧zdn⑦ "patterny" nahrazeny spole⇨nou definic , kter⇧ se skl⇧d⇧ pouze ze zakon⇨ovac zna⇨ky.¢ LDX #$3F¢ LABEL1 LDY MUSIC+$54,X¢ INY¢ BNE LABEL2¢ LDA #ADRFF:L¢ STA MUSIC+$14,X¢ LDA #ADRFF:H¢ STA MUSIC+$54,X¢ LABEL2 DEX¢ BPL LABEL1¢ "MUSIC" je adresa hudebn ho souboru v pam❎ti, "ADRFF" je adresa jednoho bytu s hodnotou $FF - takov⑨ lze bu⇦ nal⑦zt p② mo v souboru (vədy tam je, obvykle vyhovuje posledn byte), nebo definovat v programu. Upraven⑨ soubor slouə pouze k p②ehr⇧v⇧n , jeho zp❎tn⑦ zaveden do CMC je nep② pustn⑦!¢¢¢ Z①V╱REM¢¢ Douf⇧m, əe informace uveden⑦ v tomto ⇨l⇧nku ⇨ten⇧②
m FLOPu alespo trochu pomohou p②i pr⇧ci s CMC. V kaəd⑦m p② pad❎ doporu⇨uji pouə vat ve v③ech programech popsan⑦ n⇧pravy chyb p②ehr⇧va⇨e, protoəe bez toho m
əe hudba nevhodn❎ reagovat na t❎əko definovateln⑦ skute⇨nosti, jako je nap② klad verze OS-ROM apod.¢ Ji② Bern⇧③ek (BEWESOFT)¢¢¢ POU⑧IT① LITERATURA¢¢[1] ⇨asopis TAJEMNICE ATARI 3/93 (Polsko), str. 4, Dariusz Zolna: Dokumentacja do CMC¢¢[2] n⇧vod k CMC "PODRECZNIK UZYTKOWNIKA PAKIETU CHAOS MUSIC COMPOSER" (L.K.Avalon, 1992)¢¢