Hlavní navigace

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

23. 1. 2014
Doba čtení: 13 minut

Sdílet

V dnešní části seriálu o historii vývoje počítačových her i herního hardware si přiblížíme hardwarové a softwarové prostředky, které byly používány pro vývoj her na starších osmibitových herních konzolích. Tyto konzole již dnes nemají žádný komerční význam, ovšem stále okolo nich existuje tvůrčí komunita vývojářů.

Obsah

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

2. Komplikovaný vývoj her pro osmibitové herní konzole

3. Původní vývojové prostředí určené pro vývoj her na herní konzoli Atari 2600

4. Oficiální vývojové prostředí pro konzole Atari 2600 a Atari 7800

5. Vývoj her pro konzoli Atari 2600 v současnosti aneb kouzlo minimalizmu

6. Současné vývojové a testovací nástroje používané pro vývoj homebrew her pro Atari 2600

7. Další slavná osmibitová herní konzole – NES

8. Obsah následující části seriálu

9. Odkazy na Internetu

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

V předchozích sedmi částech seriálu o historii vývoje počítačových her i herního hardware jsme se zabývali podrobnějším popisem technického vybavení herních konzolí páté generace, a to jak mikroprocesorů, které v těchto konzolích byly použity, tak i popisem grafických a zvukových subsystémů těchto již poměrně výkonných multimediálních elektronických zařízení. Je tedy již nejvyšší čas na chvíli změnit téma a věnovat se spíše programovému vybavení herních konzolí, protože právě hry (popř. další typy aplikací) měly v praxi mnohem větší vliv na komerční úspěšnost či neúspěšnost dané konzole, než její hardwarové schopnosti (o tom se ostatně měly šanci přesvědčit již prakticky všechny společnosti, které v minulosti herní konzole vyráběly).

pc6612

Obrázek 1: 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.

Nejprve se budeme zabývat vývojem her pro osmibitové herní konzole, a to mj. i z toho důvodu, že se okolo některých osmibitových konzolí (zejména se to týká legendárních konzolí Atari 2600 a Nintendo Entertainment System – NES) vytvořila komunita vývojářů, z nichž někteří dodnes vytváří nové hry, které jsou většinou dostupné ve zdrojové a binární podobě (určeno především pro emulátory herních konzolí), tak i v některých případech ve formě paměťové cartridge (určeno pro původní hardware, zde se samozřejmě již musí za cartridge i za její doručení platit). Zajímavý je i fakt, že se tyto herní konzole používaly, popř. dodnes používají pro výuku programování, především s orientací na počítačovou grafiku. Propagátorem tohoto netradičního způsobu výuky je dnes Ian Bogost, který na téma programování a návrhu her napsal i několik článků a knih. Důvody, proč i v současnosti mají osmibitové konzole své (mnohdy skalní) zastánce, si řekneme za chvíli.

Obrázek 2: Osmibitová herní konzole Nintendo Entertainment System (NES).

Teoreticky by sice měl tento článek začínat popisem vývoje her pro první generaci videoautomatů, ovšem tyto automaty nebyly v pravém slova smyslu programovatelné a dokonce ani neobsahovaly mikroprocesor. Příkladem může být slavný Pong realizovaný integrovanými obvody o střední integraci a nikoli běžným triem mikroprocesor+paměť+video řadič.

pc6608

Obrázek 3: Hra Pong ve variantě z roku 1972.

2. Komplikovaný vývoj her pro osmibitové herní konzole

V dnešním článku si stručně přiblížíme, jakým způsobem v minulosti vznikaly hry pro známou osmibitovou herní konzoli Atari 2600, jejíž první verze byla vydána již v roce 1977. Technické vybavení této herní konzole jsme si již v tomto seriálu popsali. Připomeňme si jen, že Atari 2600 je postavena nad osmibitovým mikroprocesorem MOS 6507, což je levnější varianta slavného mikroprocesoru MOS 6502 se zmenšenou šířkou adresové sběrnice a tudíž i zmenšeným počtem pinů (28 oproti původním čtyřiceti pinům). Dále byla tato konzole vybavena 128 bajty paměti a zákaznickým čipem TIA (Television Interface Adapter), jehož hlavním úkolem bylo generovat grafický signál i dvoukanálovou hudbu. Konzole neobsahovala klasický framebuffer, což by ostatně nebylo se 128 bajty RAM možné; proto se obraz generoval v reálném čase zápisem do několika řídicích registrů čipu TIA.

pc6613

Obrázek 4: Schéma zapojení herní konzole Atari 2600 s osmibitovým mikroprocesorem MOS 6507.

Hry i další aplikace (například i velmi jednoduchý interpret BASICu) byly dodávány na paměťových modulech (cartridgích) obsahujících paměťové čipy ROM či EPROM, přičemž původní maximální kapacita těchto paměťových modulů byla rovna čtyřem kilobajtům, ovšem posléze se pomocí přepínání paměťových banků kapacita zvyšovala na osm, šestnáct a někdy i na celých 32 kilobajtů. Na takto jednoduchém systému samozřejmě nebylo možné hry vyvíjet přímo, takže se namísto Atari 2600 používaly jiné prostředky, přičemž se v tomto případě herní konzole využívala především pro testování. Vývoj her na Atari 2600 se dosti podstatným způsobem odlišoval od vývoje her na mnohé další modernější konzole, a to zejména z toho důvodu, že v roce 1977 ještě neexistovaly osobní počítače (IBM PC vzniklo až o čtyři roky později, jediným použitelným strojem s mikroprocesorem byl Apple II), takže se pro vývoj používaly cross assemblery a debuggery běžící na minipočítačích.

Obrázek 5: Osmibitový mikroprocesor MOS 6507 ve svém 28pinovém pouzdru.

3. Původní vývojové prostředí určené pro vývoj her na herní konzoli Atari 2600

První podpůrné nástroje pro vývoj her a dalších aplikací pro herní konzoli Atari 2600 byly vyvinuty přímo ve společnosti Atari (Dave Crane a jeho kolegové), a to původně pro známý minipočítač DEC PDP-11. Jednalo se zejména o cross assembler spouštěný přímo na minipočítači, jímž produkovaný binární kód se přes sériovou linku (RS-232) přenášel do speciální cartridge umístěné v herní konzoli, konkrétně v konektoru určenému pro běžné herní cartridge. Tato vývojová cartridge kromě paměti RAM obsahovala i jednoduché rozhraní pro řádkový debugger spouštěný taktéž na minipočítači. Vývojová cartridge emulovala běžnou paměťovou cartridge s pamětí ROM či EPROM. Tímto způsobem se postupně hra vyvíjela a testovala, což byl v porovnání s dneškem poměrně zdlouhavý proces, který byl navíc drahý – zejména pro nově založené společnosti zaměřené pouze na vývoj her (nikoli na prodej hardware) bylo problematické si zaplatit potřebný strojový čas minipočítače.

Obrázek 6: Barvová paleta herní konzole Atari 2600 při použití televizního systému NTSC.

Z tohoto důvodu se někteří programátoři alespoň zpočátku museli spokojit s jednodušším systémem: ručním překladem kódu z assembleru do strojového kódu, „vypálením“ binárního obrazu hry do čipu EPROM a následným použitím této EPROM v cartridgi, která se v tomto případě prakticky nelišila od cartridgí, na nichž se prodávaly komerční hry (jediným rozdílem byl chybějící obal a umístění EPROM do patice a nikoli přímo na plošný spoj). Tento styl programování a testování byl v některých případech aplikován i při vývoji her pro herní konzoli Nintendo Entertainment System (NES); jeden vývojář vzpomíná, že celý cyklus překlad+naprogramování EPROM+přenos paměťového čipu+spuštění hry na konzoli trval většinou patnáct minut (což může být dobré ponaučení pro nás dnešní vývojáře, kteří někdy nadáváme na to, že spuštění nového kódu z IDE trvá i několik sekund :-).

Obrázek 7: O tomto modulu se prozatím definitivně neví, zda se jedná o originální vývojový modul hry River Raid (Activision), nebo jde o pirátskou kopii původní hry.

Obrázek 8: První úroveň hry River Raid.

4. Oficiální vývojové prostředí pro konzole Atari 2600 a Atari 7800

Později, především po úspěšné revoluci v oblasti domácích a později i osobních počítačů, se vývoj her a dalších aplikací určených pro herní konzole postupně přenesl na tyto relativně levné počítače, což mj. znamenalo, že se o vývoj her mohli pokusit i jednotlivci a společnosti s nízkým počátečním rozpočtem. Názorným příkladem takto pojatého „vývojového prostředí“ může být vývojové prostředí nabízené společností Atari pro její herní konzole Atari 7800 a taktéž Atari 2600 (díky zpětné kompatibilitě 7800 s 2600). Tento vývojový nástroj byl určen pro běh na osobních počítačích Atari 520ST, Atari 1040ST či pro řadu Mega ST; pro plnou činnost byl vyžadován i pevný disk (nejenom disketová jednotka). Tyto počítače byly přes paralelní port propojeny se speciální cartridgí s pamětí RAM, která dokázala emulovat běžnou paměťovou cartridge a navíc podporovala i komunikaci používanou debuggerem (ovládání probíhalo přes emulátor terminálu). Tato cartridge byla přes standardní konektor připojena do herní konzole 7800 (původní verze navíc vyžadovala úpravu ROM) či do původní konzole 2600.

Obrázek 9: Pohled na další typ vývojového modulu pro herní konzoli Atari 2600 (zde není osazen paměťovými čipy).

Mezi reálným modulem se hrou a vývojovou cartridgí samozřejmě existovalo několik nepatrných rozdílů, které se týkaly zejména obsazení paměťových banků a jejich přepínání. Navíc první dvě instrukce na vývojové cartridge musely provádět její inicializaci (tím se vyplýtvaly celé čtyři cenné bajty :-).

Obrázek 10: Jednoduchý program napsaný v assembleru mikroprocesoru MOS 6502.

Softwarová část tohoto vývojového prostředí se skládala z několika nástrojů: programátorského editoru (upravená verze MicroEMACSu), cross assembleru, konvertoru objektových souborů generovaných assemblerem do formátu vhodného pro přímé uložení do RAM či EPROM na cartridgi a mj. i debuggeru, který podporoval trasování, nastavování breakpointů, změnu obsahu RAM, změnu řídicích registrů atd. Z tohoto popisu je zřejmé, že i přesto, že vývoj her probíhal na osobním počítači (a ne minipočítači), základní nástroje a postupy zůstaly zachovány – vývoj stále probíhal s využitím assembleru a (pravděpodobně) jen minimum her využívalo kód napsaný v některém vyšším programovacím jazyku.

Obrázek 11: Část výukového programu pro herní konzoli Atari 2600, která je taktéž naprogramovaná v assembleru mikroprocesoru MOS 6502.

5. Vývoj her pro konzoli Atari 2600 v současnosti aneb kouzlo minimalizmu

„A minimum is required to program the beast.“

Jak jsme si již řekli v úvodních kapitolách, existuje i v současnosti skupina vývojářů-amatérů, jejichž koníčkem je vytváření her pro staré osmibitové herní konzole. Někteří z těchto programátorů tvrdí, že osmibitové herní konzole a konkrétně právě Atari 2600, jsou pro nekomerční hry ideální platformou, protože takovou hru může vytvořit skutečně pouze jeden člověk. Navíc jsou grafické možnosti těchto konzolí na tak nízké úrovni (v porovnání se současnými standardy), že hra musí zaujmout především hratelností a nikoli dechberoucí grafikou či pokročilými, ale jen prvoplánovými grafickými efekty. Další programátoři navíc vyzdvihují skutečnost, že na osmibitových herních konzolích (a samozřejmě i na osmibitových domácích mikropočítačích) se programuje jen o jednu úroveň nad hardware. Nejsou zde tedy žádné další mezivrstvy, knihovny a frameworky; záleží jen na umu programátora, jak bude výsledný produkt vypadat.

Obrázek 12: Jedna z novějších homebrew her, která se snaží napodobit původní styl počítačových her.

Jak vlastně vývoj hry pro konzoli Atari 2600 může vypadat dnes? K dispozici je zapotřebí pouze minimum vývojových nástrojů (opět návrat k minimalismu, zejména v porovnání se současnými IDE doplněnými o mnohdy monstrózní frameworky), ovšem na druhou stranu je dnes snadnost vývoje pro 2600 na tak vysoké úrovni, o níž se mohlo na konci sedmdesátých a v první polovině osmdesátých let minulého století programátorům jenom zdát a to především díky existenci kvalitních emulátorů herní konzolí. Díky nim je možné celý vývoj i testování provést na osobním počítači s tím, že pouze finální produkt se otestuje na reálném hardware herní konzole.

Obrázek 13: Další snímek ze stejné hry.

6. Současné vývojové a testovací nástroje používané pro vývoj homebrew her pro Atari 2600

Pro vývoj nové hry či pro úpravu starší hry určené pro herní konzoli Atari 2600 dostačuje překvapivě jen několik aplikací:

  1. Cross assembler (většinou se používá DASM)
  2. Disassembler (DiStella)
  3. Textový editor (samozřejmě Vim a pro skutečné fajnšmekry Notepad :-)
  4. Hexa editor (Beye, hexedit, xxd, hiew apod.)
  5. Emulátor herní konzole (pravděpodobně nejpoužívanější je Stella či z26)

Obrázek 14: Homebrew hra AVCSTec Challenge.

Existují však i další specializované nástroje, například:

  1. Atari 2600 BASIC Compiler (překladač z jednoduchého BASICu do strojového kódu)
  2. TIA Playfield Painter (jednoduchý editor pro tvorbu pozadí v maximálním rozlišení 80×192 pixelů)

Obrázek 15: Homebrew hra AVCSTec Challenge.

Nejdůležitější z těchto nástrojů je cross assembler DASM (http://sourceforge.net/projects/dasm-dillon/), tj. takový assembler, který sice může být spuštěn na osobním počítači, ale generuje objektový soubor pro jiný typ mikroprocesoru. První verze assembleru DASM vznikla v období let 1987 až 1988 a jejím autorem je Matt Dillon. Později došlo k mnoha úpravám tohoto assembleru a v současnosti se jedná o produkt využitelný pro produkování objektového kódu pro mnoho různých osmibitových mikroprocesorů: MOS 6502, MOS 6507 (v podstatě to samé), Motorola řady 6800, Motorola řady 68HC11 či Fairchild F8. Existují ovšem i další nativní a cross assemblery pro procesory MOS 6502, jejich seznam lze nalézt zde: http://en.wikipedia.org/wi­ki/Comparison_of_assembler­s#6502_assemblers.

Obrázek 16: Homebrew hra AVCSTec Challenge.

7. Další slavná osmibitová herní konzole – NES

Současní amatérští vývojáři her pro osmibitové herní konzole se kromě Atari 2600 soustředili i na další typy konzolí. Druhým velmi oblíbeným zařízením je NES (Nintendo Entertainment System), a to z toho důvodu, že i tato herní konzole je vybavena osmibitovým mikroprocesorem MOS 6502, přesněji řečeno čipem, který je od 6502 odvozen. Důvod pro oblibu tohoto mikroprocesoru mezi amatérskými programátory je jednoduchý – mnozí z nich měli tento čip ve svých domácích osmibitových počítačích (Atari, Commodore, Apple II), takže jsou s jeho instrukční sadou dobře obeznámeni (to stejné platí v Evropě pro Zilog Z80).

Obrázek 17: Homebrew hra Duck Attack!

Pro herní konzoli NES lze hry tvořit mnohem snadněji než pro Atari 2600, a to zejména díky propracovanějšími grafickému a zvukovému subsystému, větší kapacitě RAM atd. Pravděpodobně nejpodstatnější rozdíl mezi oběma zmíněnými konzolemi spočívá v tom, že na Atari 2600 je nutné přesně počítat takty jednotlivých instrukcí v zobrazovací smyčce (kernelu), zatímco NES používá obdobu framebufferu a vykreslování lze tedy zvládnout s menšími problémy.

Obrázek 18: Homebrew hra Duck Attack!

I pro NES samozřejmě existují vývojové nástroje, tj. assembler (většinou se opět dává přednost DASMu), disasembler, editor pro bitmapy, emulátory (například HalfNES) a v případě potřeby je možné vytvářet i paměťové cartridge se hrami, které jsou většinou určeny pro NES2, což je varianta herní konzole nevyžadující speciální „lockout chip“, tj. integrovaný obvod, který měl znemožnit výrobu nelicencovaných her popř. pirátských kopií her. Ovšem, jak je tomu v této oblasti zvykem, bylo nalezeno několik způsobů, jak tento čip obejít.

Obrázek 19: Homebrew hra Duck Attack!

8. Obsah následující části seriálu

V následující části tohoto seriálu se seznámíme s dalšími vývojovými nástroji popř. i s hardwarovými prostředky používanými pro tvorbu her na různých herních konzolích (NES, SNES, Game Boy, GBA apod.). Taktéž si řekneme, které společnosti vyrábějící herní konzole dobře spolupracovaly s „nezávislými“ vývojáři a u kterých firem naopak tito vývojáři spíše naráželi na problémy, snahu o izolaci těchto vývojářů jen na jednu platformu (zákaz portace her na hardware konkurence byl poměrně častý) apod.

Obrázek 20: Homebrew hra Medieval Mayhem.

Vztah firem vyrábějících a prodávajících herní konzole k vývojářským studiím se totiž postupně měnil (zejména po vzniku konkurenčních výrobců), což začalo být nejvíce patrné u herních konzolí čtvrté a páté generace, kde včasná dostupnost (popř. naopak nedostupnost) kvalitních her rozhodovala o komerčním úspěchu těchto herních konzolí. Poněkud předběhneme, ale už zde je možné napsat, že snahu o co největší otevřenost vůči vývojářům her projevila firma Sony s její přelomovou herní konzolí Sony PlayStation a na druhé straně spektra většinou stála firma Sega.

CS24_early

Obrázek 21: Homebrew hra Medieval Mayhem.

Obrázek 22: Homebrew hra Medieval Mayhem.

9. Odkazy na Internetu

  1. DP Interviews: Bob Whitehead (By Scott Stilphen)
    http://www.digitpress.com/li­brary/interviews/interview_bob_whi­tehead.html
  2. The dasm macro assembler
    http://dasm-dillon.sourceforge.net/
  3. Atari Programming Workshop Chapter links
    http://atariage.com/forum­s/viewtopic.php?t=47479
  4. Various Development Kits
    http://devkits.handheldmuseum.com/
  5. Classic Console Development
    http://sebastianmihai.com/ccd/
  6. Atari 2600 development – Snappy (batari basic)
    http://sebastianmihai.com/ma­in.php?t=47
  7. Atari VCS (Atari 2600) – fotografie
    http://oldcomputers.net/atari-vcs.html
  8. History of Consoles: Atari VCS/2600 (1977)
    http://gamester81.com/history-of-consoles-atari-vcs2600–1977/
  9. Iag Bogost: Racing the Beam
    http://www.bogost.com/book­s/video_computer_system.shtml
  10. Atari 2600 Programming Tutorial
    http://www.randomterrain.com/atari-2600-memories-tutorial-andrew-davie-01.html
  11. Atari 2600 Development Cartridge *Super Deluxe*~!
    http://jazz-disassemblies.blogspot.cz/2013/09/atari-2600-development-cartridge-super.html
  12. Atari „Alpine“ Devkit (pro Atari Jaguar)
    http://justclaws.atari.or­g/devcats/hardware/ataridev­.htm
  13. 6502 compatible assembler and emulator in javascript
    http://www.6502asm.com/
  14. Atari 2600 Programming
    http://atariage.com/2600/programming/
  15. Retrozone – Brand new original homebrew games by current programmers
    http://www.retrousb.com/in­dex.php?cPath=30
  16. NESworld – Homebrew games
    http://www.nesworld.com/homebrew.php
  17. Ian Bogost
    http://www.bogost.com/
  18. Ian Bogost
    http://en.wikipedia.org/wi­ki/Ian_Bogost
  19. Wikipedia – Atari 2600 Homebrew Games
    http://en.wikipedia.org/wi­ki/Atari_2600_homebrew
  20. Wikipedia – List of Homebrew Games
    http://en.wikipedia.org/wi­ki/Homebrew_(video_games)
  21. Wikipedia – List of Atari 2600 Homebrew Games
    http://en.wikipedia.org/wi­ki/List_of_Atari_2600_games#Ho­mebrew_games
  22. Wikipedia: 6502:
    http://en.wikipedia.org/wiki/6502
  23. www.6502.org:
    http://www.6502.org/
  24. Atari TIA
    http://www.atarihq.com/danb/tia.shtml
  25. TIA Playfield
    http://www.atarihq.com/dan­b/TIA/Playfield.shtml
  26. Atari 2600 FAQ
    http://www.atariage.com/2600/faq/in­dex.html
  27. Atari 2600 Consoles and Clones
    http://www.atariage.com/2600/ar­chives/consoles.html
  28. Atari 2600 Programming (odkazy)
    http://www.atariage.com/2600/pro­gramming/index.html
  29. Design case history: the Atari Video Computer System
    http://www.atariage.com/2600/ar­chives/design_case.html?Sys­temID=2600
  30. Schémata zapojení Atari 2600 (překresleno)
    http://www.atariage.com/2600/ar­chives/schematics_pal/index­.html
  31. Schémata zapojení Atari 2600 (skeny původních schémat)
    http://www.vintagegamingan­dmore.com/atari-2600-schematics
  32. Adventure for the Atari 2600 Video Game Console by Warren Robinett
    http://www.warrenrobinett­.com/adventure/index.html
  33. Mapa hry Adventure
    http://www.warrenrobinett­.com/adventure/adv-map1.gif
  34. 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.