La guida completa e definitiva al KEYHACK

Guide, richieste e tutto ciò che c'è da sapere sui controlli del cab
Avatar utente
MasterKOF
Nostalgico
Nostalgico
Messaggi: 324
Iscritto il: 13/01/2012, 10:10
Città: Senigallia

La guida completa e definitiva al KEYHACK

Messaggio da MasterKOF »

A differenza dei joypad la tastiera (se con attacco PS/2) non necessita di
alcun driver e può funzionare indipendentemente sotto qualunque sistema
operativo senza alcun problema. Putroppo nonostante le tastiere abbiano oltre
100 tasti con questa tecnica possiamo utilizzarne solo 25 – 30 senza che
problemi di Ghosting e Blocking rendano i controlli inutilizzabili. Quindi al massimo potremmo crearci un hack per 2 giocatori e non di piu!

Funzionamento della tastiera

Una normalissima tastiera Italiana comprende 105 tasti e alla pressione di ognuno, un controller invia un segnale diverso al pc alla pressione, ed uno al rilascio.
Essendo i tasti 105, non aspettatevi di trovare 106 contatti^^ si impazzirebbe. Le tastiere fortunatamente utilizzano un sistema chiamato a matrice, che riduce di molto la quantità di fili necessari.

Immagine

A prima vista la figura in alto, potrebbe sembrare un sistema molto efficace, ma cosi facendo abbiamo bisogno di 1 comune e di 12 input diversi: TOT 13 fili
Quindi possiamo dire che, il numero dei pulsanti è uguale al numero dei fili + 1

Immagine

La figura qui sopra è un tipico esempio di matrice. Con tre colonne A,B,C e 4 righe 1,2,3,4 possiamo ottenere sempre 12 pulsanti.
Quindi sommando i diversi fili, ce ne serviranno soltanto 7 anzi che i 13 di prima.

Come funziona la matrice?

La matrice funziona in maniera molto semplice. Ciclicamente un controller invia un segnale alle colonne (prima A poi B poi C), contemporaneamente sulle righe viene "ascoltato" se arriva qualcosa. Se ad esempio mentre è attiva la colonna “A” il controller rileva
il segnale sulla riga 3 questo vorrà dire che inequivocabilmente è stato premuto il
tasto 7.
Questo espediente permette di risparmiare un notevole quantitativo di fili (nel nostro
caso 7 anziché 13), infatti il prodotto tra numero di linee e numero di colonne fornisce
quanti tasti la nostra matrice può gestire.
Tutto questo ha però dei limiti, chiamati Ghosting e Blocking!!

Ghosting e Blocking

Allora, il ghosting è il fenomeno per cui alla pressione di 3 tasti disposti in punti critici della matrice la tastiera “crede” che in realtà siano premuti 4 tasti.
Esempio

Immagine

In figura sono stati premuti ad esempio i tasti 1, 3 e 6. La linea verde rappresenta il percorso: si vede che la pressione di questa combinazione di tasti fa si che
quando il controller manda il segnale di check alla colonna A lo ritrovi sia sulla riga 1 che sulla riga 2; quindi lo interpreta come pressione contemporanea dei tasti 1 e 4.
Questo è un esempio di Ghosting!
in linea generale possiamo dire che:
“Ogni qualvolta vengono premuti i tasti corrispondenti ai 3 lati di un rettangolo sulla matrice viene generato il ghosting sul tasto corrispondente al quarto lato”.
Il blocking invece è una condizione di errore che genera il controller per prevenire il ghosting: vengono infatti inabilitati alcuni tasti; nel nostro caso se premessimo 1, 3 e 6 contemporaneamente il controller restituirebbe al pc un messaggio di errore e quest'ultimo non riconoscerebbe la pressione di nessun tasto. Quindi cosa da tenere bene impressa a mente è che in nessun caso dobbiamo generare situazioni di ghosting o blocking!

Creazione delle input necessarie

Prendete una "bella" tastiera, smontatela del tutto e tenete soltanto la PCB interna

Immagine

Come potete vedere, io ho numerato i primi 18 conttatti da 1 a 18 e i restanti attribuendo le lettere da A a H
Fatto ciò, mi sono creato una bella tabella per fare una mappatura perfetta dei contatti.
In questo ci vengono in aiuto alcuni semplici programmi Ghost Key e KeyScan, che ci permettono di effettuare una mappatura completa della tastiera. Vi ci serve solo un po' di tempo, ma alla fine il risultato è piu o meno come questo

Immagine

Notate come anche se la mia tastiera era da 105 tasti, la mappatura ne ha sviluppati 144, anche se alla fine si possono notare che ci sono molti tasti che neanche sapevate di avere (apertura Windows media player, Outlook e cavolate simili)

A questo punto c'è da scegliere quali tasti utilizzare nel nostro controller stando bene
attenti a non causare il ghosting; in prima istanza possiamo dire che se io uso un tasto
per ogni riga posso stare certo che non avrò mai ghosting.. quindi sono partito da
questa considerazione ed ho colorato le caselle che avrei avuto intenzione di usare

Immagine

Molto bene, in questo modo siamo arrivati a 16 tasti disponibili; peccato che a me ne
servissero 25! (6 tasti per giocatore + 2 manopole direzionali da 4 contatti l'una + i
due contatti delle gettoniere + i due pulsanti per selezionare 1 o 2 player + il bottone
per far avviare il gioco selezionato nel menù) quindi son dovuto scendere a
compromessi:
– innanzitutto nei joystick c'è da considerare che tasti come “destra” e “sinistra” o
“su” e “giu” non possono fisicamente essere premuti contemporaneamente
– poi c'è da considerare che alcuni tasti, tipo il contatto della gettoniera per
aumentare i credits, è decisamente improbabile che vengano premuti in
contemporanea ad altri tasti.
Ho applicato questi concetti ed ho colorato in rosa le caselle da dare ai
comandi che si autoescludono: ad esempio F3 e D potrebbero essere affibiati ai
pulsanti DX e SX mentre H e M potrebbero essere UP e DOWN nel joystick 1.
Ho inoltre spostato un paio di caselle rosse che erano capitate su incroci che non
fornivano nulla.
In ogni caso, potete facilmente apprezzare che nel peggiore dei casi sarebbe premuto
al più un tasto per ogni riga quindi stiamo certi che non si possa creare ghosting.

Immagine

Ok il lavoro è quasi completato; ci mancano solo altri 5 tasti.
Purtroppo la mappa non ci da molte possibilità quindi i 5 tasti che assegneremo ora
avranno qualche possibilità di avere ghosting. Per fortuna ormai tutti e 12 i tasti di
gioco ed entrambe le manopole sono state mappate quindi quelli che rimangono sono
tasti di servizio che non verranno mai premuti contemporaneamente ad altri.

Immagine

Potete apprezzare l'assegnazione completa dei tasti: ho colorato di verde le
caselle che possono dare problemi infatti a titolo di esempio fo notare che Z genera
ghosting se premuto assieme a Q e a un tasto a scelta tra M INVIO o la virgola.
Stessa cosa pure per F1, 4, U, O.
però questo non rappresenta un problema, l'importante è che i tasti di gioco non diano
noie e con la nostra mappa possiamo stare tranquilli di poter giocare anche un doppio a
Street Fighter senza che i tasti che diano ghosting!

Spero che questo piccolo tutor serva a qualche pazzo che si vuole cimentare come me in quest'impresa!!
Ricordatevi una cosa che ho scoperto solo dopo. Ogni tastiera ha una propria matrice, quindi la tabella è solo un esempio. Il sistema anti-ghosting va bene, ma i risultati degli incroci non prendeteli per buoni!!!


Costruiamoci il Controller

Questa è forse la parte un po' piu pratica nella quale dovrete eseguire qualche saldatura (a me molto ostiche); in sostanza si tratta di collegare i contatti della PCB della tastiera ad una normalissima morsettiera. Di modi per farlo c'è ne sono a valanga, piu o meno ordinati. Io personalmente ho realizzato il mio controller come in figura (la foto non è la mia, ma è quella da cui presi spunto) in modo da ottenere una unica base e poter star sicuro che bruschi movimenti non potessero staccare qualche saldatura; (che mi è successo un mare di volte)

Immagine

Collegamenti ai tasti di gioco

Questa è la fase che richiede maggiore attenzione ma soprattutto maggiore ordine; è facile sbagliare un filo e toppare tutto il cablaggio. In pratica i microswitch non sono altro che dei deviatori ;

Immagine

dei tre contatti disponibili il primo è comune, il secondo è normalmente aperto mentre il terzo è normalmente chiuso, noi useremo quindi i contatti 1 e 2 cablati in modo che alla pressione del tasto vengano messi in corto la riga e la colonna da
noi prescelti. Prima di iniziare i collegamenti occorre decidere dove disporremo il nostro controller, dopodiché dovremo procurarci un filo colorato per ogni riga e colonna.
Una volta posizionato il controller e fatti arrivare i fili alla plancia dovrete iniziare a collegare i fili ai rispettivi interruttori; praticamente tutti i fili dovranno andare ad almeno un paio di switch, ad esempio dalla tabella in figura si vede chiaramente che il filo della colonna A dovrà andare a due pulsanti di gioco e a due di servizio, il filo della colonna B invece andrà a due pulsanti di gioco e a uno switch del joystick, ecc...

Note personali

Il Keyhack è senza ombra di dubbio una operazione che richiede un po' di attenzione, ma non è di difficoltà estrema, anzi! E' un ottimo espediente per fare anche un po' di pratica con le saldature e poi, come penso sempre, quando un lavoro te lo fai da te...è meglio!!
Ultima modifica di MasterKOF il 10/05/2012, 17:15, modificato 1 volta in totale.
Black Tiger : 832.200 / The King Of Fighters 2002 : 810.500
Visit my new blog
Avatar utente
PaTrYcK
Moderatore
Moderatore
Messaggi: 11584
Iscritto il: 12/10/2009, 20:35
Città: Cagliari
Grazie Ricevuti: 26 volte

Re: La guida completa e definitiva al KEYHACK

Messaggio da PaTrYcK »

MasterKOF complimenti!
Karma +1 x te <-clap->
Avatar utente
MasterKOF
Nostalgico
Nostalgico
Messaggi: 324
Iscritto il: 13/01/2012, 10:10
Città: Senigallia

Re: La guida completa e definitiva al KEYHACK

Messaggio da MasterKOF »

PaTrYcK ha scritto:MasterKOF complimenti!
Karma +1 x te <-clap->
8-)
Black Tiger : 832.200 / The King Of Fighters 2002 : 810.500
Visit my new blog
Avatar utente
Puccilillo
Newbie
Newbie
Messaggi: 91
Iscritto il: 20/03/2012, 1:55
Città: Ancona

Re: La guida completa e definitiva al KEYHACK

Messaggio da Puccilillo »

Fresca fresca sembra fatta apposta per me... ora vado in cantina a finire il lavoro :D

+1 a te, sisi !!!
Puccilillo ...since 1998
Progetto cab a parete Completato <-gamer-> <-gamers3-> <-gogogo-> <-w00t-anim-> <-clap-> :rofl2: <-tease-> :P <-rotfl-> <-yahoo-> <-on_lol-> <-lol-> \:D/ <-gogogo-> <-ciao-> <-on_wink->
Avatar utente
Kernel
God of Arcade
God of Arcade
Messaggi: 6794
Iscritto il: 25/07/2005, 10:54
Grazie Inviati: 2 volte
Grazie Ricevuti: 2 volte

Re: La guida completa e definitiva al KEYHACK

Messaggio da Kernel »

Ho pinnato il thread <-happy->
Avatar utente
MasterKOF
Nostalgico
Nostalgico
Messaggi: 324
Iscritto il: 13/01/2012, 10:10
Città: Senigallia

Re: La guida completa e definitiva al KEYHACK

Messaggio da MasterKOF »

Kernel ha scritto:Ho pinnato il thread <-happy->
Thank you!! Oggi aggiungo anche la seconda parte, quella relativa al cablaggio!!
Black Tiger : 832.200 / The King Of Fighters 2002 : 810.500
Visit my new blog
Avatar utente
r77

Silver Medal Donatore
God of Arcade
God of Arcade
Messaggi: 2817
Iscritto il: 08/07/2009, 10:37
Medaglie: 2
Città: Verona
Grazie Ricevuti: 2 volte

Re: La guida completa e definitiva al KEYHACK

Messaggio da r77 »

Bravo MasterKOF <-thumbup->
CLRMAMEPRO guida passo a passo viewtopic.php?f=27&t=11373
Avatar utente
inuyaksa
Meccanico del Forum
Meccanico del Forum
Messaggi: 838
Iscritto il: 24/09/2008, 11:57
Città: Milan
Località: Milano
Grazie Inviati: 4 volte
Grazie Ricevuti: 1 volta
Contatta:

Re: La guida completa e definitiva al KEYHACK

Messaggio da inuyaksa »

Ottimo lavoro, complimenti!
- - -
Avatar utente
eldiau

Donatore
Cab-maniaco
Cab-maniaco
Messaggi: 1021
Iscritto il: 20/01/2012, 9:57
Medaglie: 1
Città: Torino
Grazie Ricevuti: 2 volte

Re: La guida completa e definitiva al KEYHACK

Messaggio da eldiau »

Bello, grazie, dovrebbe passare nel wiki
Progetti:
*BarettoCab80 viewtopic.php?t=8756
*Mariocab
*TrashSticks

Guide:
*Guida a Linux nel Cab: http://www.arcadeitalia.net/viewtopic.php?t=9608
*Effetti GLSL in SDLMAME: http://www.arcadeitalia.net/viewtopic.php?t=9494
*Versioni di MAME "importanti": http://www.arcadeitalia.net/viewtopic.php?t=12209
Avatar utente
MasterKOF
Nostalgico
Nostalgico
Messaggi: 324
Iscritto il: 13/01/2012, 10:10
Città: Senigallia

Re: La guida completa e definitiva al KEYHACK

Messaggio da MasterKOF »

mi fate piangere.... :on_cry: :on_cry: :on_cry:

cmq, oggi finisco con la seconda parte, poi ci potete fare quello che volete :love:
Black Tiger : 832.200 / The King Of Fighters 2002 : 810.500
Visit my new blog
Rispondi

Torna a “Controlli (joystick, pulsanti, trackball, spinner, volanti, ecc...)”