Regresar   Foro de marcianitos.org > Construcción y restauración de máquinas recreativas > El panel de control

 
 
Old 12-dic-2006, 22:31   #1
D_Skywalk
Moderador
 
Avatar de D_Skywalk
OpenPPJoy, Proyecto de SL de driver de abierto por LPT

Buenas llevo unos meses preparando este pequeño proyectillo y ante las múltiples dudas que me van surgiendo, prefiero antes de marear mas a Macarro y [Mad], contaroslo y de camino ver las necesidades que hay


Proyecto:
Crear un driver totalmente opensource que permita usar el puerto paralelo para nuestros controles; en principio yo voy a trabajar en Linux, pero al ser el driver abierto, si alquien quiere portarlo a MSDOS, MacOS o Windows; es perfectamente libre de hacerlo

Mi Idea:
En principio mi objetivo va a ser hacer un keycoder por software, es decir un boton te da una tecla, pero seria luego perfectamente posible hacer un driver mejor para configurar Joys virtuales a partir de una configuracion dada al driver (ya sea con configuraciones base, o dando un archivo ini creado por una aplicacion visual :?).

El Debate:
Pues hay varios problemas, en principio he visto diferentes versiones con formas de leer el LPT y en todas lo que me he encontrado que seria mejor el concepto/politica que tenemos hoy dia de configuracion de los controles, explico:

Ahora mismo configuramos los botones por lineas, asi:
Code:
[	    ][    10    ][    11     ][    12    ][    13    ][    15    ]
[     2     ][1-ARRIB][1-ABAJO][1-DEREC][1-IZQUI][1-DISP1]
[     3     ][1-DISP2][1-DISP3][1-DISP4][1-DISP5][1-DISP6]
....
El problema es que se lee siguiendo las columnas y comprobando que bits hay activos en esa posicion, ej: Enviamos un barrido a la columna 10, esperamos unos segundos (el delay que me teneis que decir - ver abajo), luego miramos de nuevo la columna 10 y vemos que estan pulsados [1-ARRIBA] y [1-DISP2], pasamos a la siguiente columna 11 y repetimos...

Y asi con todas, mi idea seria configurar los controles por columnas:


Code:
[	    ][    10    ][    11     ][    12    ][    13    ][    15    ]
[     2     ][1-ARRIB][2-ARRIB][	    ][	    ][	    ]
[     3     ][1-ABAJO][1-ABAJO][	    ][	    ][	    ]
....
o algo mas complejo para cuatro jugadores seria:

Code:
[	    ][    10    ][    11     ][    12    ][    13    ][    15    ]
[     2     ][1-ARRIB][2-ARRIB][3-ARRIB][4-ARRIB][1-EXTR1]
[     3     ][1-ABAJO][2-ABAJO][3-ABAJO][4-ABAJO][1-EXTR2]
....
De esta forma tendríamos solo que mirar el numero de columnas/controles activos, y no tener que esperar mas de lo necesario, Con esta configuración podrías configurar cada via con controles virtuales de varias formas:
- Joy4 ejes + 8 botones (Joy4)
- Joy8 ejes + 4 botones (Joy8)
- 12 Botones (Btn12)
- 12 botones como teclas (Key12)
- Custom (Custom) - Usando algún configurador o ini para mandarle tu config
(no se me ocurren mas opciones xD)

Asi podriamos configurar el driver:
insmod arcade.lpt0=Joy8,Joy8,Joy4,Joy4,Btn12
Y direis 4 botones para 8 vias son pocos, pero es que con (12btn) podemos meterle los 4/8 mas que necesitemos, no se si e entiende la idea :?

Si solo quisieramos un simple panel de arcade clasico para 2 jugadores:
insmod arcade.lpt0=Joy4,Joy4
Y tendriamos 2 joystick virtuales de 4 ejes con 8 botones cada uno

Vuestra Ayuda:
- Se necesitan usuarios de linux con interfaces LPT para testear el driver.
- Posible versión MSDOS si hay interés y un colaborador con concimientos de llamadas a bios bajo DOS y cosas asi que pueda ayudarme

Por favor, debatid y aconsejadme que yo acabo de llegar a este mundillo (como quien dice) y no se las necesidades que hay

Un Saludo y seguro que entretodos creamos un util proyecto ^_^

WORK IN PROGRESS

Release publicas del proyecto:
- Driver Linux v0.4 Version de 12 canales - Sin configuracion.

Editado por D_Skywalk en 12-dic-2006 a las 22:44.
   
Old 12-dic-2006, 22:34   #2
D_Skywalk
Moderador
 
Avatar de D_Skywalk
La última nota importante del tema era la aproximación una nueva versión de OpenPPJoy que soportará la ultima versión del kernel de dapper y estoy intentando que soporte también el kernel de la Edgy, aunque por ahora se resiste :?

Code:
david@yavin:~/Desarrollo/proyectos/arcade-modulo$ make
make -C /lib/modules/2.6.17-10-generic/build SUBDIRS=/home/david/Desarrollo/proyectos/arcade-modulo modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.17-10-generic'
  CC [M]  /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o
  Building modules, stage 2.
  MODPOST
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x8)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0xc)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x10)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x14)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x18)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x1c)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x20)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x24)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x28)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x2c)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x30)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x34)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x38)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x3c)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x40)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x44)
WARNING: /home/david/Desarrollo/proyectos/arcade-modulo/arcade.o - Section mismatch: reference to .init.text: from .smp_locks after '' (at offset 0x48)
  CC      /home/david/Desarrollo/proyectos/arcade-modulo/arcade.mod.o
  LD [M]  /home/david/Desarrollo/proyectos/arcade-modulo/arcade.ko
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.17-10-generic'
david@yavin:~/Desarrollo/proyectos/arcade-modulo$
david@yavin:~/Desarrollo/proyectos/arcade-modulo$ make clean
make -C /lib/modules/2.6.17-10-generic/build M=/home/david/Desarrollo/proyectos/arcade-modulo clean
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.17-10-generic'
  CLEAN   /home/david/Desarrollo/proyectos/arcade-modulo/.tmp_versions
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.17-10-generic'
david@yavin:~/Desarrollo/proyectos/arcade-modulo$
Sino consigo solucionarlo pues será una versión para kernels 2.6.15 e inferiores, ok?

Un Saludo!

Editado por D_Skywalk en 12-dic-2006 a las 22:45.
   
Old 12-dic-2006, 22:51   #3
valgas
Usuario registrado
Tio como t lo estas currando no???? joe k makina chaval... aunque creo que te va a resultar algo complicado... pero somos muchos y entre mas de uno podras llevar este paso adelate
   
Old 13-dic-2006, 00:09   #4
logaran
Marciano
 
Avatar de logaran
Te apoyo con toda mi alma . Date cuenta que tengo Edgy instalado y el interface fabricado, jeje. Si te puedo echar una mano en algo para echarlo a andar en edgy me avisas, ok. Tengo poca experiencia en linux pero aprendo rapido y no me importa leerme el internet entero si hace falta.
   
Old 17-dic-2006, 00:02   #5
Mazer Stone
Marciano
 
Avatar de Mazer Stone
Joer Logaran, pues dentro de 32 años dedicados a leer unica y exclusivamente todas las paginas de internet que nos escriba tu hijo cuando te quedes ciego de mirar la pantalla del ordenador para contarnos la experiencia.
Yo la verdad que de Linux ni papa, totalmente pez pero cuando monte la recre me gustaria aprenderlo y usarlo, y como tambien voy a usar teclado por paralelo me interesaria mucho, animo Skywalk, eres un mostruo.
   
Old 17-dic-2006, 00:10   #6
Macarro
Administrador
 
Avatar de Macarro
Offtopic, creo que leí alguna vez que en los últimos 5 años se había escrito más (gracias a internet) que en toda la historia de la humanidad.
   
Old 18-dic-2006, 14:59   #7
D_Skywalk
Moderador
 
Avatar de D_Skywalk
Bueno, ya tengo la versión preparada, aunque en sistemas SMP da el aviso que véis arriba, en realidad no es ningún error sino un aviso de sintaxis sin más... ya lo arreglaré... algún día xDD

Lo importante es que ahora el modulo soporta multihilos (SMP), que por si alguno no lo sabe se encarga ya linux de gestionarlos, lo que da un driver aún más liviano en sistemas SMP y en todos los demás pues no he podido mejorarlo más... pero bueno quería tener visión de futuro

Ya en la siguiente versión va a venir una opción que permita configurar "al gusto" los controles, aunque requerirá mucho curro y no creo que salga antes del verano -aunque depende un poco de como vaya el tema del AGES-.

Un Saludop y gracias por el apoyo al proyecto, siempre anima a seguir ver que hay interés :*
   
Old 06-sep-2007, 16:40   #8
Abducido
Marciano
 
Avatar de Abducido
como instalo el driver tengo los controles por paralelo pero no viene ninguna parte como instalar este driver.
   
Old 09-ene-2008, 07:06   #9
GeNeRaToR
Usuario registrado
Hola a todos, no sé si está bien lo que publicaré ahora, pero al menos si sé que solucionaré el problema a más de alguno. Yo para usar una alfombra de baile via LPT, con un transformador de puerto de play station a lpt, (aunque lo que voy a escribir aqui es valido para cualquier joystick via lpt, no solo los de play station), solo comento que el mio es de playstation y es una alfombra de baile para dar fe de que esta alfombra corre 100% bien en linux, ubuntu 7.06, jugando en el stepmania, y en lo que sea, solo que para jugar en zsnes o mame, no es muy comoda xDDDD jajaja, pero vaya que si se puede xD.

En fin mucha palabrería, aquí los comandos que se deben ingresar por la terminal para poder tener el pad via lpt funcionando (debe ingresarse como root, por eso antepongo el comando sudo, para quienes no manejen mucho linux, entonces al ingresar la primera linea pedirá el password del user admin. no tengan miedo, ingresenlo xD, luego de la segunda linea en adelante no pedira mas el password, (recuerdese que en linux queda la password "autoingresada" en la memoria por unos 15 minutos, y luego se borra por si sola )).

sudo /sbin/rmmod lp
sudo /sbin/modprobe joydev0
sudo /sbin/modprobe gamecon map=0,8
sudo /bin/chmod 666 /dev/input/js?
sudo jstest /dev/input/js0

NOTA: se debe cambiar el "js0" por "js1", "js2", etc, ya que aqui lo dejo como js0 si es que es el unico joystick conectado al pc, si es que ya hubiese otro conectado y este fuese el segundo, se debe hacer este mismo procedimiento pero cambiando el "js0" por "js1" en las lineas 2da y 5ta.

Et voila :P funciona =)

Pasando al punto del proyecto que aqui se menciona, me parece muy bien y lamento no testearlo ya que no tengo tiempo ahora mismo, y pido disculpas si con este post se pase a llevar al desarrollador del mismo.

IMPORTANTE: Repito, a mi me funciona bajo LINUX, UBUNTU 7.06 actualizado al día, y con una alfombra de baile para playstation, conectada a través de un transformador de conexión playstation a lpt...
   
Old 09-ene-2008, 07:09   #10
GeNeRaToR
Usuario registrado
Olivde algo, la ultima linea no es necesaria, es solo para testear si todo va bien, como bien dice "jstest" =P.... y claro, para poder usar eso, es necesario que se tenga el programilla: "sudo aptitude install jstest" , con esa linea ingresada en la terminal podran instalar el programa, no pesa nada, asi es que les recomiendo bajarlo con ese comando se instala solo, y se corro como esta en la ultima linea de los comandos que postie anteriormente..


Saludos !!!