Hlavní navigace

Historie vývoje počítačových her (115. část – vývojové nástroje pro herní konzole čtvrté a páté generace)

13. 2. 2014
Doba čtení: 20 minut

Sdílet

Společně s příchodem herních konzolí čtvrté a páté generace, které již byly vybaveny relativně výkonnými mikroprocesory, se i na těchto zařízeních postupně začaly používat vyšší programovací jazyky, takže zde můžeme zaznamenat odklon od původního nástroje „skutečných“ vývojářů her – assembleru.

Obsah

1. Historie vývoje počítačových her (115. část – vývojové nástroje pro herní konzole čtvrté a páté generace)

2. Přechod od assembleru k vyšším programovacím jazykům

3. Postupná adaptace programovacího jazyka C na herních konzolích

4. Programovací jazyk C

5. Aztec C

6. Vývojové nástroje pro herní konzoli Sega Saturn

7. Problémy doprovázející vývoj her pro Segu Saturn

8. Vývojové nástroje pro herní konzoli Atari Jaguar

9. Sony PlayStation a její vstřícný přístup k vývojářům

10. Odkazy na Internetu

1. Historie vývoje počítačových her (115. část – vývojové nástroje pro herní konzole čtvrté a páté generace)

Modern platforms (including DirectX and OpenGL) often deprecate features, causing your past creations to all of a sudden stop working. Classic consoles do not have this problem; they are already obsolete! This means that the games you develop for them will always work.

Vývojové nástroje určené pro osmibitové herní konzole, s nimiž jsme se seznámili v předchozích částech tohoto seriálu, původně sestávaly převážně z takzvaných cross assemblerůlinkerů. Tyto nástroje se spouštěly na vývojové platformě, která se v naprosté většině případů lišila od platformy, na níž byla postavena daná herní konzole a právě proto se zde objevuje slovo cross (původními vývojovými platformami byly minipočítače, posléze i osobní počítače). V některých případech dokonce nebyl používán ani linker, protože se do paměti herní konzole, resp. přesněji řečeno na její paměťový modul, nahrával přímo výstup z assembleru, který tak musel generovat kód s absolutními adresami.

Obrázek 1: Herní konzole Fairchild Channel F i s několika paměťovými moduly s hrami.

Zajímavé přitom je, že si programátoři s assemblerem vystačili (nebo museli vystačit) po velmi dlouhou dobu trvající v některých případech až dvacet let, konkrétně od roku 1976 (první programovatelná konzole Fairchild Channel F o rok později následovaná Atari 2600) až zhruba do roku 1996 (vydání poslední herní konzole páté generace: Nintenda 64).

pc6612

Obrázek 2: Herní konzole Atari 2600 vybavená mikroprocesorem MOS 6507, což je varianta původního čipu MOS 6502, ovšem se zmenšeným počtem pinů adresové sběrnice a několika dalšími omezeními.

Na osmibitových herních konzolích se pro tvorbu profesionálních komerčních her prakticky žádný jiný programovací jazyk než assembler v minulosti nepoužíval. Obliba kompilovaných jazyků (popř. interpretrů) i pro tento typ konzolí se začala zvyšovat vlastně až ve chvíli, kdy byly osmibitové herní konzole překonány a staly se platformou pro tvorbu alternativních her tvořených v současnosti na amatérské bázi. To ovšem neznamená, že by se některé z těchto her neprodávaly; rozdělení profesionální–amatérská totiž vůbec nesouvisí s kvalitou her, ale spíše s tím, zda se programátoři touto činností živí nebo tvoří hry pro zábavu (viz též motto na začátku kapitoly).

Obrázek 3: Osmibitová herní konzole Nintendo Entertainment System (NES) je přímým předchůdcem SNESu.

2. Přechod od assembleru k vyšším programovacím jazykům

Ovšem přibližně ve chvíli, kdy se na trhu objevily herní konzole čtvrté generace, které byly vybaveny na svou dobu výkonnými mikroprocesory postavenými na jádru 65C816Motorola 68000 a operačními paměťmi o kapacitách v rozmezí 64kB až 1MB, je patrná snaha o postupné nahrazení assemblerů vyššími programovacími jazyky. Tato snaha je samozřejmě pochopitelná, protože o úspěchu či neúspěchu her rozhodovala nejenom jejich technologická kvalita, ale i okamžik, kdy začala být hra prodávána (a není zde řeč jen o extrémech typu Duke Nukem Forever :-). A právě i díky použití vyšších programovacích jazyků bylo možné dosti podstatným způsobem urychlit vývoj, vytvářet složitější hry a v neposlední řadě si ponechat „zadní vrátka“ pro případný přenos hry na jinou platformu (to samozřejmě pouze v případě, že by se jednalo o komerčně úspěšnou hru). Díky možnosti kombinace kódu napsaného ve vyšším programovacím jazyce s assemblerem navíc programátorům stále zůstávala možnost naprogramovat například vykreslovací jádro v optimalizovaném assembleru.

Obrázek 4: Původní case osmibitové herní konzole TurboGrafx-16. Tato herní konzole stojí na hranici mezi zařízeními patřícími do třetí a do čtvrté generace herních konzolí.

Kapacity operačních pamětí a video pamětí herních konzolí čtvrté generace:

# Konzole RAM Video RAM Další RAM
1 Sega Mega Drive 64 kB 64 kB 8 kB pro Zilog Z80
2 Super NES (SNES) 128 kB 64 kB 64 kB (Audio)
3 Neo Geo 64 kB 74 kB 2 kB (Audio)
4 Commodore CDTV 1024 kB v RAM ×
5 Philips CD-i 1024 kB v RAM ×

Obrázek 5: Herní konzole SNES ve variantě určené pro připojení k televizorům pracujícím v normě PAL.

Mikroprocesory použité v herních konzolích čtvrté generace:

# Konzole Použitý mikroprocesor Odvozeno z CPU Frekvence CPU
1 Sega Mega Drive MC68HC000 (CMOS) Motorola 68000 7,61 MHz/7,67 MHz
2 Super NES (SNES) 5A22 65C816  3,58 MHz
3 Neo Geo Motorola 68000   12,00 MHz
4 Commodore CDTV Motorola 68000    7,16 MHz
5 Philips CD-i Philips SCC68070 Motorola 68000 15,5 MHz

Obrázek 6: Jedna z variant ovladače herní konzole SNES.

3. Postupná adaptace programovacího jazyka C na herních konzolích

Při výběru vyššího programovacího jazyka vhodného pro použití na herních konzolích čtvrté a především pak páté generace měli vývojáři her vcelku jednoduchou volbu. Tou byl výběr programovacího jazyka C. Důvodů, které k tomuto výběru vedly, bylo větší množství: tento programovací jazyk při správném použití umožňuje naprogramovat efektivně i nízkoúrovňové operace, překlad byl a doposud je prováděn přímo do strojového kódu vybraného procesoru a nikoli do bajtkódu (to byl problém například v případě USCD Pascalu s jeho p-kódem, naproti tomu konkurenční Turbo Pascal podporoval jen řadu procesorů 8080/Z80/80×86), mnohé překladače umožňovaly vkládání příkazů v assembleru do céčkových zdrojových kódů a existovalo větší množství firem, které překladač céčka nabízely.

Obrázek 7: Způsob zapojení Sega 32X do Sega Mega Drive/Sega Genesis.

Navíc nesmíme zapomenout ani na postupné zlepšování kvality céčkových překladačů (optimalizace kódu), které navíc dokázaly dobře využít možností RISCových mikroprocesorů, které na herních konzolích páté generace převládaly, což je ostatně patrné i při pohledu na tabulku zobrazenou pod tímto odstavcem:

# Konzole Použitý mikroprocesor Architektura
1 PlayStation R3000A 32bitový RISC
2 Nintendo 64 R4300i 64bitový RISC
3 Sega Saturn 2×SH-2 32bitový RISC
4 3DO ARM60 32bitový RISC
5 Atari Jaguar Motorola M68000 + 2×RISC kombinace 16/32 RISC/CISC
6 Amiga CD32 Motorola M68020 32bitový CISC
7 Apple Bandai Pippin PowerPC 603 32bitový RISC
       
8 Sega 32X 2×SH-2 32bitový RISC

Obrázek 8: Atari Jaguar.

4. Programovací jazyk C

Samotný programovací jazyk C prošel poměrně dlouhým vývojem, navíc se mnoho zprvu neobvyklých vlastností tohoto jazyka, například indexování polí od nuly (namísto od jedničky, jak tomu bylo například ve Fortranu), použití speciálních ASCII znaků namísto jmen operátorů apod. postupně začalo používat i v modernějších programovacích jazycích (C, C++, Java, JavaScript, částečně i Python, Perl atd.). V případě indexování polí od nuly byla tato vlastnost do jazyka C i do jeho předchůdce jazyka BCPL zahrnuta pro jednodušší implementaci ukazatelové (pointerové) aritmetiky.

pdp2

Obrázek 9: Počítač PDP-7.

Vznik programovacího jazyka C velmi úzce souvisí s vývojem nového operačního systému UNIX pro minipočítač PDP-7. I přesto, že se jednalo o minipočítač, tj. o stroj na půli cesty mezi mikropočítačem a mainframem, byly jeho technické parametry z dnešního pohledu velmi omezené; například kapacita operační paměti dosahovala pouze 8192 osmnáctibitových slov, tj. osmnácti kilobajtů. Pro nově vytvořený operační systém bylo nutné navrhnout či upravit nějaký systémově orientovaný programovací jazyk. tj. jazyk, ve kterém by bylo možné psát systémové programy a popř. i uživatelské aplikace. Nejprve se sice uvažovalo o využití překladače Fortranu, ovšem tato myšlenka byla vzhledem k výše popsaným omezeným hardwarovým možnostem mikropočítače PDP-7 následně opuštěna.

pdp2

Obrázek 10: PDP-11 ve variantě PDP-11–70.

Namísto toho Ken Thompson vytvořil nový programovací jazyk nazvaný jednoduše B. Tento jazyk byl založen na existujícím jazyku BCPL (Basic Combined Programming Language), jenž byl vytvořen Martinem Richardsem již v roce 1966. Vzhledem k tomu, že jazyk BCPL byl z hlediska konstrukce překladače poměrně složitý (což je poněkud paradoxní, neboť se jednalo o zjednodušený jazyk CPL ze začátku šedesátých let), nebylo možné, aby se jeho překladač na mikropočítači PDP-7 spouštěl z operačního systému, protože jen pro samotný překlad zdrojových kódů bylo zapotřebí cca 16 kB operační paměti.

pdp2

Obrázek 11: Řídicí panel počítače PDP-11–70.

Z tohoto důvodu Ken Thompson z původního jazyka BCPL odstranil některé vlastnosti, které nepovažoval za podstatné (například složitější typy programových smyček) a naopak změnil jeho syntaxi tak, aby se zápis programu mohl co nejvíce zkrátit. Právě z této snahy například pochází i způsob zápisu operátorů pomocí speciálních znaků a nikoli klíčových slov (včetně zcela nových operátorů ++ a –), což je zvyk používaný doposud – viz například současné programovací jazyky, jakými jsou C, C++, Java či JavaScript. Taktéž se v jazyku B objevuje použití středníků pro ukončení příkazů.

Obrázek 12: Přebal slavné učebnice céčka (K&R C).

Některé vlastnosti programovacího jazyka B však nebyly vhodné pro systémové programování. Z tohoto důvodu se vývojáři v Bellových laboratořích rozhodli, že v rámci přechodu na počítač PDP-11 vytvořili nový programovací jazyk, který mj. umožnil více odstínit programátora od hardwarové architektury počítače. Tento programovací jazyk – „nový B“ – byl na návrh Kena Thompsona pojmenován C. Jestli se jedná o další písmeno v abecedě (C=B+1) nebo o následující znak v označení předchůdce obou jazyků – jazyka BCPL, je již otázka, kterou tvůrci ponechali nezodpovězenou.

Obrázek 13: Další vydání již popisovalo ANSI C (dodnes používaný dialekt céčka).

5. Aztec C

Jedním z populárních překladačů céčka byl v době největšího rozšíření herních konzolí čtvrté generace překladač nazvaný Aztec C, jenž byl vyvíjený společností Manx Software Systems. O tomto překladači se dnes zmiňuji především z toho důvodu, že různé varianty Aztec C byly dostupné jak pro některé osmibitové mikroprocesory (Zilog Z80 a MOS 6502), tak i pro slavný 16/32bitový mikroprocesor Motorola 68000, který byl použit nejenom na osobních počítačích Atari, Amiga a Macintosh, ale i v herních konzolích čtvrté generace. Překladače Aztec C byly i s dalšími nástroji dostupné například pro počítače Apple II (MOS 6502, později i 65816, zde byl konkurenčním překladačem ORCA/C), Commodore C64, počítače s mikroprocesorem Zilog Z80 a operačním systémem CP/M atd.

Obrázek 14: Logo překladačů Aztec C.

S překladači Aztec C se později mohli programátoři setkat na již zmíněných počítačích vybavených čipem Motorola 68000 (zde byl vážným konkurentem například Lattice C, na herních konzolích čtvrté generace se však s velkou pravděpodobností používal právě Aztec C) a nesmíme zapomenout ani na verzi určenou pro MS-DOS (reálný režim procesorů 80×86), která byla zajímavá především tím, že přímo konkurovala překladači céčka zakoupeného a posléze prodávaného firmou Microsoft, která nakonec tuto už do počátku nerovnou bitvu na poli vývojových nástrojů vyhrála. Seznam v současnosti dostupných variant překladače Aztec C lze nalézt na adrese http://www.aztecmuseum.ca/com­pilers.htm.

Obrázek 15: Jeden z konkurenčních překladačů k Aztec C byl Lattice C.

V případě konzolí páté generace, které byly vybaveny mikroprocesory s architekturou RISC, se již můžeme setkat s jinými typy překladačů.

6. Vývojové nástroje pro herní konzoli Sega Saturn

Herní konzole Sega Saturn (patřící do páté generace herních konzolí) byla vybavena dvojicí 32bitových RISCových procesorů SH-2. Pro tento typ procesorů existovalo několik překladačů céčka, ovšem oficiální vývojové nástroje dodávala přímo společnost Hitachi, tj. dodavatel mikroprocesorů. Pro vývoj her na konzoli Segu Saturn se většinou používala kombinace několika počítačů, typicky pracovní stanice Sun Sparc, HP9000/700 a popř. i běžného osobního počítače PC s procesorem 80486 (později i Pentium), k němuž se připojovala vypalovací mechanika pro média CD-ROM. Překladač programovacího jazyka C pro mikroprocesory SH-2 se jmenoval SH-2C. Tento překladač, který bylo možné spouštět jak na UNIXu, tak i na PC (DOS, chráněný režim), byl doplněn cross assemblerem, linkerem, debuggerem (s vlastním grafickým uživatelským rozhraním) a navíc i specializovanými nástroji určenými pro práci s DSP, kterým byla konzole Sega Saturn taktéž vybavena. Dnes je SH-2C překladač dodáván pod jménem Renesac SH C.

Obrázek 16: Blokové schéma herní konzole Sega Saturn.

Kromě překladače, assembleru a linkeru se pro vývoj her používalo i zařízení ICE emulující činnost mikroprocesorů SH-2. K tomuto zařízení se přes síť mohl připojit debugger (s GUI) a z druhé strany pak tzv. target box, což byl ekvivalent samotné herní konzole Sega Saturn (pravděpodobně šlo přímo o herní konzoli upravenou tak, aby bylo možné měnit obsah operační paměti). Vývojové nástroje byly doplněny i o další pomocné utility, například pro práci s CD (test zapisování, generování obsahu atd.), assembler pro DSP, emulátor DSP (pro DOS i Unix) a grafické převodníky. Investice do potřebného software a hardware byla poměrně vysoká, což se brzy ukázala být jedna z nevýhod Sega Saturnu, především v porovnání s konkurenční herní konzolí Sony PlayStation.

Obrázek 17: Grafický subsystém herní konzole Sega Saturn.

7. Problémy doprovázející vývoj her pro Segu Saturn

Vývoj her pro herní konzoli Sega Saturn doprovázely zpočátku dosti velké problémy, které byly zapříčiněny především její relativně složitou interní strukturou a taktéž jen malým množstvím kvalitních programových knihoven určených pro ovládání grafického subsystému, který byl v případě Saturnu velmi odlišný od všech dalších herních konzolí a vlastně i od moderních grafických akcelerátorů. Při vývoji prvních her, které pro konzoli Sega Saturn vznikly, tak byli vývojáři nuceni si napsat vlastní grafické enginy, a to většinou přímo v assembleru – podle některých zdrojů byly například vykreslovací rutiny ručně optimalizované v assembleru zhruba dvakrát a v extrémních případech i pětkrát rychlejší v porovnání s kódem napsaným v céčku. Někteří vývojáři dokonce ve snaze o zrychlení a zjednodušení vývoje používali pouze jeden mikroprocesor SH-2 a zcela se tak vzdali možnosti kooperace dvou čipů.

Obrázek 18: Blokové schéma zvukového subsystému herní konzole Sega Saturn.

Společnost Sega později na výtky programátorů reagovala a vydala vylepšené verze grafických knihoven, které měly vývoj pro tuto herní konzoli ulehčit a současně i urychlit. I samotní vývojáři se postupně naučili ovládat složitý hardware, takže hry pro Segu Saturn vydané v pozdějším období jsou většinou po technologické stránce mnohem kvalitnější než první herní tituly, které pro tuto konzoli vznikly v relativně krátkých termínech (protože Sega Saturn musela konkurovat mnoha dalším herním konzolím páté generace).

Obrázek 19: Blokové schéma zdroje signálu pro FM syntézu.

8. Vývojové nástroje pro herní konzoli Atari Jaguar

Z pohledu vývojáře byla nejsložitější herní konzolí páté generace konzole Atari Jaguar, a to především kvůli použití velkého množství různých čipů i způsobu jejich vzájemného propojení a komunikace. Veškeré funkce totiž byly soustředěny do tří čipů, z nichž dva (nazývané „Tom“ a „Jerry“) byly vyvinuty přímo pro potřeby Jaguara, zatímco třetím čipem byl klasický a lety ověřený mikroprocesor Motorola 68000, který však původně v této konzoli měl plnit spíše pomocnou roli (což se však ve skutečnosti nestalo, protože mnozí vývojáři právě na tomto CPU prováděli převážnou část výpočtů – s čímž ovšem v návrhu nebylo počítáno). Čipy Tom a Jerry obsahovaly architektonicky prakticky shodné 32bitové RISCové procesory, které se však využívaly k odlišným operacím: procesor na čipu Tom se staral o zobrazování grafiky, zatímco procesor na čipu Jerry byl využíván pro zvuky a hudbu. Tom navíc obsahoval dva další moduly: 64bitový Objektový procesor (Object Processor) a taktéž 64bitový blitter. Zajímavé je, že jednotlivé čipy používaly odlišný endianess, tj. způsob uložení bajtů v 32bitových a 64bitových slovech.

Obrázek 20: Cybermorph (Atari Jaguar).

Vývoj her byl dosti složitý i z toho důvodu, že se grafické operace či operace prováděné DSP programovaly přímo v assembleru, zatímco logika hry mohla být naprogramována buď v céčku nebo taktéž v assembleru. Pro Motorolu 68000 se mohlo využít velké množství různých překladačů céčka, včetně již zmíněného Aztec C, používaly se však i assemblery, například i známý ASM-One Macro Assembler z Amigy. Mezi další často používané nástroje patří i modernější Orion's GPU/DSP debugger určený přímo pro Jaguara.

Obrázek 21: Iron Soldier (Atari Jaguar).

9. Sony PlayStation a její vstřícný přístup k vývojářům

Z pohledu programátorů byla pro tvorbu nových her nejjednodušší herní konzole Sony PlayStation, a to hned ze dvou důvodů. Především je interní struktura této herní konzole do značné míry podobná běžným osobním počítačům, a to zejména v porovnání s Atari JaguaremSega Saturnem, kde bylo nutné správně naprogramovat koordinaci velkého množství čipů. Poměrně velkou revolucí – opět z hlediska programátorů – byl vývojový systém pro Sony PlayStation. Ten měl být původně určený pro stroje vybavené mikroprocesory MIPS-R4000, ovšem později došlo k přehodnocení celé architektury, takže vývojové nástroje začaly být dostupné pro běžné osobní počítače PC; jinými slovy pro levný „komoditní“ hardware, s nímž byli programátoři dobře seznámeni a většinou si ani nemuseli kupovat žádné přídavné periferní zařízení (což je v porovnání s počáteční investicí nutnou v případě Saturnu dosti podstatná výhoda).

Obrázek 22: Checkered Flag (Atari Jaguar).

CS24 tip temata

Společnost Sony taktéž zakoupila firmu Psygnosis, a to za přibližně 48 milionů dolarů. Tato cena byla podle některých názorů velmi vysoká (přehnaná), na druhou stranu však nově vzniklá divize pojmenovaná Sony Interactive Entertainment velmi pomohla jak ke vzniku nových her (Destruction Derby, WipeOut atd.), tak i k vytvoření snadno ovladatelných vývojových nástrojů založených na GCC (Gnu C Compileru, linkeru, assembleru) a vlastním debuggeru – všechny tyto nástroje bylo samozřejmě možné ovládat přímo z PC. Není tedy divu, že PlayStation je dodnes používána amatérskými programátory pro vývoj nových her mnohem častěji, než je tomu u dalších herních konzolí páté generace.

Obrázek 23: Checkered Flag (Atari Jaguar).

10. 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
  92. Konkurence procesorů s mikroprogramovým řadičem – RISC
    http://www.root.cz/clanky/konkurence-procesoru-s-mikroprogramovym-radicem-architektura-risc/
  93. Mikroprocesory s architekturou RISC I
    http://www.root.cz/clanky/mi­kroprocesory-s-architekturou-risc-i/
  94. Procesory RISC v pracovních stanicích a serverech
    http://www.root.cz/clanky/procesory-s-architekturou-risc-v-pracovnich-stanicich-a-serverech/
  95. The Development of the C Language
    http://cm.bell-labs.com/cm/cs/who/dmr/chist.html
  96. B (programming language)
    http://en.wikipedia.org/wi­ki/B_(programming_language)
  97. Users' Reference to B
    http://cm.bell-labs.com/cm/cs/who/dmr/kbman.html
  98. THE PROGRAMMING LANGUAGE B
    http://cm.bell-labs.com/cm/cs/who/dmr/bintro.html
  99. BCPL
    http://en.wikipedia.org/wiki/BCPL
  100. Ken Thompson
    http://en.wikipedia.org/wi­ki/Ken_Thompson_(computer_pro­grammer)
  101. Dennis Ritchie
    http://en.wikipedia.org/wi­ki/Dennis_Ritchie
  102. Brian Kernighan
    http://en.wikipedia.org/wi­ki/Brian_Kernighan
  103. Sega documentation
    http://koti.kapsi.fi/~anti­me/sega/docs.html
  104. 1995 Programming on the Sega Saturn
    http://cowboyprogramming.com/2010/06/03/1995-programming-on-the-sega-saturn/
  105. Sega Myths-Saturn was the most difficult console to program for of 5th Gen
    http://forums.sega.com/show­thread.php?313485-Sega-Myths-Saturn-was-the-most-difficult-console-to-program-for-of-5th-Gen
  106. SuperH RISC engine Family
    http://www.renesas.com/pro­ducts/mpumcu/superh/index­.jsp
  107. Sega Saturn
    http://en.wikipedia.org/wi­ki/Sega_saturn
  108. MIPS Architecture Overview
    http://tams-www.informatik.uni-hamburg.de/applets/hades/web­demos/mips.html
  109. MIPS Technologies R3000
    http://www.cpu-world.com/CPUs/R3000/
  110. Sony PlayStation (Wikipedia)
    http://en.wikipedia.org/wi­ki/PlayStation_(console)
  111. The Official PlayStation muzeum
    http://playstationmuseum.com/pla­ystation-systems/
  112. CPU-collection: IDT R3010 FPU
    http://www.cpu-collection.de/?tn=0&l0=co&l1=ID­T&l2=R3010+FPU
  113. The MIPS R2000 Instruction Set
    http://suraj.lums.edu.pk/~cs423a05/Re­ference/MIPSCodeTable.pdf

Autor článku

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