Grafický systém počítačů ZX Spectrum a kompatibilních
Grafický systém počítačů ZX Spectrum na rozdíl od jeho předchůdců, počítačů ZX80 a ZX81, není realizovaný výhradně procesorem Z80, ale především obvodem ULA.[1] Grafické rozlišení je 256 x 192 pixelů, barevné vlastnosti lze nastavovat v rastru 32 x 24 bloků, jeden atributový blok má rozměr 8 x 8 pixelů. Počítače ZX Spectrum nemají textový režim. Generovaný obraz se nezobrazuje přes celou plochu zobrazovacího zařízení, ale v okně, barvu okraje (plochy mezi hranicí okna a krajními hranami zobrazovací plochy zobrazovacího zařízení) lze nastavit.
Struktura a umístění videopaměti
Videopaměť ZX Spectra je umístěná v části paměti od adresy 16384 do adresy 32767, do které mají přístup jak procesor Z80, tak obvod ULA. Oblast videopaměti je umístěna od adresy 16384 a její délka je 6912 bajtů. Celá oblast se skládá ze dvou částí, části pro kresbu o velikosti 6144 bajtů a části pro atributy o velikosti 768 bajtů.[1] V části pro kresbu je každý pixel reprezentován jedním bitem, který určuje, zda se jedná o pixel kresby (bit má hodnotu jedna) nebo o pixel pozadí (bit má hodnotu nula), v jednom bajtu jsou umístěny informace o osmi po sobě jdoucích pixelech ležících na jednom řádku.[2] Atributy jsou uloženy v jednom bajtu pro celý atributový blok, v jednom bajtu je uložena barva pozadí (tři bity), barva kresby (tři bity) a informace o zvýšeném jasu v celém atributovém bloku (jeden bit) a blikání (1 bit). Blikání je vlastně záměna barvy kresby a barvy pozadí v pravidelných intervalech.
Celá kresba je rozdělena na třetiny, každá třetina kresby se skládá z osmi textových řádků (výška textového řádku odpovídá výšce atributového bloku, tedy 8 pixelů) a každý textový řádek se skládá z osmi mikrořádků (řádky o výšce jednoho pixelu). Mikrořádky nejsou ve videopaměti umístěny lineárně za sebou, ale nejprve jsou umístěny všechny nulté mikrořádky všech osmi textových řádků první třetiny kresby, po nich následují všechny druhé mikrořádky, třetí mikrořádky, až sedmé mikrořádky první třetiny kresby. Po nich následuje stejně organizovaná oblast pro druhou třetinu kresby a po ní pro třetí třetinu kresby.
Šestnáctibitovou adresu každého bajtu kresby lze rozdělit na části, které mají strukturu bitů:
010 TT MMM RRR SSSSS,
kde TT označuje třetinu kresby, MMM označuje pořadí mikrořádku v rámci textového řádku, RRR označuje pořadí textového řádku v rámci příslušné třetiny kresby a SSSSS označuje pořadí textového sloupce (osmice po sobě jdoucích pixelů v rámci jednoho mikrořádku).[2]
Podobně lze na jednotlivé části rozdělit i šestnáctibitovou adresu atributů, která má pak strukturu:
010110 TT RRR SSSSS.
Důvodem k takovéto struktuře videopaměti je použití dynamických pamětí RAM, u kterých se plná dvoubajtová adresa konkrétní paměťové buňky zadává po jednotlivých bajtech, a takováto struktura umožňuje ULe poslat paměti nižší bajt adresy pouze jednou, protože nižší bajt adresy je pro kresbu i pro atributy společný.[3]
Pršení v obraze
Jako pršení v obraze se nazývá efekt, kdy se v obraze objevují náhodné grafické obrazce. U počítačů ZX Spectrum 48K tento jev nastává, když je registr I procesoru Z80 nastaven na hodnoty v rozsahu 64 až 127, u ZX Specter 128 a +2 navíc i pokud je registr I nastaven na hodnoty 192 až 255 a současně je přistránkována pomalá stránka paměti.[4] U počítačů ZX Spectrum +2A a +3 a u počítačů Didaktik M a Didaktik Kompakt tento jev nenastává.
Grafické režimy počítačů ZX Spectrum a kompatibilních
Samotné ZX Spectrum má pouze jediný grafický režim, ovšem dalších grafických režimů lze docílit softwarově. Některé počítače kompatibilní se ZX Spectrem mají podporu jiných grafických režimů v hardware.
Standardní grafický režim
Standardní rozlišení ZX Spectra je 256 x 192 pixelů, barvy jsou definovány pro matici 8 x 8 pixelů, ve které se mohou nacházet pouze dvě barvy z osmi, v celé matici může být nastavený zvýšený jas. Může být nastavená také barva okraje, zde ovšem bez možnosti nastavit zvýšený jas. U počítačů ZX Spectrum 128 je možné přepínat mezi dvěma oblastmi videoram.
- Detaily:
- Rozlišení kresby: 256 × 192
- Rozlišení atributů: 32 × 24
- Počet barev: 15
Multicolor
Některé počítače kompatibilní se ZX Spectrem, včetně počítačů Timex Sinclair, SAM Coupé a Pentagon, podporují grafický režim, ve kterém je velikost atributového bloku 8 x 1 pixel místo standardních 8 x 8 pixelů. Velikost videoram v tomto režimu je 12 KiB. U počítačů Timex Sinclair je tento režim aktivován příkazem OUT 255,2. U počítače SAM Coupé se jedná o grafický režim Mode 2. Tento režim může být realizován také pomocí disketového řadiče MB02 díky jeho DMA.
Na standardním ZX Spectru může být tento režim uskutečněn programově díky tomu, že ULA načítá informace o barvách při zobrazování každého mikrořádku znovu. Je tak možné změnit atributové informace po vykreslení každého mikrořádku. Procesor v ZX Spectru ale není dostatečně rychlý, aby byla možná změna atributů v celém řádku, takže programově může být tohoto režimu dosaženo v 18 sloupcích obrazu. Tato technika je známá také pod alternativními názvy Hicolour, FLI a Rainbow Processor. Pro editaci obrázků o velikosti 128 x 192 pixelů v tomto režimu existuje program Color Draw.[5] Multicolor musí být správně vyčasován pro jednotlivé modely ZX Spectra, jinak nemusí být správně zobrazen.[6] Při vhodném časování je možné multicolor rozšířit i na okraj obrazu, ovšem s omezením, že šířka „virtuálního pixelu“ je v okraji obrazu větší než šířka pixelu ve vlastním obraze.[3] Protože režim multicolor má i jiné varianty, bývá někdy tato varianta označována jako multicolor 8 x 1.
- Detaily:
- Rozlišení kresby: 256 × 192
- Rozlišení atributů: 32 × 192
- Počet barev: 15
Multicolor 8 x 2
Multicolor 8 x 2 je varianta režimu multicolor, kdy jsou atributy změněny po vykreslení každých dvou mikrořádků, což vede na velikost matice atributů 8 x 2 pixely. U ZX Spectra 128 je při této technice využívána druhá videoram pro zajištění toho, aby změna barev nastala v celém obraze současně.
- Detaily:
- Rozlišení kresby: 256 × 192
- Rozlišení atributů: 32 × 96
- Počet barev: 15
Multicolor 4 x 1
Speciální případ multicoloru, kdy je s každým blokem o velikosti 4 x 1 pixelů zacházeno jako s jedním pixelem. V každém bloku 8 x 1 pixel se tak mohou nacházet dvě různé barvy, jas je ovšem pro celý blok 8 x 1 pixelů společný.
- Detaily:
- Rozlišení kresby: 64 × 192
- Rozlišení atributů: 64 × 192
- Počer barev: 15
Monochromatický Multitech
Tato technika je známá v souvislosti s disketovým řadičem MB02, nicméně její princip je stejný jako princip režimů multicolor. Rozdíl je pouze v tom, že se generovaný obraz zobrazuje místo barevně v odstínech šedé (nastavením zobrazovaní barev na televizi nebo na monitoru na minimum). Vzhledem k možnostem ZX Spectra je tak možné zobrazovat 15 úrovní šedi v rozlišení 256 x 192 pixelů.
- Detaily:
- Rozlišení kresby: 256 × 192
- Rozlišení atributů: 32 × 192
- Počet barev: 15 úrovní šedé
Monochromatický
Tento režim je podporován počítači Timex Sinclair a některými ruskými variantami ZX Spectra, např. Bajt. Pro tento režim existují dva grafické editory a je také podporován jazykem BASIC64 a některými implementacemi systému CP/M. Velikost videoram v tomto režimu je 12 KiB.
- Detaily:
- Rozlišení kresby: 512 × 192
- Rozlišení atributů: nemá
- Počet barev: 2
Barevný
Barevný režim v rozlišení 512 x 192 pixelů je podporován hardwarem počítače SAM Coupé, v tomto režimu je možné použít 4 různé barvy vybrané z palety 128 barev. Velikost videoram v tomto režimu je 24 KiB. Tento režim je u počítače SAM Coupé označen jako Mode 3 a při šířce znaku 6 pixelů umožňuje dosáhnout až 85 znaků na řádku.
- Detaily:
- Rozlišení kresby: 512 × 192
- Rozlišení atributů: 512 x 192
- Počet barev: 4
Interlace
Pravidelnou záměnou dvou obrazů při každém přerušení je možné simulovat zdvojnásobení vertikálního rozlišení ze 192 na 384 mikrořádků. Počítače Timex a ZX Spectra 128 mají dvě oblasti videoram, mezi kterými je možné přepínat pomocí příkazu OUT a který lze pro tyto účely využít. Může být také použito standardních přesunů bloků dat, ale v tomto případě nemůže být zvýšené vertikální rozlišení simulováno v celém obraze. Alternativně je možné dosáhnout rozlišení 512 x 192 pixelů.[7] Při zobrazování takto generovaného obrazu na televizoru je méně patrné poblikování obrazu než při jeho zobrazování na monitoru.
Ukázka zobrazování v režimu interlace je pouze odkazována, protože obrázek rychle bliká, což může způsobit potíže lidem s fotocitlivou epilepsií.
Tato technika ve skutečnosti není reálný režim interlace, protože ZX Spectrum neumožňuje hardwarovou synchronizaci s obrazem na nizké úrovni, spíše se jedná o dosažení stavu, kdy jsou některé pixely zobrazovány s poloviční intenzitou.
- Detaily:
- Rozlišení kresby: 256 × 384
- Rozlišení atributů: 32 × 24
- Počet barev: 15
GigaScreen
V tomto režimu jsou kombinovány dva speciálně připravené obrázky, jejichž zobrazování se pravidelně střídá. Díky tomu je zobrazitelná barevná paleta zvětšena na asi 102 barev díky míchání barev při střídání zobrazovaných obrázků.
Pro počítače Pentagon je dostupná hardwarová úprava, která umožňuje míchání dat ze dvou oblastí videoram přímo, čímž je eliminováno poblikávání obrazu. Navíc mohou být kombinovány režimy GigaScreen a Multicolor, což umožňuje zobrazit obrázky s mnohem více barvami (při velikosti atributové matice 8 x 1, 8 x 2 nebo 8 x 4), tento způsob je označován jako DithVIDE či BZither (oba názvy odkazují na techniku ditheringu, která je používána při úpravách plnobarevných obrázků na tento formát.
Na ZX Spectru 48 je nutné tento režim realizovat změnou v atributové oblasti videoram, U ZX Spectra 128 je možné využít druhé videoram.
- Detaily:
- Rozlišení kresby: 256 × 192
- Rozlišení atributů: 32 × 24
- Počet barev: 102
3colour / Multichrome / RGB-3 / Interchrome
V tomto režimu jsou kombinovány tři obrázky s jednotlivými RGB složkami a technika spoléhá na setrvačnost při vnímání, při které se všechny tři postupně zobrazované složky smíchají ve výslednou barvu. Výsledkem je tak osmibarevný obrázek, ve kterém může být každý pixel obarven nezávisle. Frekvence poblikávání je 16,6 Hz, což už je lehce vnímatelné.
Ukázka zobrazování v režimu interlace je pouze odkazována, protože obrázek rychle bliká, což může způsobit potíže lidem s fotocitlivou epilepsií. Při zobrazování na televizoru je poblikávání méně patrné.
- Detaily:
- Rozlišení kresby: 256 × 192
- Rozlišení atributů: 256 × 192
- Počet barev: 8
Flash-color
Flash-color je režim, který využívá zvýšené frekvence blikání (FLASH) z 1,5 Hz na 7 MHz. V tomto režimu za každým pixelem s barvou kresby následuje pixel s barvou pozadí. Nastavuje se tak bitem, který je původně určen pro nastavení blikání a umožňuje zobrazit 128 barev.
256 x 192, 16 barev
Počítač SAM Coupé má grafický režim umožňující každému pixelu v rozlišení 256 x 192 pixelů nastavit nezávisle libovolnou barvu z aktuální 16barevné palety.[8]
- Detaily:
- Rozlišení kresby: 256 × 192
- Rozlišení atributů: 256 x 192
- Počet barev: 16
384 x 304
Hardwarové rozšíření počítače Pentagon umožňuje zobrazování v rozlišení 384 x 304 pixelů. V tomto režimu je pro zobrazování obrazu využita i oblast borderu. Organizace videoram v tomto režimu je analogická organizaci videoram ve standardním režimu.
640 x 200
Počítač ZX Next má grafický režim s rozlišením 640 x 200 pixelů, v dokumentaci k počítači označovaný jako CGA.[9]
ULAplus
ULAplus, ULA64 je projekt alternativního obvodu ULA počítače ZX Spectrum 48K. Nový obvod, který je zpětně kompatibilní s originálem umožňuje zobrazovat 64 barev z palety 128 barev. Myšlenka je založena na tom, že bity standardně využívané pro nastavení jasu a blikání jsou použity pro výběr jedné ze čtyř barevných palet, z nichž každá obsahuje 8 barev pro kresbu a 8 barev pro pozadí. Tento režim je emulován některými emulátory.
Grafické režimy v emulátorech ZX Spectra
- Následující odstavce jsou překladem stránky ZX Spectrum graphic modes rev. 610166461 anglické Wikipedie.
256×192, 256 barev, "256 Colour Mode", no attributes
Emulátory SPEC256 a EmuZWin mají režim, ve kterém každý z pixelů v rozlišení 256 x 192 může mít jakoukoliv z 256 barev. Toho je dosaženo rozšířením datové sběrnice emulovaného procesoru Z80 z 8 na 64 bitů, díky čemuž se velikost videoram zvýší na 48 KiB. Tento režim existuje pouze v emulátorech a programy je nutné pro využívání tohoto režimu upravit.
- Detaily:
- Rozlišení kresby: 256 × 192
- Rozlišení atributů: 256 × 192
- Počet barev: 256
128×192, 64 barev, "TV blur", 32×24 atttributů
Díky omezením zobrazování na standardním televizoru dochází k horizontálnímu prolínání sousedních obrazových pixelů. Tento efekt je využíván pro zvýšení počtu zobrazovaných barev na obrazovce téměř všemi grafickými návrháři využívajících ditheringu. Některé emulátory umožňují tento efekt nastavit při generování obrazu.
- Detaily:
- Rozlišení kresby: 128 × 192
- Rozlišení atributů: 16 × 24
- Počet barev: 64
Reference
V tomto článku byly použity překlady textů z článků ZX Spectrum graphic modes na anglické Wikipedii a Видеорежимы ZX Spectrum na ruské Wikipedii.
- TIŠNOVSKÝ, Pavel. Grafika na osmibitových počítačích firmy Sinclair. Root.cz [online]. 2009-06-25. Dostupné online. ISSN 1212-8309.
- TIŠNOVSKÝ, Pavel. Grafika na osmibitových počítačích firmy Sinclair II. Root.cz [online]. 2009-07-02. Dostupné online. ISSN 1212-8309.
- Factor6: Grafika a grafické efekty (módy) na ZX Spectru na c64.cz, vyd. 2014-04-30, cit. 2014-12-17
- JSH. ZX Spectrum 128 (tentokráte už potřetí). ZX Magazín. 1994, čís. 3&4/94, s. 14–16. ISSN 1210-4833.
- LHC Software. Color Draw. ZX Magazín. 1995, čís. 1/95, s. 10–11. ISSN 1210-4833.
- ZX-Spectrum graphics modes (anglicky) na gfxzone.planet-d.net, vyd. January 2002
- JSH. Rozšířená grafika na ZX Spectru - módy 512*192 a 256*384. ZX Magazín. 1993, čís. 3/93, s. 15. ISSN 1210-4833.
- ZX Spectrum extra graphics modes (anglicky) na 8bit.yarek.pl
- Видеорежимы na SpeccyWiki
Literatura
- ADAMOVSKÝ, Petr. Tabulky adres pro práci s videoram. ZX Magazín. 1994, čís. 6/94, s. 17–19. ISSN 1210-4833.
Externí odkazy
- ZX Spectrum best graphics na youtube - ukázka grafických možností ZX Spectra