Hay que ver lo importante que es tener una buena documentación. Me ha costado bastante encontrar la forma de hacer funcionar el mando de la MegaDrive (o SEGA Genesis en América) bajo Linux. Al final resulta que sólo necesito dar dos pasos: crear un sencillo adaptador pad-puerto paralelo y cargar un driver. No hay que instalar nada porque el driver ya está incluido en el Kernel de Linux. Es lo que pasa con Linux: que hace un montón de cosas, pero no se explica bien: en Internet he encontrado documentación técnica para programadores y, tras mucho buscar, respuestas en foros de casos parecidos (gente que quiere conectar mandos de la SNES o de la PSX) que me han ido allanando el camino. Si Linux tuviera un manual a nivel de usuario con todas sus posibilidades explicadas para el usuario final, la experiencia del usuario mejoraría un montón.
Hardware: creando el adaptador
Para usar el mando de la MegaDrive en Linux hay que crear un adaptador en el que se conecte el pad de la consola (a través de un conector DB9 macho) y que se enchufe al ordenador a través del puerto de impresora (el puerto paralelo. Se necesita pues un conector DB25 macho) de la siguiente manera (todos los conectores tienen sus pines numerados en un orden estandarizado):
DB9 macho___DB25 macho
1___2
2___3
3___4
4___5
5___1
6___6
7___14
8___18
9___7
Por lo tanto, para construir este adaptador (que llamaremos «interfaz Linux») no se necesita ningún diodo, resistencia ni hacer ningún puente: es una «redirección de pines» sin más. Incluso es posible hacerla sin tener que soldar nada, si se compra un DB9 macho y un DB25 macho universal que en su parte trasera en lugar de cable tienen un conector para RJ-45 (el de los cables de red normales y corrientes). Así, usando un cable de red normal (no cruzado y con cabezas RJ-45) podemos conectar el DB9 macho con el DB25 macho. Y como estos conectores, en su interior, se conectan «pinchándolos«, por un mecanismo de presión, no es necesario soldar nada. Menudo despiste, con este método sólo se podrían hacer 8 de las 9 conexiones requeridas…
Una limitación de esta interfaz Linux es que únicamente permite conectar un pad al ordenador.
Software: cargando el driver
Para que Linux reconozca el joystick en la sesión actual, escribo en la terminal:
$ sudo modprobe -r lp
$ sudo modprobe db9 dev=0,3
La primera línea deshabilita la impresión en el puerto paralelo, y la segunda carga el driver db9 con los parámetros 0,3, que significan que en el puerto LPT0 (los ordenadores normales no tienen más de uno, por lo que el primero, el 0, es el habitual) se va a conectar la interfaz del mando de la MegaDrive de 3 botones +1 (el botón Start). Para mandos de 5+1 botones (creo que nunca he visto uno de estos…) habría que poner dev=0,5
, y para mandos 6+1 lo correcto sería dev=0,6
.
Si ahora me voy a Menu K > Configuración del sistema: Teclado y ratón > Joystick se detecta el pad como un dispositivo «Genesis pad (/dev/input/js0)«, y se puede probar para ver que todos los botones funcionan correctamente.
Pero este ajuste habría que hacerlo cada vez que se inicia Kubuntu. Para que Linux reconozca el mando automáticamente en cada inicio, edito como superusuario /etc/modules comentando el módulo lp y añadiendo en una nueva línea «db9 dev=0,3«:
#lp
db9 dev=0,3
Cómo lo hice funcionar en Windows
Aunque este es mi blog sobre Kubuntu, puede que alguien con Windows llegue hasta aquí. Además, así me sirve para contar mi batallita con las interfaces del pad, porque la interfaz Linux es la tercera que hago…
Hace unos años logré que el mando de mi querida MegaDrive funcionara en Windows. Creé una interfaz (la llamaré «interfaz NTPad XP») siguiendo este esquema. Bueno, en realidad en un primer momento seguí estas instrucciones de Emulatronia y luego tuve que rehacerla como el esquema de la interfaz NTPad XP, porque no funcionaba con mi puerto paralelo (de impresora) moderno. Al principio probé a usar los drivers NTPad XP, pero es un proyecto abandonado hace mucho, así que, al final, en mi Windows XP logré hacer funcionar mi pad gracias a PPJoy, con la interfaz NTPad XP (hay otras posibles, y de ellas la interfaz Linux es la más sencilla de hacer si sólo se va a conectar un pad al ordenador. La documentación de las interfaces soportadas –para todo tipo de mandos– es MUY completa. De hecho, fue allí donde entendí/encontré la interfaz Linux. Se pueden ver desde la web de PPJoy en Supported interfaces).
Enlaces