Obsah
1. Historie vývoje počítačových her (48. část – multimediální herní konzole Commodore CDTV)
2. Architektura mikropočítačů Amiga i herní konzole Commodore CDTV
3. OCS aneb Original Amiga Chipset
4. Čip Denise a základní grafické režimy OCS
6. Syntéza hudby, pulzně kódová modulace (PCM) a pulzně šířková modulace (PWM)
8. Stereo výstup a řízení hlasitosti
1. Historie vývoje počítačových her (48. část – multimediální herní konzole Commodore CDTV)
V dnešní části seriálu o historii vývoje výpočetní techniky se začneme zabývat dalším typem herní konzole čtvrté generace. Touto herní konzolí je Commodore CDTV, což je zařízení postavené na architektuře slavných mikropočítačů Amiga, i když se ve skutečnosti v názvu CDTV jméno Amiga kupodivu nevyskytuje. Tato herní konzole se v mnoha ohledech odlišuje od většiny dalších konzolí čtvrté generace, a to především použitou architekturou. Asijské konzole společností SEGA (Sega Genesis) a Nintendo (SNES) byly z velké části založeny na filozofii starších osmibitových herních konzolí, což se týká především jejich grafického subsystému (pozadí složené z dlaždic + sprity) i subsystému zvukového (syntetizér + generátor šumu + podpora pro přehrávání samplů). V případě herní konzole CDTV je však architektura zcela odlišná, protože grafický subsystém používá planární grafiku (žádné dlaždice!) + sprity a zvukový subsystém je již založen jen čistě na přehrávání samplů (žádný syntetizér v čipu).
Obrázek 1: Amiga CDTV.
Multimediální herní konzole Commodore CDTV byla, podobně jako Amiga 3000 uvedena na trh v roce 1990. Mělo se jednat především o herní systém, čemuž odpovídá jak název výrobku, tak i jeho design v elegantním černém provedení. Původně byl tento počítač dokonce dodáván bez klávesnice, myši a disketové jednotky. I zde byl, stejně jako u předchozího modelu, použit čipset OCS a posléze ECS. Tento počítač byl osazen mikroprocesorem Motorola 68000 taktovaným na obligátních 7,14MHz (podobně jako ostatní základní modely počítačů Amiga), základní kapacita paměti RAM byla rovna jednomu megabajtu. Největším „tahákem“ měla být mechanika CD-ROM, která měla umožnit využívání multimediálních produktů, čímž se měl CDTV odlišit od konkurence. Ve skutečnosti však byl výsledkem jakýsi mix mezi počítačem (ale kdo chtěl počítač, koupil si například Amigu 500, která byla interně s CDTV srovnatelná), multimediálním centrem (to se však vůbec neujalo) a herní konzolí (zde ovšem vládla tvrdá konkurence asijských firem). Další problémovou částí CDTV byla starší verze operačního systému – podrobnosti o této problematice si však řekneme až příště.
Obrázek 2: Prvním komerčně dostupným počítačem z řady Amiga byla Amiga 1000, která začala být firmou Commodore prodávána již v roce 1985. V té době byl největším konkurentem Amig počítač Atari ST (zejména 520ST, později také 1040ST), částečně také Apple. Prodávané modely tohoto počítače byly osazeny 256 kB nebo 512 kB paměti Chip RAM, která byla teoreticky (omezení OCS) rozšiřitelná až na 32MB (Fast RAM).
2. Architektura mikropočítačů Amiga i herní konzole Commodore CDTV
Osobní počítače Commodore Amiga a tudíž i multimediální herní konzole Commodore CDTV, byly – především díky promyšlenému návrhu jejich architektury – mezi uživateli velmi oblíbené a s trochou nadsázky je možné říci, že se již v době své největší slávy staly legendami, podobně jako jejich největší rival – počítače řady Atari ST (při pohledu na historii vzniku obou zmíněných počítačových řad je však rivalita spíše úsměvná). Obliba mikropočítačů Amiga pramenila mj. i z toho, že jejich grafický subsystém byl založen na několika vzájemně spolupracujících čipech o vysoké integraci (VLSI), které mohly některé činnosti vykonávat souběžně s mikroprocesorem (řady Motorola 680×0). Díky rozdělení práce mezi více čipů bylo možné, aby i na počítačích vybavených relativně pomalým mikroprocesorem mohly být provozovány graficky poměrně náročné aplikace, například vyspělé hry, dema či programy pro editaci videa. Na druhou stranu však byl další vývoj těchto mikropočítačů a herních konzolí omezen snahou o udržení zpětné kompatibility – to se týkalo i způsobu ovládání všech dále zmíněných čipů, nejenom struktury paměti a/nebo instrukční sady mikroprocesoru.
Obrázek 3: Legendární počítač Amiga 500 obsahující čipset OCS a oblíbený mikroprocesor Motorola 68000, taktovaný na 7,14 MHz. V základní konfiguraci byl tento mikropočítač osazen již 512 KB paměti, jež byla rozšiřitelná na 32 MB (Fast RAM). Naproti tomu byl model Amiga 500 Plus osazen 1 MB s možností rozšíření Chip RAM na 2 MB a Fast RAM až na 32 MB (mezi oběma modely: 500 a 500+ byly i další konstrukční odlišnosti).
Společnost Commodore vytvořila (přesněji řečeno zpočátku zakoupila) poměrně velké množství modelů počítačů nesoucích ve svém jménu slovo Amiga. Tyto modely je mj. možné rozlišit i podle toho, jakou sadu čipů (čipset) tvůrci pro konstrukci daného modelu použili. První modely nabízené po roce 1985, především Amiga 1000 a taktéž slavná Amiga 500, byly vybaveny sadou čipů pojmenovanou OCS – Original Amiga Chipset. V roce 1990 se začaly prodávat modely vybavené novým čipsetem nazvaným ECS – Enhanced Chip Set a některé modely prodávané po roce 1992 (například Amiga 1200) obsahovaly čipset nazvaný AGA – Advanced Graphics Architecture. Zajímavé je, že všechny tři zmíněné čipsety podporovaly téměř výhradně grafické režimy založené na takzvaných bitových rovinách (bitplanes), což na jednu stranu umožnilo snadnou tvorbu určitých efektů, například paralelně se pohybujících pozadí (paralax scrolling) v některých hrách (asi nejznámějším příkladem je Shadow of the Beast), ovšem hry vyžadující přímou manipulaci s jednotlivými pixely („doomovky“) se v těchto režimech implementovaly složitěji.
Obrázek 4: Titulní obrazovka hry Shadow of the Beast využívá (v případě televizní normy NTSC) grafický režim s rozlišením 320×200 pixelů a 32 barev.
I to byl jeden z pravděpodobných důvodů, proč byly i tyto počítače nakonec překonány architektonicky mnohem jednoduššími PCčky. Ve skutečnosti však byly i pro Amigy později nabízeny vylepšené grafické karty s „klasickým“ framebufferem. Mezi známé grafické karty patří například Picasso. Konkrétně kartu Picasso 2 bylo možné použít například v modelech Amiga 2000, Amiga 3000 a Amiga 4000 – jedná se o modely vybavené Zorro II slotem. Tato grafická karta mohla obsahovat framebuffer o kapacitě 1 MB (levnější varianta) nebo 2 MB (dražší verze). V případě použití jednomegabajtové varianty byly podporovány například grafické režimy s rozlišením 640×480 pixelů a 24bitovou barevnou hloubkou či naopak režim o rozlišení 1600×1200 pixelů v šestnácti barvách. Přidání dalšího megabajtu paměti pro framebuffer umožnilo, aby se zvýšilo rozlišení plnobarevného grafického režimu na 800×600 pixelů a režim 1600×1200 používal místo šestnácti barev barev 256. Navíc tato grafická karta obsahovala i blitter a dokonce i možnost kombinovat video signál s výstupem z původního čipsetu, ovšem pouze v případě použití nižších (kompatibilních) řádkových frekvencí.
Obrázek 5: První část plošného spoje mikropočítače Amiga 500, na kterém můžeme vidět některé čipy náležící do Original Amiga Chipsetu.
V dalším textu se budeme zabývat především popisem OCS a částečně taktéž ECS, protože herní konzole Commodore CDTV byla původně postavena právě nad těmito čipovými sadami (původně OCS a posléze ECS).
Obrázek 6: Druhá část plošného spoje mikropočítače Amiga 500.
3. OCS aneb Original Amiga Chipset
Original Amiga Chipset, zkráceně též OCS, byl použit především v osobních počítačích Amiga 1000 (základní model), Amiga 500 (ekonomická varianta, která byla mezi uživateli velmi oblíbená, například i v našich zemích), Amiga 2000 („hi-end“ model), Amiga 2500 a Amiga 1500. Z technologického hlediska se jedná o velmi zajímavý čipset, při jehož návrhu bylo prvotním cílem jeho tvůrců dosáhnout co největšího odlehčení práce centrální procesorové jednotce – CPU. Tuto snahu lze snadno pochopit, protože použité procesory Motorola 68000 s taktovací frekvencí 7,14 MHz i přes velmi dobře navrženou (v několika ohledech ortogonální) instrukční sadu a třicetidvoubitovou architekturu zpočátku velkou rychlostí neoplývaly, což by se negativně projevilo například při nutnosti provádění všech grafických operací přímo mikroprocesorem. Neexistence podpůrných čipů byl mj. i jeden z nedostatků prvních verzí počítačů Apple Macintosh.
Obrázek 7: Osobní počítač Amiga 2000, který byl nabízen jako hi-end model společně s low-endovou řadou počítačů Amiga 500. Tomu odpovídá i vybavení Amiga 2000, zejména použití šestnáctibitové i osmibitové sběrnice ISA, na kterou bylo možné připojit přes přídavné karty například pevné disky, jednotky CD-ROM i další rozličná zařízení používaná například i u počítačů PC. Také se zde objevuje proprietární Zorro slot určený pro rozšiřující moduly.
Z tohoto důvodu pracují čipy použité v OCS do značné míry nezávisle na mikroprocesoru, který pouze provádí inicializaci všech operací a tyto operace následně probíhají samostatně, popřípadě s řízením přes přerušení. Original Amiga Chipset se skládal z více částí (čipů), které budou popsány v následujícím textu. Čip nazvaný Agnus byl určen především pro řízení přístupu do operační paměti (RAM), nazývané také Chip RAM. Při řízení přístupu jsou použity priority, takže Agnus zde působí podobně, jako arbitr u sběrnic. V tomto čipu jsou přítomny i dva funkční bloky nazvané Blitter a Copper, jejichž popis je uveden v navazujícím textu. Původní verze čipu Agnus dovedla adresovat maximálně 512KB paměti, později se začal používat vylepšený čip Fat Agnus, u nějž byl umožněn přístup až k jednomu megabajtu RAM. Další rozšíření adresovatelné paměti zvládaly až modernější čipy obsažené v později zavedených čipsetech ECS a AGA. Při přístupu do operační paměti se čipy a mikroprocesor střídaly podle jednotlivých cyklů. Základním rozlišením, na kterém se přístup do Chip RAM prováděl, byl sudý a lichý cyklus – odd/even cycle.
Obrázek 8: Amiga 3000 byla uvedena na trh v roce 1990 jako náhrada za stávající modely vyšší řady Amiga 1000 a Amiga 2000. Namísto čipsetu OCS se v tomto počítači objevuje nový čipset nazvaný ECS – Enhanced Chip Set. Také původní procesor Motorola 68000 byl nahrazen novějším modelem 68030, který se (kromě dalších vylepšení) navenek jevil jako plně třicetidvoubitový procesor, což se samozřejmě pozitivně projevilo na celkové rychlosti počítače.
4. Čip Denise a základní grafické režimy OCS
Druhým důležitým čipem použitým v OCS byl čip nazvaný Denise, jenž byl určen především pro řízení grafických režimů. Z technologického hlediska se jedná o velmi dobře navržený čip, jehož schopnosti byly dále rozvíjeny i v modernějších čipsetech (ECS a AGA) a některé jeho vlastnosti nejsou vlastně dodnes překonány – například se jedná o nezávislý scrolling (posuv) jednotlivých bitových rovin (bitplanů), čehož bylo možné využít například v některých typech her. Základní vlastností každého grafického řadiče jsou podporovaná rozlišení a počet současně zobrazitelných barev. Denise se může nacházet ve dvou základních režimech. Prvním je takzvaný režim lowres, jehož horizontální rozlišení je 320 pixelů, druhým je režim hires s horizontálním rozlišením 640 pixelů. Vertikální rozlišení bylo buď 200 řádků při použití televizní normy NTSC nebo 256 řádků v normě PAL. Pomocí prokládaného (interlaced) režimu se však toto rozlišení dalo zdvojnásobit, takže se používalo i 400 resp. 512 řádků se všemi přednostmi i zápory prokládaných režimů (upřímně řečeno zápory převažovaly, což bylo poznat především při dlouhodobější práci).
Obrázek 9: Hra Black Crypt využívající grafický režim EHB (Extra Half-Brite).
V následující tabulce jsou vypsány základní grafické režimy počítačů Amiga s čipsetem OCS:
Režim | lowres | hires |
---|---|---|
PAL, non-interlaced | 320×256 | 640×256 |
PAL, interlaced | 320×512 | 640×512 |
NTSC, non-interlaced | 320×200 | 640×200 |
NTSC, interlaced | 320×400 | 640×400 |
Obrázek 10: Obrázek, který je vykreslený v módu Extra Half-Brite.
Velmi zajímavé a pro počítače Amiga ve své podstatě i typické bylo rozdělení obrazové paměti. Denisa totiž pracuje striktně v módu planární bitmapové grafiky, což znamená, že barva jednoho pixelu je získána z obsahu přes sebe ležících bitových rovin (bitplanů), podobně jako je tomu například v šestnáctibarevných grafických režimech karet EGA a VGA. Počet barvových bitových rovin je měnitelný a pohybuje se od jedné do pěti, k dispozici je i šestá bitová rovina určená pro speciální účely. Konfigurace bitových rovin mohla být následující:
- EHB – extra half-brite: pět bitových rovin je určeno pro specifikaci barvy pixelu (výběr z barvové palety), šestá bitová rovina modifikuje jeho světlost. Počet současně zobrazitelných barev je tedy (bez vlivu Copperu) roven 32/64 (podle chápání barvové palety). Tento grafický režim byl použit například i ve hře Black Crypt.
- HAM – hold and modify: každý šestibitový pixel je rozdělen na dva řídicí bity a čtyři datové bity. Řídicími bity je určeno, zda se datovými bity přímo nastaví barva, nebo se modifikuje jedna ze tří barvových složek RGB. V tomto režimu je tak možné zobrazit až 4096 barev, což bylo neporovnatelné s počítači PC té doby (resp. s jejich grafickými kartami). Zvýšený počet barev se však negativně projevuje na rychlosti práce s bitmapami.
- Dual playfield: jsou použity dvě relativně nezávislé pixmapy, přičemž každá se skládá ze tří bitových rovin. V každé pixmapě je možné zobrazit až osm barev.
Obrázek 11: Barvová paleta obrázku číslo 10. Povšimněte si, že prvních 32 barev se opakuje, ovšem se sníženou intenzitou.
Kromě třech výše uvedených grafických režimů tvořících vlastně „podklad“ pro vytváření obrazu na monitoru či televizoru, bylo možné pracovat až s osmi nezávisle vykreslovanými sprity, jejichž horizontální velikost byla rovna šestnácti pixelům a vertikální velikost byla ve své podstatě libovolná (vzdáleně je tento systém podobný spritům generovaným čipem GTIA na osmibitových počítačích Atari). Pixely ve spritech mohly nabývat jedné ze tří barev, „čtvrtou“ barvou byla průhlednost. Spojením dvojice spritů se dosáhlo zvýšení počtu barev na patnáct, šestnáctá hodnota byla opět rezervována pro průhlednost, tj. pro tu část spritu, přes který mohly prosvítat barvy pozadí. Spritů bylo možné zobrazit i větší množství, pokud se použil režim podobný režimu u osmibitových Commodorů či Atari, tj. změna horizontální pozice spritů během přerušení při zpětném běhu elektronového paprsku. Se sprity bylo možné provádět poměrně značné množství grafických efektů (především při znalosti interní funkce čipsetu).
Obrázek 12: Na tomto obrázku vykresleném s využitím módu HAM, je použito celkem 327 barev.
5. ECS – Enhanced Chip Set
Originální Amigácký čipset OCS, kterým jsme se prozatím zabývali, byl použit především v modelech Amiga 1000 (první prodávaný model), Amiga 500 (oblíbený „low-end“ model) a Amiga 2000 („hi-end“). V roce 1990 byl na trh uveden nový model Amiga 3000, který nahrazoval stávající „hi-end“ řadu, tj. částečně Amigu 1000 a především Amigu 2000. V obou zmíněných modelech se poprvé objevila vylepšená verze čipsetu nazvaná ECS neboli Enhanced Chip Set.
Obrázek 13: Na této obrazovce ze hry Chaos Engine je na systémech podporujících televizní normu NTSC využit grafický režim s rozlišením 320×200 pixelů s 32 barvami (tj. je využito pět bitových rovin).
V ECS jsou použity vylepšené verze původních čipů. Například čip Agnus byl nahrazen obvodem Fat Agnus, jenž podporuje adresaci 2MB RAM. V čipu Fat Agnus je zabudovaný i vylepšený koprocesor Blitter, který dokáže přenášet bloky paměti větší než 1024×1024 pixelů. Čip Super Denise nahradil původní Denise. I zde došlo k rozšíření adresovatelné paměti, ale především se objevila podpora pro mnoho nových grafických režimů, především režimu Productivity s rozlišením 640×480 pixelů (bez použití prokládání) a SuperHires, jehož rozlišení bylo rovno 1280×200 pixelům (NTSC) resp. 1280×256 pixelům (PAL) a počet současně zobrazitelných barev dosahoval čtyř. Tyto režimy byly určeny především pro práci s desktopovými programy, například textovými procesory, u nichž nehrál nižší počet zobrazitelných barev tak velkou roli. Kromě toho se změnil i subsystém pro práci se sprity, které je možné v ECS posunout i mimo zobrazovanou oblast do okraje obrazovky (border).
Obrázek 14: Barvová paleta použitá při vykreslení obrázku #13.
Čipset ECS umožňuje, podobně jako tomu bylo i u originálního čipsetu OCS, měnit velké množství parametrů zobrazení. Například je možné volit mezi neprokládaným a prokládaným režimem (v prokládaném režimu se používá dvojnásobný počet obrazových řádků), nastavovat počet prázdných řádků na horním i spodním okraji obrazovky (blank lines), měnit počet skutečně zobrazených pixelů na každém obrazovém řádku (tj. zvětšovat či zmenšovat okraj) atd. V následující tabulce jsou vypsány některé typické grafické režimy určené pro různé video systémy – televizory pracující v normách PAL či NTSC, multifrekvenční monitory atd. Původní režimy podporované již čipsetem OCS jsou pro odlišení označeny hvězdičkou a režimy prokládané mají za svým názvem uvedenu zkratku „int.“ (interlace):
Video systém | Jméno | Rozlišení | Počet barev | Výška:šířka pixelu |
---|---|---|---|---|
* NTSC | LowRes | 320×200 | 2 – 32, EHB, HAM | 1:1 |
* NTSC | LowRes interlaced | 320×400 | 2 – 32, EHB, HAM | 2:1 |
* NTSC | HiRes | 640×200 | 2 – 16 | 1:2 |
* NTSC | HiRes interlaced | 640×400 | 2 – 16 | 1:1 |
* PAL | LowRes | 320×256 | 2 – 32, EHB, HAM | 1:1 |
* PAL | LowRes interlaced | 320×512 | 2 – 32, EHB, HAM | 2:1 |
* PAL | HiRes | 640×256 | 2 – 16 | 1:2 |
* PAL | HiRes interlaced | 640×512 | 2 – 16 | 1:1 |
NTSC (60Hz) | Super-HiRes | 1280×200 | 2 – 4 | 1:4 |
NTSC (60Hz) | Super-HiRes int. | 1280×400 | 2 – 4 | 1:2 |
PAL (50Hz) | Super-HiRes | 1280×256 | 2 – 4 | 1:4 |
PAL (50Hz) | Super-HiRes int. | 1280×512 | 2 – 4 | 1:2 |
Multiscan | Productivity | 640×480 | 2 – 4 | 1:1 |
Multiscan | Productivity int. | 640×960 | 2 – 4 | 1:2 |
A2024 NTSC | 10Hz | 1024×800 | 2 – 4 | 1:1 |
A2024 NTSC | 15Hz | 1024×800 | 2 – 4 | 1:1 |
A2024 PAL | 10Hz | 1024×1008 | 2 – 4 | 1:1 |
A2024 PAL | 15Hz | 1024×1008 | 2 – 4 | 1:1 |
Euro36 (36Hz) | LowRes | 320×200 | 2 – 32, EHB, HAM | 1:1 |
Euro36 (36Hz) | LowRes int. | 320×400 | 2 – 32, EHB, HAM | 2:1 |
Euro36 (36Hz) | HiRes | 640×200 | 2 – 16 | 1:2 |
Euro36 (36Hz) | HiRes int. | 640×400 | 2 – 16 | 1:1 |
Euro36 (36Hz) | Super-HiRes | 1280×200 | 2 – 4 | 1:4 |
Euro36 (36Hz) | Super-HiRes int. | 1280×400 | 2 – 4 | 1:2 |
Euro72 (72Hz) | Productivity | 640×480 | 2 – 4 | 1:1 |
Euro72 (72Hz) | Productivity int. | 640×960 | 2 – 4 | 1:1 |
Super72 (72Hz) | HiRes | 400×300 | 2 – 16 | 1:1 |
Super72 (72Hz) | HiRes int. | 400×600 | 2 – 16 | 1:2 |
Super72 (72Hz) | Super-HiRes | 800×300 | 2 – 4 | 2:1 |
Super72 (72Hz) | Super-HiRes int. | 800×600 | 2 – 4 | 1:1 |
Obrázek 15: Úvodní obrazovka Amigácké verze hry R-Type používá pouze čtyři bitové roviny, tj. maximálně šestnáct barev.
6. Syntéza hudby, pulzně kódová modulace (PCM) a pulzně šířková modulace (PWM)
Při popisu většiny herních konzolí, jimiž jsme se zabývali v předchozích částech tohoto seriálu, jsme se zmiňovali i o jejich zvukovém subsystému. Ten byl většinou založen na nějakém typu čipu určeného pro provádění zvukové syntézy z harmonického signálu vytvářeného buď bistabilním klopným obvodem, popř. generátorem šumu (ten byl u většiny zmiňovaných čipů založený na posuvném registru určité délky se zpětnou vazbou vybavenou většinou jedním hradlem XOR). Tyto signály se u některých modernějších herních konzolí tvarovaly pomocí nějaké obálky typu ADSR (Attack, Decay, Sustain, Release). U popisu dalších herních konzolí jsme si taktéž řekli, že obvod pro syntézu zvuku byl doplněn o další modul, jenž dokázal přehrávat zvukové vzorky: samply. Idea konstruktérů herních konzolí byla v oblasti zvukového výstupu zřejmá – zvuková syntéza je nenáročná na kapacitu paměti i na výkon mikroprocesoru a proto se použije pro přehrávání hudby, zatímco zvukové vzorky (samply) budou použity pro ostatní zvuky ve hře.
Obrázek 16: Pseudonáhodný signál generovaný čipem POKEY (jedná se o výsledek simulace práce poly-čítače, protože reálné čipy POKEY výstupní signál poněkud zkreslovaly, přičemž míra zkreslení závisela na frekvenci).
Na druhou stranu však nemusí být vždy snadné pouze s využitím výše zmíněných generátorů harmonických signálů či generátorů šumu přehrát všechny možné tóny a zvuky – problematická je například mluvená řeč či kvalitní zvuky perkusních nástrojů (ty je možné alespoň částečně nahradit právě generátorem šumu). Z tohoto důvodu se i autoři hudby v některých případech uchýlili k přehrávání zvuků uložených ve formě vzorků (samplů) metodou pulzně kódové modulace (PCM) či pulzně šířkové modulace (PWM). Přehrávání s využitím pulzně kódové modulace bylo na většině čipů zmíněných v předchozím odstavci omezeno na čtyřbitové či osmibitové vzorky. Alternativu k pulzně kódové modulaci představovala pulzně šířková modulace. Výsledkem aplikace této modulace na původní data uložená ve formě vzorků je signál s pouhými dvěma úrovněmi (tedy stále digitální signál), ovšem s mnohem vyšší frekvencí, než je frekvence vzorkovací.
Obrázek 17: Obdélníkový, trojúhelníkový a pilový signál vygenerovaný zvukovým čipem s rozlišením 256 úrovní signálu.
Při použití této modulace jsou ovšem nároky na výpočetní výkon mikroprocesoru či zvukového čipu a přesné časování při přehrávání ještě vyšší než v případě PCM. Výhodou PWM je však to, že se tvůrci hudby nemuseli omezovat pouze na čtyřbitové či osmibitové vzorky. Příkladem může být hudba vytvořená pro původní osmibitový domácí počítač ZX Spectrum (48k) s jednobitovým zvukovým výstupem (beeper) či hudba pro PC Speaker (zde se taktéž jedná o reproduktor připojený na dvoustavový – binární – výstup). Na tomto místě je vhodné uvést, že se PWM používala i v některých přehrávačích audio CD, protože jednobitový převodník použitý v PWM má oproti šestnáctibitovému D/A převodníku použitému při PCM několik výhod – například nedochází ke zkreslení zvuku v případě, že se jednotlivé tranzistory v D/A převodníku zapínají s různým zpožděním, do jisté míry se odstraňuje nelinearita výstupního zesilovače (ten tedy může mít odlišné zapojení a přitom i větší výstupní výkon) apod.
Obrázek 18: Obdélníkový, trojúhelníkový a pilový signál vygenerovaný zvukovým čipem s rozlišením 16 úrovní signálu (při výpočtech průběhu signálu jsou použity čtyři bity a D/A převodník je taktéž čtyřbitový). „Schody“ do generovaného zvuku přináší vyšší harmonické frekvence, čímž je ovlivněna barva výsledného tónu.
7. Zvukový čip Paula
Konstruktéři mikropočítačů Amiga, na nichž je multimediální herní konzole Commodore CDTV postavena, se vydali poněkud odlišnou cestou než mnozí další výrobci domácích a osobních počítačů i herních konzolí. Namísto návrhu či použití již hotového zvukového čipu s různými více či méně sofistikovanými generátory signálů, tvarovačů ADSR obálky a analogovými filtry navrhli čip nazvaný Paula (číselné označení 8364) určený převážně k mixování a přehrávání zvuků uložených v operační paměti počítače ve formě číslicových vzorků (samplů). Paula podporovala souběžné přehrávání čtyř hlasů, každý s osmibitovým rozlišením (počet reprezentovatelných úrovní je tedy roven 256, což představuje při použití lineárního D/A převodníku dynamický rozsah přibližně 48 dB). Zvukové vzorky sice zabírají poměrně velké množství operační paměti – například jednosekundový zvuk vzorkovaný s frekvencí 22050 Hz a osmibitovým rozlišením obsadí cca 21,5 kB RAM – ovšem již první Amigy byly osazeny 256 kB či 512 kB operační paměti a při vhodném způsobu uložení hudby byla velikost skutečně obsazené paměti pro celou hudební skladbu poměrně malá.
Obrázek 19: Sinusový signál vzorkovaný s osmibitovým rozlišením (256 úrovní) a tentýž signál vzorkovaný s rozlišením čtyřbitovým (16 úrovní).
Aby nebyl mikroprocesor mikropočítače při přehrávání zvuků příliš zatížený jejich neustálým kopírováním, bylo možné jednotlivé vzorky přenášet z operační paměti do čipu Paula pomocí DMA, neboli přímého přístupu do operační paměti (Direct Memory Access). Zvukový čip Paula existoval v několika verzích (některé verze se navíc vyráběly v různých pouzdrech), které jsou vypsány v následující tabulce:
Označení čipu | Rozlišující kód | Použito v počítači |
---|---|---|
Paula 8364 R4 | A1000 | |
Paula 8364 R7 | 252127–02 | A3000, AA3000 |
Paula 8364 R7 | 391077–01 | A600, A4000 |
Obrázek 20: Zvukový čip Paula R7 v pouzdře DIL.
8. Stereo výstup a řízení hlasitosti
Zvukový čip Paula podporoval ve standardním režimu čtyři zvukové kanály se stereo výstupem, přičemž první dva kanály byly přiváděny do levého reproduktoru a další dva kanály do reproduktoru pravého. Toto striktní oddělení kanálů je sice akceptovatelné pro výstup na reprobedny, ale při poslechu ve sluchátkách (kde nedochází k téměř žádným interferencím) je vhodnější provést externí „promíchání“ všech kanálů s poměrem od 30% do 65%. Toto míchání lze například navolit i v emulátorech počítačů Amiga, provádí ho i mnohé přehrávače hudebních modulů.
Obrázek 21: Další varianta zvukového čipu Paula R7.
Vzorkovací frekvence každého zvukového kanálu mohla dosahovat až 28867 Hz, což je omezení dané originálním čipsetem (OCS) a způsobem práce s pamětí při generování obrazu (pro každý kanál je možné zvolit odlišnou frekvenci). Rozlišení vzorků je osm bitů, přičemž pro jejich uložení byl použit dvojkový doplněk (střední hodnota je rovna nule, nikoli 127). Navíc bylo možné pro každý kanál nastavit hlasitost pomocí šestice bitů, což, jak si řekneme v následující části tohoto seriálu, může být využito pro zvýšení počtu bitů ve vzorcích/samplech z původních osmi na čtrnáct. Důležité je, že jak o načítání jednotlivých vzorků z operační paměti, tak i o jejich mixování, se z velké míry postaral přímo čip Paula, tj. pro tuto činnost nebylo zapotřebí používat mikroprocesor.
Obrázek 22: Hudba byla většinou ukládána ve formě takzvaných modulů (mod), v nichž se (velmi zjednodušeně řečeno) ukládaly zvlášť samply hudebních nástrojů a zvlášť seznam vzorků, které se měly v každém ze čtyř kanálů přehrávat.
9. Odkazy na Internetu
- Commodore CDTV
http://en.wikipedia.org/wiki/Commodore_CDTV - Amiga
http://en.wikipedia.org/wiki/Amiga - Picasso 2
http://www.iol.ie/~ecarroll/picasso2.html - Hold-And-Modify
http://en.wikipedia.org/wiki/Amiga_Hold-And-Modify - Amiga Halfbrite mode
http://en.wikipedia.org/wiki/Amiga_Hold-And-Modify - HAM8 Explained
http://www.amigans.net/modules/AMS/article.php?storyid=22 - Amiga FAQ (Frequently asked questions) (Part 1 of 4)
http://www.faqs.org/faqs/amiga/introduction/part1/ - Amiga FAQ (Frequently asked questions) (Part 2 of 4)
http://www.faqs.org/faqs/amiga/introduction/part2/ - Amiga FAQ (Frequently asked questions) (Part 3 of 4)
http://www.faqs.org/faqs/amiga/introduction/part3/ - Amiga FAQ (Frequently asked questions) (Part 4 of 4)
http://www.faqs.org/faqs/amiga/introduction/part4/ - Amiga Coding Wiki
http://www.amigacoding.com/index.php/Main_Page - Amiga screen
http://amigadev.elowar.com/read/ADCD2.1/Hardware_Manual_guide/node0061.html - Amiga HAM mode
http://amigadev.elowar.com/read/ADCD2.1/Hardware_Manual_guide/node008F.html - Copper WAIT instruction
http://amigadev.elowar.com/read/ADCD2.1/Hardware_Manual_guide/node004B.html - Copper MOVE instruction
http://amigadev.elowar.com/read/ADCD2.1/Hardware_Manual_guide/node004A.html - GalaxSIM: Solutions for Digital Living
http://www.amiga.com/ - Denise Pin Assignment
http://www.ntrautanen.fi/computers/hardware/misc/denise.htm - Custom Chips: Paula
http://www.amiga-hardware.com/showhardware.cgi?HARDID=1460 - Big Book of Amiga Hardware
http://www.amiga-resistance.info/bboahfaq/ - Amiga Hardware Database
http://amiga.resource.cx/ - ExoticA
http://www.exotica.org.uk/wiki/Main_Page - The absolute basics of Amiga audio
http://www.sufo.estates.co.uk/amiga/amimus.html - Wikipedia: Tracker
http://en.wikipedia.org/wiki/Tracker - Wikipedia: Trackers
http://en.wikipedia.org/wiki/Trackers - Ultimate Soundtracker
http://en.wikipedia.org/wiki/Ultimate_Soundtracker - Protracker
http://en.wikipedia.org/wiki/ProTracker - Impulse Tracker
http://en.wikipedia.org/wiki/Impulse_Tracker - Scream Tracker
http://en.wikipedia.org/wiki/ScreamTracker - MikMod for Java
http://jmikmod.berlios.de/ - List of audio trackers
http://en.wikipedia.org/wiki/List_of_audio_trackers - Wikipedia: Module File
http://en.wikipedia.org/wiki/Module_file - Wikipedia: Chiptune
http://en.wikipedia.org/wiki/Chiptune - Amiga Original chipset
http://www.princeton.edu/~achaney/tmve/wiki100k/docs/Amiga_Original_chipset.html - The Final Fantasy
http://www.thefinalfantasy.com/ - Final Fantasy: Mystic Quest
http://www.gamefaqs.com/snes/532476-final-fantasy-mystic-quest - Book:Final Fantasy series
http://en.wikipedia.org/wiki/Book:Final_Fantasy_series - The World of Final Fantasy
http://www.mobygames.com/featured_article/feature,18/section,114/ - Final Fantasy Style
http://www.mobygames.com/featured_article/feature,18/section,116/ - List of Final Fantasy video games
http://en.wikipedia.org/wiki/List_of_Final_Fantasy_video_games - SQUARE ENIX CO.
http://www.square-enix.com/ - Square Enix : Corporate history
http://www.square-enix.com/jp/company/e/history/ - The History of Computer Role-Playing Games Part 1: The Early Years (1980–1983)
http://www.gamasutra.com/features/20070223a/barton01.shtml - The History of Computer Role-Playing Games Part 2: The Golden Age(1985–1993)
http://www.gamasutra.com/features/20070223b/barton_pfv.htm - Dungeon Master – Return To Chaos
Window port of DM - Dungeon Master (video game)
http://en.wikipedia.org/wiki/Dungeon_Master_(video_game) - Dungeon Master Encyclopaedia
http://dmweb.free.fr/ - Dungeon Master Overview
http://dmweb.free.fr/?q=node/247 - Chaos Strikes Back Overview
http://dmweb.free.fr/?q=node/249 - Dungeon Master II Overview
http://dmweb.free.fr/?q=node/250 - Dungeon Master – Return To Chaos
http://www.ragingmole.com/RTC/ - Dungeon Master Speed Run in 20 minutes! Part 1/2
http://www.youtube.com/watch?v=Ho5E05Bi3bU - Dungeon Master Speed Run in 20 minutes! Part 2/2
http://www.youtube.com/watch?v=Fpht4dWOnGE - Dungeon Master CZ
http://dm.zpc.cz/ - Dungeon Master
http://rpg.yin.cz/d/dungeon-master/ - Return to Chaos (CZ info)
http://dm.zpc.cz/?sekce=rtcinfo - Dungeon Master – kouzla (CZ)
http://dm.zpc.cz/?sekce=dmkouzla - Dungeon Master Java (CZ info)
http://dm.zpc.cz/?sekce=dmjavainfo - Dungeon Master Java (CZ novinky a download)
http://dm.zpc.cz/?sekce=dmjavadownload - Best of Old Games: Dungeon Master
http://www.bestoldgames.net/stare-hry/dungeon-master.php - Muzeum: Dungeon Master – klasika všech klasik
http://www.doupe.cz/default.aspx?article=124596 - Návody – Dungeon Master 1
http://www.abcgames.cz/?p=navody_zobraz&id=1307 - Super NES Programming/Initialization Tutorial
http://en.wikibooks.org/wiki/Super_NES_Programming/Initialization_Tutorial - SNES Development sites
http://www.snescentral.com/development.php - Super NES Programming
http://en.wikibooks.org/wiki/Super_NES_Programming - Super Nintendo Development Wiki
http://wiki.superfamicom.org/snes/show/HomePage - 6502.org
http://www.6502.org/ - The 6502/65C02/65C816 Instruction Set Decoded
http://www.llx.com/~nparker/a2/opcodes.html - 6502 Addressing Modes
http://www.obelisk.demon.co.uk/6502/addressing.html - HuC6280 CPU
http://shu.emuunlim.com/download/pcedocs/pce_cpu.html - Hudson Soft HuC6280 (Wikipedia)
http://en.wikipedia.org/wiki/Hudson_Soft_HuC6280 - William D. Mensch jr.
http://www.computerhalloffame.org/index.php?option=com_content&view=article&id=31&Itemid=4 - Bill Mensch
http://en.wikipedia.org/wiki/Bill_Mensch - SPC 700 Documentation
http://emureview.ztnet.com/developerscorner/SoundCPU/spc.htm - Super NES Programming/SPC700 reference
http://en.wikibooks.org/wiki/Super_NES_Programming/SPC700_reference - Mega Lo Mania
http://www.mobygames.com/game/mega-lo-mania - Mega Lo Mania
http://en.wikipedia.org/wiki/Mega_Lo_Mania - Cannon Fodder
http://www.allgame.com/game.php?id=739 - Cannon Fodder [European]
http://www.allgame.com/game.php?id=15717 - Retrospective: Cannon Fodder
http://www.rockpapershotgun.com/2007/11/11/retrospective-cannon-fodder/ - Cannon Fodder
http://en.wikipedia.org/wiki/Cannon_Fodder_(video_game) - BC Racers
http://en.wikipedia.org/wiki/BC_Racers - Desert Strike Advance
http://www.ign.com/articles/2002/06/03/desert-strike-advance - Three Strikes And You're Out
http://www.eurogamer.net/articles/three-strikes-and-youre-out-article - Head 2 Head: Desert Strike – SNES vs MegaDrive
http://www.retrogamescollector.com/head-2-head-desert-strike-snes-vs-megadrive/ - Desert Strike: Return to the Gulf
http://en.wikipedia.org/wiki/Desert_Strike:_Return_to_the_Gulf - The Chaos Engine (Soldiers of Fortune USA)
http://www.bitmap-brothers.co.uk/our-games/past/chaos-engine.htm - The Chaos Engine series
http://www.mobygames.com/game-group/chaos-engine-series - The Chaos Engine
http://en.wikipedia.org/wiki/Chaos_Engine - The Chaos Engine 2
http://www.bitmap-brothers.co.uk/our-games/past/chaos-engine2.htm - The Chaos Engine series
http://www.mobygames.com/game-group/chaos-engine-series - Moby Games: Speedball series
http://www.mobygames.com/game-group/speedball-series - Bitmap Brothers: Speedball (original)
http://www.bitmap-brothers.co.uk/our-games/past/speedball.htm - Bitmap Brothers: Speedball 2: Brutal Deluxe
http://www.bitmap-brothers.co.uk/our-games/past/speedball2.htm - Wikipedia: Speedball (video game)
http://en.wikipedia.org/wiki/Speedball_(video_game) - Golden Axe
http://strategywiki.org/wiki/Golden_Axe - Golden Axe (series)
http://en.wikipedia.org/wiki/Golden_Axe_(series) - Golden Axe II
http://www.gamespot.com/golden-axe-ii/platform/genesis/ - Golden Axe II
http://strategywiki.org/wiki/Golden_Axe_II - Golden Axe III
http://strategywiki.org/wiki/Golden_Axe_III - Game Freaks 365: Sonic the Hedgehog 2
http://gamefreaks365.com/review.php?artid=1631 - Sonic The Hedgehog 2 (GENESIS)
http://web.archive.org/web/20070831062914/http://sonic.neoseeker.com/sonic_the_hedgehog2/GENESIS/pages/release_dates_background3/ - Neoseeker: Sonic the Hedgehog 2 (16-bit)
http://www.neoseeker.com/Games/Products/GENESIS/sonic_the_hedgehog2/ - Wikipedia: Sonic the Hedgehog 2 (16-bit)
http://en.wikipedia.org/wiki/Sonic_the_Hedgehog2_(16-bit) - Gamespot: Disney's Aladdin
http://www.gamespot.com/disneys-aladdin-in-nasiras-revenge/platform/ps/ - Moby Games: Disney's Aladdin
http://www.mobygames.com/game/disneys-aladdin - Internet Movie Database: Aladdin (I) (Video Game 1993)
http://www.imdb.com/title/tt0204798/ - Wikipedia: Disney's Aladdin (video game)
http://en.wikipedia.org/wiki/Disney's_Aladdin_(video_game) - Eric Chahi
http://en.wikipedia.org/wiki/Eric_Chahi - Wikipedia: Another World (video game)
http://en.wikipedia.org/wiki/Another_World_(video_game) - SN76489 sound chip details
http://web.inter.nl.net/users/J.Kortink/home/articles/sn76489/ - SN76464 datasheet
http://www.ic-on-line.cn/view_online.php?id=1106623&file=0054%5Csn76494_409323.pdf - Texas Instruments SN76489 (Wikipedia)
http://en.wikipedia.org/wiki/Texas_Instruments_SN76489 - SN76489
http://www.smspower.org/Development/SN76489?sid=ae16503f2fb18070f3f40f2af56807f1 - YM2413 FM Operator Type-LL (OPLL) Application Manual
http://www.smspower.org/maxim/Documents/YM2413ApplicationManual?sid=28c370e1fcac51d5774319979bf96f4c - Programming the Sega MegaDrive
http://darkdust.net/writings/megadrive - MegaDrive / SegaGenesis docs
http://www.genny4ever.net/index.php?page=docs - IGN: Top 25 Consoles
http://www.ign.com/top-25-consoles/13.html - Sega Mega Drive
http://sega.jp/archive/segahard/md/ - Sega Archives
http://sega.jp/archive/segahard/ - Sega Genesis
http://www.dmoz.org/Games/Video_Games/Console_Platforms/Sega/Genesis/ - The Retro Gen Plays Genesis Games
http://uk.gamespy.com/articles/998/998637p1.html - The Sega Mega Drive/Genesis
http://www.captainwilliams.co.uk/sega/megadrive/megadrive.php - Sega Game Gear 101: A Beginner's Guide
http://www.racketboy.com/retro/sega/gamegear/sega-game-gear-101-a-beginners-guide - SEGA GameGear | Marc's Realm
http://darkdust.net/retrogaming/gamegear - Sega Master System Hardware
http://www.smspower.org/Development/Documents - SMS/GG hardware notes
http://www.smspower.org/uploads/Development/smstech-20021112.txt?sid=28c370e1fcac51d5774319979bf96f4c - Sega Master System Museum
http://alexkidd.com/ - Jadeite's Sega Master System Museum
http://rp_gamer.tripod.com/SMS/1.html - Sega Master System (Wikipedia)
http://en.wikipedia.org/wiki/Sega_Master_System - Sega Card (Wikipedia)
http://en.wikipedia.org/wiki/Sega_Card - Sega Master System VDP documentation
http://www.smspower.org/uploads/Development/msvdp-20021112.txt?sid=28c370e1fcac51d5774319979bf96f4c - bee – The Multi-Console Emulator
http://www.thebeehive.ws/ - TurboGrafx-16 TurboExpress
http://www.allgame.com/platform.php?id=17673 - HuC6280 CPU
http://shu.emuunlim.com/download/pcedocs/pce_cpu.html - Hudson Soft HuC6280 (Wikipedia)
http://en.wikipedia.org/wiki/Hudson_Soft_HuC6280 - TurboGrafx-16 (Wikipedia)
http://en.wikipedia.org/wiki/TurboGrafx-16 - MagicEngine – TurboGrafx-16 emulator
http://www.magicengine.com/ - Motorola 68000 CPU
http://en.wikipedia.org/wiki/68000 - Motorola 68008
http://en.wikipedia.org/wiki/Motorola_68008 - Motorola 68020
http://en.wikipedia.org/wiki/Motorola_68020 - Motorola 68030
http://en.wikipedia.org/wiki/Motorola_68030