1 Ostatnio edytowany przez pajero (2019-02-06 20:34:30)

Poniższy tekst jest pochodną szukania rozwiązań dla nowego QMEGa.
Miałem je już dawno zrobione, ale czekały na finał testów OS.



Standardowe złącze joysticka w Atari ma tylko jeden przycisk Fire. Niby starcza, ale do bardziej rozbudowanych gier już cztery przyciski to podstawa.

Uwaga - przedstawiony pad SNESa to tylko przykład wykorzystania idei !!!
Jak najbardziej można adaptować joysticki wieloFIREowe!!!

Na Grzysoniadzie 2010 pokazano Nunchuck - bezprzewodowy pad z konsoli WII. Tu macie inne rozwiązanie. Nic nie stoi na przeszkodzie, by były kompatybilne w obsłudze przez Atari.

Moje zamierzenia określiłem jako:
1) by dało się uruchomić z jak największą ilością starych gier
2) by programowanie obsługi pada w nowych grach nie nastręczała problemu
3) przyciski PADa winny obsługiwać (emulować) klawisze konsoli.
4) koszt adaptacji i jej komplikacja nie powinna przekroczyć zdrowy rozsądek

A zrealizowałem.... wszystkie.
Punkt 4 -  koszt wyniósł 25 groszy (nie licząc kabla typu joystick i ceny samego Pada).

Poniżej pokazuje pad SNESa. Ale adaptować można każdy inny..... także joystick !!!!!!!!!

http://ftp.pigwa.net/stuff/projects/AKI/padSnes/PadSnesSwitch.jpg


Potrzebne elementy:
1.kabel 9 żyłowy zakończony wtyczką żeńską DB9 (np. od zepsutego joysticka)
2.diody 1N4148 - 4szt
3.oporniki 0.25-0.6W,  po 2szt : 160kOm, 82kOm, 39kOm, 4.7-5.6kOm
4.lutownica, cyna, trochę kabelka.....

Zasada działania
Dodatkowe przyciski skoków są połączone przez diody do odpowiednich kierunków joysticka. Dodatkowe przyciski START-SELECT-OPTION oraz FIRE 2-4 realizowane są przez wejścia Paddle.

Schemat ukazuje prostotę połączenia. Wartość R1 ma sporą tolerancje (4,7K do 10K). To wartość kalibracyjna, ewentualny dobór nie powinien mieć miejsca. Jest duży zapas na tolerancje.

http://ftp.pigwa.net/stuff/projects/AKI/padSnes/PadSnesElectro.jpg

Testowanie poprawności połączeń elektrycznych w PADzie.
Włączamy QMEG-OS 5.xx, w Menu opcję "JOY" - klawisz J - na ON.
W Basicu uruchamiamy taką linię:
10 ? PEEK(53279): G.10
Wciskamy na klawiaturze Atari i w Pad'zie przyciski START-SELECT-OPTION (osobno albo w kombinacjach).
Powinniśmy otrzymywać dwie identyczne wartości z przedziału 0-7 nie zależnie gdzie wciskamy klawisze.
Jeśli są inne - sprawdźcie połączenia. Ewentualnie należy zmienić wartość oporników R1, co byłoby jednak bardzo dziwne. Pomoże Wam w tym inna linia Basicu:
10 ? PEEK(53279), PADDLE(0):G.10
Albo program z załącznika: KeyTST.com.

Jak to działa
Wejście Paddle podaje wartości 1-228. Możemy wykorzystać bity 6-1, ale w praktyce bity 6-4. Mniejsze wartości bitów 3-1 dają przekłamania raz - z powodu niedokładności samego odczytu przez Pokey'a, a drugie - z samej tolerancji wykonania podłączanych oporników. Czyli na jedno Paddle mamy tylko trzy stany o wartościach 0 (wciśnięte) lub 1 (niewciśnięte).

Obsługa w nowych grach.
Jako, że przy dwóch graczach obydwóch mają te same przyciski konsoli START-SELECT-OPTION musimy testować obydwa przypadki....

; for MADS,

PADDL1      = $0271
PADDL3      = $0273
PTRIG4      = $0280
PTRIG6      = $0282
L03EF_Swap  = $03EF  ;swapowany dysk + opcje QMEGa
CONSOL      = $D01F
POT0        = $D200
POTGO       = $D20B


;  ============= zrobić pod VBI albo sprawdzać co ramkę 
;   poniższy kod pochodzi z QMEGa 5.xx

          lda #8 
          sta CONSOL 

          BIT L03EF_Swap  ;ustawienie bitu7 to włączenie opcji JOY z menu QMEGa
          bpl sysZ

          ldx #2
lop1      lda POT0,x   
          bmi noPd1      ;bit7=1 Pad niepodłączony
          lsr            ;a=0xxx----
          lsr
          lsr
          lsr            ;a=00000xxx
          eor #8+4+2+1   ;a=00001xxx były bit 7 czyli obecnie xxxxNxxx zawsze jako 1  
          sta PTRIG4,x   ;fire paddle4 i 6 (normalnie kopia fire paddle0 i 2)
                         ;a teraz wskazują stan bit0 = START,  bit1 = SELECT,  bit2 = OPTION
                         ;bit ustawiony - wciśnięte
          ora PTRIG6     ;detekcja obydwu graczy
          sta CONSOL     ;ustawiam klawisze konsoli obydwu graczy 
noPd1     dex
          dex
          bpl lop1
sysZ      sta POTGO   ;należy skasować wejścia PADDLE przed następnym odczytem 



;   niżej to tylko propozycja...
;   =============detekcja wciśnięcia FIRE 2-4 dla obydwu graczy

          lda PADDL1  
          bmi noPd2     ;bit7=1 Pad niepodłączony
          and #01110000 ;pod bitami 6-4 znajdują się stany przycisków dla gracza 0
                        ;bit skasowany - Fire wciśnięte
                        ;bit4 = Fire 2,  bit5 = Fire 3,  bit6 = Fire 4

noPd2     lda PADDL3
          bmi noPd3     ;bit7=1 Pad niepodłączony
          and #01110000 ;pod bitami 6-4 znajdują się stany przycisków dla gracza 1
                        ;bit skasowany - Fire wciśnięte
                        ;bit4 = Fire 2,  bit5 = Fire 3,  bit6 = Fire 4
noPd3

A co ze starymi grami.
Zakładając, że gra nie zmieni standardowego przerwania VBI na swoje, to obsługę detekcji Paddle0 i 2  przejmie np. QMEG-OS 5.xx. Czyli sprawdzenie, czy wciśnięto klawisze konsoli.


Powodzenia i przyjemności w giercowaniu !!!!

PAJERO / MADTEAM

Post's attachments

KeyTST.atr 179.64 kb, liczba pobrań: 6 (od 2010-05-18) 

Tylko zalogowani mogą pobierać załączniki.

2

To jeszcze do kompletu potrzebujemy Qmeg 5.xx

3

Dziś (chyba) wysyłam OS do Truba. A na weekend daje go na AA (jeśli Trub nie oprotestuje współpracy z SDX).

4

pajero, tam jest cd4017 w srodku - potrzebujesz 2 lub 3 linii zeby odczytac calego pada bez zagladania do jego srodka
mozna po prostu podlaczyc go do portu joya (przez przejsciowke zawierajaca tylko druty) i prosta procka w assemblerze zalatwi odczyt

przechodze na tumiwisizm

5 Ostatnio edytowany przez pajero (2010-05-18 16:08:11)

....i nie jest ni jak do wykorzystania w innych PADach czy joystickach wieloFIREowych (zobacz tytuł wątku - I INNE).

Tu chodzi o zasadę, a by do każdego PADa NIE PISAĆ inną prockę (OS nie jest z gumy).

Tak jest uniwersalnie, wywalasz bebechy (jeśli trzeba) - skręcasz kabelki z opornikami (ewentualnie poślinisz by dobrze przewodziło) i działa. ZERO NOWEGO KODU tudzież Gali/Atmeli i God wie czego.

6

ojtam uj tam ;)
pady do snesa i nesa by dzialaly
nowe kosztuja pare $ wprost z hong-kongu ;)

przechodze na tumiwisizm

7 Ostatnio edytowany przez pajero (2010-05-18 16:30:46)

Dobra - mam QUICKSHOTa i nieobsadzone FIRE.
Czy ze względu na debilną prostotę rozwiązania nie warto dodać obsługi START czy SELECT?
Się nie muszę wychylać już z fotela do atarki ;)

A pada od SNESa dostaniesz za 5-10zł na giełdzie pod chmurką, nówki na allegro są po 25zł.


ALE jest jeszcze coś = nie do PRZEBICIA - przyciski SKOKÓW.
Jest n-gier, które wymagają idealnego wychylania joya by zrobić SKOK (góra + w bok).
Granie jest o wiele łatwiejsze na takim padzie!