CMC+Podczas kilkumiesięcznej pracy muzycznie twórczej dojrzałem pewne niedoskonałości programu autorstwa Janusza Pelca - Chaos Music Composer. Podstawowym brakiem jest możliwość powielania instrumentów. Dotychczas, aby instrument numer 00 odwzorowany był pod numerem 10, potrzeba było mleć sporo cierpliwości, aby wpierw odpisać definicję natężenia dźwięku, mapę akcentów oraz cztery wartości, widoczne po prawej stronie okna INSTR. Zajmowało to około 10 minut, zakładając, iż "w przypływie szczęścia" nie została naciśnięta kombinacja klawiszy CTRL+SHIFT+DELETE. Złotym środkiem okazał się artykuł Dariusza Żołny zamieszczony w TA 3/93, dotyczący sposobu zapisu dźwięku przez CMC. Pozostawało jedynie odgrzebać BugHuntera, odkurzyć CMC i zacząć szperać. Początkowe poszukiwania dały zaskakujące rezultaty. Wprawnym hackerom proponuję przeglądnąć tablicę rozpoczynającą się od adresu $4d7e. Składa się ona z wpisów, zawierających kolejno definicje wszystkich instrumentów, zapisanych w ściśle określony sposób. Pierwsze osiem znaków jednego wpisu to oczywiście nazwa instrumentu, kolejne 8 bajtów to definicja obwiedni dźwięku, następne 6 bajtów to wartości definicji dźwięku (4 bajty) oraz bitowa mapa akcentów (2 bajty). Umiejętnie manipulując wartościami wpisu, można uzyskać nowe dźwięki dzięki nakładaniu "łat" na już istniejące, pamiętając przy tym o wykonaniu kopii bezpieczeństwa, która pozostanie niezmienioną wersją programu CMC. Kolejnym wykrytym brakiem jest niemożliwość tworzenia własnych bibliotek instrumentów. Chodzi tu o brak zapisu instrumentów na nośniku zewnętrznym. Smutne stało się również wykorzystywanie jedynie instrumentów standardowych tylko z tego względu, iż inny sposób tekstowego przekazania muzyki był niemożliwy. Postanowiłem obie wady wyeliminować, w efekcie czego powstał LinkCMC. Jest to program, który należy zgrać Zgrywusem+ i dołączyć do CMC programem Append z TA 5/91 (najpierw CMC, potem LinkCMC). Odtąd, będąc w oknie INSTR, możemy korzystać z trzech nowych funkcji: Zapisany plik składa się z wpisów, które można podzielić na dwie grupy: - wpisy standardowych instrumentów - zajmują jedynie dwa bajty; pierwszy oznacza numer instrumentu (od 0 do 25), drugi to numer wpisu w tablicy standardowych instrumentów; - wpisy własnych instrumentów - wykorzystują szesnaście bajtów pliku i zawierają numer instrumentu oraz wartość $ff oznaczającą instrument definiowany, - sześć bajtów definicji instrumentu i akcentów, zapisanych od końca, - osiem bajtów natężenia dźwięku, również zapisanych od końca. 1000 REM *--------------------------* 1002 REM : LINKCMC : 1004 REM : autor: MATHNOID'93 : 1006 REM : (c) 1993 Tajemnice ATARI : 1008 REM *--------------------------* 1010 DATA ffffab42a447adfc028de0428e 1020 DATA e2428ce44248ad0c64c902d019 1030 DATA 68c992d0034c8645c9bed0034c 1040 DATA a643c980d0034ce6424cd94268 1050 DATA 20df424cc96ea900a200a00060 1060 DATA 207645a000205d4520cf44a904 1070 DATA 202044b0f120ad4490034ca043 1080 DATA c088d0034ca0438d0f6420ad44 1090 DATA 90034ca043c9ffd03cac0f6499 1100 DATA 104c98a000206d46a9058d3243 1110 DATA a9078d484320ad44b06fa00091 1120 DATA f0ce324310f2a000ad0f64205c 1130 DATA 4620ad44b059a00091f0ce4843 1140 DATA 10f230a6ac0f6499104ca8a986 1150 DATA 85f0a94d85f1c000f00fa5f018 1160 DATA 691685f09002e6f1884c6143ad 1170 DATA 0f64a002205c46a007b1f091f2 1180 DATA 8810f9ad0f64a002206d46a908 1190 DATA a0f0201e47a005b1f091f28810 1200 DATA f94cf84220ee464c4146207645 1210 DATA a005205d4520cf44a908202044 1220 DATA b0f1a9008dbe43a000b9104cf0 1230 DATA 4c48adbe4320c34468c9fff007 1240 DATA 20c344903bb04320c344a9058d 1250 DATA ed43a9078d0344adbe43a00020 1260 DATA 6d46a000b1f020c344b025ceed 1270 DATA 4310f2adbe43a000205c46a000 1280 DATA b1f020c344b00fce034410f2ee 1290 DATA be43adbe43c91ad0a320ee464c 1300 DATA 41464820ee46689d4a03a9039d 1310 DATA 4203a99bac9e47c03af00aac9f 1320 DATA 47c03af003189012ac9d47c045 1330 DATA f004c053d004a092d013186902 1340 DATA 9d4403a94769009d45034c5f44 1350 DATA 2056e4c001d0021860c088f0fa 1360 DATA 984820ee46a20cbda2449d2d75 1370 DATA ca10f78d3b7568a2ffe838e964 1380 DATA b0fa6964488aa00b2017476820 1390 DATA 0747a0c8206e7088d0fa20d946 1400 DATA 386000290f2f00e5f2f2eff200 1410 DATA a210a90720b7444c5f449d4203 1420 DATA a9009d48039d49036048a210a9 1430 DATA 0b20b744684c5f44a000b99d47 1440 DATA c92ef00b20f846993275c8c009 1450 DATA d0eea940993275c8a900c00ab0 1460 DATA 06993275c8d0f620d946c91bd0 1470 DATA 0568684c4146c97ed00d205145 1480 DATA f0ebcaa92e9d9d47d0bdc99bd0 1490 DATA 13205145e8a000b98e479d9d47 1500 DATA e8c8c004d0f460c9619008c97b 1510 DATA b004e91fd008c93090bcc93bb0 1520 DATA b84820514568e009b0af9d9d47 1530 DATA a92e9d9e474ccf44a2ffa92ee8 1540 DATA dd9d47d0fa8a60a200b96c459d 1550 DATA 2d75e8c8e005d0f460ecefe1e4 1560 DATA 1af3e1f6e51a20d946a207b5f0 1570 DATA 9daf47ca10f84c9c46207645ad 1580 DATA 9247a006200747ad9347a00c20 1590 DATA 0747a001b93375297fae9447d0 1600 DATA 020980993375b93975297fae94 1610 DATA 47f00209809939758810df20d9 1620 DATA 46ae9447c92dd00cbd9247c919 1630 DATA f0effe9247d0b7c93dd00bbd92 1640 DATA 47f0e1de92474c8945c92bd00a 1650 DATA ad9447f0d2ce9447f09ac92ad0 1660 DATA 0aad9447d0c4ee9447d08cc99b 1670 DATA d039a000ad9247205c46a002ad 1680 DATA 9347205c46a007205446ad9247 1690 DATA a000206d46ad9347a002206d46 1700 DATA a005205446ac9247b9104cac93 1710 DATA 4799104c4c4146c91bf0034cbc 1720 DATA 4520c446a207bdaf4795f0ca10 1730 DATA f820df424cc96eb1f091f28810 1740 DATA f9600a0a0a18693099f000a985 1750 DATA 690099f100608d77468d79460a 1760 DATA 0a1869006900699499f000a984 1770 DATA 690099f10060a201bd994795f0 1780 DATA bd954795f2bd974795f4ca10ee 1790 DATA 60208746a203a011b1f091f2b1 1800 DATA f491f08810f520b546ca10ed60 1810 DATA a928a0f0201e47a912201e474c 1820 DATA 1e47208746a203a011b1f291f0 1830 DATA 8810f920b546ca10f160a2ffec 1840 DATA fc02f0fbadfc028efc02aabd51 1850 DATA fb206e7060a210a90c9d42034c 1860 DATA 56e40a08c9c0b006e93fb00269 1870 DATA c0286a60a2ffe838e90ab0fa69 1880 DATA 0a488a201747680910992d75c8 1890 DATA 604818790000990000c8b90000 1900 DATA 6900990000c86860a202bd4347 1910 DATA 9dc66eca10f7a98b8dcf77604c 1920 DATA ab425157575757575757575757 1930 DATA 5757575757454f4100636f7079 1940 DATA 00000000746f0000000044595a 1950 DATA 58585858585858585858585858 1960 DATA 585843594b5555555555555555 1970 DATA 55555555555555554c494e539b 1980 DATA 000000b74746470475443a494e 1990 DATA 535452554d2ee202e3023247 MATHNOID'93
|