27 de Agosto, 2006

Haciendo funcionar el Gamepad en Linux (y dos)

Estaba aburrido esta tarde y me he animado a echar algunas partidas a algún jueguecillo de esos que ya no se hacen, con el emulador adecuado. Ya que me pongo, mejor tener una experiencia completa y usar el gamepad, que para eso lo tengo :).

Mi gamepad
Mi gamepad económico ;)

Pues no ha sido tan fácil, porque mis cacharreos con estos dispositivos fueron hace tiempo y con el kernel de Linux de la rama 2.4, y no hay mucha documentación sobre el tema :(. Ahora se trabaja con la rama 2.6 y hay algunos cambios, siendo el más significativo la entrada de los drivers ALSA para el sonido, mucho más modernos que los que se usaban antes.

Este cambio es importante, porque recordemos que mi joystick es un gamepad (3 ejes y 4 botones), que funciona a través de mi tarjeta Sound Blaster PCI, que tiene gameport, así que el cambio en el driver nos afecta directamente.

Todo lo que describía en el documento anterior tiene validez, solo cambia qué ficheros de configuración hay que tocar y qué parámetros hay que pasar al driver de ALSA.

Los módulos que hay que cargar con modprobe no cambian, aunque en la página de ALSA nos puede despistar que digan que sus drivers no dan soporte para los joysticks. En realidad esto ya ocurría antes, por lo que hay que indicar en /etc/modules que se carguen los siguientes módulos para que trabajen con el de la tarjeta de sonido (que se carga automáticamente por udev):

# soporte para el gamepad vía gameport
gameport
joydev
analog

El siguiente paso sí es diferente, y puede variar dependiendo de la distribución (no lo sé). En Ubuntu editamos /etc/modprobe.d/alsa-base:

options snd_ens1371 joystick_port=1

En los drivers de ALSA, los nombres de los módulos tienen la forma snd_*, donde he marcado en negrita el nombre de mi tarjeta, o más bien el nombre del módulo que la gestiona. Esto puede cambiar en otros dispositivos, para eso recomiendo leer la documentación que vienen con el fuente del kernel (joystick.txt). Una vez indicamos que active el soporte para el joystick, todo funcionará perfectamente.

Reiniciamos, porque el módulo de ALSA está en memoria y puede ser complicado descargarlo porque estará en uso, y comprobamos el soporte:

$ dmesg | grep -i joy
[17179594.976000] input: Analog 3-axis 4-button joystick as /class/input/input3
ZSNES con FIFA 97
El emulador detecta el dispositivo correctamente, ¡a por el FIFA '97!

Ahora solo queda jugar :). En el caso de zsnes los joysticks se gestionan como el teclado, y tendremos que configurar qué hace cada botón, incluyendo el pad.

Anotación por Juan J. Martínez, clasificada en: linux.

Hay 8 comentarios

Gravatar

Ahora solo te falta un emulador de GameCube, el juego de fútbol del Mario y mucha, mucha práctica. Para el próximo torneo seguro que vienes más entrenado ;).

por r0sk, en 2006-08-27 21:50:38

Gravatar

Curiosa coincidencia... tengo la misma marca de gamepad aunque creo que mi modelo es un poco anterior (o inferior) :D Casi me entran ganas de desempolvarlo y a ver si lo hago funcionar en linux (aunque mi conex es por la placa base)

Salu2! y enhorabuena por tu blog

por Ed, en 2006-08-27 22:01:57

Gravatar

He probado varios gamepads USB de distintas marcas y todos funcionan a la primera en Linux, sin hacer nada. Una maravilla!

por Moises, en 2006-08-27 22:32:07

Gravatar

Los dispositivos USB son más fáciles de utilizar, no requieren de la intervención del usuario como los gameport de las tarjetas de sonido :(

Hombre, el gamepad vía gameport también es más barato, que no todo iba a ser malo :D

por Juanjo, en 2006-08-27 22:50:01

Gravatar

Ahora solo te falta un emulador de GameCube, el juego de fútbol del Mario y mucha, mucha práctica. Para el próximo torneo seguro que vienes más entrenado ;).

http://gcube.exemu.net <- ese rula en sistemas unix, pero hace falta un maquinon.

De todas formas, no teneis nada que hacer... pobres mortales... :D

por smash football master, en 2006-08-28 09:28:54

Gravatar

Uhm, zsnes tiene multijugador en red. No sé cómo estarán las cosas si tus contrincantes pueden practicar en casa :P

Yo no había jugado nunca y, claro, así es muy difícil ser mastah! ;)

por Juanjo, en 2006-08-28 10:44:00

Gravatar

Tengo un pad marca MS olvidado y sin uso en casa, lo probaré en la computadora de mi hijo -es el que más juega-, gracias por la explicación.

Saludos.

por RIVE, en 2006-08-28 20:58:35

Gravatar

Ahora porque estoy estudiando, pero ese multijugador por Internet hay que probarlo :D

Algún día montaremos un pique improvisado...

por Surgeon, en 2006-08-29 23:09:12

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: