Zona Arcade. Construye, Restaura y Decora tu Máquina Arcade y Pinball.

Tutorial: OpenPPjoy - Usa y configura tus mandos arcade LPT bajo Linux. Ayudas compilación y uso

« Older   Newer »
  Share  
view post Posted on 9/3/2011, 15:40     +1   -1
Avatar

Restless in Peace

Group:
Administrator
Posts:
42,770
Location:
Alcobendas (Madrid)

Status:


Tutorial: OpenPPjoy - Usa y configura tus mandos arcade LPT bajo Linux. Ayudas para compilación y uso

- Introducción

“OpenPPjoy” es un proyecto open source encabezado por David Colmenero. Se trata de un módulo para poder implementar nuestros joystick arcade conectados al puerto paralelo en máquinas arcade con Linux. El fundamento del interface es el mismo que el del IPP para Windows, salvando la diferencia que en el driver de Linux de momento no es configurable 100% y hay que ajustarse a unos patrones preestablecidos.

En este documento expondré como compilar el módulo e instalarlo, y explicaré cómo van pre-configurados los conductores del cable db25 para poder realizar nuestro IPP y así poder cablear adecuadamente nuestros joysticks.

Las pruebas de OpenPPjoy las he realizado compilando el módulo versión r16 del source con la distribución Ubuntu 10.04 (lucid) y kernel 2.6.32-28-generic (arquitectura i386).

El paquete de distribución de OpenPPjoy dispone de una ayuda en forma de "leeme.txt", sin la que no hubiera podido poner en marcha el módulo (para nada soy un experto en estas cosas) y la cual voy a tomar como base, aclarándolo aún más en la medida de lo que pueda.

El código fuente se ha modificado hace relativamente poco y actualmente el módulo es funcional para las distribuciones de ubuntu 10.04 y 10.10.


- OpenPPjoy - Usa y configura tus mandos arcade LPT bajo Linux. Ayudas para compilación y uso de OpenPPJoy

Vayamos por partes.


El hardware

La construcción del IPP es la misma que se expone en este hilo enfocado para su implementación en Windows: Tutorial: Construcción sencilla de interface de puerto paralelo (IPP) para panel de control arcade (Pincha). La única diferencia para implementarlo en Linux es que los botones no se asignan arbitrariamente a la hora de asignar contactos en el IPP, sino que los botones de los joysticks ya están pre-establecidos.

Si echamos un vistazo a los pines del db25, las conexiones se consiguen cruzando los pines de estado (10, 11, 12, 13 y 15) con los pines de datos (2,3,4,5,6,7,8,9, 1,14, 16,17).

image

El módulo tiene posibilidad de configurar hasta un total de 5 dispositivos conectados a la vez en un mismo puerto paralelo, a elegir joysticks de 2 axis con 8 botones y/o hasta dos configuraciones preestablecidas de teclado.

Las conexiones de cada dispositivo están asignadas a un pin de estado (pines 10,11,12,13 y 15). Cada uno de los botones del dispositivo se corresponden con cada uno de los pines de datos (2,3,4,5,6,7,8,9, 1,14, 16,17). Así, las conexiones del primer joystick que podremos configurar las sacaremos del primer pin de estado, el nº10; la del segundo joystick del nº11 y así sucesivamente con los pines de estado.

Cruzando un pin de estado con los pines de datos tendremos hasta 12 contactos para un mismo dispositivo. En el caso de joysticks virtuales, los 4 primeros corresponden a la cruceta del joystick y el resto a los botones. Si configuramos una distribución virtual de teclado, tendremos pulsaciones de teclas pre-establecidas. Todo queda reflejado en la siguiente tabla.

image

Distribución de las conexiones en el db25 en relación con la colocación del diodo. Quedan como sigue (prestar especial atención a la orientación del diodo):

image


- Compilación del código fuente

Vamos a por el módulo, lo mejor es compilarlo en nuestro sistema. Puedes bajarte el código fuente (source) de la página del proyecto. https://code.google.com/p/openppjoy/. De todas formas, os dejo en este link, el paquete con la versión r16:

OpenPPJoy-r16: www.megaupload.com/?d=K92ASOZ9

Nota: Los comandos expuestos a continuación son para Debian/Ubuntu.

Para compilar el módulo, pon todos los archivos en una carpeta llamada "arcade-modulo".

image

Luego abre una ventana del terminal y navega hasta donde has puesto la carpeta en tu sistema de archivos (puedes pulsar CTRL+ALT+T para abrir el terminal).

Una vez allí y para compilar el módulo, primero necesitas las cabeceras (HEADERS) del kernel que estas usando actualmente. Por lo general el código fuente del Kernel se descarga y se va actualizando en el propio sistema y no os hará falta este paso, pero, por si acaso, el siguiente comando es para bajarlo e instalarlo:

sudo apt-get install linux-headers-`uname -r`

Una vez instaladas las cabeceras (o el mismo source completo, si lo deseas), hacemos:

make

Si todo ha terminado bien, tendríamos que tener un “arcade.ko” en el directorio donde compilaste el módulo.

image

Antes de continuar, y debido a que el módulo se puede cargar con 1, 2, 3, 4, ó 5 dispositivos a elegir entre joysticks y/o hasta dos configuraciones de teclado, vamos a explicar cómo se configura a través del argumento: "map=".

El módulo se carga en el sistema con el comando "insmod". Su uso es:

insmod archivo [argumentos]

El archivo del módulo es:

"arcade.ko"

Los argumentos se hacen con la siguiente sintaxis:

map=p , j1 , j2 , j3, j4 , j5

p es el nº puerto LPT al que tenemos conectado el interfaz.

Normalmente tendremos un único LPT y su valor será 0. Separados por comas, le diremos los valores (1, 2 ó 3) de j1, j2, j3, j4, j5, que son los 5 dispositivos a cargar de entre los 3 preconfigurados.

Valor - Dispositivo:

1 - joystick de 8 botones
2 - Distribución de teclado 1 (ver arriba)
3 - Distribución de teclado 2 (ver arriba)

Unos ejemplos para aclarar esto, que es muy sencillo:

Para cargar el módulo con un joystick de 8 botones conectado en la línea 10 de estado:

sudo insmod arcade.ko map=0,1

Para cargar el módulo con 5 joysticks de 8 botones conectados a los pines de estado 10,11, 12, 13, 15:

sudo insmod arcade.ko map=0,1,1,1,1,1

Para cargar el módulo con 4 joysticks de 8 botones conectados a los pines de estado 10, 11, 12, 13 y una de las configuraciones básicas de teclado en el pin 15:

sudo insmod arcade.ko map=0,1,1,1,1,2


- Otros comandos y ayudas de utilidad

Si al cargar el módulo os reporta el error de que el puerto está ocupado: “insmod: error inserting 'arcade.ko': -1 Device or resource busy”. podremos liberarlo descargando el módulo "lp" con el siguiente comando:

sudo rmmod lp

Para ver si tenemos el módulo correctamente cargado haremos:

lsmod | grep arcade

Puedes descargar el módulo haciendo:

sudo rmmod arcade

El dispositivo de joystick queda registrado como otro cualquiera en tu sistema, en ubuntu están en: “/dev/input/js0 js1 js2...” tantos como hayamos configurado.

Puedes testear el control y sus botones con la utilidad “jstest” (tendrás que descargártela antes) haciendo:

jstest /dev/input/js0



¡Y hasta aquí todo! ¡Linuxeros, a disfrutar de esta interfaz!


Enlaces:

Página del proyecto y sus últimas revisiones: https://code.google.com/p/openppjoy/source/list

Blog personal de David Colmenero: http://david.dantoine.org/


- Por pablo33 -
 
Web  Top
view post Posted on 9/3/2011, 16:20     +1   -1
Avatar


Group:
Member
Posts:
447
Location:
Cedeira (A Coruña)

Status:


Muy bueno para el que utilice Linux en su recre!!!

Un saludo!!
 
Top
Igorallen
view post Posted on 9/3/2011, 20:11     +1   -1




Estás hecho un máquina Pablo33, eres una fábrica de hacer tutoriales! :lol:
Enhorabuena compañero por este tuto también, cómo te los curras tronco...

Saludos!!!
 
Top
kulebra
view post Posted on 9/3/2011, 20:16     +1   -1




Es cierto, como dice igorallen el usuario pablo33 es un maquina, va a tutorial por semana, mientras que otros llevamos aqui meses o años y somos unos cutres :\ gracias pablo33 por colaborar con tu inmensa sabiduria ^^
 
Top
view post Posted on 10/3/2011, 02:54     +1   -1
Avatar


Group:
Member
Posts:
401
Location:
Concepcion, Chile

Status:


Excelente, me encanta el tema de linux, lastima que falte tanto soporte para juegos
 
Top
primemind
view post Posted on 10/3/2011, 23:00     +1   -1




muy bueno.
coincido con los compañeros, estas hecho un maquina con los tutos.
 
Top
galaga
view post Posted on 11/3/2011, 14:17     +1   -1




Bien hecho pablo 33 ....Saludos
 
Top
view post Posted on 12/3/2011, 12:11     +1   -1
Avatar


Group:
Member
Posts:
2,025
Location:
Sevilla

Status:


:lol: gracias a vosotros, para mí es un placer los ratos que hecho conectado al foro. :amor:

QUOTE (kulebra @ 9/3/2011, 20:16)
Es cierto, como dice igorallen el usuario pablo33 es un maquina, va a tutorial por semana, mientras que otros llevamos aqui meses o años y somos unos cutres :\ gracias pablo33 por colaborar con tu inmensa sabiduria ^^

:blink: :lol: :lol: de inmensa sabiduría, nada :lol: aún me considero un novato en estos temas. Lo que pasa es que tengo la mala costumbre de apuntarlo todo. Pienso que todos ayudamos desde el momento que abrimos un hilo y comenzamos a contar nuestra aventura.

QUOTE (kiltrocrazy @ 10/3/2011, 02:54)
Excelente, me encanta el tema de linux, lastima que falte tanto soporte para juegos

Cierto, es una pena. Aunque eso está cambiando, pero va para largo. Los juegos comerciales no suelen ofrecer versiones para linux, pues no hay suficientes usuarios para que les salga rentable una distribución. Aún así, para un usuario medio hay juegos y aplicaciones para todo. Yo uso windows nada más que para las competiciones de Zona Arcade :lol:

Y gracias a Galaga por darme el módulo y ofrecerme la pista para poder usarlo. Sin su luz esto no me hubiera sido posible :ideal:
 
Top
no_vato
view post Posted on 11/2/2014, 20:54     +1   -1




Hola, me parece un buenisimo trabajo, yo uso ubuntu 12.04, ¿esta seria la aplicación que tengo que utilizar para configurar mi ipp? y ¿alguien tiene el enlace de descarga del paquete? ya que el enlace de megaupload no va. Gracias.
 
Top
view post Posted on 5/5/2014, 19:44     +1   -1
Avatar


Group:
Member
Posts:
2,025
Location:
Sevilla

Status:


Hola no_vato, acabo de ver este post, quizás sea un poco tarde, pero para los que vengan después.
No creo que encuentres el código compilado en un paquete .deb, tendrás que descargarte el código fuente desde la página del proyecto https://code.google.com/p/openppjoy/source/list

Cuando abras la página, vete a source>browse>trunk>arcade-modulo

allí encontrarás el código de los archivos, Makefile, arcade.c y arcade.h, lo puedes copiar como texto plano que es y pegarlo en un nuevo documento de texto usando un editor de textos (gedit, por ejemplo), dale a "guardar como" y respeta el nombre de los archivos. Luego sigue el tuto desde el principio.
(en doc, encontrarás el leeme.txt)


Saludos.!
 
Top
9 replies since 9/3/2011, 15:40   2733 views
  Share