Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Adapter Game Port - Pegasus

phanick 22 Dec 2021 01:38 2112 4
  • Adapter Game Port - Pegasus
    Parę dni temu jedna z osób zażyczyła sobie, abym "wyczarował" jej joystick do Pegasusa w stylu drążka (wolanta). Tego typu kontrolery popularne były np. wśród konsol typu Atari czy Commodore, natomiast do Pegasusów nigdy takiego czegoś moje oczy nie widziały.
    Adapter Game Port - Pegasus Adapter Game Port - Pegasus

    Konieczne było więc znalezienie jakiegoś gotowego joysticka i dopasowanie jego interfejsu komunikacji do konsoli. Joypady z powyższych zdjęć mają jedyną zaletę - są banalne w komunikacji: w środku mamy jedynie pola stykowe dla każdego z kierunków i przyciski, a sygnały dla nich są wyprowadzone w osobnych żyłach, każda jest zwierana do masy przy wciśnięciu.
    Minusem jest dość słaba precyzja działania (po przechyleniu dźwigni poza pewien kąt, blaszka zwiera) oraz wbrew pozorom cena. Chyba ludziom kojarzą się one z konsolami dawnej epoki bo nie znalazłem na olx czy allegro nic w rozsądnej cenie. No i tylko jeden przycisk, a do Pegasusa potrzeba czterech (A, B, Select, Start).

    Innym pomysłem był zakup współczesnego joypada na USB. Tutaj jednak wadą byłaby trudność w komunikacji z nim (konieczność obsługi USB Host). Można byłoby się co prawda podłączyć jakoś do płytki wewnątrz, ale wymagałoby to dogłębnej analizy wnętrza, a tego chciałem uniknąć.

    Złotym środkiem okazał się zakup kontrolera na leciwy Game Port (DB15 pin), podłączany niegdyś do kart dźwiękowych. Protokół komunikacji jest banalnie prosty, a spora popularność i niskie ceny na rynku wtórnym (20-50 zł) sprawiły, że w jeden dzień udało mi się zorganizować dwa takie joypady.
    Adapter Game Port - Pegasus

    Specyfikacja GamePortu pozwala na przesłanie cyfrowej informacji o stanie czterech przycisków oraz analogowej o stanie czterech suwaków (czyli X1, Y1, X2, Y2). Standard określa, że wychyleniu suwaka odpowiada liniowa zmiana rezystancji 0-100 kΩ.
    Adapter Game Port - Pegasus

    Pamiętacie za czasów Windows 95 jak w panelu sterowania kalibrowało się taki joystick? Chodziło po prostu o to, aby system wiedział, jaka rezystancja odpowiada w przypadku neutralnego położenia dźwigni (na środku) oraz jaki jest zakres zmian dla skrajnych wychyleń.
    Adapter Game Port - Pegasus



    Projekt adaptera
    Podłączenie takiego joysticka do Pegasusa wprost jest niemożliwe. W Pegasusie stan każdego z przycisków jest po pierwsze cyfrowy, a po drugie - przesyłany szeregowo. W Gamepadzie mamy cyfrę + analog i do tego równolegle.
    Pomyślałem, że stworzę więc odpowiedni adapter w oparciu o popularny mikrokontroler Atmega 88 (mam trochę tego, trzeba było zrobić małe zapasy, bo ceny scalaków na aliexpres zaczęły od paru miesięcy szaleć niczym ceny margaryny w biedronce).

    Atmega 88 jest bardzo podobna do Atmegi 8, ma nawet trochę więcej funkcji (np. przerwania na każdym z pinów) no i u braci z za wschodu była tańsza niż ósemka. Jak widać popyt reguluje podaż.
    Adapter Game Port - Pegasus

    Odczyt rezystancji można wykonać na kilka sposobów. W PC rezystancja ta ładuje kondensator (na karcie dźwiękowej), który jest podłączony do przerzutnika. Oprogramowanie mierzy czas od pełnego rozładowania, do czasu gdy przerzutnik zmieni stan, i na tej podstawie aproksymuje wychylenie.

    W moim przypadku prościej było dodać rezystor 100 kΩ do masy tworząc dzielnik, a wartość napięcia (2.5 V - 5 V) odczytać za pomocą przetwornika ADC. W adapterze przyda się też jeden przycisk i wyświetlacz (o tym za chwilę). No i oczywiście złącza do podłączenia do konsoli i do joypada. Całość postanowiłem zrealizować w postaci dwóch płytek połączonych taśmą, przy czym na tej mniejszej jest jedynie samo gniazdo DB15)
    Adapter Game Port - Pegasus Adapter Game Port - Pegasus Adapter Game Port - Pegasus Adapter Game Port - Pegasus Adapter Game Port - Pegasus

    Kalibracja
    Niezbędna jest oczywiście kalibracja joysticka, a ściślej - chodzi o ustalenie zakresu, od którego momentu wychylenie dźwigni ma być uważane za "wciśnięcie" kierunku. Przyda się też ustawianie, który z przycisków joypada odpowiada Pegasusowym przyciskom A/B/Select/Start. Powyższy tryb konfiguracyjny włączamy wciskając przycisk CONF. Na wyświetlaczu pojawią się kolejny napisy:
    • LE - należy wychylić dźwignię w LEWO do żądanej pozycji i trzymając ją w niej, wcisnąć przycisk CONF
    • PR, GO, DO - tak samo, tylko z dźwignią w prawo/górę/dół
    • B/A/SE/ST - należy wcisnąć na joypadzie przycisk, który będzie przez Pegasusa interpretowany za odpowiedni

    Wszystkie te informacje są przechowywane w pamięci EPROM w Atmedze, więc po wyłączeniu/włączeniu nie ma konieczności rekalibracji, chyba że chcemy zmienić przypisanie przycisków, albo podłączyć inny joystick).

    No cóż, od siebie tylko dodam, że rozgrywka takim joystickem (przynajmniej w platformówki) to katorga, może do jakichś strzelanek czy bijatyk będzie odpowiedni. No ale o gustach się nie dyskutuje.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    phanick
    Level 28  
    Offline 
    phanick wrote 2428 posts with rating 2501, helped 54 times. Live in city Warszawa. Been with us since 2007 year.
  • #2
    pixel7
    Level 22  
    Projekt ciekawy - sam pamiętam podłączone na krótko potencjometry pod PC.
    Można dodać do oprogramowania swego rodzaju "autofire", przy maksymalnym wychyleniu drążka jest szybkie naciskanie w danym kierunku (przerywacz), lub ogólnie dodać inne "combosy".
  • #3
    unicompjp
    Level 8  
    phanick wrote:
    No cóż, od siebie tylko dodam, że rozgrywka takim joystickem (przynajmniej w platformówki) to katorga, może do jakichś strzelanek czy bijatyk będzie odpowiedni.


    Na Pegasusa / NESa raczej w większość gier będzie się gorzej grało takim joystickiem, ponieważ fabrycznie do tych konsol dokładane były gamepady i autorzy gier na tą konsolę pod nie optymalizowali sterowanie, a gamepady są jednak nieco szybsze od klasycznego joysticka z drążkiem.
    Projektuję nowy joystick kompatybilny z wieloma retro komputerami i konsolami (i pod ich emulatory z USB), ale właśnie z tego powodu odpuściłem sobie tą platformę.
    Adapter Game Port - Pegasus
    Takie joy-e najlepiej sprawują się w grach na Atari, Amigę czy Commodore C64. Nie, nie ma nic lepszego do popykania w takiego Super Frog czy Giana Sisters.
  • #4
    mdziewie
    Level 19  
    I pomyśleć, że taka przejściówka ma więcej mocy obliczeniowej, niż ten Pegasus😉
    Fajna robota. Takie projekty lubię: nietrywialne, ale za to bez sensu😜
    Kolega wspomniał, że komunikacja z padem w Pegasusie jest szeregowa - czy można prosić o jakieś konkrety? Akurat chodzi mi po głowie wyprodukowanie dziecioodpornych padów.