Hlavní navigace

Historie vývoje počítačových her (113. část – vývojové nástroje pro herní konzoli NES)

30. 1. 2014
Doba čtení: 22 minut

Sdílet

Další osmibitovou herní konzolí, pro kterou dodnes vznikají amatérské hry, je slavný NES (Nintendo Entertainment System). Pro tuto konzoli je již tvorba her a dalších aplikací mnohem snadnější než pro minule zmíněné Atari 2600, což si podrobněji vysvětlíme v dnešním článku o historii vývoje her i hardware.

Obsah

1. Historie vývoje počítačových her (113. část – vývojové nástroje pro herní konzoli NES)

2. Základní informace o technických parametrech osmibitové herní konzole NES

3. Struktura grafické paměti: největší výzva pro současné tvůrce her a dem

4. Zvukový subsystém aneb kouzlo posuvného registru se zpětnou vazbou

5. Assemblery a překladače pro konzoli NES

6. Komplexní vývojová prostředí

7. Grafické nástroje pro herní konzoli NES

8. Nástroje pro tvorbu hudby

9. Emulátory pro herní konzoli NES

10. Odkazy na Internetu

1. Historie vývoje počítačových her (113. část – vývojové nástroje pro herní konzoli NES)

V předchozí části seriálu o historii vývoje počítačových her i herního hardware jsme se seznámili s některými základními vývojovými nástroji a pomocnými utilitami, které se v současnosti používají pro tvorbu nových her a dem určených pro slavnou osmibitovou herní konzoli Atari 2600. Kvůli interní architektuře této herní konzole a mnoha omezením (rychlost mikroprocesoru, kapacita operační paměti, struktura video systému) je tvorba aplikací pro Atari 2600 pro programátory skutečnou výzvou, ovšem tyto komplikace jsou na druhou stranu vyváženy tím, že se programuje přímo na úrovni hardware, tj. řídicích registrů apod. Navíc jsou k dispozici již velmi přesné emulátory Atari 2600, k nimž je možné připojit debugger, což dnešním programátorům dává do ruky mnohem mocnější vývojové prostředky, než jaké měli jejich předchůdci v sedmdesátých a osmdesátých letech minulého století.

Obrázek 1: Jedna z variant osmibitové herní konzole Nintendo Entertainment System (NES).

Ovšem Atari 2600 není jedinou osmibitovou herní konzolí, pro niž se stále ještě vyvíjí nový software. Podobně populární (a alespoň na první pohled populárnější) je mezi amatérskými programátory další osmibitová herní konzole pojmenovaná Nintendo Entertainment System, zkráceně NES. O této herní konzoli již v tomto seriálu vyšel samostatný díl, takže si jen stručně připomeňme, že NES byl navržen a následně i vyráběn společností Nintendo Corporation. Tato firma se již před uvedením NESu na trh zabývala konstrukcí video automatů a taktéž jednoúčelových „kapesních“ herních konzolí s jedním či dvěma LCD (v našich zemích jsou známější podobné konzole vyráběné v SSSR pravděpodobně na základě licence od NESu). NES pochází z Japonska, kde se její první konstrukčně odlišná verze prodávala pod názvem Family Computer neboli Famicom (pod stejným názvem se ostatně tato konzole prodávala i v některých dalších asijských zemích).

Obrázek 2: K herní konzoli NES postupně vzniklo velké množství různých přídavných zařízení a doplňků, například rozhraní pro MIDI či disketová jednotka používající speciální diskety o průměru dva palce. Zajímavý byl taktéž modem prodávaný zejména v Japonsku, který měl být používán především pro hraní loterií.

Jedná se dokonce o nejúspěšnější osmibitovou herní konzoli vůbec, a to jak z pohledu celkového počtu prodaných kusů, tak i při pohledu na časové období, kdy byla tato konzole vyráběna a prodávána. Uvádí se, že bylo vyrobeno téměř 62 milionů kusů NESu, což je velmi vysoké číslo, a to například i v porovnání s již zmíněnou taktéž velmi úspěšnou herní konzolí Atari 2600, jíž bylo prodáno celkem 30 milionů. Do obou čísel nejsou započítány klony konzole, které většinou nebyly korektně licencovány, což je mimochodem i případ různých klonů Atari 2600 s nimiž jsme se počátkem devadesátých let minulého století mohli setkat i na našich tržnicích (tyto klony se mj. poznají i podle toho, že obsahují „supercartridge“ s několika desítkami her od různých výrobců – pokud vůbec loga autorů zůstala zachována).

Obrázek 3: Hudební rozhraní pro MIDI určené pro NES.

Zajímavá je z pohledu dalšího vývoje i „morální životnost“ NESu, protože tato konzole byla představena již v roce 1983 v Japonsku a i když byl oficiálně prodej NESu ukončen „již“ v roce 1995 (tj. po dvanácti letech), ve skutečnosti výroba pokračovala až do roku 2003 a ještě do roku 2007 nabízela firma Nintendo možnost oprav NESu (posléze byla tato nabídka stažena, protože již nebyly k dispozici příslušné náhradní díly). Právě na příkladu NESu a taktéž herní konzole Atari 2600 je možné ukázat, že se vývoj herních konzolí poměrně podstatným způsobem odlišuje od vývoje osobních počítačů, které morálně zastarávají mnohem dříve. A právě dlouhé období, kdy byl NES prodáván, zapříčinilo i to, že někteří původní mladí hráči fascinovaní možností herních konzolí se dnes stali tvůrci nových her popř. nových modů her, a to i právě pro NES.

Obrázek 4: Herní série The Legend of Zelda – jedna z nejprodávanějších herních sérií vůbec.

2. Základní informace o technických parametrech osmibitové herní konzole NES

Pojďme si nyní alespoň ve stručnosti připomenout, z jakých obvodů se osmibitová herní konzole NES skládala, protože pro nově příchozí vývojáře se jedná o tu nejdůležitější informaci. Jedná se o systém vybavený pouhými čtyřmi čipy. V první řadě se samozřejmě jedná o CPU, konkrétně o osmibitový mikroprocesor Ricoh 2A03, který kromě centrální procesorové jednotky obsahoval i poměrně propracovaný zvukový generátor. Dále byla tato konzole vybavena čipem RP2C02 resp. RP2C07 (PPU) zajišťujícím generování grafického obrazu a konečně dvojicí paměťových čipů. Jeden paměťový čip přitom tvořil programovou a datovou RAM, druhý čip sloužil grafickému procesoru pro uložení vzorků, z nichž se skládalo pozadí a sprity, popř. i další důležité informace nutné pro vygenerování grafického obrazu (více informací si řekneme v navazující kapitole).

Obrázek 5: Mikroprocesor Ricoh 2A03.

Systém Nintendo Entertainment System samozřejmě podporoval (přesněji řečeno přímo vyžadoval) použití zásuvných modulů s hrami či jinými aplikacemi. Tyto moduly mohly obsahovat jak paměť ROM/EPROM s binárním kódem hry i se všemi statickými daty (maximální adresovatelná kapacita dosahovala 32 kB, zvýšit ji bylo možné klasicky přes paměťové banky), tak i paměť RAM, jejíž typická kapacita byla 8 kB. Pomocí zásuvného modulu bylo možné rozšířit i kapacitu video paměti.

Obrázek 6: Další pohled na mikroprocesor Ricoh 2A03.

Schéma zapojení jedné z variant herní konzole Nintendo Entertainment System je dostupné například na této adrese: http://nesdev.parodius.com/Ntd_8bit­.jpg, z něhož je patrné, že se stále jedná o velmi jednoduchý systém, i když ne tak jednoduchý, jako tomu bylo v případě konzole Atari 2600 (http://i.iinfo.cz/images/165/pc6613­.png). Povšimněte si především způsobu vzájemného propojení mikroprocesoru (CPU) s grafickým procesorem (PPU) pomocí datové sběrnice a šesti bitů adresové sběrnice i toho, jak jsou od sebe odděleny oba čipy RAM (ve druhém případě je adresa zachycena do latche LS 373 pomocí signálu ALE).

Obrázek 7: Super Mario Bros ve verzi pro NES.

3. Struktura grafické paměti: největší výzva pro současné tvůrce her a dem

Z hlediska programátora je na herní konzoli Nintendo Entertainment System nejzajímavější její grafický subsystém. Ten se v prakticky všech ohledech odlišoval od grafického subsystému konzole Atari 2600, v níž ani nebyl implementován framebuffer a veškeré vykreslování se muselo řešit přesně načasovanými zápisy do několika řídicích registrů čipu TIA. Ani v NESu nebyl použitý klasický „bitmapový“ framebuffer, namísto toho zde najdeme poměrně unikátní systém založený na vykreslování barevných uživatelsky definovaných znaků umístěných v×mřížce v kombinaci se sprity. Díky využití této technologie byla změna grafického obrazu, například pohyb postav atd., poměrně jednoduchá a navíc díky podpoře horizontálního i vertikálního scrollingu mohly pro konzoli NES vzniknout mnohé hry, které tuto možnost využívaly (například herní série s Mariem v hlavní roli).

Obrázek 8: Další screenshot hry Super Mario Bros.

Víme již, že herní konzole NES existovala ve variantě pro televizní normu NTSC i pro normu PAL. Konzole určené pro televizní normu PAL obsahovaly mikroprocesor 2A07 s hodinovou frekvencí 1,66 MHz, zatímco pro normu NTSC byly určeny konzole s mikroprocesorem 2A03 používající hodinovou frekvenci 1,79 MHz. I grafické čipy se lišily podle toho, pro jakou televizní normu byly určeny. Pro normu NTSC se používal čip RP2C02 se vstupní hodinovou frekvencí 5,37 MHz, zatímco pro normu PAL byl použit čip RP2C07 s frekvencí 5,32 MHz. Tyto čipy, označované taktéž zkratkou PPU, obsahovaly 256 bajtů interní paměti využívané systémem pro zobrazení spritů. Kromě toho přistupoval PPU k samostatnému čipu RAM o kapacitě dva kilobajty. V této paměti bylo uloženo větší množství datových struktur nesoucích informace o pozadí scény, o barvové paletě i o tvarech spritů. Ve skutečnosti však mohl PPU přistupovat i k paměti ROM umístěné na paměťovém modulu se hrou.

42

Obrázek 9: Další screenshot ze hry The Legend of Zelda ve verzi pro NES.

U herní konzole NES se obraz posílaný na televizor skládal ze dvou částí: pozadí a pohyblivých spritů. Nejprve si stručně popíšeme, jakým způsobem se vytvářelo pozadí. Při použití televizní normy PAL bylo rozlišení obrazu rovno 256×240 pixelům, zatímco u normy SECAM bylo horních osm řádků a spodních osm řádků zatemněných, tj. rozlišení bylo sníženo na 256×224 pixelů. Teoreticky sice bylo možné vytvořit klasický framebuffer, v němž by bylo celé pozadí uloženo, ale při šestnáctibarevném obrazu, tj. při použití čtyř bitů na pixel, by musela být kapacita framebufferu poměrně velká: 28 kilobajtů. Konstruktéři čipu PPU tedy využili technologii, s níž jsme se již dříve seznámili i u dalších typů herních konzolí: namísto framebufferu byly v obrazové paměti uloženy vzorky (znaky) o velikosti 8×8 pixelů, které byly skládány do mřížky 32×30 dlaždic, což přesně odpovídá již zmíněnému rozlišení 256×240 pixelů (32×8=256, 30×8=240).

Obrázek 10: Barvová paleta používaná herní konzolí NES.

Základní datovou strukturou byla struktura nazvaná Name Table o velikosti 960 bajtů, která obsahovala indexy všech tvarů tvořících dlaždicovitý obraz 32×30 dlaždic. Mohlo by se tedy zdát, že jedinou další potřebnou strukturou je tabulka všech vzorků (bitmap), z nichž každá má velikost 8×8 pixelů. Situace je však poněkud složitější, protože na pozadí lze vykreslit až šestnáct různých barev. V tabulce vzorků (Pattern Table) jsou pro každý pixel vyhrazeny dva bity, tj. lze rozlišit čtyři možnosti/barvy. Kromě toho existuje ještě tabulka atributů (Attribute Table) o velikosti 64 bajtů, která obsahuje horní dva bity pro oblast o velikosti 4×4 dlaždice, tj. 32×32 pixelů. Díky existenci této druhé tabulky je skutečně možné – i když s mnoha omezeními – použít na pozadí šestnáct různých barev. Důležité přitom je, že tabulka vzorků může být přemapována do ROM na paměťovém modulu, takže je možné poměrně jednoduchým způsobem například animovat celou scénu pouhou změnou „ukazatele“ na tuto tabulku.

Obrázek 11: Screenshot ze hry Donkey Kong.

Způsob vytváření pozadí je poměrně složitý (i když výhody spočívající v relativně malém zatížení procesoru, většinou převažovaly). Se sprity je však situace poněkud jednodušší. Základem při vykreslování spritů je opět tabulka vzorků, ta je ovšem doplněna pomocnou pamětí o kapacitě 256 bajtů, která je umístěna přímo na čipu PPU. Programátor měl k této paměti přístup buď přes řídicí registry PPU, alternativně pak přes DMA. Ve zmíněných 256 bajtech jsou umístěny informace o 64 spritech, tj. pro každý sprite jsou vyhrazeny čtyři bajty. V těchto bajtech se nachází horizontální pozice spritu, vertikální pozice spritu, horní dva bity barvy (spodní bity jsou přímo v tabulce vzorků), index do tabulky vzorků (ukazuje na tvar spritu) a konečně taktéž bitové příznaky: horizontální zrcadlení, vertikální zrcadlení a priorita spritu (před/za pozadím). Zrcadlení bylo možné použít při animaci postaviček pohybujících se zleva doprava popř. zprava doleva apod.

Obrázek 12: Další screenshot ze hry Donkey Kong.

Kvůli dalším technologickým omezením čipu PPU mohlo být na jednom řádku (tj. vedle sebe) zobrazeno pouze omezené množství spritů (konkrétně osm), tj. nebylo například možné všechny sprity umístit vedle sebe. Taktéž počet celkově zobrazovaných barev nedosáhl hodnoty 32 (16 pro pozadí, 16 pro sprity), ale pouze 25 (společné barvy pozadí + společná „průhledná“ barva), přičemž barvová paleta obsahovala 48 barev a pět odstínů šedi (konkrétní způsob zobrazení barev byl na obou podporovaných televizních normách poněkud odlišný).

Obrázek 13: Další screenshot ze hry Donkey Kong.

4. Zvukový subsystém aneb kouzlo posuvného registru se zpětnou vazbou

Zvukový subsystém herní konzole NES je poměrně jednoduchý, přesto však tvůrcům her nabízí poměrně široké možnosti využití. Zvuk či melodie mohly být tvořeny v pěti na sobě nezávislých kanálech. Jedná se o dva generátory obdélníkového signálu s volitelnou amplitudou, frekvencí a částečně i střídou, dále pak o generátor trojúhelníkového signálu s volitelnou frekvencí a automaticky měněnou amplitudou, generátor šumu, u nějž bylo možné zvolit režim činnosti, amplitudu a frekvenci posunu a konečně o D/A převodník, který mohl být buď ovládán přímo programově, nebo bylo umožněno načítat zvukové vzorky (samply) uložené v paměti ROM či RAM. Zajímavé je, že zvukový subsystém neobsahoval žádné filtry, na rozdíl od (jednoduchých) filtrů nabízených čipem POKEY (Atari) či mnohem komplexnějších filtrů použitých v čipu SID (Commodore C64).

Obrázek 14: Titulní obrazovka hry Boulder Dash.

Taktéž podpora pro tvarování obálky generovaných signálů byla pouze dosti jednoduchá (tuto funkcionalitu však neměl ani POKEY, kde se musela řešit programovými cestami a už vůbec ne čip TIAAtari 2600). Čip 2A03/2A07 obsahoval dva piny, na které byl přiváděn výstup ze všech pěti zvukových kanálů. Na pin číslo 1 (ROUT) byl přiváděn výstup z obou generátorů obdélníkových signálů, zatímco výstup z ostatních třech kanálů byl přiváděn na pin číslo 2 (COUT). V herní konzoli NES byl výstup z obou kanálů sloučen a analogově sečten s mikrofonním vstupem (ten se příliš často nepoužíval) a výsledný analogový signál byl zesílen a dále zpracován.

Obrázek 15: Úvodní obrazovka hry Donkey Kong Jr.

Na programové ovládání nejjednodušší byly oba generátory obdélníkových signálů, u nichž bylo možné měnit zejména tři základní parametry: amplitudu (4 bity = celkem šestnáct možných úrovní), frekvenci (přibližně 54,6 Hz až 12,4 kHz podle použité televizní normy, frekvenci bylo možné měnit plynule) a střídu (1:8, 1:4, 1:2, 3:4). U generátoru trojúhelníkového signálu se měnila jeho úroveň (4 bity = 16 úrovní) automaticky, ale programově bylo možné nastavit frekvenci změn signálu v rozsahu 27,3 Hz až 55,9 kHz (opět v závislosti na použité televizní normě). Pátý kanál, jímž je D/A převodník, bylo možné ovládat programově změnou jednoho řídicího registru (sedmibitová hodnota), popř. byla podporována funkce automatického přehrávání vzorků (samplů) z ROM, přičemž při načítání samplu došlo k pozastavení mikroprocesoru. Při přehrávání vzorků byla frekvence nastavitelná v rozsahu 4,2 kHz až 33,5 kHz (ovšem zvolit bylo možné jen pouhých šestnáct přednastavených frekvencí).

Obrázek 16: Úvodní obrazovka hry Castlevania I na NESu.

Podobně jako zvukové čipy POKEY či AY-3–8910, obsahoval i zvukový subsystém herní konzole NES generátor šumu. Ten byl vytvořen pomocí patnáctibitového posuvného registru se zpětnou vazbou: vybrané dva bity posuvného registru byly přes hradlo XOR přesunuty na jeho začátek, přičemž se obsah registru mezitím posunul o jeden bit doleva. Zvukový výstup byl generován na základě aktuálního obsahu bitu s indexem 14. Posuvný registr mohl pracovat ve dvou režimech činnosti: „krátkém“ a „dlouhém“. Ve dlouhém režimu se generovala sekvence pseudonáhodných bitů s periodou 32767 vzorků (zbývající 32768 stav nemohl být použit, protože se jednalo o nulovou hodnotu spadající mimo generovanou sekvenci). V krátkém režimu byla perioda pseudonáhodného signálu kratší: 93 bitů/vzorků. Samozřejmě bylo taktéž možné měnit frekvenci posunu, a to přibližně v rozsahu 29,3 Hz až 447 kHz (opět v závislosti na tom, jaká televizní norma byla použita).

Obrázek 17: Castlevania II na NES.

5. Assemblery a překladače pro NES

Ústředním čipem, na němž je postavena herní konzole NES, je mikroprocesor Ricoh 2A03, popř. Ricoh 2A07. Konstruktéři v případě mikroprocesoru 2A03/2A07 vsadili na osvědčenou jistotu, protože tento čip je založen na jádru oblíbeného mikroprocesoru MOS 6502, jenž byl v různých variantách použit i v několika dalších osmibitových herních konzolích (Atari 2600, Atari 5200, Atari 7800) a taktéž v mnoha domácích osmibitových mikropočítačích (Atari 400/800/800XL/130XE a varianty, Apple I, Apple II, BBC Micro, Commodore C64…). V případě čipů 2A03/2A07 však došlo k určitému zjednodušení jádra původního MOS 6502; chyběl například nepříliš často používaný režim pro práci s BCD čísly, kdy se v jednom bajtu ukládaly dvě číslice 0–9, tj. rozsah ukládaných hodnot byl 00 až 99 a nikoli 0 a 255. Původní mikroprocesor MOS 6502 mohl být do tohoto režimu přepnut pomocí instrukce SED, bližší informace o tomto režimu lze najít na adrese http://www.6502.org/tutori­als/decimal_mode.html.

Obrázek 18: Úvodní obrazovka hry Arkanoid ve variantě pro herní konzoli NES.

Vzhledem k tomu, že se mikroprocesor herní konzole NES lišil od původního čipu MOS 6502 jen v několika málo instrukcích, je možné pro vývoj her pro NES používat assembler nazvaný DASM, o němž jsme se zmínili v předchozí části tohoto seriálu. Tento assembler (přesněji řečeno cross assembler) je v současnosti pravděpodobně nejpoužívanější, a to i v oblasti dalších zařízení založených na procesorech řady MOS 6502. Existují či v nedávné minulosti existovaly však i další assemblery, například starší FASM, v minulosti poměrně populární X816 či P65, který je zajímavý především tím, že je naprogramován v Perlu a nikoli v jazyku C, podobně jako mnoho dalších assemblerů. Musím též doplnit informaci o disassemblerech: 6502 Simulator, TRaCER či NESrev – ten je psaný v Javě (v souvislosti s osmibitovými konzolemi jde o poměrně bizarní technologii :-) a jeho autorem je Kent Hansen.

Obrázek 19: Arkanoid pro herní konzoli NES – třetí obtížnost.

Ovšem díky poměrně velké kapacitě paměti ROM umístěné na cartridgích s hrami a taktéž díky tomu, že při programování grafického subsystému NESu není nutné provádět optimalizace na úrovni jednotlivých strojových cyklů (viz Atari 2600) se dnes mnoho vývojářů uchyluje k použití programovacího jazyka C. V této oblasti se velmi často používá cross compiler CC65 doplněný o hlavičkové soubory obsahující jména a adresy řídicích registrů NESu atd.

Obrázek 20: První místnost ve hře Flappy (verze pro NES).

6. Komplexní vývojová prostředí

Pro vývoj lze alternativně použít i nbasic (doplněný o nesasm) což je určitý hybrid mezi jazykem BASIC a assemblerem. Dialekt BASICu, který je zde použitý, například nepodporuje dynamickou alokaci paměti, proměnné jsou pouze lokální, pole se umisťují na zadanou absolutní adresu a je podporován inline assembler. Díky těmto omezením je převod programu z BASICu do assembleru MOS 6502 poměrně přímočarý, takže programátor může mít velmi dobrou představu, jakým způsobem se jednotlivé jazykové konstrukce přeloží a využijí. Mimochodem: nbasicnesasm byl v roce 2004 dokonce využit i v univerzitním kurzu pro výuku programování počítačových her s využitím emulátoru NESu. Bližší informace a především informacemi (i vtipem) nabité slajdy najdete na adrese http://bobrost.com/nes/.

Obrázek 21: Scrollující prostředí hry Final Fantasy.

Pro herní konzoli NES dokonce vzniklo i moderně pojaté integrované vývojové prostředí nazvané NESICIDE. Autory tohoto vývojového prostředí jsou Christopher Pow, Tim Sarbin a Benjamin Eriksson. V tomto IDE nalezneme některé nástroje známé i z jiných současných integrovaných vývojových prostředí, například správce projektů, programátorský editor apod. Ovšem navíc jsou přidány nástroje, které úzce souvisejí s možnostmi herní konzole NES. Příkladem může být integrovaný debugger, disassembler (+code browser) a emulátorNESu, jenž je možné spustit přímo v okně IDE. Vzhledem k poměrně komplikované struktuře grafické paměti popsané ve třetí kapitole je integrované vývojové prostředí NESICIDE vybaveno i editorem a prohlížečem barvové palety NESu a taktéž možností „vizualizace“ obrazové paměti – je možné pracovat jak s uživatelsky definovanými znaky (součást pozadí), tak i se sprity. Díky tomuto nástroji je možné NESICIDE relativně snadno použít i pro modifikaci existujících her.

Obrázek 22: Screenshot vývojového prostředí NESICIDE.

7. Grafické nástroje pro herní konzoli NES

Při vývoji her pro konzoli NES je velmi důležité navrhnout (či možná lépe řečeno nakreslit) jak pozadí hry, tak i jednotlivé sprity, a to takovým způsobem, aby se co nejlépe využily všechny vlastnosti grafického subsystému této herní konzole a na druhé straně aby nebyla některá omezení NESu (především malý počet současně zobrazitelných barev) na vyvíjené hře příliš viditelné. Ke zjednodušení této práce slouží různé specializované grafické nástroje, konverzní programy a editory.

Obrázek 23: NESPaint po inicializaci editoru.

Jedním z těchto nástrojů je NESPaint použitelný jak pro návrh statických spritů, tak i pro tvorbu jednoduchých animací tvořených několika postupně se měnícími sprity. NESPaint je naprogramován v Javě a pro zobrazení svého grafického uživatelského rozhraní používá knihovnu Swing. Samotné prostředí programu je velmi snadno použitelné – obsahuje bitmapový editor s možností zvětšení a zobrazení mřížky, výběr políčka/snímku animace a samozřejmě i nezbytnou barvovou paletu odpovídající možnostem NESu.

Obrázek 24: NESPaint s nahranou dvousnímkovou animací.

Obrázek 25: NESPaint s nahranou animací skládající se ze čtyř snímků.

I další grafický nástroj, který se jmenuje Tile Molester, je naprogramován v Javě. Opět se jedná o relativně jednoduchý rastrový grafický editor vybavený základními kreslicími nástroji – a právě jednoduše použitelné nástroje jsou vše, co pro tvorbu grafiky pro NES vývojáři vyžadují, neboť kvůli nízkému rozlišení, malém počtu barev a rozdělení paměti na jednotlivé znaky a sprity stejně většina složitějších nástrojů selhává. Podobnými aplikacemi jsou Tile Layer Pro; ovšem lze taktéž použít konverzní program se všeříkajícím názvem BMP2NES.

Obrázek 26: Splashscreen programu Tile Molester.

Obrázek 27: Uživatelské rozhraní programu Tile Molester

Obrázek 28: Uživatelské rozhraní programu Tile Molester

8. Nástroje pro tvorbu hudby

Kromě grafiky samozřejmě musí každá skutečná hra obsahovat i zvukový a hudební doprovod. My jsme si možnosti zvukového subsystému herní konzole NES popsali ve čtvrté kapitole, takže víme, že každý zvukový kanál měl odlišné vlastnosti. To však příliš nevadilo autorům takzvaných „trackerů“, což jsou aplikace určené pro tvorbu hudby ne na základě notové osnovy, ale na základě záznamu typu hudebního nástroje, výšky tónu a popř. i nějaké informace o efektu do tabulky, v níž každý sloupec odpovídá jednomu zvukovému kanálu. Trackery se původně vyvinuly na počítačích Amiga, kde se mohly díky možnostem zvukového čipu Paula přehrávat nasamplované zvuky nástrojů, ovšem posléze se tento typ aplikací rozšířil i na další systémy, včetně PC vybavených čipy pro zvukovou FM syntézu (OPL-2, OPL-3). Odtud je již malý krůček k programům určeným pro NES.

Obrázek 29: FamiTracker pro PC, který dokáže generovat hudbu pro konzoli NES.

Příkladem může být Nerd Tracker II (dnes spouštěný v DOSBoxu :-), který používá uživatelské rozhraní, které se příliš neliší od rozhraní klasických trackerů, ovšem až na ten rozdíl, že každý zvukový kanál má jiné možnosti: tabulka obsahuje pět sloupců odpovídajících dvěma generátorům obdélníkového signálu, generátoru pilového signálu, generátoru šumu a konečně poslednímu kanálu, který jako jediný dokáže přehrávat skutečné samply. Ovládání tohoto trackeru je orientováno čistě na klávesnici, takže je záznam či editace hudby velmi rychlá, když se uživatel naučí potřebné klávesové zkratky.

Obrázek 30: Uživatelské rozhraní Nerd Trackeru II.

Obrázek 31: Uživatelské rozhraní Nerd Trackeru II.

Obrázek 32: ANSI Art Nerd Trackeru II po jeho ukončení (první a poslední řádek patří Volkov Commanderu :-)

9. Emulátory pro herní konzoli NES

Při vývoji her se samozřejmě používají i emulátory herní konzole NES, kterých v současnosti existuje celá řada, a to pro různé operační systémy (některé emulátory jsou již zcela multiplatformní). Některé známé emulátory jsou vypsány v následující tabulce:

Emulátor Platforma
HalfNES Java (multiplatformní)
RockNES v2.5.1 Mac OS X, Win32
RockNES v2.4.0 Mac OS X
Nestopia 1.09 Mac OS X, Linux, Windows
imbNES Sony Playstation
NesterDC Sega Dreamcast
JNes Windows
FCE Ultra Windows, Linux
BizHawk Win32, MacOS
FCE Ultra GX Wii, GameCube
FCEUX Win32, Linux
FCEUXD SP Win32
nemulator Win32 (Vista/7)
nesemu2 Win32, Mac OS X, Linux
NESten Win32
NO$NES Win32
PocketNES Game Boy Advance
VirtuaNES Win32
jsnes JavaScript (multiplatformní)

jsnes vyžaduje rychlejší počítač, na druhou stranu si však můžete zahrát některé hry i bez nutnosti kupovat si její ROM obraz. Ostatně nejlepší je se vše odzkoušet: http://fir.sh/projects/jsnes/.

CS24_early

Obrázek 33: Emulátor HalfNES naprogramovaný v Javě.

Obrázek 34: Úvodní obrazovka hry Boulder Dash spuštěná v emulátoru HalfNES.

10. Odkazy na Internetu

  1. Nocash NES Specs
    http://nocash.emubase.de/everynes.htm
  2. Nintendo Entertainment System
    http://cs.wikipedia.org/wiki/NES
  3. Nintendo Entertainment System Architecture
    http://nesdev.icequake.net/nes.txt
  4. 2A03 technical reference
    http://nesdev.parodius.com/2A03%20techni­cal%20reference.txt
  5. NES Dev wiki: 2A03
    http://wiki.nesdev.com/w/in­dex.php/2A03
  6. Ricoh 2A03
    http://en.wikipedia.org/wi­ki/Ricoh_2A03
  7. 2A03 pinouts
    http://nesdev.parodius.com/2A03_pi­nout.txt
  8. Get Your Hands on an Original NES Software Development Kit
    http://kotaku.com/5799768/get-your-hands-on-an-original-nes-software-development-kit
  9. NesDev
    http://wiki.nesdev.com/w/in­dex.php/Nesdev
  10. How to make NES music
    http://blog.snugsound.com/2008/08/how-to-make-nes-music.html
  11. Nintendo Entertainment System Architecture
    http://nesdev.icequake.net/nes.txt
  12. MIDINES
    http://www.wayfar.net/0×f00000_o­verview.php
  13. FamiTracker
    http://famitracker.com/
  14. nerdTracker II
    http://nesdev.parodius.com/nt2/
  15. Nintendo Entertainment System Documentation
    http://nesdev.com/NESDoc.pdf
  16. NES programming info
    http://nesdev.com/NinTech.txt
  17. Programming that 8-bit beast of power, the NES
    http://nesdev.com/NESprgmn.txt
  18. NESICIDE
    http://www.nesicide.com/
  19. Screenshoty NESICIDE
    http://www.nesicide.com/?s=media
  20. NES Development Tools
    http://bobrost.com/nes/re­sources.php#devtools
  21. cc65
    http://www.cc65.org/
  22. cc65
    http://oliverschmidt.github.io/cc65/
  23. cc65 Documentation Overview
    http://oliverschmidt.github­.io/cc65/doc/
  24. NESPaint
    http://www.cs.cmu.edu/~den­nisc/nespaint/
  25. P65
    https://hkn.eecs.berkeley­.edu/~mcmartin/P65/
  26. NerdTracker II
    http://nesdev.com/nt2/
  27. NES Emulators
    http://wiki.nesdev.com/w/in­dex.php/Emulators
  28. Game Development for the 8-bit NES
    http://bobrost.com/nes/
  29. NES Programming Lectures
    http://bobrost.com/nes/lectures.php
  30. nbasic Language Reference Manual
    http://bobrost.com/nes/fi­les/nbasic_manual.html
  31. DP Interviews: Bob Whitehead (By Scott Stilphen)
    http://www.digitpress.com/li­brary/interviews/interview_bob_whi­tehead.html
  32. The dasm macro assembler
    http://dasm-dillon.sourceforge.net/
  33. Atari Programming Workshop Chapter links
    http://atariage.com/forum­s/viewtopic.php?t=47479
  34. Various Development Kits
    http://devkits.handheldmuseum.com/
  35. Classic Console Development
    http://sebastianmihai.com/ccd/
  36. Atari 2600 development – Snappy (batari basic)
    http://sebastianmihai.com/ma­in.php?t=47
  37. Atari VCS (Atari 2600) – fotografie
    http://oldcomputers.net/atari-vcs.html
  38. History of Consoles: Atari VCS/2600 (1977)
    http://gamester81.com/history-of-consoles-atari-vcs2600–1977/
  39. Iag Bogost: Racing the Beam
    http://www.bogost.com/book­s/video_computer_system.shtml
  40. Atari 2600 Programming Tutorial
    http://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-01.html
  41. Atari 2600 Development Cartridge *Super Deluxe*~!
    http://jazz-disassemblies.blogspot.cz/2013/09/atari-2600-development-cartridge-super.html
  42. Atari „Alpine“ Devkit (pro Atari Jaguar)
    http://justclaws.atari.or­g/devcats/hardware/ataridev­.htm
  43. 6502 compatible assembler and emulator in javascript
    http://www.6502asm.com/
  44. Atari 2600 Programming
    http://atariage.com/2600/programming/
  45. Retrozone – Brand new original homebrew games by current programmers
    http://www.retrousb.com/in­dex.php?cPath=30
  46. NESworld – Homebrew games
    http://www.nesworld.com/homebrew.php
  47. Ian Bogost
    http://www.bogost.com/
  48. Ian Bogost
    http://en.wikipedia.org/wi­ki/Ian_Bogost
  49. Wikipedia – Atari 2600 Homebrew Games
    http://en.wikipedia.org/wi­ki/Atari_2600_homebrew
  50. Wikipedia – List of Homebrew Games
    http://en.wikipedia.org/wi­ki/Homebrew_(video_games)
  51. Wikipedia – List of Atari 2600 Homebrew Games
    http://en.wikipedia.org/wi­ki/List_of_Atari_2600_games#Ho­mebrew_games
  52. Wikipedia: 6502:
    http://en.wikipedia.org/wiki/6502
  53. www.6502.org:
    http://www.6502.org/
  54. Atari TIA
    http://www.atarihq.com/danb/tia.shtml
  55. TIA Playfield
    http://www.atarihq.com/dan­b/TIA/Playfield.shtml
  56. Atari 2600 FAQ
    http://www.atariage.com/2600/faq/in­dex.html
  57. Atari 2600 Consoles and Clones
    http://www.atariage.com/2600/ar­chives/consoles.html
  58. Atari 2600 Programming (odkazy)
    http://www.atariage.com/2600/pro­gramming/index.html
  59. Design case history: the Atari Video Computer System
    http://www.atariage.com/2600/ar­chives/design_case.html?Sys­temID=2600
  60. Schémata zapojení Atari 2600 (překresleno)
    http://www.atariage.com/2600/ar­chives/schematics_pal/index­.html
  61. Schémata zapojení Atari 2600 (skeny původních schémat)
    http://www.vintagegamingan­dmore.com/atari-2600-schematics
  62. Adventure for the Atari 2600 Video Game Console by Warren Robinett
    http://www.warrenrobinett­.com/adventure/index.html
  63. Mapa hry Adventure
    http://www.warrenrobinett­.com/adventure/adv-map1.gif
  64. 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.