SCC / Sound-Custom-Chip ----------------------- De SCC die ook in een aantal Konami ROM cartridge's is ingebouwd, heeft 5 geluids kanalen. Ze werkt niet zoals bij de MSX-MUSIC en de MSX-AUDIO met OUTPUT poorten, maar is gewoon via het geheugen aan te sturen. De SCC-Chip Heeft een Geheugen blok van 16Kb, deze kan via een out als gewoon geheugen worden gebruikt, maar de inhoud van een aantal adressen zal meteen naar de Sound-chip worden gestuurt. Om dit geheugen blok omteschakelen moet er een andere slot selectie plaats vinden. Omdat Page 0 (0000h-3FFFh) allerlei belangrijke routines bevat is het niet handig om deze te schakelen. Omdat Page 1 (4000h-7FFFh) Basic functies bevat zal deze dus alleen kunnen worden gebruikt in ML-code. Omdat Page 2 (8000h-BFFFh) alleen als data voor Basic word gebruikt kan dit blok dus wel worden gebruikt, maar dan moet het Basic programma wel op een andere plaats beginnen. Omdat Page 3 (C000h-FFFFh) allerlei belangerijke routines en de STACK pointer bevat kan deze ook niet worden geschakeld. We zullen er nu maar van uitgaan dat we in Basic werken en dus Blok 2 geschakeld moet worden, ook moet het Basic-programma nu op een ander adres beginnen omdat het anders de SCC data zou overlappen. Het schaú kelen kan met de volgende out gebeuren: I/O Poort #0A8h 7 6 5 4 3 2 1 0 X---R---R---R---R---R---R---R---Y VPage 3 VPage 2 VPage 1 VPage 0 V VPSLOT# VPSLOT# VPSLOT# VPSOLT# V Z---Q---Q---Q---Q---Q---Q---Q---[ De Slot's zijn als volgt verdeelt: 00 - Systeem 01 - Cartridge Slot 1 10 - Cartridge Slot 2 11 - Memmory mapper ( Gebruikers geheugen.) Page 1 en page 0 bevatten in (normale) omstandigheden 00 en Page 3 en page 2: 11. Als we in Page 2 de SCC willen schakelen moeten we in deze 2 bit's ( 5 en 4 ) de het nummer van het Externe slot zetten, dus als de SCC-Cartridge zich in Cartridge-Slot 1 bevind moeten de bits 5 en 4 dus 0 en 1 bevatten, dit is namelijk het binaire getal voor 1. Dus om dit in basic te verwezelijken: OUT &HA8,&b11010000, dat is &HD0 en voor Cartridge-Slot 2 is dit dus &b11100000 ofterweil &HE0. Dan moet nog het begin adres van de basic data worden verplaatst. Dit kan door het Meest significante byte van het adres in adres F677h te zetten, en vervolgens het eerste data byte te resetten. Om dit weer even te verú wezelijken het volgende voorbeeld: POKE &HF677,&HC0:POKE &HC000,0:NEW - Het nieuwe data adres is nu C000h OUT &HA8,&HD0 - De Slotselectie (indien SCC in SLOT 1) POKE &H9000,&H3F - SCC in 8000h - BFFFh De SCC is nu klaar voor gebruik. Zoals al eerder bekent gemaakt heeft de SCC 5 geluids kanalen, deze hebben op kanaal 5 na allemaal hun eigen instellingen: - Golf-patroon. 8 bits; 32 bytes. - Frequentie NR. LSB 8 bits, MSB bit 3-0; 2 bytes dus - Volume. 0-15; bits 3-0, 1 byte dus. Alleen kanaal 5 heeft geen eigen golfpatroon, maar moet deze delen met kanaal 4 Bij het golf-patroon moet de vorm van de geluids vorm worden ingeú steld, de nulwaarde ( De waarde waarbij er dus geen uitgangs spanning is) is 0 de maximale positive waarde is 127. De maximale Negative waarde is 128 en deze loopt (af) tot 255. 255 is dus infeite gelijk aan -1. Met het Volume kan de Amplitude worden bepaalt, deze word bij het uitgangs signaal met het huidige sample van het golf-patroon verú menigvuldigt. De Frequentie bepaalt de snelheid van het afwisselen van de samples van het Golf-patroon, als alle 32 samples zijn voorbij gegaan start de Chip weer met sample nummer 0. De Adressen Kanaal Golf-patroon Frequenties Volume LSB MSB 1 9800h-981Fh 9880h 9881h 988Ah 2 9820h-983Fh 9882h 9883h 988Bh 3 9840h-985Fh 9884h 9885h 988Ch 4 9860h-987Fh 9886h 9887h 988Dh 5 Als Kanaal 4 9888h 9889h 988Eh De kanalen kunnen ook afzonderlijk worden uit- of aangeschakeld met adres 988Fh 7 6 5 4 3 2 1 0 X ---R---R---R---R---R---R---R---Y V X V X V X VCH5VCH4VCH3VCH2VCH1V Z---Q---Q---Q---Q---Q---Q---Q---[ Als Bij CH5/0 een bit 0 maakt zal het kanaal uit gezet worden. De bits met X aangeduid heben geen functie. Adres 98E0 kan het beste op 0 gezet worden. Het nut hiervan weet ik nog niet, maar de SCC maakt anders een ander Golf-Patroon. Het Frequentie nummer is uit te rekenen door 111760 tedelen door de Frequentie. NR=111760 / FREQ Om een zuivere sinus te genereren kan het volgende programme gebruikt worden: 10 POKE &H9000,&H3F 20 PI=4*ATN(1) 30 FOR N=0 TO 31:POKE &H9800+T,128+127*SIN(T*PI/16) XOR 128:NEXT T 40 POKE&H988F,&B00000001:POKE &H988A,15:POKE&H9880,128:POKE&H9881,1 50 END Om de toon te stoppen typ: POKE &H988F,0 , dit zet alle geluids sigú nalen uit, als een van de bits weer 1 word gemaakt, dan zal de laast ingestelte toon weer herklinken. Bij een muziek programma is het natuurlijk ook leuk als er Drum's gebruikt kunnen worden, maar op de SCC is dit nogal moeilijk, omdat de Chip namelijk geen ruis kent moeten er zelf patronen gemaakt worden die als ruis klinken, het is dan veel makelijker om gewoon de PSG-Chip te gebruiken. De PSG kan namelijk wel makkelijk ruis produceren.