ZXUnoPS2 en arduino, fuentes y binario.
Re: ZXUnoPS2 en arduino, fuentes y binario.
Yo tambien he estado probando un poco. Ahora las teclas de funcion van perfectamente.
Tambien he actulaizado la BIOS a 0.63 y ya se puede acceder a la configuracion, menues, etc al momento de alimentar el zxuno.
Muchas gracias!
Tambien he actulaizado la BIOS a 0.63 y ya se puede acceder a la configuracion, menues, etc al momento de alimentar el zxuno.
Muchas gracias!
Re: RE: Re: ZXUnoPS2 en arduino, fuentes y binario.
Pues yo lo hice precisamente x ese problema.. Y lo del buffer lo intente.. Pero tb lo desestime x mas priblemas.... X cierto en cuanto pongas un juego que use la tecla symbol o shift como disparo. ... Las Risas están aseguradas (y como sea el gauntlet a dobles....) . Ya te digo que para mi era mejor gestionar los timings que esos problemas, que además era mas sencillo y lo tenía ya hecho ya al pasar del specy...spark2k06 escribió:Probado, con la 0.63 sí funciona bien. A mi por varias pruebas que hago, eso sí haciendo uso normal ... en CPC y en MSX, no me da ningún problema. Si se le trata muy mal, soltando symbol antes de la tecla asociada correspondiente, pues sí, podría llegar a provocar lo de las repeticiones (que se quita tan fácilmente como volver a pulsar la misma tecla), pero dado lo rebuscado de este fallo, que por otro lado se le puede dar una solución si realmente supone un problema grave, guardando un pequeño buffer de teclas especiales pulsadas para luego liberarlas, pero particularmente me parece bastante irrelevante en comparación con las molestas pausas entre teclas que se producen con el otro método, pero quizá sea sólo mi punto de vista.
Si alguien encuentra una forma de provocar este fallo, pero eso sí con un uso normal... implanto el tema del buffer y vemos si mejora.
Dicho lo cual, ahora sí, cada usuario es libre de elegir de cada repositorio de github teniendo en cuenta los pros y contras de cada uno. En principio doy por concluido este asunto, lo próximo en lo que me centraré será en tratar de realizar varias optimizaciones para que sea compatible tanto para un atmega 328p como 168, de menos recursos.
Espero q lo consigas solucionar, xq con ese fallo para mi no seria usable en un core donde se quiera jugar aporreando el teclado.
Enviado desde mi ONE A2003 mediante Tapatalk
Re: RE: Re: ZXUnoPS2 en arduino, fuentes y binario.
El modo spectrum, si te fijas en el código lo he dejado intacto. Ahí no haces nada de lo que haces en el resto de modos, eso de pulsar y soltar repetitivamente desde un combo de CAPS o SYMBOL. Ese modo funciona como debe funcionar, al pulsar se envía un scancode y al soltar se envía el doble (0xF0 + scancode) para liberar, además están mapeadas las teclas CAPS y SYMBOL a las teclas correspondientes. Por tanto, tanto en tu versión como en la mía modificada, todos los juegos en spectrum van a funcionar exactamente igual.neuro_999 escribió:X cierto en cuanto pongas un juego que use la tecla symbol o shift como disparo. ... Las Risas están aseguradas (y como sea el gauntlet a dobles....) .
En el resto de modos, realmente las teclas CAPS y SYMBOL como tal no existen, solo actúan de modificadores de SHIFT, y para mantener la "compatibilidad" con la disposición de símbolos del teclado de spectrum se traducen y se usa o no el scancode de SHIFT para mostrarlos según corresponda.
En principio, en el resto de cores que funcionan adaptados a la disposición del teclado de spectrum, lo mejor es no utilizarlos en juegos con CAPS o SYMBOL (ademas, que ni en tu código ni en el mío modificado están mapeados a ningun scancode de manera suelta, por lo que no nos va a funcionar para juegos de otros cores a ninguno de los dos).
Ahora que todo tiene solución, si al entrar al juego de, pongamos CPC queremos usar esas teclas en la redefinición porque nos gustan hay una forma bien sencilla de hacerlo, y es pasar en ese momento al modo spectrum (" .ZX"), y ya tendremos las teclas CAPS y SYMBOL mapeadas a SHIFT y CTRL de un teclado normal respectivamente, si el core reconoce estos scancodes, podrán ser usados. Luego únicamente tendrás como posible problema los tiempos de envío bit a bit de scancodes (que para spectrum están en 4/8), pero que con hacer un nuevo combo para pasar a valores mas altos se soluciona para cualquier core.
Otra solución si SHIFT y CTRL del modo spectrum no son reconocidos por los otros cores es hacer un modo nuevo, llamemosle ( .GAMES), con todas las teclas (incluidas CAPS y SYMBOL) mapeadas a scancodes reconocibles por todos los cores (dentro de un juego no importa qué símbolo o letra representa cada tecla), y por si acaso con unos tiempos de envío bit a bit de los scancodes compatibles con todos (16/32 sirve).
Lo dicho, acribillar al puerto PS/2 con envíos de scancodes en tiempos bajísimos no me parece buena idea... por mucho timming que ajustes eso ya te digo yo que no va ir bien, y es que encima no soluciona el tema de usar CAPS y SYMBOL en juegos, que como digo no tienes mapeados fuera del modo de spectrum (por otro lado es el que mejor gestionado tienes).neuro_999 escribió:Ya te digo que para mi era mejor gestionar los timings que esos problemas, que además era mas sencillo y lo tenía ya hecho ya al pasar del specy...
En mi caso, sigo pensando que con mi código en uso normal no va a pasar nada, pero ya nos irán dando feedback los usuarios que vayan probándolo.
Re: ZXUnoPS2 en arduino, fuentes y binario.
He estado probando y a pesar de que la respuesta es muy buena (hablamos siempre otros cores que no son spectrum, el de spectrum va muy bien) pues a pesar de que va muy bien la respuesta siempre acaba pasando lo de la foto adjunta, se repite la tecla indefinidamente. Me pasa en todos los cores cuando mapeo otro teclado que no es el de Spectrum, sólo hay que pulsar unas cuantas teclas con symbol, en el core de MSX es casi imposible poner BLOAD "CAS:",r después de los dos puntos cuando lo das a comillas o a la coma siempre empieza a repetir las pulsaciones.
No sé... casi es mejor el sistema anterior aunque las teclas con symbol o shift tarden más en salir por lo menos evitas este bug.
EDITO- Por cierto para probar lo del core MSX es necesario en el config.txt de la carpeta MSX1FPGA cambiar el teclado de brasileño a inglés.
No sé... casi es mejor el sistema anterior aunque las teclas con symbol o shift tarden más en salir por lo menos evitas este bug.
EDITO- Por cierto para probar lo del core MSX es necesario en el config.txt de la carpeta MSX1FPGA cambiar el teclado de brasileño a inglés.
Re: ZXUnoPS2 en arduino, fuentes y binario.
Bien, ya tengo algo mas tangible y caso de uso real con lo que probar y simular.
Buscaré la solución adecuada.
Gracias Manu, ya os contaré.
Enviado desde mi Thor mediante Tapatalk
Buscaré la solución adecuada.
Gracias Manu, ya os contaré.
Enviado desde mi Thor mediante Tapatalk
Re: ZXUnoPS2 en arduino, fuentes y binario.
bueno, tengo localizado exactamente cuando se produce el error de la repetición de teclado, es relacionado siempre con el symbol.
Pasa en todos los cores, en unos tiene un comportamiento diferente que en otros pero pasa en todos.
Pasa sólo con algunos caracteres y con otros no.
Los caracteres por ejemplo que están afectados son los siguientes:
;
.
:
"
/
Pasa con más, estos son sólo un ejemplo. Para probar va bien el core de CPC464, es fácil intentamos poner dos veces comillas seguidas pero soltando el symbol entre una y otra comilla, lo hacemos dos o tres veces y ya tenemos la repetición, en este caso se repite el número 2.
Si no soltamos la tecla symbol no pasa, podemos pulsar las veces que queramos esos caracteres, que si no soltamos el symbol entre carácteres el problema no se reproduce.
Una forma de evitar este bug es después de pulsar la tecla, no soltar el symbol hasta pasados 3 segundos, menos de 3 segundos se reproduce el problema.
Pasa en todos los cores, en unos tiene un comportamiento diferente que en otros pero pasa en todos.
Pasa sólo con algunos caracteres y con otros no.
Los caracteres por ejemplo que están afectados son los siguientes:
;
.
:
"
/
Pasa con más, estos son sólo un ejemplo. Para probar va bien el core de CPC464, es fácil intentamos poner dos veces comillas seguidas pero soltando el symbol entre una y otra comilla, lo hacemos dos o tres veces y ya tenemos la repetición, en este caso se repite el número 2.
Si no soltamos la tecla symbol no pasa, podemos pulsar las veces que queramos esos caracteres, que si no soltamos el symbol entre carácteres el problema no se reproduce.
Una forma de evitar este bug es después de pulsar la tecla, no soltar el symbol hasta pasados 3 segundos, menos de 3 segundos se reproduce el problema.
Re: ZXUnoPS2 en arduino, fuentes y binario.
He identificado el problema y lo he solucionado, pero no he tenido tiempo de probarlo en profundidad... ayer recibí la membrana de reemplazo para mi 48k y he estado mas entretenido con su instalación y puesta a punto, para cacharreos hardware ahora tras la vuelta de vacaciones tengo menos tiempo. Adjunto .HEX, Manu cuando tengas un rato prueba a ver, por lo poco que he mirado se soluciona lo que comentas. Si todo es correcto, procedo a publicar en mi github los cambios y os lo explico.
- Adjuntos
-
- zxunops2.zip
- (11.85 KiB) Descargado 215 veces
Re: ZXUnoPS2 en arduino, fuentes y binario.
Va perfecto, ese bug está arreglado y no he encontrado más fallos, gracias.
Re: ZXUnoPS2 en arduino, fuentes y binario.
Bien, lo que pasaba era consecuencia de algo que yo creía que no se podía producir en uso normal pero ha quedado demostrado que si. El problema basicamente es consecuencia de una incompleta gestión en el código del uso de symbol combinado con otra tecla normal, y es que si se suelta antes symbol que la tecla normal ésta no será liberada, provocando la tan temida repetición de la misma, y se soluciona así:
Y por qué sucede? Porque Manu, aun creyendo que soltaba al mismo tiempo symbol y la tecla asociada, es una lotería, una mínima fracción de segundo que se suelte antes symbol, lo provoca.
Pero aún queda otro escenario que dejo pendiente de momento, porque esta vez sí, creo que es mas dificil que se de en un uso normal, y es pulsar una tecla normal, mantenerla y después pulsar symbol, entonces manteniendo symbol soltar la tecla normal, todo esto provocará una nueva repetición de la primera. Además de corregir esto, lo que comenté, quiero optimizar un poco todo y quitar cosas que sobran tras la eliminación del tema de los timmings, pero la versión actual que dejo en mi repositorio de github es perfectamente utilizable ya.
Código: Seleccionar todo
//Si se suelta symbol se pone a cero sin mas (No se mantiene ninguna tecla pulsada de symbol que requiera mandar la marca de soltar)
if (symbolmod == 1)
{
for (r = 0; r<ROWS; r++) for (c = 0; c<COLS; c++) // Hacemos un repaso por si queda alguna tecla pulsada o por liberar no detectada con symbolmod = 3
{
if (matriz[r][c] > 0) { sueltateclaconsymbol(r, c, modo); matriz[r][c] = 3; } // La liberamos y la marcamos como pulsada para que no se active en el siguiente ciclo
}
symbolmod = 0;
}
Pero aún queda otro escenario que dejo pendiente de momento, porque esta vez sí, creo que es mas dificil que se de en un uso normal, y es pulsar una tecla normal, mantenerla y después pulsar symbol, entonces manteniendo symbol soltar la tecla normal, todo esto provocará una nueva repetición de la primera. Además de corregir esto, lo que comenté, quiero optimizar un poco todo y quitar cosas que sobran tras la eliminación del tema de los timmings, pero la versión actual que dejo en mi repositorio de github es perfectamente utilizable ya.
Re: ZXUnoPS2 en arduino, fuentes y binario.
Te ha quedado un buen firmware, felicidades.