18.07.2013 Views

Nintendo Entertainment System

Nintendo Entertainment System

Nintendo Entertainment System

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.2. SQUARE-KANALENE<br />

eksempel ønsker å dempe lyden over en tid på 0.5 sekunder må vi gi envelope-timeren verdien<br />

T = 15/2 · 0.5 − 1 = 2.75 ≈ 3.<br />

6.2.3 Lengdetelleren<br />

Lengdetelleren har en noe lignende virkemåte som envelope-generatoren, men denne demper ikke<br />

volumet gradvis. Den kutter i stedet kanalen av når den har telt ned til 0. Dette kan være hendig<br />

dersom kanalen brukes til musikk, men i praksis er det ofte like greit å dempe kanalen manuelt.<br />

Lengdetelleren klokkes med 120 Hz, og holder en 7-bits initialverdi. Denne initialverdien kan i<br />

midlertid ikke oppgis direkte, slik som det er tilfellet med envelope-telleren. Vi må i stedet oppgi<br />

en 5-bits verdi, som brukes som indeks i følgende tabell:<br />

10 254 20 2 40 4 80 6 160 8 60 10 14 12 26 14<br />

12 16 24 18 48 20 96 22 192 24 72 26 16 28 32 30<br />

Hvis vi for eksempel skriver 18 til lengdetelleren vil den altså få 24 som startverdi. Da vil tonen<br />

vare i 24/120 = 0.2 sekunder.<br />

Det er en litt merkverdig sammenheng mellom lengdetelleren og envelope-generatoren. Dersom<br />

lengdetelleren er deaktivert og envelope-generatoren er i dempemodus, vil dempingen gjenta seg<br />

automatisk. Det vil si at så snart én demping er ferdig, settes volumtelleren til 15 igjen, og<br />

dempingen starter på nytt.<br />

6.2.4 Registrene<br />

De fire registrene fra $4000 til $4003 og fra $4004 til $4007 kontrollerer henholdsvis square 1<br />

og square 2. I $4000/$4004 velger vi duty cycle, om lengdetelleren skal være aktivert, hvilken<br />

modus envelope-generatoren skal operere i, og en 4-bits verdi som enten brukes som volum eller<br />

periode for envelope-timeren:<br />

$4000 og $4004<br />

Bit Funksjon Valg<br />

0-3 Envelope-lengde / volum 0 - 15<br />

4 Envelope-modus 0: konstant volum, 1: demping<br />

5 Lengdeteller/envelope-looping 0: aktiver/ikke loop, 1: deaktiver/loop<br />

6-7 Duty cycle 0: 12.5%, 1: 25%, 2: 50%, 3: 25% (omvendt)<br />

I $4001 og $4005 skriver vi instillinger som har med sweep-enheten å gjøre. Denne skal vi se på<br />

senere.<br />

I $4002 og $4006 gir vi de lave 8 bitene av timerens periode:<br />

I $4003 og $4007 gir vi de høye 3 bitene av timerens periode, samt hvor lenge lengdetelleren<br />

skal telle ned før den kutter av lyden (hvis den er aktivert):

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!