libera interpretazione della guida al keyboard hack di emuadvice


Per chi è questa guida?


Per chi vuole autocostruirsi un joypad arcade utilizzando una vecchia tastiera, Per rivivere le emozioni degli arcade a casa come al bar!

Questa è una guida passo passo per studiare, utilizzare e configurare correttamente i circuiti di una vecchia tastiera per costruire un joypad arcade.


Materiali:


  • Una tastiera da buttare, anche senza qualche tasto, ma con la parte elettonica funzionante;

  • Se la tastiera è vecchia ci sarà bisongo di un adattatore DIN-ps/2;

  • Un cacciavite, indispensabile per uno smanettone informatico (da tenere sempre vicino al mouse!);

  • un tester o qualcosa che gli somigli per misurare resistenze, o meglio verificare la chiusura di circuiti (esempio: batteria e lampadina...)

  • Software: keyscan

  • pulsanti e joystick arcade, pannello di legno e tutto quanto serve a costruire il joypad.

Dunque, esponiamo bene quello che vogliamo fare: con una tastiera vogliamo ricavare un controller per videogiochi composto da 2 joystick a 4 o 8 vie e 6 bottoni ciascuno, senza che ci siano fastidiosi effetti tipo tasti bloccati o non premuti. Inoltre aggiungeremo i pulsanti utilizzati dal MAME per inserire i gettoni, scegliere il giocatore, mettere in pausa ed eventualmente altri tasti funzione....

Il tutto verrà poi configurato in mame32 creando un profilo di controller personalizzato, evitando così di dover impostare i tasti in ogni gioco.


Cominciamo con un po' di teoria


Le tastiere sono formate dai tasti, da una porta ps/2 o din, e da un chip di codifica.

I tasti sono da considerarsi come degli interruttori: quando vengono premuti, viene chiuso un circuito sotto di loro, ossia viene creato un ponte tra due piste normalmente scollegate tra loro.

Alla chiusura di tale circuito entra in gioco il chip di codifica, che elabora il segnale da spedire al pc attraverso la porta ps/2 o DIN.

Immaginate che questo codificatore osservi sempre i tasti, e quando ne è stato premuto uno lui è pronto per gridare al pc "Hei, guarda che è stato premuto il tasto x", ovviamente in un linguaggio interpretabile dal computer.

Per risparmiare sulla produzione, però, i chip hanno una caratteristica che rende il nostro lavoro un po' particolare: la struttura dei circuiti è a matrice.

Cosa vuol dire? beh, che i tasti non sono indipendenti gli uni dagli altri, ma hanno parte delle loro piste in comune con altri tasti.

Il chip possiede solo una trentina di piedini, e ne usa 16 o 18 per le righe e 8 per le colonne (o viceversa, dipende da come si guardano ;) ).

Ad ogni combinazione di coppie (riga,colonna) corrisponde un tasto. In realtà ciò non è sempre vero, perchè ad alcune coppie non è collegato nessun tasto (la matematica insegna... 16*8 > 105!)

bene, il chip quindi si occuperà di osservare quale coppia di piste (piedini) è stata chiusa e tradurrà tale coppia nel formato interpretabile dal pc.

I problemi di questo sistema nascono quando si vuole premere più di un pulsante, in quanto il controller potrebbe pensare che siano stati premuti tasti che non abbiamo mai toccato o che non riesca a leggere i tasti da noi premuti. Tali fenomeni prendono il nome di key ghosting e key blocking.

E' abbastanza chiaro? questa spiegazione semplificata serve solo per farvi capire il perchè procederemo come segue.


1. Procuratevi una tastiera


E' il punto più facile, visto che se avete letto il materiale occorrente dovreste averla già sotto mano.

Vanno bene delle tastiere con attacco PS/2 o DIN, vecchie, nuove, meccanicamente rotte o perfette...poco importa, L'importante è che il chip di codifica sia intatto e funzionante.

Ricordatevi che con queste operazioni la tastiera sarà poi inutilizzabile per gli scopi abituali, ossia scrivere.


2. Smanettare con la tastiera


Questo passaggio non è obbligatorio, ma è per farvi un'idea di quanti tasti riuscite a premere contemporaneamente.

Utilizzate il programma keyscan e premete quanti più tasti possibili senza sentire il solito beep, e provate a vedere se tutti i tasti sono riconosciuti correttamente. Poi spegnete il pc, staccate la tastiera, e dimenticatevi di quello che avete fatto: c'è un metodo più scentifico per decidere quali tasti vanno bene senza blocking o ghosting...


3. Aprite la tastiera


A seconda delle tastiere, dovete arrangiarvi a capire come sono state chiuse. Di solito ci sono due o tre viti sul retro nella parte alta, mente il lato basso è agganciato con dei fermi o a pressione... insomma apritela senza danneggiare nulla...


4. Guardate com'è fatta una tastiera


Ecco la spiegazione pratica di quanto ho cercato di dire teoricamente: ogni tasto ha un circuito di due piste, ma queste piste sono condivise con gli altri tasti, e terminano in due connettori separati che sono collegati ai piedini del chip integrato.

L'interno delle tastiere non è sempre uguale; ci possiamo trovare infatti di fronte a:

a. Circuito in bachelite, ossia tutte le piste stanno su una piastra;

b. Fogli (mylar) separati: le piste sono su due fogli distinti separati da un foglio isolante; solo in prossimità dei tasti sono presenti dei fori, e alla pressione del taso i due fogli con le piste vengono a contatto, chiudendo il circuito. I tasti di solito sono bloccati sulla struttura esterna.

c. Fogli separati chiusi tra i tasti e un supporto in metallo: è la soluzione che ho trovato io sulla tastiera olivetti, e sono stato fortunato: i tasti restano attaccati ai circuiti anche se si rimuove il coperchio, quindi la tastiera è utilizzabile anche aperta.

A seconda del tipo di tastiera trovato, procederemo in diversi modi, in quanto alcuni sono più veloci per un tipo e altri più macchinosi.


5. Rilevazione matrice


Ecco il lavoro che impegnerà un'oretta di tempo, magari di meno se siete in due!

Ora dovete cercare quale circuito chiude ciascun tasto, ossia quale coppia (riga,colonna) fa capo ad ogni tasto.

In caso di tastiera in bachelite non ho le idee molto chiare a riguardo, in quando non ho mai visto una di queste tastiere internamente. Per gli altri due tipi, invece, procediamo.

C'è una schedina sulla quale sono alloggiati un chip e due connettori; i connettori fanno da collegamento ai fogli della tastiera e la schedina del chip. consiglio di numerare ogni pista di questi connettori, (in caso di matrice 16x8 o da 1 a 24 oppure da 1 a 16 e da 1 a 8), così da poter annotare la corrispondenza in una tabella.


Matrice vuota


Probabilmente avrete visto una tabella del genere ribaltata, ma sono più comodo a orientarla così...

Si può procedere in due modi a seconda del tipo di tastiera:

a. Tastiera a fogli

dato che in questa tastiera è possibile vedere le piste, basta focalizzare l'attenzione sui due contatti posti in corrispondenza di ogni tasto e seguirne la pista fino alla fine, ossia fino ai connettori: i numeri delle due piste saranno la coppia (riga,colonna) riservata a quel tasto. Annotate il tasto nella tabella sopra creata.

b. Tastiera con fogli "bloccati"

in questo caso le piste sono nascoste, e per non rovinare del tutto la tastiera (potrebbe servirci in una eventuale verifica) ci muniamo di tester o apparecchio simile e focalizziamo l'attenzione sule parti terminali dei fogli, ossia le linguette attaccate ai connettori del piccolo circuito interno alla tastiera.

Utilizzando i punteruoli (se avete dei morsetti siete più fortunati!) del tester, rilevate la resistenza di ogni coppia di piste, e cominciate a premere un tasto alla volta.

Quando verrà premuto il tasto corrispondente a quella coppia di piste, il tester segnerà 0 ohm. Badate bene che il valore deve essere esattamente 0ohm, non 0,6 o qualcosa del genere.

se non disponete di un tester, utilizzate una batteria (una pila della radiolina) e una piccola lampadina:


batt.----lampa
| |
| |
-------------
| tastiera..|
-------------


in questo caso, alla pressione del tasto giusto la lampadina dovrebbe accendersi.

Non ho sperimentato questo metodo, ma qualcuno l'ha fatto prima di me, e funziona.

c. Un altro metodo vi fa risparmiare tester e lampadina, ma non mi assumo nessuna responsabilità per danni eventuali alle vostre attrezzature.

Procuratevi un normale filo di materiale conduttore isolato (un cavetto elettrico...) e spellatelo alle estremità.

Con la tastiera aperta collegatela al PC, o addirittura collegate solo il circuito senza i fogli e i tasti, e avviate keyscan.

con il filo fate ponte tra ogni coppia di piste inserendo le parti spellate nei connettori, guardate il carattere rilevato da keyscan e annotatelo in tabella.

non ho provato neppure questo sistema, e non so cosa succede quando si cortocircuitano le coppie che non hanno un tasto assegnato.


6. Guardate la tabella!


Ecco a voi la matrice della vostra tastiera!


Matrice piena


Ora risulta facile capire perchè alla pressione di due o più tasti il nostro metal slug si inchiodava: un player continuava a sparare, un'altro ad andare avanti...

Ora porteste buttare i fogli e la plastica della tastiera, per tenere solo il cicuito con il chip di codifica.

Adesso dobbiamo trovare una combinazione di tasti adatta per far funzionare tasti direzione e pulsanti contemporaneamente. Per fare ciò dobbiamo scegliere un tasto per ogni colonna. Discorso diverso, invece, per i tasti direzionali: dato che i tasti su e giù non verranno mai premuuti contemporaneamente, possiamo utilizzare due tasti della stessa colonna; lo stesso dicasi per i tasti sinistra e destra, per tutti e due i giocatori.

ci troveremo così con i 12 tasti (6 tasti per giocatore) divisi per 12 colonne, e gli 8 tasti direzionali in 4 colonne, per un totale di 16colonne utilizzate: esattamente il numero di colonne della nostra matrice!


Attenzione: se si vogliono utilizzare 6 tasti per giocatore e la tastiera utilzza una matrice di 16x8, ci possono essere problemi per il caricamento dei crediti e i pulsanti di start: sarebbe poco carino se, mentre siete al mostro finale di blazing star e il vostro amico vi vuole venire in aiuto, il controller si blocchi perchè sono stati inseriti i crediti!!!! Per ovviare a questo inconveniente si può rinunciare al sesto bottone, oppure assengare l'inserimento dei crediti e i pulsanti di start ai tasti delle colonne dei pulsanti n°6, che vengono utilizzati raramente (qualche picchiaduro).

Vediamo adesso quali possono essere, nell'esempio, i tasti da utilizzare:

Matrice con scelta dei tasti

I tasti gialli saranno quelli del giocatore 1, con pgsu e pggiu per le direzioni alto/basso e a e z per destra/sinistra;

I tasti rossi saranno quelli del giocatore 2, f e v saranno su e giù, n e m saranno sinistra e destra;

3,E e D saranno i tasti per i crediti e gli start; per sicurezza C sarà il serto tasto del giocatore 2, probabilmente il tasto meno utilizzato in assoluto...

Si possono aggiungere altri tasti, come P per la pausa, f2 per entrare nella configurazione del gioco, il tasto tab (si possono comunque configurare diversamente), eccetera... oppure utilizzare la combinazione dei tre tasti "blu", in modo da non affollare il nostro joypad di tasti...

Ultimo, dobbiamo prevedere di uilzzare anche il tasto esc, se vogliamo poter uscire dai giochi senza toccare la tastiera.


Non preoccupatevi se i tasti così scelti sono diversi da quelli del mame, più avanti creeremo un file di configuraizone per il nostro controller. Purtroppo, però, tale procedimento sarà valido solo per il mame32 (e derivati).


7. Collegamenti!


Eccoci qui, la parte più pratica, più "elettronica": dobbiamo effettuare i collegamenti tra i pulsanti/joytick e i connettori del pcb della tastiera...

Io ho dissaldato i connettori originali per fare posto a una morsettiera a vite, in modo da velocizzare le operaizoni di collegamento e ridurre i danni in caso di errore.

Se non siete esperti, fatevi aiutare da un amico pratico in saldature.


8. Configurazione controller sotto MAME32


Ok, avete il vostro bel controller, avete il romset completo del MAME, l'ultima versione del MAME32... non vorrete mica controllare e riconfigurare gli input per ogni gioco????

Ecco che ci viene in aiuto la cartella "ctrlr" e il file "std.ini" del MAME32.

In questa cartella sono salvati i profili dei controller arcade più famosi: X-Arcade, HotRoad, SlikStik.

Perchè il nostro non può comparire in questa cartella???

Dunque, cominciamo:

-Create una sottocartella nella cartella "ctrlr" del MAME32

-Rinominate la sottocartella con il nome del vostro controller (lo avrete battezzato, o no?)

-copiate il file "std.ini" nella sottocartella del vostro controller e rinominatelo in "default.ini"

-aprite il file: all'interno trovate pressochè tutti i tasti configurabili del MAME.

-quello che dovete fare è semplicemente cambiare le corrispondenze azione - tasto dei movimenti, dei pulsanti, dei crediti, dei pulsanti start e dei tasti che vi interessano.

I tasti che non vi interessano o che non avete modificato possono essere cancellati dal file, in quanto saranno presi in considerazione i valori standard.

Come avrete capito, le azioni che iniziano per "UI_" si riferiscono al menu che solitamente appare premendo tab, le azioni "P1_","P2_" eccetera sono riferiti ai tasti per i giocatori e gli altri sono tasti globali.

Nel nostro esempio, quindi, dovremmo scrivere questo:


#Configurazione Esempio
START1 "KEYCODE_E"
START2 "KEYCODE_D"
COIN1 "KEYCODE_3"
UI_PAUSE "KEYCODE_E KEYCODE_D"
P1_JOYSTICK_UP "KEYCODE_PGUP"
P1_JOYSTICK_DOWN "KEYCODE_PGDN"
P1_JOYSTICK_LEFT "KEYCODE_A"
P1_JOYSTICK_RIGHT "KEYCODE_Z"
P1_BUTTON1 "KEYCODE_L"
P1_BUTTON2 "KEYCODE_RCTRL"
P1_BUTTON3 "KEYCODE_RSHIFT"
P1_BUTTON4 "KEYCODE_LALT"
P1_BUTTON5 "KEYCODE_LEFT"
P1_BUTTON6 "KEYCODE_RIGHT"
P2_JOYSTICK_UP "KEYCODE_F"
P2_JOYSTICK_DOWN "KEYCODE_V"
P2_JOYSTICK_LEFT "KEYCODE_N"
P2_JOYSTICK_RIGHT "KEYCODE_M"
P2_BUTTON1 "KEYCODE_ENTER"
P2_BUTTON2 "KEYCODE_K"
P2_BUTTON3 "KEYCODE_X"
P2_BUTTON4 "KEYCODE_MINUS"
P2_BUTTON5 "KEYCODE_DOWN"
P2_BUTTON6 "JOYCODE_C"


Come potete notare, ho configurato solo i tasti prettamente necessari, e ho utilizzato la combinazione dei due tasti start per mettere il gioco in pausa. Per concatenare i tasti si utilizza una semplice sintassi, simile a quella del c:

tasto1 | tasto2 = tasto1 oppure tasto2

tasto1 ! tasto2 = tasto1 ma non tasto2

tasto1 tasto2 = tasto1 e tasto2 assieme

Sbizzarritevi allora a configurare anche le altre azioni, come i paddle, il trackball eccetera.

Fatto? passiamo allora all'attivazione del profilo.

-Avviate MAME32

-Selezionate la voce "Default Game Options..." dal menu "Options"

-Selezionate la scheda "Controllers"

-Dal menu a tendina "Default input layout" selezionate il nome del vostro controller.

-Cliccate sul pulsante "OK"

FATTO!!! ora potete avviare qualsiasi gioco e utilizzare il vostro controller senza troppi sbattimenti!!!


Ultima cosa: dobbiamo configurare anche i tasti per poter navigare nei menu del MAME32, ossia per sfogliare i giochi e avviarli.

Per fare ciò basta aprire il file MAME32ui.ini presente nella directory radice dell'emulatore, e modificare le seguenti linee:


ui_key_up KEYCODE_UP
ui_key_down KEYCODE_DOWN
ui_key_left KEYCODE_LEFT
ui_key_right KEYCODE_RIGHT
ui_key_start "KEYCODE_ENTER ! KEYCODE_LALT"


con i codici dei tasti del vostro primo controller, o utilizzare la concatenazione per utilizzare tutti e due i joystick... piccolo esempio?


ui_key_up "KEYCODE_PGUP | KEYCODE_F"
ui_key_down "KEYCODE_PGDN | KEYCODE_V"
ui_key_left "KEYCODE_A | KEYCODE_N"
ui_key_right "KEYCODE_Z | KEYCODE_M"
ui_key_start "KEYCODE_L | KEYCODE_ENTER"


Potete anche personalizzare i tasti successivi, se volete il pieno controllo!

ora riavviate MAME32 e provate....


BUON DIVERTIMENTO!!!!