Stavba herního automatu

Už to budou tři roky! V létě 2015 jsme se s kolegy z práce pustili do stavby herního (hracího) automatu pro arkádové hry z 80. let. Cíl projektu? Zahrát si hry jako Pac-Man, Galaga, Donkey Kong, Double Dragon a další.

V tomto textu se nesnažím popsat podrobný návod jak postavit arkádu ani se nesnažím o úplný výčet her, emulátorů a podobného software. Pouze popisuji postup, který jsme zvolili my.

Základem všech herních automatů je dřevěná „bedna“, která obsahuje veškerou elektroniku, televizor, joystick s tlačítky, mincovní automat a zdroj. Při vymýšlení tvaru jsem se inspiroval u firmy Taito (ano, to je ta firma, která stojí za Space Invaders, Elevator Action, Jungle King, …). Předlohou mi byla fotografie originální arkády pro hru Jungle King.

"Arcade cabinets" firmy Taito mi posloužily jako inspirace.
„Arcade cabinets“ firmy Taito mi posloužily jako inspirace.

Přesné rozměry jsem neměl a ani nehledal, celý tvar jsem si nejdříve nakreslil na tabuli LTD (lidově řečeno „dřevotříska“, nejčastěji se používá na výrobu kuchyní a dalšího nábytku)  o rozměrech cca 2×2,8 metru a tloušťce 18 mm, na hrubo nařezal na formátovací pile a poté ručně pomocí přímočaré pily dokončil detaly (oblouky a kulaté rohy). Červenou ABS hranu jsem pak lepil na olepovačce. Celá práce zabrala asi jeden víkend.

Nařezané a ohraněné boky budoucího automatu. Materiál LTD tl. 18mm.
Nařezané a ohraněné boky budoucího automatu. Materiál LTD tl. 18mm.

Nejkomplikovanější část bylo vymyslet uchycení monitoru. Jelikož jsme chtěli co nejvěrnější zážitek ze hry, rozhodli jsme se použít starý CRT monitor. Ten je ale hodně těžký a velký. Po odmontování plastových krytů televizoru jsem naštěstí našel v rozích televize kovové „nožky“, které se daly použít pro uchycení do dřevěného (bukového) rámu, který se pak přes několik samořezných vrutů přišrouboval dovnitř automatu.

Kostra automatu s bukovým rámem držící televizor a zatím bez dvířek a horní desky.
Kostra automatu s bukovým rámem držící televizor a zatím bez dvířek a horní desky.

Pak už stačilo vymyslet rozmístění tlačítek a joysticku. Po rychlém googlení jsem nakonec zvolil tzv. Japonské uspořádání tlačítek a joysticku – tlačítka ve dvou řadách jsou v mírném oblouku a joystick vlevo. Mimochodem, rozmístění tlačítek je docela věda a existuje několik používaných layoutů.

Test layoutu tlačítek a joysticku.
Test layoutu tlačítek a joysticku.

Elektronika

Původní arkády většinou obsahovaly jeden nebo více mikroprocesorů, velké množství podpůrných obvodů realizovaných pomocí TTL hradel a samotné hry (software) bývaly uložené v pamětech ROM a RAM. To vše doplněno o CRT monitor, tlačítka, joysticky, stroj na mince a samozřejmě napájecí zdroj.

My se vydali jednodušší cestou. A totiž Raspberry Pi 2 s emulátorem MAME, hry uložené na SD kartě, video výstup připojený ke staré CRT televizi a ovládání pomocí tlačítek a joysticku připojené přes USB kartu I-PAC. Díky tomuto řešení je naše arkáda univerzální, jelikož se na ní dá provozovat téměř libovolná hra.

Test zapojení všech tlačítek a joysticku do desky I-PAC.
Test zapojení všech tlačítek a joysticku do desky I-PAC.

Po kompletním zapojení elektroniky uvnitř arkády jsme na SD kartu nahráli Linuxovou distribuci  RetroPie určenou právě pro herní automaty založené na Raspberry Pi.

RetroPie je založen na oficální distribuci Raspbian a navíc obsahuje EmulationStation, RetroArch a různé emulátory pro Amigu, Atari, GameBoy, Neo Geo, Play Station a další. Ne všechny emulátory ale lze na Raspberry provozovat a některé náročnější 3D hry nemusí jít spustit.

První boot a nastavování RetroPie. Tady je mimochodem pěkně vidět detail uchycení monitoru v rámu.
První boot a nastavování RetroPie. Tady je mimochodem pěkně vidět detail uchycení monitoru v rámu.

Co RetroPie neobsahuje? Hry a jiný autorsky chráněný software. S tím si musí každý retro-hráč poradit sám :) Aby se dala jakákoliv hra provozovat, je potřeba mít její binárky uložené ve správném adresáři pro konkrétní emulátor v RetroPie. Pro hry běžící na MAME jsou to většinou obrazy ROM pamětí původních arkád.

Jako u každého software i zde platí, že se jedná o autorsky chráněná díla. Takže pozor na to, k jakému účelu se chystáte váš nový herní automat použít!

Emulátor MAME

Pojďme si teď stručně představit MAME a jeho ovládání. Pro podrobnější informace odkážu na oficiální web projektu.

Většina arkád z 80. let obsahovala hardware specifický pro danou hru nebo několik málo her stejného výrobce. Navíc, rychlý vývoj nových mikroprocesorů, rostoucí velikost pamětí i velmi dynamické konkurenční prostředí způsobilo, že hardware se dost často od základu měnil a starší hry se nikdo nesnažil portovat na novější. Staré hry tak velice rychle přestávaly být dostupné a hráči neměli v pozdějších letech možnost si je nikde zahrát.

Toto si uvědomil zakladatel projektu MAME, který se rozhodl začít tento starý a mnohdy již nedostupný hardware podrobně dokumentovat. Výsledkem je MAME emulující tisíce různých variant hardware a na nich běžících her.

MAME se dá zkompilovat a spustit na většině dnešních platformách a operačních systémech. V našem případě je to ARM a OS Linux. Při experimentování s nastavením emulátoru jsem ho ale provozoval i na x86-64 a Mac OS X.

Hlavní menu emulátoru MAME s výběrem několika her.
Hlavní menu emulátoru MAME s výběrem několika her.

Jakmile máte k dispozici tzv. ROMku konkrétní hry, což je binární soubor o několika jednotkách nebo stovkách kB, můžete jej nakopírovat do správného adresáře a MAME hru rozpozná a je možné ji pak spustit.

Ukázka ze hry Ms. Pac-Man z roku 1982.
Ukázka ze hry Ms. Pac-Man z roku 1982.

Arkády většinou fungovaly až po vhození správné mince do mincovníku. Defaultní nastavení MAME je takové, že stisk klávesy 5 nebo 6 simuluje signál z mincovníku a hra připíše hráči kredit. Pak je možné pomocí klávesy 1 hru spustit a ovládat. Stiskem klávesy TAB se zobrazí herní menu, kde je možné zjistit jednak rozložení kláves pro danou hru, ale také změnit nastavení tzv. dip switches. To bývaly hardwarové přepínače na plošném spoji uvnitř arkády, které mohl provozovatel nastavit a změnit tak chování hry (více nebo méně mincí pro jednu hru, freeplay, orientace monitoru, test mode, obtížnost, počet životů a další).

Herní menu se zobrazí po stisku klávesy TAB.
Herní menu se zobrazí po stisku klávesy TAB.
Nastavení hry pomocí tzv. dip switches.
Nastavení hry pomocí tzv. dip switches.

A jak to celé funguje v případě tlačítek a joysticku připojených přes I-PAC desku? Ta je k Raspberry připojena přes USB a hlásí se jako obyčejná klávesnice. Výrobce I-PAC s MAME počítá a nastavení jednotlivých tlačítek většinou odpovídá správné klávese, kterou MAME čeká. Takže na 99% nebudete muset měnit nic. A pokud se náhodou stane, že některá klávesa není nastavená dobře, I-PAC umožňuje pomocí speciální aplikace toto nastavení změnit.

Která verze Raspberry Pi je ta pravá?

Jak jsem již psal, hlvaním cílem MAME je přesná dokumentace historického hardware. To znamená, že ne vždy je konkrétní platforma implementovaná optimálně (některé hry neběží plynule nebo se nedají na pomalejším procesoru spustit vůbec), někdy je implementace neúplná nebo se na ní teprve pracuje (v takovém případě pak hra může obsahovat chyby nebo místa, které se nedají hrát).

První verze naší arkády obsahovala Raspberry Pi verze 1. Video výstup jsme řešili přes kompozitní video (žlutý RCA konektor) přímo do TV a audio přes 3,5mm jack do zesilovače, který je součástí televize.

Starší hry fungovaly skvěle, novější „mlátičky“ typu Street Fighter z roku 1987 (hra využívá procesor Motorola 68000 a zvuk generují dva (!) procesory Z80 se zvukovým čipem YM2151) nebo Cadillacs and Dinosaurs z roku 1993 se sice spustit daly, ale emulace byla neuvěřitelně pomalá a tudíž nehratelná.

Raspberry Pi verze 2 už na tom byla o poznání lépe a dokonce už jsme si i zahráli Cadillacs and Dinosaurs v normální rychlosti :) Toro RPi ale neobsahuje RCA konektor pro video výstup. Ten je součástí audio jacku, ke kterému stačí připojit kabel s 3×RCA konektory pro video a audio.

Redukce jack na RCA konektory (kompozitní video a stereo zvuk).
Redukce jack na RCA konektory (kompozitní video a stereo zvuk).

No a tento týden jsem si vyzkoušel i Raspberry Pi Zero s Retro Pie. Tam je to podobné jako v případě „jedničky“. Uživatelské rozhraní Emulation station je pomalejší, ale ne příliš náročné hry (konkrétně Ms. Pac-Man, Q*Bert a Frogger)  se dají provozovat. Pouze video a audio jsem musel řešit přes HDMI.

Co jsme měli udělat jinak?

Použitý mincovní stroj funguje na principu elektromagnetické indukce. Dovnitř se vloží požadovaná mince a tu pak porovnává s právě vhazovanou mincí od hráče. My jsme záhy zjistili, že CRT monitor ruší mincovník a ten pak nedokáže detekovat průchod mince. Zkoušeli jsme různé stínění, jinou délku přívodních vodičů, oddělení napájecích zdrojů, ale všechno bez výsledku. Řešením by asi bylo umístit mincovník jinam (jinak naklonit relativně od monitoru), koupit jiný typ mincovníku nebo nepoužívat CRT monitor.

Mincovní stroj.
Mincovní stroj.

Pod ovládací pult s joysticky a tlačítky umístit šuplík pro plnohodnotnou klávesnici. To je užitečné hlavně v okamžiku, kdy je potřeba servisovat RetroPie.

Šest tlačítek pro každého hráče je zbytečně moc. Většina her si vystačí s dvěma, některým stačí jedno. Záleží co chcete hrát.

Trackball. To je ta velká koule, kterou se ovládají některé hry (Centipede, Arcanoid a jiné). Sice se používá jen u malého počtu her, ale je to dobrá „frajeřina“.

Závěr

Tři roky pryč a pořád jsme nebyli schopní naši arkádu ozdobit samolepkama s grafikou her. Ale to přijde! :)

Hra v plném proudu. Všechno pohání RPi 2 a RetroPie.
Hra v plném proudu. Všechno pohání RPi 2 a RetroPie.