Duda "lag" entrada teclado Spectrum

Avatar de Usuario
VooD
Mensajes: 953
Registrado: 11 Abr 2011 22:19
Ubicación: Málaga
Agradecido : 16 veces
Agradecimiento recibido: 67 veces

Duda "lag" entrada teclado Spectrum

Mensajepor VooD » 02 Dic 2020 20:39

¡Hola! Hace poco trasteando con algunos juegos de Spectrum y el BASIC me di cuenta de algo que quizás se me pasó por alto en su momento original:

Me da la impresión de que el Spectrum no lee el teclado a intervalos regulares, o que lo hace de una manera muy cuantizada. Esto hace que los juegos no reaccionen siempre a los comandos que se introducen justo en el momento de pulsar una tecla y que por ejemplo sea imposible escribir en BASIC al ritmo que se escribiría en un PC actual.

Esto último de la velocidad de escritura, he comprobado que en Amstrad no pasa y puedes escribir sin ningún problema a alta velocidad sin que haya letras que no aparezcan.

¿A qué es debido? ¿Quizás tenga algo que ver con la dificultad de los juegos de Spectrum? ¿Había alguna solución?

Desde mi ignorancia sospecho que quizás la CPU solo lea la entrada de teclado en los "ratos libres" en los juegos...pero, ¿y en el editor de basic del +2/+3? ¿por qué incluso ahí o en Tasword ocurre igual haciendo imposible escribir rápidamente?

¡Saludos!

Avatar de Usuario
zx81
Mensajes: 386
Registrado: 23 Feb 2013 21:31
Agradecido : 69 veces
Agradecimiento recibido: 138 veces

Re: Duda "lag" entrada teclado Spectrum

Mensajepor zx81 » 02 Dic 2020 22:21

La ROM del Spectrum va leyendo las filas del teclado y, cuando encuentra una pulsada, para la lectura y pasa a procesarla, con lo que no se lee más que una tecla por cuadro (unos 50 por segundo).

Otra cosa son los juegos, que leen cuando quieren, y lo que quieren, sin limitación, porque no usan por lo general las rutinas de la ROM. Ahora bien, hace poco tuneé mi emulador Java para observar cuando leían el puerto Kempston (es de esperar que con el teclado hagan lo mismo) y la disparidad es abrumadora: desde juegos que leen una vez por cuadro, otros incluso leen 5 veces por cuadro, pasando por los que leen en cuadros alternos, cada 3, 5 y hasta 11 cuadros. No es raro que lean de manera irregular, con cadencias tipo 3,3,3,5 o similares. Depende de las necesidades del juego.

No sé mucho de Amstrad, pero creo que se lee a través del puerto PIO del AY-3-8910. Probablemente las rutinas de la ROM del Amstrad están mejor hechas en ese aspecto, no creo que haya otra razón.

Pero programas como Tasword leen a su ritmo, seguro, no dependen de la ROM en absoluto. Y los juegos lo aseguro.
Cuando utilizo una palabra, esa palabra significa, exactamente, lo que yo quiero que signifique. Ni más, ni menos.
Humpty Dumpty

Empieza a jugar sin tener que compilar: Emulador JSpeccy
ZX Spectrum bare-metal para Raspberry PI ZXBaremulator

Avatar de Usuario
Jinks
Mensajes: 2100
Registrado: 09 Oct 2013 16:47
Agradecido : 202 veces
Agradecimiento recibido: 279 veces
Contactar:

Re: Duda "lag" entrada teclado Spectrum

Mensajepor Jinks » 03 Dic 2020 12:45

Yo copié un programa en ensamblador de una revista, que solo era ilustrativo de la velocidad del código máquina. Lo único que hacía era poner un carácter negro en la esquina superior izquierda de la pantalla y leer el teclado esperando a que se pulsara una tecla. Mientras la tecla estaba pulsada el carácter negro iba avanzando de posición hacia la derecha, y al llegar al final bajaba una línea (vamos, como el cursor según vas escribiendo). Y al soltar la tecla, el carácter negro paraba.

Bueno, pues por muy corta que fuese la pulsación de la tecla, el carácter negro terminaba casi siempre en la esquina inferior derecha de la pantalla.

Vamos, que si la pulsación duraba 0,1 segundos, el cursor avanzaba las 32x24 (768) posiciones de la pantalla, así que ese código leía el teclado 768/0,1 (7680) veces por segundo. Cálculo aproximado porque no sé exactamente cuánto duraba la pulsación.

Avatar de Usuario
flopping
Mensajes: 2658
Registrado: 26 Jun 2011 17:50
Agradecido : 3 veces
Agradecimiento recibido: 148 veces

Re: Duda "lag" entrada teclado Spectrum

Mensajepor flopping » 03 Dic 2020 13:29

En el spectrum, la lectura del teclado se hace cada 20ms, si se teclea más rápido que eso, el sistema no reconocerá todos los caracteres o tendrá inputlag, otra cosa son los juegos o programas que no usen la rutina de lectura de teclado de la rom y usen una propia u otro sistema de lectura del teclado, en ese caso puede haber más o menos retardo, según esté implementado el sistema.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2021, 39 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Avatar de Usuario
Kyp
Mensajes: 585
Registrado: 03 Oct 2013 17:13
Agradecido : 55 veces
Agradecimiento recibido: 194 veces

Re: Duda "lag" entrada teclado Spectrum

Mensajepor Kyp » 03 Dic 2020 14:09

A nivel de hardware no hay ningún 'intermediario' que pueda causar lag. Lo único que hace la ULA es proporcionar el estado de la matriz solo cuando la CPU pide leer ese estado. Cualquier otro retardo es software. La ROM lee el teclado en la rutina de interrupción de retrazo que es cada 20 ms pero creo que ignora las pulsaciones si hay más de una tecla pulsada al mismo tiempo. Eso, aunque no lo parezca, causa bastantes pérdidas de pulsaciones, sobre todo si se escribe muy deprisa. Los juegos, como ya han comentado, cada uno lo hace a su manera pero sigue siendo una cuestión de software.


Volver a “Ordenadores Sinclair”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado