Pad de la MegaDrive en Linux (y ya que estamos, en Windows)

Filed under Config. S.O., Hardware, Juegos, Kubuntu 7.04 AMD64

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

6 Comments

  1. Posted 22/05/2008 at 08:44 | Permalink

    Hola!
    Alguien tiene idea de como hacer esto para un joystick de Virtualboy? en windows el driver de psx venia con estos en la solapa Snes, pero en linux no consigo hacerlo andar
    saludos y gracias

  2. Posted 22/05/2008 at 18:54 | Permalink

    Gomalopa, he leído en la Wikipedia que la interfaz de Virtual Boy usa el protocolo de la NES. ¿Cómo has conectado el mando al puerto paralelo para hacerlo funcionar en Windows? La construcción de la interfaz adecuada se puede sacar comparando este esquema de la documentación de DirectPad Pro con la documentación de Linux Joystick parport drivers.

    Si es como imagino, para hacer funcionar tu mando de Virtual Boy deberías seguir los mismos pasos que para un mando de la NES, es decir, usando el driver gamecon (en lugar del db9 que he usado para el pad de mi MegaDrive). Como dicen en el texto de antes, y suponiendo que conectes un único mando al puerto paralelo LPT0, sería:

    Para la sesión actual:
    $ sudo modprobe -r lp
    $ sudo modprobe gamecon gc=0,2

    Para que se reconozca automáticamente en cada inicio (editando como superusuario /etc/modules):
    #lp
    gamecon gc=0,2

    Cuenta por aquí si te funciona, porque al fin y al cabo esto es teoría que no he probado. Y me pica la curiosidad ;)

  3. Posted 16/06/2008 at 23:41 | Permalink

    che loko todo bien
    bueno
    ahora intento hacer el adaptador apra conectar os pads de megadrive
    ya qeu vistes.. osea.. para viciar al emulador, o al mk y algunos juegos es muy comodo jeejs.. no me digas por que lo elijo
    pero hice el de play y me re funk
    pero con el de megadrive no se que voya ahcer
    yo al principio habia hecho el de emulatronia y no me funko, y depsuyes hice el ntpropad y tampoco jejes, osea… capaz no lo spea configurar o no se ke lo ke te mquueria preg si los diodos pueden infligir en eso, porque el primero lo hcie con los que decia el dseg no, pero era el de emulatronia y el de ntpad no dice que diodos son ejejs, y bue
    muchas gracias cualquyier cosa amndame un mail o agregame al msn lsito, cuidate, por un vicio mejor..

    axel y malen metal heart

  4. eibbel75
    Posted 22/08/2008 at 18:52 | Permalink

    Hola, he estado haciendo el adaptador siguiendo el esquema que propones y con los conectores DB9 y DB25 a RJ-45 para ahorrarme soldar, pero existe una limitación: el cable de red UTP sólo tiene 8 cables y en el esquema se necesitan 9, ¿cómo lo solucionarias sin hacer una chapuza?

  5. Posted 04/09/2008 at 13:37 | Permalink

    ¡¡¡¡Madre mía, qué metedura de pata!!! Tienes toda la razón eibbel75, el esquema que propongo no es realizable. Eso me pasa por no haberlo probado yo mismo (cuando descubrí esa solución ya tenía mi adaptador a base de cables soldados y no caí en que el RJ-45 tenía un cable menos de los requeridos).

    Todo lo que se me ocurre es soldar el cable que falta de mala manera… Nada, que sólo se me ocurren chapuzas.

    Lo siento muchísimo, en serio :(

  6. eibbel75
    Posted 05/09/2008 at 12:37 | Permalink

    Bueno no te preocupes, al final lo solucioné añadiendo por fuera el noveno cable con un pin (extraido de un cable de impresora) en cada punta, en definitiva la chapucilla de la que hablamos pero funciona que es lo que cuenta. Por cierto que me atreví a soldar y ahora tengo 2 por si acaso. Ese mando es el mejor para jugar al Street Fighter con el MAME.

    Gracias

One Trackback

  1. […] y QJoyPad son dos programas que remapean los botones del joystick/mando (pad de la MegaDrive en mi caso) a teclas del teclado para dar soporte de joystick a programas que no disponen de soporte nativo de […]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*