FK~

Moje odkazy

Ostatní odkazy

Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
There Is No Cloud …just other people's computers.
Sane software manifesto / Manifest příčetného softwaru

Herní ovladače počátku 90. let

vydáno: 28. 12. 2016 22:50, aktualizováno: 1. 4. 2018 23:09

Před dvaceti pěti lety vzniklo něco, co předurčilo podobu budoucích herních ovladačů, včetně těch dnešních (jako třeba DualShock pro Sony PlayStation 4). Pojďme se podívat na dva významné gamepady té doby – Gravis PC GamePad a ovladač k herní konsoli Nintendo SNES (resp. Super Famicom).

Nintendo SNES a ovladač Super Famicom

Základní rozložení – čtyř-směrový ovladač vlevo a čtyři tlačítka vpravo – se od té doby drží jako nepsaný standard, jen se přidávají případná další tlačítka a funkce.

Gravis PC GamePad

Jak už název napovídá, jedná se o gamepad pro osobní počítače PC (ještě se dělala verze pro Mac). Tehdy se v domácnostech a malých firmách používaly hlavně procesory 386 (někde i 486) běžící na frekvencích malých desítek MHz a operační paměť se měřila na jednotky MB. Psal se rok 1991, když firma Advanced Gravis Computer Technology přišla se svým GamePadem.

Gravis PC GamePad

Jedná se o doslova ikonický ovladač – objevil se ve hře Jazz Jackrabbit (společně třeba s 3,5" disketami) jako věc, kterou sbíráte a dostáváte za ni body:

Gravis PC GamePad ve hře Jazz Jackrabbit

A zjevně byl také inspirací pro italského grafika Davida Vignoniho, když tvořil sadu ikon Nuvola:

ikona z tématu Nuvola od Davida Vignoniho inspirovaná gamepadem Gravis

Gamepad je zde stylizovaný, asymetričnost je obrácená, ale barvy všech tlačítek sedí.

Vzhled, konstrukce a funkce

Jedná se o základní a velice jednoduchý gamepad. Na první pohled se zdá, že kromě čtyř-směrového ovladače a čtyř dalších tlačítek už nic neumí.

Gravis PC GamePad – zadní strana

Nicméně na bocích nalezneme dva přepínače. Po přepnutí toho horního doprava přejdeme do režimu pro leváky (obrací se jen směry; pořadí barev zůstává: červená, modrá, žlutá, zelená). A přepnutím toho spodního doleva přejdeme do režimu „rychlé střelby“, ve kterém máme z pohledu počítače jen dvě tlačítka: 1) červené souvislé a modré rychle přerušované a 2) žluté souvislé a zelené rychle přerušované.

Gravis PC GamePad – přední strana

Možná vás taky zaujala ta díra uprostřed čtyř-směrového ovladače – do ní se dá našroubovat tyčka a z gamepadu tak vyrobíte malý joystick. S tímhle nápadem ale nepřišel Gravis jako první – měla to už v 80. letech konsole Sega Master System (první verze jejího ovladače Control Pad).

Tlačítka jsou klasická – pod tvrdým plastem je guma s vodivou vrstvou, po přitisknutí na kontakty na desce vytváří spoj s určitým odporem:

Gravis PC GamePad – tlačítka

Kontakty na desce:

Gravis PC GamePad – deska

Důvod, proč je tu relativně hodně součástek (časovač NE555, tranzistory, odpory a kondenzátory), je ten režim pro leváky a režim rychlé střelby.

Gravis PC GamePad – deska – součátky

Konektor a komunikační protokol

Ovladač se k PC připojuje pomocí standardizovaného rozhraní – herního portu (gameport, MIDI, DA-15) a tím je daný i komunikační „protokol“.

gamepad od Gravisu se připojuje přes gameport

Herní port poskytuje napájení +5 V, čtyři digitální vstupy pro tlačítka a čtyři analogové vstupy (0–100 kΩ) pro osy X a Y dvou joysticků. Nejjednodušší joystick jsou tak vlastně jen dva potenciometry připojené drátem k počítači.

Kromě hraní můžete tohle rozhraní použít i k nějakému základnímu měření analogových veličin a nepotřebujete žádný zvláštní HW – totéž platí pro paralelení (LPT) port, který zase poskytuje univerzální digitální vstupy a výstupy (použitelní jako GPIO).

V dnešních počítačích tyto porty bohužel už většinou nejsou, a tak potřebujete přídavné karty (např. zvukovku s herním portem nebo sériový/paralelní řadič do PCI) nebo USB adaptér. Díky němu si můžete zahrát hry s původním gamepadem i na dnešním počítači nebo mobilu.

Můj adaptér se jmenuje SuperJoy Box7 USB Game Port Adapter a obsahuje čip CY7C63001C-PXC. Přepínačem se volí režimy: gamepad / volant / joystick.

USB-GamePort adaptér s čipem CY7C63001C-PXC

Nastavení joysticku/gamepadu v KDE – kalibrace je nutná, protože rozhraní je analogové a hodnota odporu se může v čase trochu měnit, takže by osy byly rozladěné:

KDE a nastavení joysticku - Gravis PC GamePad

Ovladač k Nintendo SNES

Počítač v té době nemá zdaleka každý a hodně lidí hraje v obývácích u televizí na herních konsolích čtvrté generace (16-bitové), z nichž nejvýznamnější je Sega Mega Drive (Genesis) a Nintendo Super Famicom (SNES). Následující část bude o ovladači k Nintendu.

Konsole se prodávala ve třech verzích:

  • SuperFamicom – Japonsko, od roku 1990
  • SNES/NTSC – Amerika, od roku 1991
  • SNES/PAL – Evropa, od roku 1992

Navenek vypadá SNES/PAL a SuperFamicom stejně, ale uvnitř se liší. Oproti tomu americká verze vypadá úplně jinak (hranatá, jiné barvy), ale uvnitř je v podstatě stejná jako japonská.

Konsole je dost uzavřená a Nintendo brání pomocí tzv. CIC čipu tomu, aby hry pro jeden region šly hrát v konsolích pro jiný – PAL hry lze hrát jen na SNES/PAL konsolích a NTSC verze na nich nefungují. Uzavřenost je patrná i z použití proprietárních šroubů – pro otevření konsole nebo kazety s hrou potřebujete speciální šroubovák (dneska se dá pořídit za dva dolary).

Vzhled, konstrukce a funkce

Oproti Gravisu má ovladač k Nintendu navíc čtyři tlačítka: L a R ovládané ukazováčky (viz obrázek v perexu) a tlačíka Start a Select uprostřed. Působí bytelným dojmem a oproti Gravisu je asi o dva centimetry menší.

ovladač k PAL SNESu – SNSP-005

Na rozebrání ovladače stačí běžný křížový šroubovák:

ovladač k PAL SNESu – SNSP-005 – zezadu

Kabel má jen pět vodičů a tlačítek je dvanáct, což nám říká, že to nebude tak jednoduché jako v předchozím případě (herní port u PC má 15 pinů a každé tlačítko je připojené svým vodičem).

ovladač pro SNES – kabel s pěti vodiči

Konstrukce tlačítek je stejná jako u Gravisu:

ovladač pro SNES – tlačítka

Deska ovladače ke SNES/PAL SNSP-005 – všimněte si nápisů „only-P“:

ovladač pro SNES – deska SNSP-005

Japonské (NTSC) verze tyto odpory osazené nemají, nebo obsahují dva integrované obvody a žádné místo pro odpory v PAL verzi – a v obou případech jsou značené jako SVHC-005:

ovladač pro SuperFamicom – deska SVHC-005

Podobnost mezi ovladači je nepřehlédnutelná, dokonce i barvy tlačítek jsou stejné, jen červená a zelená jsou prohozené. Vzhledem k rokům uvedení na trh (listopad 1990 vs. listopad 1991) to vypadá, že se nejspíš Gravis inspiroval u Nintenda.

ovladače SuperFamicom, SNES/PAL a Gravis PC GamePad

Vsuvka: Zdroj ke konsoli SNES/PAL

Na napájecím adaptéru pro SNES/PAL zaujme jeho hmotnost – není to totiž žádný spínaný zdroj, ale staré poctivé trafo – na výstupu je střídavé napětí něco přes 10 V AC (amplituda cca ± 15 V) a ta 50 Hz sinusovka ze zásuvky vám jde až dovnitř do konsole. Tím se liší od většiny dnešní spotřební elektroniky, která pracuje s nízkým stejnosměrným napětím (DC).

Takže kdybyste někdy potřebovali transformátor resp. nízké střídavé napětí, můžete sáhnout pod stůl pro zdroj k SNESu. Třeba když budete chtít bezpečně změřit, jaká sinusovka (nebo naopak nějaká obludnost) leze z vaší UPS nebo DC-AC měniče.

Ale pozor, týká se to jen PAL verze – japonský SuperFamicom je napájen stejnosměrným napětím.

Konektor a komunikační protokol

Nintendo používá svůj proprietární konektor, který není s ničím jiným kompatibilní:

konektor ovladače k Nintendo SNES

Vzhledem k počtu tlačítek a počtu vodičů je jasné, že tady nějaký komunikační protokol je – pomocí logického analyzátoru zjistíme, k čemu se který vodič používá, a dekódujeme protokol.

Uspořádání pinů v konektoru: [1234|567)

pin popis barva vodiče
1 + 5 V bílá
2 data clock žlutá
3 data latch oranžová
4 serial data červená
5 ?
6 ?
7 GND hnědá

Barvy odpovídají vodičům v kabelu, ne barvám na následujících obrázcích.

Piny 5 a 6 nejsou na straně ovladače zapojené, není tam ani vodič. Na straně konsole jsou pořád nahoře resp. lze na nich naměřit napětí 5 V, ale nejsou přímo spojené s pinem 1, který dodává napájení, ani nejsou propojené mezi sebou. Po zapnutí jsem na nich někdy pozoroval náhodné výkyvy, ale většinou nic (stabilně nahoře). Je možné, že jiné periferie je k něčemu používají.

Měřil jsem pomocí logického analyzátoru DSLogic Pro, spoušť (trigger) jsem nastavil tak, aby záznam začal ve chvíli, kdy první pin (napájení) jde nahoru. Díky tomu víme, jak se ovladač chová hned od začátku.

Po zapnutí jde nahoru všechno kromě data latch a země:

Logická analýza – SNES – po zapnutí konsole – napájení

Za chvíli se objeví první cyklus čtení (probíhá s frekvencí 50 Hz). Konsole dá data latch nahoru a dolů a začne běžet hodinový signál – v jednotlivých jeho cyklech ovladač nastavuje serial data podle toho, zda je příslušné tlačítko stisknuté nebo ne – zde nebylo stisknuto nic:

Logická analýza – SNES – první cyklus

Znovu jsem začal měřit hned od začátku (tzn. první cyklus) a držel Y a nahoru:

Logická analýza – SNES – první cyklus – stisknuto Y a nahoru

Tady už je druhý cyklus jiného měření, při kterém jsem držel B, X a dolů – všimněte si, že pin serial data tentokrát začíná dole, kam se dostal po skončení prvního cyklu:

Logická analýza – SNES – druhý cyklus – stisknuto B, X a dolů

Postup bychom opakovali pořád dokola, až bychom odhalili pozice všech tlačítek a provedli tak reverzní inženýrství tohoto jednoduchého protokolu. Protože ale nejsem první, kdo se tím zabýval (viz odkazy pod článkem), tak jsem zkontroloval jen pár tlačítek a převzal již hotovou tabulku.

hodinový cyklus tlačítko
1 B
2 Y
3 select
4 start
5 nahoru
6 dolů
7 doleva
8 doprava
9 A (nebo levé u myši)
10 X (nebo pravé u myši)
11 L
12 R
13
14
15
16 připojené zařízení je myš

Normálně je hodinových cyklů jen 16. Nintendo ale dělalo pro SNES i myš a ta má svoje rozšíření protokolu – pokud je při šestnáctém cyklu serial data dole, tikají hodiny dále – cykly 17-32, během nichž se čte pohyb myši a zároveň se hodnoty z cyklů 9 a 10 interpretují jako stav tlačítek myši. Myší cykly jsou údajně rychlejší, ale to jsem nezkoušel, protože myš nemám.

hodinový cyklus pohyb myši
17 Y direction (0=up, 1=down)
18 Y motion bit 6
19 Y motion bit 5
20 Y motion bit 4
21 Y motion bit 3
22 Y motion bit 2
23 Y motion bit 1
24 Y motion bit 0
25 X direction (0=left, 1=right)
26 X motion bit 6
27 X motion bit 5
28 X motion bit 4
29 X motion bit 3
30 X motion bit 2
31 X motion bit 1
32 X motion bit 0

Pak hodiny přestanou tikat, chvíli se nic neděje a pak jde zase data latch nahoru a celé se to opakuje – pořád dokola s frekvencí 50 Hz, čímž je daná maximální rychlost, jakou má smysl mačkat tlačítka, nebo přesnost myši. Jinak řečeno: 50× za vteřinu se přečtou stavy všech tlačítek, případně směr pohybu myši (2× 1 bit) a rychlost jejího pohybu (2× 7 bitů).

Nekompatibilita mezi SNES/PAL a SuperFamicom

Chtěl jsem si přikoupit další ovladač, a tak jsem objednal jeden pro SuperFamicom z Japonska – prodejce psal, že jsou kompatibilní. Ovladač ale nefungoval, tak jsem ho reklamoval. Prodejce mi poslal druhý, jenže ten taky nefungoval. Mezitím jsem zjistil, že Nintendo má „region-locked“ nejen hry, ale i periferie – a aby toho nebylo málo, nekompatibilita je jednosměrná – tzn. ovladač pro SNES/PAL bude fungovat se SuperFamicomem, ale ovladač pro SuperFamicom nebude fungovat se SNES/PAL konsolí. Takže teď mám dva ovladače pro SuperFamicom za cenu jednoho (za to si ale obchodník může sám, když tak suverénně tvrdil, že to s mojí SNES/PAL konsolí bude fungovat).

Najděte jeden rozdíl oproti předchozím obrázkům prvního cyklu:

Logická analýza – SuperFamicom – první cyklus – data (4) jsou od začátku na nule

Ovladač pro SuperFamicom má serial data dole hned od začátku, ne až po prvním cyklu. Mačkat můžete, co chcete, signály vypadají v pořádku, ale konsole je ignoruje.

Kdybych měl novější verzi s jedním čipem a nápisy „only-P“, tak bych tam mohl připájet dva odpory a ovladač by se pravděpodobně začal chovat jako PAL verze.

Takový ovladač nemám, ale naštěstí existuje i další postup – našel jsem návod na úpravu konsole, aby podporovala i SuperFamicom ovladače – stačí propojit dva a dva kontakty na každé straně (konsole podporuje dva ovladače).

Stav před úpravou:

SNES – před úpravou, aby podporoval i SuperFamicom ovladače

Po úpravě:

SNES – po úpravě, aby podporoval i SuperFamicom ovladače

Moje SNES/PAL konsole teď funguje i se SuperFamicom ovladači, což jsem vyzkoušel ve hře Super Mario World.

Průběh signálů se nezměnil.

Dnešní ceny

Oba ovladače můžete dodnes sehnat – buď na různých burzách a v bazarech nebo na eBayi. Už dnes mají historickou hodnotu a dá se očekávat, že cena časem ještě poroste.

Orientační ceny na konci roku 2016:

zboží cena poznámka
Gravis PC GamePad 200-600 Kč často v USA nebo Kanadě → drahé poštovné, klidně i 800 Kč
USB-GamePort adaptér 300-400 Kč z Číny/Malajsie, poštovné v ceně
ovladač pro SNES – originál cca 500 Kč poštovné z Německa může být do stovky
ovladač pro SNES – klon 50-100 Kč z Číny/Malajsie, poštovné v ceně

Následovníci a současnost

Stejné rozložení tlačítek jako u Gravisu nebo Nintenda můžeme vidět i u Sony PSP nebo JXD 7800B – u nich jsou i tlačítka Select a Start:

JXD 7800B a Sony PSP 2000

Základ je stejný i u ovladače DualShock pro Sony PlayStation 4, tam se dvě malá tlačítka jmenují Share a Options (u PS3 to bylo ještě Select a Start) a přibyla spousta věcí navíc (dva joysticky, touchpad, bluetooth, výstup na sluchátka…):

DualShock pro Sony PlayStation 4 – gamepad, joysticky, touchpad

Tenhle gamepad můžete používat i bez PlayStationu – dá se připojit přes USB nebo bluetooth k PC – a zahrát si třeba Super Tux Kart.

Závěr

Udělali jsme si malý výlet do počítačové resp. herní historie a zanalyzovali jsme jednoduchý hardwarový protokol. V tomto případě se sice jednalo o záležitost z roku 1990, ale některé věci se příliš nemění – posuvné registry se používají dodnes, stejně jako protokoly založené na tom, že někde tiká hodinový signál a druhá strana do toho posílá data. Kromě toho máme i známé a standardizované protokoly jako SPI, I²C nebo CAN Bus.

Odkazy a zdroje:

Témata: [počítačová historie] [počítačové hry] [hardware]

Komentáře čtenářů


Franta, 30. 12. 2016 16:06, Gravis – historie [odpovědět]

Ron Haidenger k historii GamePadu napsal:

I don't remember exactly when the Gamepad was first released, although I was the Product Manager for Advanced Gravis at that time and responsible for the Gamepad's development. The credit for the technical concept belongs to Dennis Scott-Jackson, the co-founder of Advanced Gravis along with his long-time friend Grant Russell. I still have the unopened first GamePad that came off the production line.

The SNES controller and virtually all others on the market at that time were looked at closely. These and a number of original ideas from the Gravis development team were presented to a product concept firm in North Vancouver, who refined the controllers shell into its final shape. The "GamePad" as it was originally spelled, was the first control pad for the PC and coined the name Gamepad which is synonymous with control pads today.

Following the PC version of the GamePad, we mated it up with our Macintosh joystick microprosessor control box and and developed the Mac Version of the GamePad -- the world's first fully programmable GamePad.

Přidat komentář

reagujete na jiný komentář (zrušit)
jméno nebo přezdívka
název příspěvku
webová stránka, blog
e-mailová adresa
nápověda: možnosti formátování
ochrana proti spamu a špatným trollům

Náhled komentáře