Adaptar un mando de SFC/SNES a MSX.

 

Hola!

Hace meses ya había adaptado algún mando “estropeado” de SNES para usarlo en MSX.
El ejemplo de hoy va un paso más allá, añadiendo un auto-fire totalmente digital, que nos permitirá, entre otras cosas, ajustar por separado la velocidad del disparo de cada botón.

Empecemos:

Lo primero sera conseguir un mando de SNES (o el que mas os guste si adaptáis el tutorial)  que no funcione, (o si).

snes2msx_01
Un mando de SNES averiado.

Es recomendable que le cambies las gomas de todos los botones, ya que con los años estarán en un estado como mínimo dudoso para seguir dando un buen servicio. Yo compro unos recámbios de altísima calidad en esta web:
Console Goods.

La idea es la siguiente:
Usaremos el boton “Y” del PAD como el boton “1” del MSX, el boton “B” como el “2”, el “X” como el “1” con auto-fire y el “A” como el “2” con auto-fire.
Además, habilitaremos también los botones del PAD “Start” y “Select” como los botones “1” y “2” del MSX, mas que nada para darles uso (y la costumbre de pulsar START para empezar).
Con los botones “R” y “L” ajustaremos la velocidad del auto-fire, teniendo disponibles 10 velocidades de disparo diferentes. Cada uno de los dos botones con auto-fire se puede ajustar por separado. Mientras se pulsa “X” o “A” (o ambos a la vez), si pulsamos “R” incrementaremos la velocidad, si por contra pulsamos “L” la velocidad se verá reducida.
Si pulsamos a la vez los botones “R” y “L”, reiniciaremos la velocidad de ambos botones a su valor por defecto. Otro punto es que la velocidad se guarda en la memoria del mando, así que no tendremos que ajustarla cada vez que usemos el mando.
El bloque de dirección estará mapeado tal cual.

El esquema para el montaje es el que sigue (pulsa en la imagen para ampliarla):

snes pad
Esquema del circuito

 

El listado de material es el siguiente:
– 1 mando de SFC/SNES
– 1 Microcontrolador PIC 12F629
– 4 Resistencias de 4k7 ohm 1/4w
– 2 Resistencias de 1k ohm 1/4w
– 1 Condensador de 100nF
– 2 Transistores BC547 (o cualquier NPN de uso común)
– 1 Conector DB9 hembra
– 2 Metros de cable de 8 hilos
– Baquelita para prototipos

Como veis, la magia del auto-fire la realiza un micro-controlador PIC 12F629, el cual también dispone de una pequeña eeprom que almacenara la velocidad de cada botón.

Lo primero será preparar la placa del PAD, lo cual conlleva retirar todos los componentes electrónicos de la misma. Hay dos versiones de la placa, una con un chip y otra con dos. Ambas sirven para el proyecto, la diferencia sera como cablearemos la placa con nuestro circuito de auto-fire.

snes2msx_02
Placa con todos los componentes retirados.

 

El mando de SNES usa lógica negativa, es decir, cuando pulsamos un botón este se conecta a masa. Con los componentes retirados, tendremos que identificar a que pin del chip (o chips) que hemos retirado va conectado cada botón. Con ayuda de un polímetro, buscaremos estas correspondencias. Fijaros que los botones tienen un borne conectado a masa. Usaremos el otro borne para realizar las verificaciones. Marcar también que pin corresponde a masa, ya que nos hará falta.

snes2msx_03
Ya tenemos a que pin va conectado cada botón.

 

Ahora soldaremos un cable kynar o similar a cada patilla que hayamos identificado. Podemos ahorrarnos 2 cables si hacemos un puente entre los pines de “START” y “Y” y entre los pines de “SELECT” y “B”, ya que estas parejas de botones van asignadas al mismo botón del MSX. En este caso, necesitaremos 11 hilos de unos 10cm aproximadamente.

snes2msx_04
Detalle de los cables ya soldados y con los 2 puentes realizados.

 

Una vez hayamos verificado un par de veces que cada cable esta bien soldado y en el sitio correcto, evitaremos desastres protegiendo las soldaduras con un poco de cola termofusible.

snes2msx_05
Soldaduras y cables protegidos con unos toques de cola termofusible.

 

De momento aparcaremos la placa del mando y pasaremos al circuito encargado del auto-fire.
En este caso, he escrito el programa para el PIC en C. Si alguien quiere modificar los parámetros del auto-fire, puede descargarse el código fuente desde este enlace:
SNES2MSX PAD source code.

En caso contrario, podéis descargar directamente el archivo HEX para grabarlo en el PIC.
SNES2MSX PAD HEX file.

Si modificáis el código, es buena idea tener una placa de prototipos para probar que el programa funciona como queremos una vez grabado en el PIC.

snes2msx_06
Placa que he montado para la ocasión.

 

Dado que los pulsadores del PAD de SNES se conectan a masa al pulsarlos, usaremos lógica inversa en el programa, es decir, en las entradas cuando pulsemos un botón tendremos un 0 o FALSE, por contra, si no está pulsado, tendremos un 1 o TRUE. Las salidas por contra, usan lógica normal, cuando este activa tendremos un 1, y un 0 al no estarlo. Estas salidas atacan a la base de un transistor NPN, el cual conecta el pulsador 1 o 2 del MSX a masa. En las entradas hay colocadas unas resistencias pull-up, que mantendrán la tensión a 5v, o lo que es lo mismo, un 1 lógico hasta que se pulse el botón asignado a esa entrada, quedando conectada a masa, lo que supondrá un 0.

Una vez programado el PIC, procederemos al montaje del circuito.

snes2msx_07
Esquema, componentes y baquelita listos para el montaje.

 

snes2msx_08
Esta disposición de componentes es de las pocas válidas, dado el poco espacio que tenemos.

 

Una vez tengamos el circuito montado siguiendo el esquema, tocara unirlo con la placa del PAD, usando los 11 cables kynar que hemos soldado previamente.

snes2msx_09
Placa controladora unida a la placa del PAD.

 

Vamos ahora a fabricar el cable que unirá nuestro PAD con el MSX. Si tenéis la suerte de tener un cable de joystick de MSX o parecido, con los 9 hilos conectados, bueno, podéis saltaros esta parte.

Como no he podido encontrar ni cables nuevos ni conectores del formato del JoyStick de 9 pines, he usado un DB9 hembra genérico quitándole la carcasa. Dependiendo del modelo, deberéis unir con algún adesivo instantaneo las dos partes del conector.

snes2msx_10
Conector DB9 sin la carcasa.

 

Para completar el conector improvisado, usaremos un fragmento de baquelita, así tendrá más consistencia y el cable quedara mas sujeto, dándonos ademas una mayor superficie que agarre al conectar o desconectar el JoyStick.

snes2msx_11
Detalle de la parte superior del conector (Pines 1 al 5).

snes2msx_12
Detalle de la parte inferior del conector (Pines 6 al 9).

 

El siguiente paso sera soldar los 8 hilos del cable que usaremos para unir el conector con el PAD.
Siguiendo el esquema, vemos que va un hilo a cada pin, excepto al numero 8. Una vez soldado, protegeremos el montaje con cola termofusible, así evitaremos que con el movimiento se rompa alguna soldadura.

snes2msx_13
Conexiones del conector protegidas.

 

Para terminar, un par de trozos de funda termo retractil acabaran de proteger el conector.

snes2msx_14
Conector ya listo.

 

El ultimo paso es unir este cable con la placa de control que hemos fabricado antes.

snes2msx_15
Conector ya soldado a la placa de control.

Es buena idea proteger también estas soldaduras, así evitaremos roturas con el movimiento durante el ensamblaje del PAD.

snes2msx_16
Conjunto ya ensamblado.

 

Y listos, colocando la tapa posterior, ya tenemos nuestro Gamepad de SNES adaptado a MSX, con auto-fire digital de velocidad ajustable.

 

 

 

 

 

Un comentario en “Adaptar un mando de SFC/SNES a MSX.

  1. Impresionante trabajo. Hace poco adapté uno de megadrive para MSX que es mucho más sencillo. Pero esto es una auténtica virguería. Me lo apunto para hacerlo en un futuro próximo. Gracias por compartir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.