Detectar soporte modo Timex HiRes

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Responder
Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Detectar soporte modo Timex HiRes

Mensaje por Uto » 21 Dic 2016, 11:19

Hola,

Me gustaría que un programa que estoy haciendo activara el modo Timex HiRes si este estuviera disponible, y obviamente a partir de ese momento usara otras rutinas de gráficos. Sin embargo no encuentro ninguna manera de detectar el modo Timex en si mismo.

He probado a hacer IN del puerto 255 pero su lectura no es satisfactoria, supongo que devuelve el dato del bus flotante y no el último dato escrito, porque yo pongo un 2 ahí, lo leo de manera inmediata y no hay un 2.

El modo Radastan puedes hacerlo, porque sí puedes leer el registro y encontrarte con lo que has escrito (o no, en cuyo caso ya sabes que no hay soporte) y la ULAPlus no lo he probado, pero supongo que puedes escribir paleta/leer paleta. ¿Alguna opción para los modos Timex?

Particularmente preferiría detectarlo y actuar en consecuencia a tener que hacer dos versiones.

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Detectar soporte modo Timex HiRes

Mensaje por chernandezba » 21 Dic 2016, 13:05

Hola

Cuando tienes una máquina con soporte de video timex, la lectura del puerto FFH siempre retorna el último valor enviado a dicho puerto.
Si estás leyendo valores del bus floatante es que no tienes modo timex activado en emulador/máquina física o lo que sea donde lo estés probando.
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Detectar soporte modo Timex HiRes

Mensaje por Uto » 21 Dic 2016, 13:23

chernandezba escribió:Hola

Cuando tienes una máquina con soporte de video timex, la lectura del puerto FFH siempre retorna el último valor enviado a dicho puerto.
Si estás leyendo valores del bus floatante es que no tienes modo timex activado en emulador/máquina física o lo que sea donde lo estés probando.
Hmmm... pues acabo de probar en ZX-Uno (real) este programa:

10 OUT 255,6
20 PRINT IN 255

El resultado es que cambia al modo Timex HiRes (se ve de manera obvia en pantalla), y aparece en pantalla "255".

Sin embargo tienes razón en que con ZesarUX funciona, el mismo programa cambia al modo HiRes y muestra un 6.

¿Bug del ZX-Uno?

Nota: lo pruebo con HiRes porque en HiColor como la zona de atributos está rellena de 0s y por tanto es negro sobre negro no se ve el número, pero es lo mismo teóricamente.

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Detectar soporte modo Timex HiRes

Mensaje por chernandezba » 21 Dic 2016, 13:34

Si, entiendo que es un bug del zx-uno.
Aquí lo explica mas o menos bien:

http://speccy.wikia.com/wiki/Timex_Tech ... nformation

Es mas, siempre se ha dicho que el Arkanoid no funciona bien con máquinas Timex, ya que al leer el puerto FFH no lee el bus flotante (como espera el Arkanoid) sino que devolverá el valor del puerto timex (que al arranque estará como 0)
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Detectar soporte modo Timex HiRes

Mensaje por Uto » 21 Dic 2016, 14:00

Me dice McLeod por otro lado que si el MMU de Timex no está habilitado devuelve el bus flotante. Ese era el caso, una vez habilitado sí me devuelve un 6, pero entonces no me vale ese método para detectar disponibilidad de modo HiRes, porque el modo estaba disponible, pero el OUT/IN me decía que no :-(

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Detectar soporte modo Timex HiRes

Mensaje por chernandezba » 21 Dic 2016, 17:48

ah eso tiene lógica.
De todas maneras, está claro que en máquinas reales Timex, la mmu y los modos de video están ambos presentes y ese puerto retorna lo que debe.
Luego, en otros dispositivos (emuladores, zxuno), puedes tener modos timex de video pero sin la mmu de timex. En ese caso qué debería devolver? Yo creo que los bits de ese puerto correspondientes a modos de video deberían retornar valores acorde al modo de video, y no lo que está haciendo el zxuno.
Yo si fuese tú haría una "feature request" al team zx-uno :silbando:
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Responder