¡¡La comunidad marciana al servicio de la afición!!
Marcianitos declina cualquier responsabilidad derivada del uso que se haga de la información
que la web contiene.
Marcianitos no distribuye roms, no atenta contra la propiedad intelectual
y no tiene ánimo de lucro.
© Prohibida la reproducción total o parcial sin permiso expreso del titular de los derechos
ni aun citando la procedencia.
Cuando conectamos nuestro ordenador a la maca en lugar de utilizar la placa base original (entre otras cosas para usar MAME) necesitamos que los botones y palancas del panel de control de la maca se comuniquen con nuestro PC. En el mercado existen soluciones comerciales tales como la tarjeta IPAC / JPAC distribuidas por Ultimarc. Esta tarjeta se conectan por un lado al conector JAMMA que trae la maca, y por otro se saca un cable hasta el puerto PS/2 del PC. De esta manera al pulsar los botones de la maca o mover las palancas, la tarjeta JPAC recibe esos impulsos, los convierte en señales eléctricas como si provenieran de un teclado, y las manda al puerto PS/2 del PC. De esta manera el PC recibe pulsaciones de tecla, aunque en realidad provienen del panel control de la maca. Esto es lo que se conoce con el nombre de Key Encoder.
El problema está en que estas soluciones comerciales suelen ser caras. Aquí os presentamos un método casero para construirnos un Key Encoder al que por un lado recibe todos los cables que salen del panel de control de la maca (botones y palancas) y por el otro se enchufa al puerto paralelo (el de la impresora) del PC, en lugar de al puerto PS/2 como en el caso del JPAC.
Ante todo agradecer a todos los marcianos que han estado trabajando estas semanas desinteresadamente en la investigación y construcción de este sistema y que me han hecho posible recopilar todos sus conocimientos, imágenes, comentarios, etc para poder llegar a hacer este tutorial que espero sea del agrado de todos, y que se convierta en definitiva en un método sencillo (en pocas horas te lo puedes construir y sin necesidad de conocimientos de electrónica), barato (menos de 3 euros) y eficaz (permite 60 botones!!!) para conectar un PC a una máquina recreativa.
Antes que nada vamos a ver en qué
se basa este sistema. El puerto paralelo se implementa mediante un conector llamado DB25, que tiene 25
pines numerados. Según el protocolo de este puerto, los pines 10, 11, 12, 13 y 15 son capaces de enviar datos
(corriente eléctrica) y vienen indicados de color rojo en el esquema; mientras, los pines del 1 al 9, y
los pines 14, 16 y 17 son para leer datos (si les llega corriente eléctrica) y vienen de color azul en el
esquema. El resto de pines, es decir, los pines 18 a 25, no tienen utilidad para nosotros (de color verde en el esquema).
Este sistema de selección de canal nos va a permitir lo siguiente: conectar 5 datos al canal 1, 5
datos al canal 2, así hasta el canal 12, con lo que si las matemáticas no nos fallan, podemos
realizar hasta 12x5 conexiones, es decir 60. Teniendo en mente las 60 conexiones posibles que permite el
puerto paralelo, podemos empezar a hacer todo tipo de combinaciones. Sólo hay que tener en cuenta
que cada palanca consume 4 conexiones (una para cada dirección) y cada botón una.
El monedero también actuaría como una conexión más. Así podemos tener
p.ej. 1 palanca y 8 botones para cuatro jugadores: 4 + 8 = 12 conexiones por jugador, 12 * 4 jugadores =
48 conexiones. Le podemos añadir el start de cada jugador, y algunos botones más de mantenimiento
(p.ej. Escape para salir del juego, P para pausar el juego, Tabulador para entrar en opciones,...).
60 conexiones dan para muchas posibilidades.
Por cierto, ten en cuenta que este esquema que está a la izquierda es una vista anterior del conector
DB25, mientras que la imagen anterior es una vista posterior. De ahí a que aparezcan los pines
numerados a la inversa.
Para entender más fácilmente el sistema de los 5 datos por canal y los 12 canales, podemos imaginarnos una estructura matricial. En las filas van los 12 canales, y en las columnas los 5 datos de cada canal:
| Pin 10 (E) | Pin 11 (E) | Pin 12 (E) | Pin 13 (E) | Pin 15 (E) | |
|---|---|---|---|---|---|
| Pin 2 (R) | |||||
| Pin 3 (R) | |||||
| Pin 4 (R) | |||||
| Pin 5 (R) | |||||
| Pin 6 (R) | |||||
| Pin 7 (R) | |||||
| Pin 8 (R) | |||||
| Pin 9 (R) | |||||
| Pin 1 (R) | |||||
| Pin 14 (R) | |||||
| Pin 16 (R) | |||||
| Pin 17 (R) |
El sistema funciona como el juego de los barquitos de toda la vida, se envía una señal (corriente eléctrica) por uno de los cables (E) y se comprueba en cuál de los cables (R) se recibe la misma. Y listos, ya se sabe qué botón se ha pulsado... ¡tocado y hundido!
Una vez que tengamos claro cuántos jugadores podrán usar nuestra maca y cuántos botones tendrá cada uno, solo queda distribuir sus pulsaciones en la matriz del interfaz por puerto paralelo. En este ejemplo, vamos a diseñar un panel para 4 jugadores, con 8 botones para el jugador 1, 8 para el 2, 4 para el 3, 4 para el 4, y start y coin (moneda) para cada uno de los 4. Rellenamos siguiendo cierto orden:
| Pin 10 (E) | Pin 11 (E) | Pin 12 (E) | Pin 13 (E) | Pin 15 (E) | |
|---|---|---|---|---|---|
| Pin 2 (R) | 1-arriba | 1-abajo | 1-izquierda | 1-derecha | 1-boton_1 |
| Pin 3 (R) | 1-boton_2 | 1-boton_3 | 1-boton_4 | 1-boton_5 | 1-boton_6 |
| Pin 4 (R) | 1-boton_7 | 1-boton_8 | 1-start | 1-moneda | |
| Pin 5 (R) | 3-arriba | 3-abajo | 3-izquierda | 3-derecha | 3-boton_1 |
| Pin 6 (R) | 3-boton_2 | 3-boton_3 | 3-boton_4 | 3-start | 3-moneda |
| Pin 7 (R) | |||||
| Pin 8 (R) | 2-arriba | 2-abajo | 2-izquierda | 2-derecha | 2-boton_1 |
| Pin 9 (R) | 2-boton_2 | 2-boton_3 | 2-boton_4 | 2-boton_5 | 2-boton_6 |
| Pin 1 (R) | 2-boton_7 | 2-boton_8 | 2-start | 2-moneda | |
| Pin 14 (R) | 4-arriba | 4-abajo | 4-izquierda | 4-derecha | 4-boton_1 |
| Pin 16 (R) | 4-boton_2 | 4-boton_3 | 4-boton_4 | 4-start | 4-moneda |
| Pin 17 (R) |
Ya tenemos el diseño lógico de nuestro panel de control. Ahora tenemos que entrar en el diseño físico del asunto. Sólo hay que tener en cuenta dos puntos:
El diseño de esta estructura quedaría como sigue:
En este ejemplo, para conectar la dirección 'arriba' del jugador uno, utilizaríamos las conexiones superiores de la izquierda. Un cable saldría del lugar marcado como ARRIBA y el segundo desde la conexión ligeramente superior que pone 2.
Dichos cables los conectaríamos al micro-interruptor del modo habitual, uno a la patilla inferior del micro (normalmente llamada tierra del interruptor, masa o común) y el otro a la patilla marcada como 'NO' ('Normally Open' o normálmente abierto en castellano).
Y por último, el diseño real realizado sobre una base de cartón para pruebas, con regletas (¡sin soldaduras!, más fácil imposible):
En la parte superior podemos observar el cableado que termina en el conector DB25 del puerto paralelo.
Todo esto puede parecer así un poco complicado y engorroso, pero nada más lejos de la realidad. Para facilitar las cosas, vamos a mostrar un caso práctico paso a paso, construyendo un panel para un jugador sólamente.
Diseñaremos un panel para un jugador que constará de :
Por tanto necesitamos 4 conexiones para la palnca, más 13 para botones. 17 en total.
Lo primero es rellenar la matriz:
| Pin 10 (E) | Pin 11 (E) | Pin 12 (E) | Pin 13 (E) | Pin 15 (E) | |
|---|---|---|---|---|---|
| Pin 2 (R) | 1-arriba | 1-abajo | 1-izquierda | 1-derecha | 1-boton_1 |
| Pin 3 (R) | 1-boton_2 | 1-boton_3 | 1-boton_4 | 1-boton_5 | 1-boton_6 |
| Pin 4 (R) | 1-start | 1-moneda | ESCAPE | ENTER | PAUSA |
| Pin 5 (R) | TABULADOR | RESET | |||
| Pin 6 (R) | |||||
| Pin 7 (R) | |||||
| Pin 8 (R) | |||||
| Pin 9 (R) | |||||
| Pin 1 (R) | |||||
| Pin 14 (R) | |||||
| Pin 16 (R) | |||||
| Pin 17 (R) |
Siguiendo las reglas básicas, tendremos que:
Mirando la zona inferior de la imagen vemos el canal de recepción (R) 2 en celeste, el (R) 3 en fuxia y el (R) 4 en amarillo.
En la siguiente foto vemos la construcción de este cableado. Se observa perféctamente el uso de las 'Tierras' comunes si nos fijamos, por ejemplo en el cable amarillo.
Ya solo queda conectar esos cables 21 cables (17 señales ya divididas y 4 'Tierras') al interfaz propiamente dicho. Como cada uno tiene un color diferente, no habrá ninguna problema de confundir los cables.
Al final de la cadena vemos el cable paralelo (conector DB25), esperando a ser conectado al PC para comenzar a jugar... pero antes debemos colocar los 17 diodos.
Y aquí vemos a Lord Hiryu, que fue el primer marciano en experimentar el invento con cara de decir '¡¡¡Bien, esto funciona!!!'. Ese botellín de cerveza y ese bote de ketchup no pueden faltar en la dieta de todo marciano que se precie :D
Pinchamos el conector DB25 en el puerto paralelo, y ya sólo nos queda configurar con una utilidad de Windows las asociaciones de cada botón. Así va quedando la cosa:
Bueno, una vez que tenemos todo el tema del cableado resuelto, nos queda lo más sencillo, que es instalar una utilidad llamada PPJoy (Parallel Port Joystick), con la que se le dice la función de cada botón que hemos diseñado en la matriz. Esta utilidad os la podéis descargar de aquí.
Tras descomprimir lo descargado en una carpeta y ejecutar SETUP.exe quedará instalada la aplicación (Aceptar todos los mensajes como siempre).
Lo primero que vamos a hacer es hacer clic en el icono 'Configure Joysticks' recién creado, y configuraremos los joysticks. Se abrirá una pantalla, y haremos clic en Add para añadir un joystick. Seleccionamos en los menús desplegables los siguiente valores, y entonces pulsamos en el botón Add.
Una vez creado el joystick, lo seleccionamos y pinchamos sobre el botón 'Mapping' para empezar el mapeado de direcciones y botones.
Ahora viene lo importante del asunto, la definición del número de ejes y botones que queremos en nuetro joystick y el escaneo de las pulsaciones. En nuestro caso, necesitamos dos ejes (eje_x y eje_y) y trece botones. El número de 'POV_HATS', para un panel de control siempre lo dejaremos en cero ya que los 'pov_hats' son los sub-joysticks. Por ejemplo los podemos encontrar en los joysticks para simuladores de vuelo encargados de controlar el sistema de armamento y en el mando 'dual-shock' de Playstation 2.
Lo primero que nos pedirá el programa es que escaneemos los ejes que hayamos asignado. Para ello, presionamos el botón 'Scan' que tenemos al lado de cada dirección (4) con lo que se nos abrirá una ventana que pondrá: 'Reading Joystick Input. Please press/move desired control'. Al presionar la dirección deseada, dicha ventana deberá cerrarse automáticamente y al lado de la dirección mapeada deberá aparecer el código del botón o dirección presionada, por ejemplo 'Digital 2'.
Una vez terminemos con los ejes, le daremos a 'Next' y continuaremos mapeando tantos botones como hayamos definido.
Al acabar el proceso, podemos cerrar la utilidad de configuración del joystick que hemos creado y, a todos los efectos, windows reconocerá el joystick perfectamente. Para comprobar que todo ha ido bien, nos vamos al panel de control de windows y comprobamos dentro de dispositivos de juegos que todo funciona.
Por fin, tenemos el joystick totalmente funcional. A partir de aquí, ya solo nos quedará configurar los emuladores como deseemos. Incluso podemos utilizar joytokey en combinación con nuestro joystick por puerto paralelo. Esto nos brinda la posibilidad de controlar cualquier emulador y aplicación con nuestro joystick arcade.
Tanto el interfaz por puerto paralelo como el driver ppjoy han sido ampliamente testeados y funcionan perfectamente. Sin embargo, el driver contiene una serie de fallos menores que hacen que su configuración sea un poco complicada si no somos conscientes de ellos. El driver no se continúa desarrollando y tampoco se va a liberar su código fuente por lo que en principio, estos errores no serán corregidos.
En geometría cartesiana en dos dimensiones (X,Y), lo normal es que el eje X sea la dirección horizontal y el eje Y la dirección vertical. Además, el eje Y negativo es hacia abajo, positivo hacia arriba, el eje X negativo es hacia la izquierda y positivo hacia la derecha.
Es decir, que cuando estamos mapeando ejes, lo lógico sería que cuando vamos a escanear 'Y Min' moviésemos la palanca hacia abajo. Pues bien, esto no es así, el eje y está invertido así que cuando escaneemos 'Y Min' debemos mover la palanca hacia arriba y cuando escaneemos 'Y Max', debemos mover la palanca hacia abajo.
Imaginemos por un momento que queremos crear un joystick con 50 botones (para usar en un simulador de vuelo, por ejemplo). Pues bien, esto no es posible con el driver ppjoy ya que tiene una limitación máxima de 30 botones por joystick. Es decir, las primeras 30 entradas sólamente las podrá detectar el joystick 1 y las siguientes 30 el joystick 2.
La solución es bien sencilla, creamos dos joysticks y luego configuramos nuestros juegos y/o emuladores del modo deseado. Simplemente hay que tener en cuenta que en el cableado que se indica en este tutorial es el correcto y está en el orden adecuado. Es decir, que si utilizamos por error el cable 14 para el joystick físico 1, por mucho que intentemos escanear esta entrada en el driver del joystick 1, nunca detectaremos nada. Será necesario que creemos un segundo joystick en el driver para poder interpretar esta entrada 'mal cableada'.
Para mayor complicación, las entradas de datos de ambos joysticks se denominan igual en el driver. Es decir, la primera entrada del joystick 1 se llamará 'Digital 1' y la primera entrada del joystick 2 también se llama 'Digital 1' pese a que físicamente no son lo mismo ni el driver los interpreta como uno, sino como dos.
Esto está muy relacionado con el FALLO 2, si nos fijamos en las tablas ya expuestas, vemos que el orden de los cables de envío de datos y el de los de lectura no es consecutivo y es un poco caprichoso:
Así que hay que prestar mucha atención al cableado si no queremos acabar con un joystick con 4 botones y otro con 16. Esto no supone ningún problema ya que los emuladores siempre nos brindan muchísimas opciones de configuración, pero si nos lo podemos ahorrar cableando bién todo será más 'elegante'.
Este interfaz ya ha sido construido por bastantes visitantes de la web y está sobradamente comprobado su buen funcionamiento. Así mismo, también hemos comprobado que se suele complicar la construcción si no se va con cuidado. Antes de empezar a construir el interfaz, conviene comprender su funcionamiento, que se trata de una matriz de cables donde unos envían corriente y otros la reciben. Sabiendo qué cable envía la señal y cuál la recibe, se identifica perfectamente el botón pulsado.
Los errores más comunes son, confundir los cables de envío (E) y recepción (R) de señal, colocar los diodos al revés e intentar leer entradas del segundo joystick con el driver del primero.
Conviene, para familiarizarse con la construcción del interfaz y la configuración del driver, avanzar poco a poco y no ponernos a tirar cables como locos. La primera prueba, para ver si somos capaces de identificar correctamente los cables y de instalar el driver debería ser configurar un solo botón, para lo que no nos hace falta ni siquiera diodos solo con unir un cable (E) y un cable (R), windows debería ser capaz de detectar la unión de dichos cables.
Respecto a PPjoy, sabemos que en un montaje de 30 entradas para un jugador, por ejemplo, cuatro han de ser para las direcciones y el resto para botones. Pues bien, una vez asignadas las direcciones seguimos disponiendo de 30 entradas para botones. es decir, si pulsamos en las propiedades del dispositivo de juego veremos como con cada pulsación aparece el detello del botón correspondiente, pero, curiosamente, cuando pulsamos también la palanca se moverá también la cruz en la dirección pulsada y, además, un botón. Esto origina el problema en Mame. Tendrémos que inhabilitar esos botones que parece funcionar a la vez que realizamos movimientos con la palanca. ¿Cómo se hace esto? Pues muy fácil, nos vamos al menú del PPjoy y navegamos por los menús del dispositivo en cuestión buscando los botones que han correspondido a los movimientos de los ejes y los inhabilitamos. Por ejemplo: 8, 10, 12 y 13; buscamos estos botones, pinchamos en la pestañita y navehgamos hasta el final de la lista y damos a "no funcion" (o algo así, es que no tengo el programa delante), y ya está.
Listamos a continuación los materiales que vamos a necestiar para realizar las soldaduras en el conector DB25 del puerto paralelo:
Como no tenía a nadie que me ayudase coloqué el conector DB25 en su funda , pero al revés, con las patillas de soldar hacia fuera.
Y coloqué un vaso encima para que no se moviera :
Una vez hecho esto y mientras se calentaba el soldador , corté trocitos pequeños de estaño , de este tamaño más o menos :
Bien , lo que haremos con estos pequeños trozos de estaño será colocarlos encima de una patilla que queramos soldar , le damos con el soldador por la parte inferior, como si calentaramos una mini-cacerola y se funde ocupando toda la curva de la patilla.
Entonces pelamos la punta de un cable , y para que no se dispersen los pelos los enrollamos todos bien. A continuación colocamos la punta del cable encima del estaño que fundimos en una patilla del conector DB25. Y con la punta del soldador le damos al cable que está en contacto con el estaño. Al pasar el calor por el cable hasta el estaño , el estaño se funde y con el poco empuje que le demos al cable se funde dentro del estaño quedando dentro de é como vemos a continuación:
Cuando tenemos terminado el conector, apuntamos los colores de los cables con su correspondiente pines de soldadura, y los unimos todos a una regleta. El resultante es algo así más o menos:
Este sistema es una realidad. Algunos marcianos de nuestra comunidad ya están disfrutando de él. Pero esto ha sido posible gracias a una larga investigación, pruebas, comentarios, etc, de muchos marcianos:
Que lo disfutéis...
Problema original, aquí.
Tras revisar el cableado y comprobar que estaba todo en orden, se descubrió que el fallo provenía de las interferencias generadas por la televisión que pasaba por encima de los cables del IPP. Para solucionarlo, basta con "apantallar" los cables con alguna clase de metal, una tubería de cobre, una manguera de ducha... también se puede buscar una ruta alternativa para los cables.
Bubu, Playjodete y Macarro
¡¡La comunidad marciana al servicio de la afición!!
Marcianitos declina cualquier responsabilidad derivada del uso que se haga de la información
que la web contiene.
Marcianitos no distribuye roms, no atenta contra la propiedad intelectual
y no tiene ánimo de lucro.
© 2002-2007 Prohibida la reproducción total o parcial sin permiso expreso del titular de los derechos
ni aun citando la procedencia.