ZXUnoPS2 en arduino, fuentes y binario.

Proyectos ajenos al equipo oficial pero desarrollados o promovidos por la comunidad, relacionados con el ZX-UNO / Projects outside the official team but developed or promoted by the community, related to the ZX-UNO
BCH
Mensajes: 170
Registrado: 01 May 2016, 10:55

Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por BCH » 10 Sep 2017, 19:45

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!

Avatar de Usuario
neuro_999
Mensajes: 692
Registrado: 06 Oct 2015, 10:14

Re: RE: Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por neuro_999 » 11 Sep 2017, 00:36

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.
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...
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

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por spark2k06 » 11 Sep 2017, 05:31

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....) .
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.

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).
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...
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).

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.

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por ManuFerHi » 11 Sep 2017, 09:43

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.
Adjuntos
IMG_20170911_091708.jpg

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por spark2k06 » 11 Sep 2017, 09:49

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

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por ManuFerHi » 11 Sep 2017, 22:57

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.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por spark2k06 » 12 Sep 2017, 08:46

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

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por ManuFerHi » 12 Sep 2017, 12:04

Va perfecto, ese bug está arreglado y no he encontrado más fallos, gracias.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por spark2k06 » 12 Sep 2017, 12:52

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í:

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;
}
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.

Avatar de Usuario
yombo
Mensajes: 487
Registrado: 05 Oct 2015, 14:10

Re: ZXUnoPS2 en arduino, fuentes y binario.

Mensaje por yombo » 12 Sep 2017, 13:17

:plasplas: Te ha quedado un buen firmware, felicidades.

Responder