Larek, bardzo dziękuję za ten obszerny materiał o interfejsie, fajnie to wyszło, często ludzie pytają jak coś działa, a tutaj wszystko świetnie widać. Dziękuję.
W trakcie filmu pojawiło się kilka wątpliwości i może drobnych niedopowiedzeń, więc dodam jeszcze kilka słów od siebie.
Obudową interfejsu jest koszulka termokurczliwa celowo. Chodziło o to, żeby wtyczka mieściła się bez problemu w Atari XE, Atari ST, czy Amidze 600. W pozostałych kompach jest sporo miejsca, ale w tych wymienionych modelach nie zmieści się żadna obudowa. Gniazdo pada SNES jest na osobnym kabelku, ponieważ można zamiast tego kabelka podłączyć inne przejściówki, pozwalające na podłączenie padów NES, czy innych standardów klonów NES na złączach DB9 czy DB15 (również Famicom). Pokazany w filmie kabelek i gniazdo jest identyczne jak gniazdo pada w konsoli SNES i jest to zamiennik pada do takiej właśnie konsoli. Opis przygotowania innych przejściówek jest w poście #19 w tym wątku.
Larek, w swoim programie testującym joystick masz wszystko w porządku. Jeśli chodzi o wykluczające się kierunki, to jest tak zrobione w interfejsie celowo. Nie da się prawdziwego joya wychylić naraz w lewo i prawo, czy też w górę i w dół. W padzie krzyżaka też nie da się tak wcisnąć, bo fizycznie jest tak skonstruowany, że pod spodem ma wypustek powodujący, że działa jak kołyska. Uznałem, że trzeba zapobiec niedozwolonym kierunkom, dlatego interfejs ma zaprogramowane priorytety. Kierunek krzyżaka ma zawsze najwyższy priorytet nad pozostałymi przyciskami. Czyli np. wciśnięcie przycisku skoku na ukos w lewo i jednoczesne wciśnięcie krzyżaka w prawo spowoduje skok w prawo a nie w lewo. Podobnie wciśnięcie przycisku z przypisaną funkcją w górę i jednoczesne wciśnięcie w dół spowoduje wyższy priorytet kierunku w dół. W trybie Decathlon (czy może teraz trybie Laura:-)) przycisk powodujący machanie lewo-prawo ma niższy priorytet niż krzyżak, więc wciśnięcie krzyżaka w lewo lub prawo powoduje zatrzymanie automatycznego machania i wciśnięcie tylko wybranego kierunku. Równorzędne przyciski (np. L i R oraz Start i Select) - blokują się nawzajem, tzn. wciśnięcie na ukos w lewo i na ukos w prawo jednocześnie spowoduje zablokowanie kierunków w boki i zrobi nam się tylko kierunek w górę.
W Preliminary Monty nie wpadłem na używanie trybu pierwszego do ułatwienia wchodzenia na drabinki:-) To dowodzi uniwersalności i możliwości własnej inwencji użytkowników w wykorzystaniu trybów - i bardzo mnie to cieszy. W zasadzie do tej gry projektowałem tryb drugi, gdzie mamy skoki na ukos z fire. Ten tryb z fire służył właśnie do tej gry, oraz dobrymi przykładami jest jeszcze wspomniana Cavernia, czy też Pitfall 1 i 2. Jest więcej takich gier, gdzie skacze się na fire a nie w górę. Ogólnie skoki na ukos w obu tych trybach przede wszystkim miały ułatwić te wszystkie pomysły wrednych programistów, gdzie trzeba ustawić postać co do piksela i idealnie wykonać skok na kolejną platformę:-)
Co do powielenia przycisków Start i Select z przyciskami L i R - jest tak dlatego, że interfejs działa też z padami NES wykorzystując te same tryby. Pad NES nie ma przycisków L i R, ma o cztery przyciski mniej niż SNES. W padzie SNES w zasadzie nie wykorzystuje się w grze przycisków Start i Select, jest to nawet niewygodne. Natomiast w padzie NES nie mamy dodatkowych przycisków L i R, więc Start i Select ratuje nam życie jak musimy skoczyć na ukos:-)
Ostatnia rzecz dotycząca trybów jaką chcę wyjaśnić dotyczy drugiego fire na pinie paddle. Otóż oczywiście na Atari nie ma chyba gier, które to wykorzystują, można pokusić się o implementację, choć nie spodziewam się, że nagle wszyscy zapragną taki drugi fire wykorzystywać, skoro przez wszystkie lata nigdy to nie było praktykowane na Atari. Tryb ten powstał w sumie pod Amigę. Tam jest trochę gier, które wykorzystują drugi fira właśnie na tym pinie. Były też produkowane joysticki z drugim fire niezależnym od pierwszego właśnie z przeznaczeniem dla Amigi. Dziwię się, że rozwiązanie takie nie zostało standardem we wszystkich komputerach, ponieważ oprogramowanie tego jest bardzo łatwe jak widać na testowym programie do paddle pokazanym w filmie.
Jeszcze co do samej obsługi urządzenia: przy wyborze trybów zmieniamy je krzyżakiem prawo-lewo lub alternatywnie góra-dół - wszystko jedno, funkcje te są tutaj powielone.
Przy podłączeniu interfejsu migają szybko diody - to takie powitanie na start i nic nie oznacza, natomiast zaraz po tym mruga dioda zielona i czerwona, ilość tych mrugnięć oznacza wersję firmware. Obecnie we wszystkich interfejsach jakie poszły w świat jest wersja firmware 1.1 - po jednym mrugnięciu każdej diody.
Nie planowałem aktualizacji firmware, niemniej jednak jest ona możliwa. W mikrokontrolerze jest jeszcze trochę miejsca, więc implementacja kolejnych trybów jest fizycznie możliwa. Jednak należy zwrócić uwagę, że tryby zostały dobrane uniwersalnie. Zrobienie jakiegoś trybu pod konkretną grę nie jest celowe, można to zrobić jeśli wymyślony tryb byłby znów uniwersalny i przydatny. Trybów nie może też być zbyt wiele, dlatego ograniczyłem je do czterech. Taką ilość łatwo zapamiętać i wygodnie używać. W świetle tego co pokazał na filmie Larek, faktycznie przydały by się jeszcze skosy w dół. Pytanie jednak jak taki kompletny tryb miał by wyglądać, żeby miał wszystko co potrzeba, żeby był wygodny, intuicyjny, logiczny, uniwersalny, możliwy do zapamiętania itd? Gdyby ktoś miał chęć wymyślić taki tryb, to proszę bardzo, jeśli będzie to dobrze przemyślane, to mogę uwzględnić to w firmware i zrobić taką nową wersję.
W razie nowej wersji firmware aktualizacja oprogramowania w istniejących już interfejsach jest również możliwa.