Ver la versión completa : Mini peticion para programadores.
Hola buenos días; sabeis de sobra que nunca hago peticiones de este tipo (si exceptuamos el la brasa que doy con fenix), pero se me ha ocurrido una cosa que podría resultar basante util, y es un pequeño programa que tras ejecutarlo se quede residente en la memoria de las gp2x F200 y que emule el click de la F100 mediante la pulsación de las cuatro direcciones del pad. Esto haría que proyectos antiguos y/o abandonados como el quake2x de la F100 pudiesen ser jugables en la F200.
No tengo ni idea de lo dificil que resultaría hacer algo así, a botepronto me parece sencillo, pero no lo suficiente como para hacerlo por mi cuenta.
Muchas gracias.
Akui to Higeki
24/11/2007, 20:38
Por lo que se dijo del funcionamiento del pad en su día, me parece que no es posible, porque cuando pulsas las cuatro teclas a la vez, no devuelve la pulsación de esas cuatro teclas, sino que devuelve una dirección rara (abajo a la izquierda, o arriba a la derecha, o a saber, que no tengo una F200). Esto era así para ahorrar conexiones al chip o algo así, no recuerdo muy bien quien lo explicó (sorry ^^). Viene a ser como cuando pulsas varias teclas en un teclado de PC, que devuelve otra tecla distinta.
Te respondo con una de las novedades del mame:
El botón PUSH se emula en la F200 pulsando simultaneamente Arriba+Abajo+Izquierda+Derecha.
Pienso que eso tendrian que implementarlo en el firm, no?
Hombre para bien ser si, pero conociendo a GPH igual nos tienen 3 meses sin firm nuevo para la F200
En el emulador de mame lo habrán añadido en el filtrado de lectura del pad. Hacer un programa que haga lo que dices creo que seria complicado sinó imposible. Además que los programas que leen directamente del dispositivo de entrada no les haria ningún efecto.
Puede ser, si franxis nos confirmase como lo ha hecho podríamos ssalir de dudas :)
pues probablemente como lo ha hecho BuD en el hilo ese que estubieron discutiendo sobre lo que pasaba cuando se pulsaban 3 botones distintos, y programó un filtrado que te devolvia la posición "más correcta".
pues probablemente como lo ha hecho BuD en el hilo ese que estubieron discutiendo sobre lo que pasaba cuando se pulsaban 3 botones distintos, y programó un filtrado que te devolvia la posición "más correcta".
Vale que se pueda filtrar los controles, pero lo que pide Chipan es inviable, nadie puede tener idea de cuando un programa va a leer los controles y a consecuencia filtrarlos, y aunque el programa background lo vaya haciendo regularmente, siempre puede darse alguna lectura erronea por leer cada demasiado tiempo o consumir demasiada CPU. Lo mejor seria que por cada interrupcion del joystick, se filtraran los controles y crear asi el boton del click, pero eso es cuestion de driver.
No seais tan negativos hombre, lo que pide chipan no es imposible ni mucho menos, ademas seria bastante sencillo. La mejor manera de hacerlo seria con un modulo de kernel que fuera comprobando esa condicion y al detectarla generara el evento de click de la GP2X F100.El problema es que no tengo ni gp2xF200 ni intencion de pillarmela xD
No seais tan negativos hombre, lo que pide chipan no es imposible ni mucho menos, ademas seria bastante sencillo. La mejor manera de hacerlo seria con un modulo de kernel que fuera comprobando esa condicion y al detectarla generara el evento de click de la GP2X F100.El problema es que no tengo ni gp2xF200 ni intencion de pillarmela xD
Si has programado algo para GP2X y has usado el /dev/GPIO para leer los controles (como lo hacen casi todas las aplicaciones) te darias cuenta que no es tan tribial como lo que dices...
Si tuvieramos acceso al código del módulo del kernel que se encarga del GPIO no sería muy difícil modificarlo para que al pulsar las 4 direcciones generase ese evento en /dev/gpio
No seais tan negativos hombre, lo que pide chipan no es imposible ni mucho menos, ademas seria bastante sencillo. La mejor manera de hacerlo seria con un modulo de kernel que fuera comprobando esa condicion y al detectarla generara el evento de click de la GP2X F100.El problema es que no tengo ni gp2xF200 ni intencion de pillarmela xD
Un modulo en el kernel no dejaria de ser un programa para ser un driver?
Si has programado algo para GP2X y has usado el /dev/GPIO para leer los controles (como lo hacen casi todas las aplicaciones) te darias cuenta que no es tan tribial como lo que dices...
He programado algo para gp2x y aplicaciones de kernel y se que no es tan trivial como que se lo haga cada uno en su codigo... Pero aun asi lo veo sencillo. Un fichero en /dev esta vinculado a un modulo de kernel que se encarga de el. Tendriamos que coger el /dev/GPIO y desvincularlo de su modulo, cargar nuestro modulo y vincular /dev/GPIO a nuestro modulo para que se encargara el de la lectura/escritura en ese fichero.
Si tuvieramos acceso al código del módulo del kernel que se encarga del GPIO no sería muy difícil modificarlo para que al pulsar las 4 direcciones generase ese evento en /dev/gpio
Cierto, en ese caso seria añadir un IF y recompilar :)
Un modulo en el kernel no dejaria de ser un programa para ser un driver?
Seria un "driver" si, pero un driver sigue siendo un programa.
Eso os pasa por usar el GPIO.
Apuesto lo que querais que usando cualquier minimal y los registros hw de la consola se puede leer directamente las 4 pulsaciones, y simular el PUSH mas o menos así:
int joystick_value = gp2x_joystick_read();
if ((joystick_value & (UP|DOWN|LEFT|RIGHT)) == (UP|DOWN|LEFT|RIGHT)) joystick_value |= PUSH;
/* ... */
Eso os pasa por usar el GPIO.
Apuesto lo que querais que usando cualquier minimal y los registros hw de la consola se puede leer directamente las 4 pulsaciones, y simular el PUSH mas o menos así:
int joystick_value = gp2x_joystick_read();
if ((joystick_value & (UP|DOWN|LEFT|RIGHT)) == (UP|DOWN|LEFT|RIGHT)) joystick_value |= PUSH;
/* ... */
Usando /dev/GPIO tambien se puede simular el boton de PUSH, incluso con SDL. Pero hay que modificar el codigo fuente de los programas. Lo que se comentaba aqui era hacer una modificación del kernel o de lo que fuese para que los programas "antiguos" no adaptados por sus autores funcionasen con ese comportamiento.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.