Obsah
1. Osmibitové herní konzole TurboGrafx-16 a TurboExpress
2. Základní technické parametry osmibitové herní konzole TurboGrafx-16
3. Nové instrukce mikroprocesoru HuC6280
4. Zvláštní (13.) adresní režim mikroprocesoru HuC6280
5. Podrobnější informace o grafickém subsystému herní konzole TurboGrafx-16
7. Kapesní herní konzole TurboExpress
8. Důvody vedoucí ke komerčnímu neúspěchu herní konzole TurboExpress
1. Osmibitové herní konzole TurboGrafx-16 a TurboExpress
Dalšími herními konzolemi, s nimiž se setkáme v seriálu o historii vývoje výpočetní techniky, je dvojice osmibitových herních konzolí prodávaných společností NEC. První z těchto konzolí se jmenovala TurboGrafx-16, ovšem v asijských zemích byla známá i pod názvem PC Engine, což je dosti matoucí název, protože s IBM PC neměla tato konzole prakticky nic společného. Druhou konzolí, s níž se dnes seznámíme, je TurboExpress. Na rozdíl od konzole TurboGrafx-16 určené pro připojení k televizoru byla konzole TurboExpress (též označovaná jako PC Engine GT) přenosná a současně se jednalo o první osmibitovou kapesní herní konzoli vybavenou aktivním barevným displejem z tekutých krystalů (ovšem jak se dozvíme v dalším textu, nejednalo se o nijak zvláštní výhodu, spíše tomu bylo naopak). Jedním z důvodů, proč budou obě konzole popsány v jednom článku je fakt, že obě zařízení byla do značné míry postavena na stejných čipech a jednalo se o (alespoň částečně) kompatibilní konzole.
Nejprve začneme popisem herní konzole TurboGrafx-16, protože se na TurboExpress můžeme dívat jako na kapesní variantu tohoto zařízení, které navíc začalo být prodáváno později. TurboGrafx-16 byla na asijských trzích dostupná již v roce 1987 a v roce 1989 se začala prodávat i její americká a evropská varianta, která se od původní asijské verze lišila především velikostí a tvarem case. Z komerčního hlediska se jednalo o průměrně úspěšnou konzoli, protože do roku 1995 (kdy byla výroba ukončena) se jí prodalo přibližně deset milionů kusů a jen v USA bylo prodáno téměř 2,5 milionu kusů (v USA se přitom nejednalo o tak velký úspěch, jaký tento konzole slavila například v Japonsku). Díky těmto počtům prodaných kusů se konzole TurboGrafx-16 umístila na 13. místě prodejnosti v žebříčku firmy IGN (http://www.ign.com/top-25-consoles/13.html), což je s ohledem na celkový počet herních konzolí vydaných od roku 1971 celosvětově poměrně pěkné umístění.
Obrázek 1: Původní case osmibitové herní konzole TurboGrafx-16.
2. Základní technické parametry osmibitové herní konzole TurboGrafx-16
Navzdory svému názvu TurboGrafx-16 i dobovým reklamám, které často hovořily o „výpočetní síle šestnácti bitů“ byla tato herní konzole ve skutečnosti vybavena pouze osmibitovým mikroprocesorem nazvaným Hudson Soft HuC6280 (neplést s 6820, což byl jeden z podpůrných čipů mikroprocesoru Motorola 6800). Mikroprocesor HuC6280 byl založen na jednom z nejpopulárnějších osmibitových mikroprocesorů vůbec – jednalo se o čip MOS 6502, přesněji řečeno o jeho upravenou a v několika ohledech vylepšenou variantu MOS 65C02. Ovšem instrukční sada mikroprocesoru HuC6280 byla oproti původnímu čipu MOS 6502/MOS 65C02 rozšířena o další instrukce a i hodinová frekvence mohla být vyšší: oficiálně byly podporovány frekvence 1,79 MHz, 3,58 MHz a 7,16 MHz (tyto hodnoty souvisí s časováním televizního signálu). Do čipu HuC6280 byl integrován i na svou dobu poměrně výkonný zvukový subsystém, který byl založený na přehrávání vzorků (samplů), což bylo oproti dalším herním konzolím podstatné vylepšení, které mohlo být doplněno ještě mechanikou CD-ROM s vlastním D/A převodníkem. TurboGrafx-16 byla dokonce první osmibitovou herní konzolí podporující tehdy nové médium CD-ROM.
Kromě samotného mikroprocesoru byly v herní konzoli TurboGrafx-16 umístěny i další důležité integrované obvody, především grafický řadič (Video Display Controller – VDC) HuC6270A doplněný o čip HuC6260 (Video Color Encoder – VCE). VDC a VCE pracovaly společně (podobně jako tomu bylo u dvojice čipů ANTIC a GTIA v osmibitových počítačích a herních konzolích firmy Atari) a dokázaly generovat obraz s rozlišením až 565 pixelů horizontálně, 242 pixelů vertikálně a počet současně zobrazitelných barev dosahoval hodnoty 482 z barvové palety, která obsahovala 512 barev. Kromě herního pozadí (bitmapy) bylo možné pracovat s až 64 sprity, které mohly mít volitelnou velikost 16×16, 16×32, 16×64, 32×16, 32×32 či 32×64 pixelů, přičemž každý sprite mohl mít až patnáct barev (šestnáctá „barva“ byla průhledná). Obecně je možné říci, že grafický subsystém herní konzole TurboGrafx-16 byl velmi flexibilní a umožňoval programátorům dobře vybalancovat požadavky na co nejvyšší rozlišení/počet barev na jedné straně a požadovanou výkonnost vykreslovacích algoritmů na straně druhé.
Obrázek 2: Herní konzole TurboGrafx-16 s připojenou mechanikou CD-ROM.
3. Nové instrukce mikroprocesoru HuC6280
V předchozí kapitole jsme si řekli, že osmibitový mikroprocesor HuC6280 měl oproti svému předchůdci MOS 6502 rozšířenou instrukční sadu. Pro pamětníky, kteří pro MOS 6502 tvořili (či dokonce dodnes tvoří) aplikace možná bude zajímavé si alespoň stručně říci, jaké instrukce vlastně byly přidány. V původní instrukční sadě MOS 6502 bylo z 256 možných operačních kódů obsazeno pouze 151 pozic, což znamená, že konstruktéři nových mikroprocesorů odvozených od MOS 6502 mohli navrhnout a implementovat až 105 nových instrukcí a přitom zachovat plnou zpětnou kompatibilitu s existujícími nástroji, assemblery či debuggery (přesněji řečeno nebyla zpětná kompatibilita kvůli některým opravám stoprocentní, například se to týkalo skoků na hranicích paměťových stránek). U mikroprocesoru HuC6280 můžeme najít hned několik skupin nových instrukcí, které jsou uvedeny v tabulce zobrazené pod tímto odstavcem. U prvních čtyř „bitových“ instrukcí je index nastavovaného či testovaného bitu přímo součástí operačního kódu instrukce, což znamená, že jen tato čtveřice instrukcí obsadila 32 pozic ze 105 volných pozic:
# | Instrukce | Význam mnemotechnické zkratky | Popis instrukce |
---|---|---|---|
1 | BBSx | Branch on Bit Set | skok, pokud je vybraný bit 0–7 nastaven |
2 | BBRx | Branch on Bit Reset | skok, pokud je vybraný bit 0–7 vynulován |
3 | RMBx | Reset Memory Bit | vynulování vybraného bitu 0–7 |
4 | SMBx | Set Memory Bit | nastavení vybraného bitu 0–7 |
5 | SAX | Swap Accumulator and X Register | prohození obsahu akumulátoru a registru X |
6 | SAY | Swap Accumulator and Y Register | prohození obsahu akumulátoru a registru Y |
7 | SXY | Swap X and Y Registers | prohození obsahu registrů X a Y |
8 | CLA | Clear Accumulator | vynulování akumulátoru |
9 | TRB | Test and Reset Memory Bits Against Accumulator | bitový test + vynulování bitů |
10 | TSB | Test and Set Memory Bits Against Accumulator | bitový test + nastavení bitů |
11 | CSH | Change Speed High | změna rychlosti mikroprocesoru (jen ihned po resetu) |
12 | CSL | Change Speed Low | změna rychlosti mikroprocesoru (jen ihned po resetu) |
13 | TAI | Transfer Alternate Increment | blokový přenos dat |
14 | TIA | Transfer Increment Alternate | (těchto pět instrukcí |
15 | TDD | Transfer Decrement Decrement | má délku 7 bajtů! |
16 | TIN | Transfer Increment None | – dvě 16bit adresy |
17 | TII | Transfer Increment Increment | – jedna 16bit délka přenosu) |
4. Zvláštní (13.) adresní režim mikroprocesoru HuC6280
Originální mikroprocesor MOS 6502 používal celkem dvanáct adresních režimů, ovšem většina aritmetických a logických instrukcí se spokojila s režimy osmi. Zbylé tři adresní režimy se většinou používaly pouze v instrukcích větvení – branch – a taktéž u instrukcí skoků – jump, poslední režim pak pro adresaci akumulátoru. Ovšem konstruktérům mikroprocesoru HuC6280 evidentně již tak velký počet adresních režimů nestačil, proto přidali ještě jeden režim nový. Aby se však nemusely všechny aritmetické a logické instrukce v instrukční sadě zopakovat pro nový adresní režim, bylo využito malého triku: do stavového registru, v němž bylo původně uloženo pouze sedm bitových příznaků NV-BDIZC (viz též tabulka zobrazená pod tímto odstavcem) byl přidán osmý bitový příznak nazvaný T. Tento bitový příznak byl nastavován instrukcí s mnemotechnickou zkratkou SET (Set T Flag) a k vynulování tohoto příznaku docházelo automaticky ihned poté, co se nový adresní režim poprvé použil.
Příznak | Význam |
---|---|
N | Negative result |
V | Sign bit overflow |
T | *** nový příznak T *** |
B | Break flag (set by BRK instruction) |
D | Decimal mode enabled |
I | IRQ disabled |
Z | Zero result |
C | Arithmetic carry (borrow) |
Pokud byl příznak T nastaven, změnil se význam adresního režimu používajícího původně akumulátor A. Namísto něho se využil bajt uložený na adrese uložené v registru X na nulté stránce paměti (ZP[X]). To například znamenalo, že namísto instrukce:
ADC #42
se ve skutečnosti provedla operace:
ZP[X] = ZP[X] + 42
Při vhodném postupu programování je tak skutečně možné říci, že mikroprocesor HuC6280 obsahoval celkem 256 osmibitových registrů (celou nultou stránku paměti) :-)
Odkazy na stránky s dalšími informacemi o mikroprocesorech MOS 6502 a Hudson Soft HuC6280:
- 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
5. Podrobnější informace o grafickém subsystému herní konzole TurboGrafx-16
Grafický subsystém herní konzole TurboGrafx-16 byl v porovnání s ostatními osmibitovými konzolemi poměrně flexibilní. Zajímavé bylo, že frekvenci hodinového signálu použitého pro časování zobrazení jednotlivých pixelů bylo možné vybírat ze tří hodnot: 5,37 MHz, 7,159 MHz a 10,76 MHz (platí pro televizní normu NTSC). To odpovídalo horizontálnímu rozlišení 282, 377 nebo 565 pixelů na každém obrazovém řádku, tj. v posledním případě se jednalo o velmi vysoké číslo, pokud vezmeme do úvahy reálné možnosti tehdejších televizorů. Programátoři her však většinou přímo nepoužívali horizontální rozlišení 282/377/565 pixelů, ale spokojili se s poněkud nižšími hodnotami, které však byly dělitelné 8 a 16, čehož bylo možné využít například při adresování jednotlivých dlaždic (viz další text). U většiny her se tak můžeme setkat s horizontálním rozlišením 256 (odvozeno z horizontálního rozlišení 282), 336 (odvozeno z 377) a popřípadě i 512 (odvozeno z 565) pixelů na každý obrazový řádek.
I vertikální rozlišení bylo konfigurovatelné a to s přesností jednoho obrazového řádku. Teoretické minimální vertikální rozlišení mohlo být pouze jeden obrazový řádek (zbylý obraz pak byl vykreslen zvolenou společnou barvou pozadí), maximální vertikální rozlišení pak bylo rovno 242 obrazovým řádkům. V tomto případě byly vždy dva na sebe navazující půlsnímky shodné, což odpovídá způsobu zobrazení používaném většinou domácích osmibitových počítačů i herních konzolí připojovaných k televizoru. Ovšem s využitím malého triku bylo možné pracovat/přepínat se i mezi jednotlivými půlsnímky a dosáhnout tak vertikálního rozlišení 484 obrazových řádků (šlo o nechvalně známý prokládaný režim – interlaced mode – s nímž dokázaly pracovat i některé osobní počítače). Většina her však tento trik nevyužívala a z maximálního „neprokládaného“ vertikálního rozlišení 242 řádků se používala rozlišení 224, 239 či 240 obrazových řádků. Typické hry pak měly rozlišení pozadí nastaveno na 256×240 pixelů, a jen u několika herních titulů najdeme rozlišení 512×224 či dokonce 512×240 pixelů.
Obrázek 3: Ukázka možností grafického subsystému herní konzole TurboGrafx-16.
6. Pozadí (dlaždice) a sprity
Celá scéna zobrazená na televizoru se v případě herní konzole TurboGrafx-16 skládala ze dvou typů objektů. Bylo to pozadí (background) složené z dlaždic (tile(s)), přičemž každá dlaždice měla velikost 8×8 pixelů a byla jí přiřazena jedna z šestnácti společně sdílených barvových palet. Každá paleta obsahovala patnáct barev, protože šestnáctá barva byla vyhrazena pro sdílenou barvu pozadí: tato barva byla tedy stejná pro všechny dlaždice. Navíc se tato šestnáctá barva (přesněji řečeno se jednalo o barvu s indexem 0) mohla použít pro změnu priority zobrazení pozadí vůči spritům, tj. pro určení, zda má být vybraný sprite zobrazen před dlaždicí (implicitní chování) nebo až za dlaždicí (sdílená barva je v tomto případě průsvitná, aby byl sprite přes dlaždici vůbec viditelný). Celkový počet barev, s nimiž mohla herní konzole TurboGrafx-16 pracovat, sice dosahoval hodnoty 512 (3 bity pro každou barvovou složku), ovšem pozadí scény mohlo reálně obsahovat pouze 241 barev na jednom snímku. Proč tomu tak je? Zkusme si provést jednoduchý výpočet:
Počet barvových palet pro pozadí = 16 (u každé dlaždice lze vybrat paletu 0-15) Počet barev v každé paletě = 15 (barva s indexem #0 je vždy stejná pro všechny palety) Počet sdílených barev = 1 (to je ona zbylá - sdílená - barva) Celkový počet barev pro pozadí = 16x15+1 = 241
Druhým typem objektů, z nichž se mohl skládat obraz zobrazený na televizoru, byly sprity. Těch mohlo být současně zobrazeno až 64, ovšem s tím omezením, že na jednom obrazovém řádku se mohlo nacházet pouze šestnáct spritů. Rozměry spritů byly volitelné: 16×16 pixelů, 16×32 pixelů, 16×64 pixelů, 32×16 pixelů, 32×32 pixelů či 32×64 pixelů. Pro každý sprite bylo možné zvolit jednu ze šestnácti dostupných barvových palet, přičemž se jednalo o jiné palety, než o ty použité při zobrazování dlaždic na pozadí. Každý pixel ve spritu mohl být vybarven s použitím barvy s indexem #1 až #15, protože index #0 byl rezervován pro průhlednou barvu – tj. pro barvu, kterou přes pixel prosvítala barva pozadí. Vzhledem k tomu, že pro sprity bylo vyhrazeno 16 barvových palet, z nichž každá obsahovala 15 barev, bylo možné s využitím spritů přidat do scény dalších 16×15=240 barev, což nám společně s 241 barvami pozadí a jednou barvou okraje (overscan) dává 482 současně zobrazitelných barvových odstínů z 512 možných.
Obrázek 4: Ovladač dodávaný k herní konzoli TurboGrafx-16.
7. Kapesní herní konzole TurboExpress
Vzhledem k tomu, že herní konzole TurboGrafx-16 byla po komerční stránce poměrně úspěšná (sice se nejednalo o žádný obchodní zázrak, ovšem alespoň v Japonsku se tato konzole prodávala velmi dobře), rozhodla se firma NEC k tomu, že zákazníkům nabídne i kapesní variantu této konzole. Vzniklo tak po technologické stránce velmi zajímavé zařízení nazvané TurboExpress, v Japonsku pak tato konzole byla nabízena pod názvem PC Engine GT (Game Tank). V roce 1990 se jednalo o nejvýkonnější osmibitovou kapesní herní konzoli založenou na podobných čipech, jaké byly použity v originální konzoli TurboGrafx-16. Nejvýznamnějším rozdílem mezi TurboExpress a dalšími tehdy prodávanými kapesními herními konzolemi bylo použití aktivního barevného displeje z tekutých krystalů, jenž měl zaručit dobrou viditelnost her i za ztížených světelných podmínek, ve kterých měly pasivní displeje (ať již monochromatické či barevné) se zobrazením, přesněji řečeno s viditelností a čitelností velké problémy.
Ovšem tento displej se současně stal i jedním z důvodů, proč se tato herní konzole nikdy významně neprosadila (prodáno jí bylo přibližně 1,5 milionu kusů). Tento aktivní displej totiž měl dosti velkou spotřebu, takže se mohlo stát, že se šestice monočlánků AA stihla vybít za pouhých dvacet minut (průměrně cca za hodinu v závislosti na zvolené frekvenci mikroprocesoru), takže slovo „portable“ či „handheld“ zde mělo poměrně diskutabilní význam. Větším problémem však bylo to, že aktivní barevné displeje používající tekuté krystaly byly v roce 1990 ještě poměrně žhavou technologickou novinkou, u níž se nepodařilo odstranit všechny problémy při výrobě. Běžně se tak stávalo, že i nové konzole TurboGrafx-16 byly dodány s displejem, u nějž bylo hned několik pixelů vadných – buď nesvítily vůbec, nebo se nerosvěcovala jedna barvová složka.
Některé verze této konzole byly navíc osazeny nekvalitními levnými kondenzátory, které například způsobovaly výpadky zvuku, což zajisté nepřispělo k dobrému jménu tohoto zařízení (přitom se jedná o několikacentové položky při výrobě – šetření na nepravém místě).
Obrázek 5: Fotografie obalu s herní konzolí TurboExpress. Povšimněte si nápisu hlásajícího, že se jedná o 16bitové zařízení.
8. Důvody vedoucí ke komerčnímu neúspěchu herní konzole TurboExpress
Nejvýznamnějšími problémy, které způsobily komerční neúspěch herní konzole TurboExpress však nebyla ani velká spotřeba ani vadné pixely na displeji, ale velká cena tohoto zařízení a současně i nevhodná doba začátku prodeje. Když se herní konzole TurboExpress začala v roce 1990 prodávat, byla její cena stanovena na 249 dolarů, ovšem velmi rychle byla cena ještě zvýšena na 299 dolarů, což po započtení inflace odpovídá 450 současným dolarům – poněkud moc peněz za kapesní konzoli s velkou spotřebou a potenciálně vadným displejem. Není tedy divu, že se v recenzích začalo toto zařízení poněkud posměšně nazývat Rolls Roycem mezi kapesními konzolemi. K této vysoké ceně se ještě přidalo špatné načasování vstupu na trh, kde začala zuřit skrytá válka mezi Game Boyem (1989), Atari Lynxem (taktéž 1989) a o několik měsíců později taktéž Sega Game Gear. V této tvrdé konkurenci – kde se soupeřilo i tak, že se výrobcům her zakazovala tvorba pro konkurenční zařízení – konzole TurboExpress nebyla příliš úspěšná, takže ji ani současní sběratelé staršího hardware někdy neznají:
# | Konzole | Rok vydání | Procesor | Displej | Rozlišení |
---|---|---|---|---|---|
1 | Microvision | 1979 | Intel 8021/TMS1100 | pasivní monochromatický LCD | 16×16 pixelů |
2 | Epoch Game Pocket Computer | 1984 | NEC µPD78c06 | pasivní monochromatický LCD | 75×64 pixelů |
3 | Game Boy | 1989 | Sharp LR35902 | pasivní monochromatický LCD | 160×144 pixelů |
4 | Atari Lynx | 1989 | MOS 65S02 | podsvícený barevný LCD | 160×102 pixelů |
5 | Sega Game Gear | 1990 | Zilog Z80 | podsvícený barevný LCD | 160×144 pixelů |
6 | TurboExpress | 1990 | HuC6280 | barevný LCD | 400×270 pixelů |
7 | Bitcorp Gamate | 1990 | NCR 81489 | pasivní monochromatický LCD | 160×144 pixelů |
8 | Atari Lynx II | 1991 | MOS 65S02 | podsvícený barevný LCD | 160×102 pixelů |
9 | Watara Supervision | 1992 | MOS 65C02 | pasivní monochromatický LCD | 160×160 pixelů |
10 | Mega Duck | 1993 | klon Zilog Z80 | pasivní monochromatický LCD | 160×144 pixelů |
Obrázek 6: Další pohled na obal s konzolí TurboExpress.
9. Odkazy na Internetu
Poznámka: vzhledem k tomu, že celkový počet odkazů již vzrostl do takové míry, že je zhruba stejně rozsáhlý jako vlastní článek :-), jsou všechny odkazy týkající se zejména již popsaných herních konzolí uloženy ve zvláštním souboru, podobně jako tomu už bylo u předchozích dvou částí tohoto seriálu. Níže se nachází pouze odkazy vztahující se přímo ke konzolím TurboGrafx-16 a TurboExpress, popř. k mikroprocesoru HuC6280:
- IGN: Top 25 Consoles
http://www.ign.com/top-25-consoles/13.html - 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 - TurboGrafx-16 TurboExpress
http://www.allgame.com/platform.php?id=17673 - The 10 Worst-Selling Handhelds of All Time
http://web.archive.org/web/20071012194600/http://gamepro.com/gamepro/domestic/games/features/125748.shtml - HuC6280 CPU
http://shu.emuunlim.com/download/pcedocs/pce_cpu.html - Hudson Soft HuC6280 (Wikipedia)
http://en.wikipedia.org/wiki/Hudson_Soft_HuC6280 - TurboExpress (Wikipedia)
http://en.wikipedia.org/wiki/TurboExpress - TurboGrafx-16 (Wikipedia)
http://en.wikipedia.org/wiki/TurboGrafx-16 - MagicEngine – TurboGrafx-16 emulator
http://www.magicengine.com/ - Oprava konzole Turbo Express: výměna kondenzátorů
http://www.pcenginefx.com/forums/index.php?topic=702.0