| |
| | OpenPPJoy, Proyecto de SL de driver de abierto por LPT | |
| |  | |  |
 | D_Skywalk | |  Dev, Gamming & friski friski xD
 Grupo: Moderadores generalesMensajes: 767 Location: Granada Status:  | |
| Buenas llevo unos dias preparando este pequeño proyectillo y ante las multiples dudas que me van surgiendo, prefiero antes de marear mas a Macarro y [Mad], contaros este proyectillo ademas ver las necesidades que hay  [ Encuentra la Version Actualizada de este articulo aquí | English Version Here! ] 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 tendriamos solo que mirar el numero de columnas/controles activos, y no tener que esperar mas de lo necesario, Con esta configuracion podrias 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 algun 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,Btn12Y 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,Joy4Y tendriamos 2 joystick virtuales de 4 ejes con 8 botones cada uno Vuestra Ayuda:Desafortunadamente yo no tengo Windows, asi que no puedo comprobar totalmente todas las funcionalidades del PPJoy y los diferentes conceptos que usa. En principio me gustaria saber 2 cosas el delay que tiene el PPjoy por defecto y como hace para configurar los botones de tu panel (supongo que sera una utilidad a parte). 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 PROGRESSRelease publicas del proyecto: - Driver Linux v0.4 Version de 12 canales - Sin configuracion. Modificado por D_Skywalk - 22/5/2006, 10:48 |
|  |
 | PLAYJODETE | |  The Patilla´s Master
 Grupo: Moderadores de subforosMensajes: 2014 Location: CÁCERES Status:  | |
| En el ppjoy configuras los botones con el driver, te sale por ejemplo : boton 1 , le das a scanear, pulsas un boton, por ejemplo el nº 29 en la interfaz y te asigna ese botón como el 1 en el pad de windows, lo mismo con los joysticks.
Saludos |
|  |
 | Macarro | |  El karma existe... por desgracia.
 Grupo: Moderadores generalesMensajes: 8657 Status:  | |
| Buenas, D_skywalker, ahora mismo no tengo instalado el driver ppjoy así que no te puedo decir exactamente que valores de delay trae por defecto. De todos modos, te hablo por lo que recuerdo: 1.- Como ya te dije, el ppjoy tiene los timmings configurables y si no recuerdo mal, eran tres valores diferentes. Tal y como está por defecto, a mi me iba perfectamente y desconozco los efectos de cambiar los valores, pero creo que es interesante dejar ese margen de configuración ya que tal vez ordenadores lentos no fuesen capaces de mantener una alta tasa de refresco. 2.- Sobre tu idea de dar un mapeo prefijado para los cables, creo que no es demasiada complicación programarlo para que sea genérico y se simplifica el trabajo a la hora de la construcción del hardware. 3.- Yo no tengo linux (ni se manejarlo  ), pero para cualquier prueba sobre windows, aquí me tienes, tengo el panel construido y totalmente funcional con ppjoy así que es muy sencillo hacer comparaciones. 4.- Otra cosa a la hora de la programación, es cierto que activando solo ciertas columnas, se reduce el tiempo del ciclo completo por lo que se podría aumentar la velocidad de refresco. Desconozco con qué frecuencia lee el ppjoy las entradas, pero tengo que decir que debe ser sobradamente alto porque ni con dos jugadores dándole a piñón a todos los botones posibles he notado nunca ninguna clase de retardo, perdida de pulsaciones o similar. Date cuenta de que los juegos a lo sumo irán a 60 fps así que con hacer un barrido completo a esa frecuencia debería ser suficiente... y me imagino que el lpt tendrá capacidad para mucho más. Un saludo y mucho ánimo con tu proyecto. Si lo sacas adelante, puedes alcanzar los cielos del tuning marciano al lado de ferix  MODIFICACIÓN --------------------------- 5.- En windows es especialmente interesante que el ppjoy haga funcionar nuestro panel como joystick ya que eso nos da una inmensa versatilidad al poder utilizar ppjoy junto a joytokey. Con ese programa podemos asignar cualquier tecla, combinación de las mismas, acciones del ratón, etc... al joystick y entonces podemos controlar cualquier juego y emulador con el joystick sin ningún problema. En linux y ms-dos no se si habrá alguna aplicación similar...
Modificado por Macarro - 7/11/2005, 12:22 |
|  |
 | jormc | | | Muy buenas! Ya veo que D_Skywalk se me ha adelantado (y me ha quitado un peso de encima! -> no hombre, es broma). Veamos, como algunos de vosotros sabéis, estoy en proceso de fabricación de mi panel, que irá por LPT. Mi idea era proponer esto mismo, un driver alternativo, open source y modificable, escalable para diferentes plataformas y "de batalla", pero claro, hasta que no tenga material para probarlo (entiéndase, mi futuro panel), no lo quería plantear. Resumiendo, que estoy dispuesto a ayudar a D_Skywalk en todo lo que me sea posible. Sólo pide y veremos qué sacamos de todo esto. He de suponer que estás trabjando con C++, al ser Linux tu base de desarrollo, o algo por el estilo. Mi planteamiento era hacerlo en ensamblador, pero... uffff!!! jejeje menuda tela, no? Pues nada, seguiré este hilo de cerca y aquí estoy, para lo que necesites. Si quieres, ponme al corriente del proyecto y veo en qué te echo una mano (he de reconocer que no sabía por dónde empezar...). Ahí estamos! Saludos y felicidades por la idea. Jordi PD: puedo hacer pruebas (o podré) tanto en Linux, como en MSDOS como en Windows... y si me apretáis, en mi pocketpc
Modificado por jormc - 7/11/2005, 13:34 | | | |
|  |
 | Macarro | |  El karma existe... por desgracia.
 Grupo: Moderadores generalesMensajes: 8657 Status:  | |
| Bueno, ya lo he mirado, D_Skywalker, esto es lo que pone: LPT switch row select delay: 3 µs Y si no recuerdo mal eso son 3 * 10^-6... es decir, una frecuencia de 0.3 Mhz, lee 333.333 veces por segundo, que es infinito comparado con los 60 fps a los que corren los juegos. Y en el peor de los casos, si se hubiesen equivocado (no creo) y fuese milisegundos, seguirían siendo 333 veces por segundo, sobradísimos también. El tema es que recuerdo que había varios tiempos y ahora no los encuentro. PD.- Sky, tío, deja la maca a un lado y saca ya adelante dantoine
Modificado por Macarro - 7/11/2005, 12:44 |
|  |
 | D_Skywalk | |  Dev, Gamming & friski friski xD
 Grupo: Moderadores generalesMensajes: 767 Location: Granada Status:  | |
| QUOTE (jormc @ 7/11/2005, 13:32) Resumiendo, que estoy dispuesto a ayudar a D_Skywalk en todo lo que me sea posible. Sólo pide y veremos qué sacamos de todo esto.
Bien! perfecto tonse, si quieres montamos en sf un espacio :? o subo aki el src  o montamos una pagina cutre en mi server... bueno ya veremos xD QUOTE He de suponer que estás trabjando con C++, al ser Linux tu base de desarrollo, o algo por el estilo. Mi planteamiento era hacerlo en ensamblador, pero... uffff!!! jejeje menuda tela, no? No, es C puro, un driver para el kernel lo que estoy haciendo De esta forma funciona en cualquier plataforma  QUOTE PD: puedo hacer pruebas (o podré) tanto en Linux, como en MSDOS como en Windows... y si me apretáis, en mi pocketpc  Bien, bien, eso hacia falta :* QUOTE LPT switch row select delay: 3 µs Ok, que pokito, el driver del mando de PSX se gasta unos 30 en escribir esperar y recibir :? QUOTE PD.- Sky, tío, deja la maca a un lado y saca ya adelante dantoine Buf, macarro no te pongas triste  Todos los dias dedico una horita a Dantoine y luego me gusta dedicar otra horita a mis "paranoias" variadas con la novia xDDD Un Saludo y tranquilo, basicamente ya tengo el driver andando, luego ya las pijadas las hacemos mas tranquis ;=) |
|  |
 | jormc | | | Ok!
Como veas. Yo en el pc del curro, donde estoy ahora, no tengo LPT (me caparon el portatil...). Si quieres pon el fuente y me lo miro. Nunca he traajado con el LPT, pero puede ser interesante.
Al llegar a casa puedo montar algo en un celeron que tengo por allí... con Linux, Windows y MSDOS...
Ah, por cierto, he visto por ahí simuladores de LPT en VB6, puede ser un buen comienzo para interpretar en Windows...
Estamos en contacto!
Jordi | | | |
|  |
 | Macarro | |  El karma existe... por desgracia.
 Grupo: Moderadores generalesMensajes: 8657 Status:  | |
| QUOTE (Macarro @ 7/11/2005, 12:43) Y si no recuerdo mal eso son 3 * 10^-6... es decir, una frecuencia de 0.3 Mhz, lee 333.333 veces por segundo, que es infinito comparado con los 60 fps a los que corren los juegos.
Me da a mi que en realidad va a ser 10^-9 y que el puerto paralelo va a 33 Mhz, diría que tiene más lógica... Y en cuanto a lo del pad de psx... pues no se, lo único que se me ocurre es que como los pads de psx codifican la información (y es mucha, porque además tenemos 4 ejes analógicos), puede que el tren de pulsos sea muy largo y además incorpore algún sistema para evitar errores.
Modificado por Macarro - 7/11/2005, 13:14 |
|  |
 | PLAYJODETE | |  The Patilla´s Master
 Grupo: Moderadores de subforosMensajes: 2014 Location: CÁCERES Status:  | |
| Por cierto una cosa, y hablando desde la mas completa ignorancia sobre el protocolo que utilize el lpt. No se podria hacer una interfaz más fácil ( ¿ más aún  ). Me explico, por ejemplo del pin 1 a 6 botones de contactos, y el resto sean masas ¿ no? Saludos |
|  |
 | Macarro | |  El karma existe... por desgracia.
 Grupo: Moderadores generalesMensajes: 8657 Status:  | |
| No, play:
Los diodos son necesarios en un método matricial, como en el hack de teclado, para evitar el ghosting. Cuando pulsas simultanemante tres de las esquinas de una submatriz, aparece ghosting en la cuarta esquina... Se podrían reducir el número de entradas y realizar una asignación fija de botones para evitarlo de otro modo... pero ya no tendríamos las maravillosas 60 entradas.
Un saludo. |
|  |
 | D_Skywalk | |  Dev, Gamming & friski friski xD
 Grupo: Moderadores generalesMensajes: 767 Location: Granada Status:  | |
| Bueno para esta tarde ya he terminado el "interface" de testeo del driver; lo he hecho en una plancha de corcho, de esas para memos, y he comprado 120 chinchetas hacen las veces de pulsadores  (Coste total del interface 2e xDD) Esta tarde os pongo las fotos y cuento finalmente como funciona el driver, como le dije a Macarro por ahora solo se acceder a los 8 primeros canales, asi que en principio en OpenPPjoy soportaria 40 conexiones  Un Saludo y deseadme suerte esta tarde  |
|  |
 | Macarro | |  El karma existe... por desgracia.
 Grupo: Moderadores generalesMensajes: 8657 Status:  | |
| Venga, tío... jajajaj, lo has hecho super rápido. Felicidades y gracias.
Intenta corregir luego en el driver el fallo del ppjoy, que los cables no estén asignados al player 1 o 2.
De todos modos, aunque no consiguieras acceder a las 20 entradas restantes, 40 entradas siguen siendo la leche y más que suficientes para la mayoría de los paneles de control. |
|  |
 | D_Skywalk | |  Dev, Gamming & friski friski xD
 Grupo: Moderadores generalesMensajes: 767 Location: Granada Status:  | |
| Esta visto que voy a terminar antes el driver que hacerme el interface para testearlo xDD Bien, ya tengo los ansiados 12 canales, asi que el curro basico ya esta terminado  Tambien tengo preparado una pequeña utilidad para MSDOS, que lee el lpt y nos da su estado (para testeo tb) la cosa seria ¿que necesitais los usuarios de msdos? ¿un key-encoder? Lo digo sobretodo por que no existen drivers para msdos :? Un Saludo y en cuanto testee ya todo el paquete lo cuelgo por ahi con los srcs  |
|  |
 | Macarro | |  El karma existe... por desgracia.
 Grupo: Moderadores generalesMensajes: 8657 Status:  | |
| Supongo que para ms-dos necesitaran que el cacharro emule al teclado y que se pueda asignar cualquier tecla a cualquier botón. De ese modo se tendría la máxima compatibilidad. |
|  |
 | D_Skywalk | |  Dev, Gamming & friski friski xD
 Grupo: Moderadores generalesMensajes: 767 Location: Granada Status:  | |
| La cuestion es: ¿Habra suficientes "key-codes" para 60 pulsadores distintos? un teclado tiene 104 teclas sino recuerdo mal... pero ¿seran todas legibles para los juegos? Un Saludo
Modificado por D_Skywalk - 11/11/2005, 11:14 |
|  |
| 51 respuesta(s) desde el 7/11/2005, 13:07 |
| | | | |
|