Hlavní navigace

Historie vývoje počítačových her (114. část – vývoj her pro kapesní herní konzole v současnosti)

6. 2. 2014
Doba čtení: 22 minut

Sdílet

Kromě osmibitových herních konzolí, které se připojovaly k televizoru, se poměrně velké popularitě těšily (a v některých případech dodnes těší) i osmibitové programovatelné kapesní herní konzole. Dnes si řekneme, jakým způsobem je v současnosti využívána herní konzole Nintendo Game Boy.

Obsah

1. Historie vývoje počítačových her (114. část – vývoj her pro kapesní herní konzole v současnosti)

2. Kapesní osmibitová herní konzole Nintendo Game Boy

3. Interní LCD a grafický režim Game Boye

4. Zobrazení pozadí herní scény

5. Způsob práce se sprity

6. Zvukový subsystém

7. Jeden z důvodů velké oblíbenosti Game Boye i v současnosti – sériový port

8. Pirátské cartridge pro Game Boye

9. Assemblery a cross assemblery

10. Game Boy Development Kit – GBDK

11. GB Basic

12. Odkazy na Internetu

1. Historie vývoje počítačových her (114. část – vývoj her pro kapesní herní konzole v současnosti)

Dalšími herními konzolemi, pro něž i v současnosti vznikají nová dema a hry popř. úpravy starších her, jsou různé programovatelné osmibitové kapesní herní konzole, tj. konzole napájené z baterií a vybavené vlastním monochromatickým či barevným displejem z tekutých krystalů (LCD). Nebudeme se tedy zabývat jednoúčelovými herními konzolemi určenými pouze pro provozování jedné hry (LCD s předtištěnými tvary postaviček – typickým zástupcem je série konzolí Game & Watch) či několika podobných her (většinou se v tomto případě jednalo o 99 variací na téma Tetrisu).

Obrázek 1: Kapesní hra „Octopus“ byla nabízena v rámci série Game & Watch společnosti Nintendo zmíněné v předchozím odstavci. Povšimněte si, že pro ovládání potápěče postačovala pouze dvě tlačítka, což je pro mnoho her ze série Game & Watch typické (zbylé hry obsahovaly tlačítka čtyři, popř. D-pad). Později vzniklo i několik klonů této hry od pocházejících od různých výrobců.

Zajímavé je, že základní technické parametry programovatelných osmibitových kapesních herních konzolí se příliš nelišily od parametrů herních konzolí připojovaných k televizorům, samozřejmě až na (alespoň ve většině případů) nižší rozlišení LCD v porovnání s grafickými režimy, které bylo možné použít na televizní obrazovce.

Obrázek 2: Sovětský klon další kapesní hry pocházející ze série Game & Watch. Původní název zní „Chev“. I tato jednoúčelová herní konzole se ovládala pouze s využitím dvou tlačítek.

V tabulce umístěné pod tímto odstavcem jsou vypsány základní parametry nejznámějších (ovšem ne zcela nutně nejprodávanějších) univerzálních kapesních herních konzolí, které byly na trh uváděny v rozmezí let 1979 až 1993. Jedná se vesměs o konzole vybavené osmibitovými mikroprocesory a jejich displeje z tekutých krystalů mají až na několik výjimek většinou rozlišení 160×102 až 160×160 pixelů (zajímavé je, že známé PDA Palm Pilot měly v případě prvních modelů taktéž LCD s rozlišením 160×160 pixelů, i když se jedná o zařízení z roku 1996):

# 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 3: Jednoúčelová kapesní herní konzole „Donkey Kong 3“, na jejímž displeji je patrné, že podklad herní scény je pouze statický (natištěný na fólii).

2. Kapesní osmibitová herní konzole Nintendo Game Boy

Pouze několik typů kapesních herních konzolí z předchozí tabulky dosáhlo takového rozšíření a popularity, aby se na tato zařízení ani v současnosti nezapomnělo. Jednou z nejznámějších kapesních herních konzolí, které vznikly v osmdesátých letech minulého století, je bezesporu Nintendo Game Boy. V případě této konzole se vývojovému týmu podařilo vytvořit dostatečně výkonné a přitom relativně levné a malé zařízení, které se navíc mohlo chlubit velkou výdrží baterií, na rozdíl od Atari Lynxu, Sega Game Gear či TurboExpressu. Jinými slovy se podařilo najít na dobu vzniku téměř ideální rovnováhu mezi funkcionalitou a cenou (původní cena byla stanovena na devadesát dolarů, resp. přesněji řečeno na baťovskou hodnotu 89,95 dolarů). Dalším důležitým faktorem, který vedl k oblíbenosti této kapesní herní konzole, byl i fakt, že se společně s herní konzolí dodávala i jedna z nejznámějších a nejúspěšnějších počítačových her celé herní historie – samozřejmě se jedná o hru Tetris, o níž jsme se již v tomto seriálu zmiňovali v souvislosti s „plnohodnotnou“ herní konzolí Nintendo Entertainment System – NES.

Obrázek 4: Zvětšená (dosti nekvalitní) fotografie trackeru spuštěného přímo na Game Boyi.

Grafické schopnosti Game Boye sice dnes v dobách smartphonů a tabletů pravděpodobně nikoho neohromí, zajímavější je však možnost ovládat touto herní konzolí další zařízení, popř. ji připojit k tabletu jako vylepšený ovladač her (oproti dotykové obrazovce se mnohdy jedná o významné zlepšení). Navíc je zvukový systém Game Boye poměrně oblíbený mezi alternativními hudebníky – autory takzvané chipmusic. Zvukový čip Game Boye se tak svojí popularitou řadí po bok čipů POKEY, SID, AY-3–8910, YM-3812 atd.).

Obrázek 5: Hudební tracker spuštěný přímo na Game Boyi.

Důvod, proč jsou tato elektronická zařízení pocházející „z doby kamenné“ stále mezi programátory oblíbená, vcelku výstižně shrnuje následující citát, který ovšem lze aplikovat i na další NEkapesní osmibitové a šestnáctibitové herní konzole:

„Programming for handhelds is probably the most fun and rewarding programming you can do. You don't have to worry about some complex API (like Win32 or DirectX) and you can program right down to the metal. Writing code to pass things right to registers directly. On top of all that, you get to see your code running on a real commercial console.“

Obrázek 6: Jedna z variant konzole Nintendo Game Boy.

3. Interní LCD a grafický režim Game Boye

Způsob tvorby rastrového obrazu zobrazovaného na displeji herní konzole Game Boy se v některých ohledech podobá způsobu, s nímž jsme se seznámili minule v souvislosti s herní konzolí Nintendo Entertainment System. Zajímavé je, že zatímco samotný displej z tekutých krystalů má rozlišení 160×144 pixelů, je grafický subsystém konzole Game Boy schopen pracovat s grafickým obrazem o rozlišení celých 256×256 pixelů se čtyřmi stupni šedi. Na první pohled by se mohlo zdát, že je využito pouze 35% kapacity framebufferu (160×144 versus 256×256), ve skutečnosti je však podporován scrolling obrazu, což znamená, že i zbývajících 65% kapacity framebufferu dokážou alespoň některé hry využít (scrolling funguje tak, že se při dosažení pravého okraje začne zobrazovat obsah řádku v levé části framebufferu).

Obrázek 7: Hra Q-Bert ve variantě pro herní konzoli Game Boy (zvětšeno 2×).

Podobně jako u naprosté většiny ostatních osmibitových herních konzolí (ať již kapesních či „televizních“) není framebuffer uspořádán přímočaře po jednotlivých obrazových řádcích a ty nejsou uloženy pixel po pixelu, protože by – i přes svoji jednoduchost – byl tento způsob organizace zbytečně náročný pro manipulace s obrazem při zobrazování dynamických herních scén, nehledě na to, že by kapacita 8 kB Video RAM byla v tomto případě nedostačující (256×256 pixelů při hloubce 2bpp odpovídá kapacitě 16kB Video RAM, což je mnoho).

Obrázek 8: Slavný Tetris ve variantě pro herní konzoli Game Boy (zvětšeno 2×).

Namísto jednoduchého uložení bitmapy o rozlišení 256×256 pixelů s barevnou hloubkou 2bpp lineárně do paměti je framebuffer rozdělen do celkem 32×32 dlaždic, přičemž každá dlaždice odpovídá bitmapě o velikosti 8×8 pixelů. Celý framebuffer je tedy zredukován na pole 32×32 bajtů, přičemž každý bajt obsahuje pouze osmibitový index vzorku (pattern), tj. index na bitmapu 8×8 pixelů. Zajímavé je, že samotné dlaždice (=pole 32×32 indexů vzorků) mohou být taktéž uloženy ve dvou oblastech Video RAM, čehož je možné ve hrách využít, například pro implementaci jednoduché formy doublebufferingu atd.

Obrázek 9: Alleyway – jedna z variant na Breakout či Arkanoid (zvětšeno 2×).

4. Zobrazení pozadí herní scény

Jak vlastně vypadá způsob uložení jednotlivých bitových vzorků (patterns) ve video paměti herní konzole Game Boy? Každý bitový vzorek je, jak již víme z předchozí kapitoly, reprezentován bitmapou o rozlišení 8×8 pixelů, přičemž pro každý pixel je zde nutné vyhradit dva bity, protože displej dokáže zobrazit čtyři odstíny šedi. Ovšem aby to nebylo tak jednoduché, nejsou tyto dva bity reprezentující jeden pixel uloženy přímo za sebou, ale takovým způsobem, že je v bitmapě nejprve uložen bajt odpovídající osmici nižších bitů indexu barvy, za nímž následuje bajt s osmici vyšších bitů indexů barvy (každé dva bajty tedy odpovídají jednomu řádku bitmapy 8×8 pixelů, celkový počet bajtů pro uložení jednoho vzorku dosahuje hodnoty 16). Tomu se musí přizpůsobit i kreslicí programy využívané v současnosti.

Obrázek 10: Detail D-padu herní konzole Game Boy.

Prozatím jsme si však popsali pouze jednu třetinu typů objektů, z nichž se skládá výsledný obraz zobrazený na displeji Game Boye. Jedná se o takzvané herní pozadí (background) – odtud taktéž vychází název pro tabulku dlaždic: Background Tile Map. Shrňme si, že pozadí je možné scrollovat, dále je možné zápisem jediného bajtu změnit oblast o velikosti 8×8 pixelů (vyměnit vzorek za jiný) a taktéž lze v libovolný okamžik provést přepnutí mezi sadou dvou tabulek dlaždic.

Obrázek 11: Jedna z nejznámějších her pro Game Boye: Super Mario Land 2.

Druhým typem grafického objektu, který lze zobrazit na displeji, je takzvané okno, které je vždy zobrazeno před pozadím, tj. má vyšší prioritu zobrazení než pozadí. Okno sice není scrollovatelné, ovšem lze libovolně zvolit pozici jeho levého horního rohu na ploše displeje. Podobně jako v případě pozadí (background), je i obsah okna (window) určován nepřímo s využitím indexů vzorků; ve skutečnosti se pro oba typy objektů používá stejná tabulka s indexy. Okno lze využít mnoha způsoby: typicky se používalo například pro zobrazení dosaženého skóre a/nebo ubíhajícího času, protože tyto dva údaje by neměly scrollovat společně s pozadím. Najdeme ho i ve hrách typu Zelda atd.

Obrázek 12: Způsob zvýšení zdánlivého počtu barev pomocí ditheringu.

5. Způsob práce se sprity

Kromě pozadí (background) a okna (window) dokáže grafický subsystém herní konzole Game Boy pracovat i se sprity, tj. s malými bitmapami, u nichž lze zvolit jejich pozici na displeji – jedná se tedy o pohyblivé objekty nezávislé na pozadí. Sprity mohou mít jen poměrně malé rozlišení 8×8 či alternativně 8×16 pixelů a může jich být současně zobrazeno až čtyřicet, ovšem kvůli určitým obvodovým omezením se na jednom obrazovém řádku může nacházet maximálně deset spritů – i to je ovšem poměrně velké číslo (u NESu to bylo jen osm spritů na obrazovém řádku, větší množství způsobilo problémy, a to dokonce i ve chvíli, kdy byly sprity přesunuty do neviditelné části framebufferu).

Obrázek 13: I v této hře je využíván dithering pro zvýšení zdánlivého počtu barev na displeji.

Podobně jako v případě pozadí jsou i tvary spritů definované pomocí vzorků (patterns). Kromě toho jsou každému spritu přiřazeny další čtyři bajty uložené v takzvané tabulce atributů spritů (Sprite Attribute Table, taktéž nazývané OAM – Object Attribute Memory, protože sprity se na GB nazývaly jednoduše objekty). Tato paměťová oblast je rozdělena na 40 záznamů po čtyřech bajtech (40=počet spritů). V případě spritů o velikosti 8×16 jsou použity pouze sudé záznamy, protože liché záznamy obsahují spodní polovinu spritů.

Obrázek 14: Úvodní obrazovka světoznámé hry Tetris pouze využívá základních možností displeje Game Boye bez použití různých efektů.

Ony čtyři přidávané bajty rezervované pro každý sprite obsahují:

Byt Význam
0 vertikální souřadnice spritu ve framebufferu
1 horizontální souřadnice spritu ve framebufferu
2 index tvaru 0–255 definující bitmapu spritu
3 bitové pole: priorita, zrcadlení okolo osy x, zrcadlení okolo osy y, index palety 0–1

Obrázek 15: Další ukázka statické scény.

Ještě se pro úplnost zmiňme o prioritách spritů. Sprity mají větší prioritu než pozadí v případě, že je jejich bit priority nastaven na nulu. Pokud je naopak nastaven na jedničku, je sprite zobrazen pouze nad barvou pozadí s indexem 0 a naopak se skrývá za barvami pozadí s indexy 1, 2 a 3 (dtto pro okno – window, které se zde chová stejně jako pozadí – background). Pokud se překrývají dva sprity, je jejich priorita určena nejdříve na základě jejich x-ové souřadnice (sprite více nalevo má vyšší prioritu). V případě, že je i jejich x-ová souřadnice shodná, určuje se priorita na základě indexu spritu. Toto chování může poněkud komplikovat vývoj herního engine, stejně tak jako fakt, že přímo v hardware není detekována kolize spritů, která se tak musí řešit programově. U mnoha dalších osmibitových herních konzolí naopak existuje více prostředků pro nastavení priority spritů i pro detekci kolizí.

Obrázek 16: Výsledek soutěže o převod obrázků z moderních her na displej Game Boye – slavný Another World.

6. Zvukový subsystém

Kvůli snaze o dosažení co nejnižší výrobní ceny je jak grafický, tak i zvukový subsystém v herní konzoli Game Boy přímo součástí jejího mikroprocesoru; jedinými dalšími čipy je paměť a taktéž řadič displeje z tekutých krystalů (ten je umístěn na samostatném plošném spoji). Grafickým subsystémem Game Boye jsme se zabývali v předchozích kapitolách, pojďme si tedy říci některé základní informace o zvukovém subsystému této herní konzole. Ten je v mnoha ohledech podobný systému, který již známe z popisu herní konzole Nintendo Entertainment System (NES), i když i zde existuje několik rozdílů. Filozofie zvukové syntézy založené na skládání několika základních signálů je však podobná.

Obrázek 17: Výsledek soutěže o převod obrázků z moderních her na displej Game Boye – perský princ.

Na konzoli Game Boy se zvuky a hudba generují s využitím čtyř zvukových kanálů, přičemž každý kanál měl odlišné vlastnosti (na rozdíl například od čipu POKEY, který měl čtyři prakticky shodné zvukové kanály). Výstup z jednotlivých kanálů byl po zesílení přiveden na interní piezoelektrický zvukový generátor a taktéž na sluchátkový výstup – zde je zajímavé, že se mohlo zvolit, zda se výstup z daného kanálu přenese do levého, pravého či obou sluchátek, takže se dal simulovat velmi primitivní stereo výstup (to samozřejmě neplatilo pro interní piezoelektrický generátor, ten byl monofonní, signály z jednotlivých kanálů se totiž sčítaly v zesilovači).

Obrázek 18: Výsledek soutěže o převod obrázků z moderních her na displej Game Boye.

První zvukový kanál byl určen pro generování klasického obdélníkového signálu s volitelnou frekvencí a hlasitostí. U druhého zvukového kanálu se taktéž generoval obdélníkový signál, ovšem frekvence byla fixní. Zvukový subsystém Game Boye obsahoval i jednoduchý generátor obálky (envelope), která byla aplikovatelná na první i druhý kanál. Použití obálky je pro mikroprocesor mnohem méně náročné než programová změna hlasitosti v reálném čase, která musela být prováděna na těch zvukových čipech, které změnu hlasitosti s využitím obálky neumožňovaly. Zajímavější byl třetí zvukový kanál, protože ten dokázal přehrávat čtyřbitové vzorky uložené v bufferu o velikosti šestnáct bajtů (32 vzorků), takže se například perkusní nástroje mohly uložit do paměti jako krátké samply (pro déletrvající zvuky samozřejmě interní paměť o kapacitě osmi kilobajtů nedostačovala). Poslední zvukový kanál byl určen pro generování šumu a interně byl tvořen, podobně jako na většině zvukových čipů osmibitové éry, posuvným registrem se zpětnou vazbou (LFSR – linear feedback shift register).

Obrázek 19: Výsledek soutěže o převod obrázků z moderních her na displej Game Boye.

7. Jeden z důvodů velké oblíbenosti Game Boye i v současnosti – sériový port

Herní konzole Game Boy je některými nadšenci dnes využívána i pro ovládání různých dalších zařízení, a to s využitím sériového portu. Tento port byl původně zamýšlen pro propojení několika konzolí (maximálně čtyř v jeden okamžik – to je ovšem dáno jen vlastnostmi přenosového protokolu), čehož mohly využívat některé hry pro více hráčů. V době vzniku Game Boye se jednalo o dosti převratnou myšlenku, která je v současnosti rozvinuta například v Nindendu 3DS a dalších moderních herních konzolích. Nicméně díky existenci sériového portu je dnes zjednodušen vývoj her, sériový port je možné použít pro připojení klávesnice, externího ovladače, tabletu či právě k ovládání dalších zařízení.

Obrázek 20: Úvodní obrazovka hry Boulder Dash ve variantě pro Game Boye.

A je zajímavé, že se k podobné činnosti ještě poměrně nedávno využívaly PDA Palm Pilot o nichž jsme se zmínili v souvislosti s rozlišením jejich LCD. Ostatně toto řešení by mohlo být dnes úspěšné i z komerčního hlediska, protože podobné zařízení („univerzální“ terminál s poměrně velkým LCD a dobře ovladatelnými tlačítky) v nějaké rozumné cenové relaci pravděpodobně není nabízeno.

Obrázek 21: Výběr okruhu a obtížnosti.

Vlastnosti protokolu používaného při přenosu dat sériovým portem je možné nalézt na tomto diagramu: http://fms.komkon.org/Game­Boy/Tech/LinkFormat.gif, z něhož je patrné, že se kromě datového a zemicího vodiče používal ještě jeden vodič pro přenos hodinového signálu, takže se výsledek podobá sběrnici SPI. V relativně nedávné minulosti se taktéž používalo propojení Game Boye s PC pomocí sériového portu na jedné straně a paralelního portu na straně PC. Paralelní port přitom programově simuloval sériový přenos dat – http://fms.komkon.org/Game­Boy/Tech/LinkToLPT.gif.

Obrázek 22: První herní úroveň v režimu přiblížení.

8. Pirátské cartridge pro Game Boye

V souvislosti se staršími osmibitovými herními konzolemi je nutné se zmínit i o takzvaných pirátských cartridgích, neboli paměťových modulech obsahujících nelicencované verze her. Tím pádem mohly být ceny těchto cartridgí v porovnání s originálními hrami mnohem nižší, neboť nebylo nutné započítat poměrně velkou cenu za licenci, ale platily se jen výrobní a distribuční náklady (obal, plošný spoj, paměť PROM…). Známé paměťové moduly tohoto typu existovaly ve čtyřech variantách: 48in1, 64in1, 86in1105in1, kde první číslo samozřejmě znamená celkový počet her, které byly na této cartridge uloženy (některé zdroje mluví i o 200in1 a 1500in1, to je však nepravděpodobné). Ani tato čísla však není možné brát vážně, protože na cartridgi označené 64in1 bylo ve skutečnosti uloženo jen 48 od sebe odlišných her, zbylých 16 her bylo pouze variantami na jiné hry s modifikovaným počtem životů, jinou startovní pozicí atd.

Obrázek 23: Úvodní obrazovka hry Rampart ve variantě pro Game Boye.

9. Assemblery a cross assemblery

Herní konzole Nintendo Game Boy byla vybavena osmibitovým mikroprocesorem Sharp LR35902, který navíc na jednom čipu sdružoval i další funkce, především zvukový modul a rozhraní pro řadič displeje. Instrukční sada, kterou tento mikroprocesor zpracovával, tvořila určitý mezistupeň mezi v té době již notně zastaralým osmibitovým čipem Intel 8080 a novějším taktéž osmibitovým mikroprocesorem Zilog Z80, který se u nás proslavil například i díky jeho použití v ZX Spectru. Čip LR35902 dokázal zpracovávat některé novější instrukce určené pro Zilog Z80, ovšem neobsahoval například všechny registry tohoto mikroprocesoru (konkrétně druhou registrovou sadu). Některé instrukce byly unikátní a na jiných obdobných čipech se nevyskytovaly. Nicméně i přes tyto rozdíly je možné pro vývoj her pro Game Boy využívat assemblery původně určené právě pro Z80. Těch existuje celá řada, od relativně jednoduchých nástrojů až po assemblery vybavené podporou pro makra, uživatelsky deklarované datové typy atd.

Obrázek 24: První fáze hry Rampart – stavba hradu.

Kromě toho však existuje i několik assemblerů, přesněji řečeno cross assemblerů, určených přímo pro čip LR35902 či pro čip použitý v novější herní konzoli Game Boy Color. Příkladem může být například assembler nazvaný tniASM určený pro Win32 (a samozřejmě i Wine), GBasm, WLA DX asm popř. systém označovaný zkratkou RGBDS, neboli plným názvem RedneX Game Boy Development System. Mezi vývojáři se taktéž těšila popularitě sada nástrojů ASxxxx Cross Assemblers naprogramovaných v céčku a dostupných pro DOS, Win32 i Linux (ale díky použitému jazyku je možné tyto nástroje přeložit i na dalších platformách, minimálně na 64bitových Windows i Androidu). Zpátky do webdesignu pocházejícího z období devadesátých let a HTML 3.x ;-) se dostaneme při přechodu na stránky tohoto projektu, které jsou dostupné na adrese http://shop-pdp.kent.edu/ashtml/asxxxx.htm.

Obrázek 25: Druhá fáze hry Rampart – bitva.

10. Game Boy Development Kit – GBDK

Pokud nějaký vývojář dává přednost vysokoúrovňovým jazykům před assemblerem, může při tvorbě her a dalších aplikací pro Game Boye využít systém Game Boy Development Kit neboli zkráceně GBDK. Tento dnes již dále nerozvíjený projekt obsahuje překladač programovacího jazyka C pro mikroprocesor Z80 a tím pádem i pro Game Boye (viz předchozí kapitolu), dále pak assembler, linker a několik pomocných knihoven. Zajímavé je, že céčkový překladač je založen na známém projektu LCC, tj. multiplatformním překladači céčka, který je sám naprogramován v ANSI C. Vzhledem k tomu, že je procesor Z80 osmibitový, je tento faktor v překladači samozřejmě brán v úvahu, což mj. znamená, že datový typ int je jen osmibitový (takže prakticky žádný moderní program nebude už jen z tohoto důvodu pracovat korektně :-).

Obrázek 26: Oprava hradu (zpět do první fáze).

V knihovnách dodávaných k GBDK lze nalézt základní výstupní funkce emulující konzoli (zde se používají sprity a dlaždice), dále pak funkci pro generování pseudonáhodných čísel, což je ve hrách využitelné a konečně i funkce pro provádění základních grafických efektů.

Obrázek 27: Zajímavá kombinace stylu anime se středověkou tematikou (Japonská varianta cartridge).

11. GB Basic

Posledním vývojovým nástrojem, o němž se dnes zmíníme, je GB Basic. Jedná se o interpret programovacího jazyka BASIC (s podporou reálných čísel), který byl v dobách osmibitových domácích mikropočítačů i osmibitových konzolí mezi amatérskými programátory velmi oblíben. GB Basic je skutečným interpretrem běžícím přímo na Game Boyi, přičemž uživatelské programy automaticky přeložené do tokenů mohly mít délku až 7,4 kB. Příkazy GB Basicu přímo vychází ze starších „osmibitových“ BASICů, tj. namísto strukturovaných bloků zde nalezneme známé GOTO, GOSUB, FORNEXT. Implementována je i funkce KEYPAD() pro přečtení stavů ovladačů, příkaz SOUND pro ovládání zvukového generátoru, příkaz LINE obstarávající veškerý grafický výstup a konečně příkaz SERVO pro řízení zařízení připojených ke Game Boyi. Troufnu si říci, že tvorba nějakého ovládacího programu vykreslujícího navíc nějaké grafy či tabulky na LCD je s těmito prostředky velmi jednoduchá.

CS24_early

Program bylo možné zapisovat s použitím ovladače Game Boye, což je samozřejmě neskutečně zdlouhavé, ovšem alternativně se přes sériový port mohl Game Boy připojit k PC, které tak fungovalo jako terminál. Pro tento účel se používal speciální terminálový program používající pro komunikaci s Game Boyem paralelní port, což jsme si již vysvětlili v sedmé kapitole.

Obrázek 28: Úvodní obrazovka hry R-type ve variantě pro Game Boye.

12. Odkazy na Internetu

  1. GameBoy Hardware
    http://fms.komkon.org/Game­Boy/Tech/Hardware.html
  2. VGB – GameBoy (GBC) Emulator
    https://play.google.com/sto­re/apps/details?id=com.fms­.vgb
  3. The GameBoy Development Ring
    http://www.webring.org/hub?rin­g=gameboydev
  4. Gameboy Development Wiki
    http://gbdev.gg8.se/wiki/ar­ticles/Main_Page
  5. Assemblers for Gameboy
    http://gbdev.gg8.se/wiki/ar­ticles/Assemblers
  6. Compilers for Gameboy
    http://gbdev.gg8.se/wiki/ar­ticles/Compilers
  7. Tools for Gameboy Color Development
    http://www.rrsd.com/softwa­re_development/gameboy_de­velopment/
  8. Emulators for Gameboy
    http://gbdev.gg8.se/wiki/ar­ticles/Emulators
  9. GB Basic FAQ
    http://www.devrs.com/gb/fi­les/gbbasic.html
  10. GB Basic V1.08 Documentation
    http://web.textfiles.com/ga­mes/gbbasic.txt
  11. Game Boy Development Kit – GBDK
    http://gbdev.gg8.se/wiki/ar­ticles/GBDK
  12. ASxxxx Cross Assemblers
    http://shop-pdp.kent.edu/ashtml/asxxxx.htm
  13. GameBoy Homepage
    http://fms.komkon.org/GameBoy/
  14. Gameboy Development Kit
    http://sourceforge.net/projects/gbdk/
  15. Nintendo GameBoy FREQUENTLY ASKED QUESTIONS
    http://fms.komkon.org/stuf­f/gameboy.faq
  16. GameBoy Developers Kit (GBDK)
    http://gbdk.sourceforge.net/
  17. Virtual GameBoy
    http://fms.komkon.org/VGB/
  18. VGB – GameBoy (GBC) Emulator
    https://play.google.com/sto­re/apps/details?id=com.fms­.vgb
  19. GameBoy : Using the GameBoy skeleton for serious business
    http://fruttenboel.verhoe­ven272.nl/Gameboy/index.html
  20. Game Boy Devel Info
    http://www.reinerziegler.de/re­adplus.htm
  21. GameBoy : Using the GameBoy skeleton for serious business
    http://verhoeven272.nl/cgi-bin/FSgz?fruttenboel%2FGa­meboy&Fruttenboel+GameBoy&GBtop&pan­docs&GBcontent
  22. Assembly Language Programming
    http://cratel.wichita.edu/cra­tel/ECE238Spr08
  23. Liquid Crystal Display – LCD
    http://inventors.about.com/od/lstar­tinventions/a/LCD.htm
  24. James Fergason
    http://www.invent.org/hall_of_fa­me/57.html
  25. James Fergason invented an improved liquid crystal display
    http://invention.smithsoni­an.org/centerpieces/quartz/in­ventors/fergason.html
  26. James Fergason
    http://en.wikipedia.org/wi­ki/James_Fergason
  27. History of display technology
    http://en.wikipedia.org/wi­ki/Display_examples
  28. Nocash NES Specs
    http://nocash.emubase.de/everynes.htm
  29. Nintendo Entertainment System
    http://cs.wikipedia.org/wiki/NES
  30. Nintendo Entertainment System Architecture
    http://nesdev.icequake.net/nes.txt
  31. 2A03 technical reference
    http://nesdev.parodius.com/2A03%20techni­cal%20reference.txt
  32. NES Dev wiki: 2A03
    http://wiki.nesdev.com/w/in­dex.php/2A03
  33. Ricoh 2A03
    http://en.wikipedia.org/wi­ki/Ricoh_2A03
  34. 2A03 pinouts
    http://nesdev.parodius.com/2A03_pi­nout.txt
  35. Get Your Hands on an Original NES Software Development Kit
    http://kotaku.com/5799768/get-your-hands-on-an-original-nes-software-development-kit
  36. NesDev
    http://wiki.nesdev.com/w/in­dex.php/Nesdev
  37. How to make NES music
    http://blog.snugsound.com/2008/08/how-to-make-nes-music.html
  38. Nintendo Entertainment System Architecture
    http://nesdev.icequake.net/nes.txt
  39. MIDINES
    http://www.wayfar.net/0×f00000_o­verview.php
  40. FamiTracker
    http://famitracker.com/
  41. nerdTracker II
    http://nesdev.parodius.com/nt2/
  42. Nintendo Entertainment System Documentation
    http://nesdev.com/NESDoc.pdf
  43. NES programming info
    http://nesdev.com/NinTech.txt
  44. Programming that 8-bit beast of power, the NES
    http://nesdev.com/NESprgmn.txt
  45. NESICIDE
    http://www.nesicide.com/
  46. Screenshoty NESICIDE
    http://www.nesicide.com/?s=media
  47. NES Development Tools
    http://bobrost.com/nes/re­sources.php#devtools
  48. cc65
    http://www.cc65.org/
  49. cc65
    http://oliverschmidt.github.io/cc65/
  50. cc65 Documentation Overview
    http://oliverschmidt.github­.io/cc65/doc/
  51. NESPaint
    http://www.cs.cmu.edu/~den­nisc/nespaint/
  52. P65
    https://hkn.eecs.berkeley­.edu/~mcmartin/P65/
  53. NerdTracker II
    http://nesdev.com/nt2/
  54. NES Emulators
    http://wiki.nesdev.com/w/in­dex.php/Emulators
  55. Game Development for the 8-bit NES
    http://bobrost.com/nes/
  56. NES Programming Lectures
    http://bobrost.com/nes/lectures.php
  57. nbasic Language Reference Manual
    http://bobrost.com/nes/fi­les/nbasic_manual.html
  58. DP Interviews: Bob Whitehead (By Scott Stilphen)
    http://www.digitpress.com/li­brary/interviews/interview_bob_whi­tehead.html
  59. The dasm macro assembler
    http://dasm-dillon.sourceforge.net/
  60. Atari Programming Workshop Chapter links
    http://atariage.com/forum­s/viewtopic.php?t=47479
  61. Various Development Kits
    http://devkits.handheldmuseum.com/
  62. Classic Console Development
    http://sebastianmihai.com/ccd/
  63. Atari 2600 development – Snappy (batari basic)
    http://sebastianmihai.com/ma­in.php?t=47
  64. Atari VCS (Atari 2600) – fotografie
    http://oldcomputers.net/atari-vcs.html
  65. History of Consoles: Atari VCS/2600 (1977)
    http://gamester81.com/history-of-consoles-atari-vcs2600–1977/
  66. Iag Bogost: Racing the Beam
    http://www.bogost.com/book­s/video_computer_system.shtml
  67. Atari 2600 Programming Tutorial
    http://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-01.html
  68. Atari 2600 Development Cartridge *Super Deluxe*~!
    http://jazz-disassemblies.blogspot.cz/2013/09/atari-2600-development-cartridge-super.html
  69. Atari „Alpine“ Devkit (pro Atari Jaguar)
    http://justclaws.atari.or­g/devcats/hardware/ataridev­.htm
  70. 6502 compatible assembler and emulator in javascript
    http://www.6502asm.com/
  71. Atari 2600 Programming
    http://atariage.com/2600/programming/
  72. Retrozone – Brand new original homebrew games by current programmers
    http://www.retrousb.com/in­dex.php?cPath=30
  73. NESworld – Homebrew games
    http://www.nesworld.com/homebrew.php
  74. Ian Bogost
    http://www.bogost.com/
  75. Ian Bogost
    http://en.wikipedia.org/wi­ki/Ian_Bogost
  76. Wikipedia – Atari 2600 Homebrew Games
    http://en.wikipedia.org/wi­ki/Atari_2600_homebrew
  77. Wikipedia – List of Homebrew Games
    http://en.wikipedia.org/wi­ki/Homebrew_(video_games)
  78. Wikipedia – List of Atari 2600 Homebrew Games
    http://en.wikipedia.org/wi­ki/List_of_Atari_2600_games#Ho­mebrew_games
  79. Wikipedia: 6502:
    http://en.wikipedia.org/wiki/6502
  80. www.6502.org:
    http://www.6502.org/
  81. Atari TIA
    http://www.atarihq.com/danb/tia.shtml
  82. TIA Playfield
    http://www.atarihq.com/dan­b/TIA/Playfield.shtml
  83. Atari 2600 FAQ
    http://www.atariage.com/2600/faq/in­dex.html
  84. Atari 2600 Consoles and Clones
    http://www.atariage.com/2600/ar­chives/consoles.html
  85. Atari 2600 Programming (odkazy)
    http://www.atariage.com/2600/pro­gramming/index.html
  86. Design case history: the Atari Video Computer System
    http://www.atariage.com/2600/ar­chives/design_case.html?Sys­temID=2600
  87. Schémata zapojení Atari 2600 (překresleno)
    http://www.atariage.com/2600/ar­chives/schematics_pal/index­.html
  88. Schémata zapojení Atari 2600 (skeny původních schémat)
    http://www.vintagegamingan­dmore.com/atari-2600-schematics
  89. Adventure for the Atari 2600 Video Game Console by Warren Robinett
    http://www.warrenrobinett­.com/adventure/index.html
  90. Mapa hry Adventure
    http://www.warrenrobinett­.com/adventure/adv-map1.gif
  91. Jay Glenn Miner Interview Pasadena, September 1992
    http://www.rabayjr.com/jay_miner.htm

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.