El modo de 512x384

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Responder
Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

El modo de 512x384

Mensaje por mcleod_ideafix » 28 Sep 2015, 03:41

Este post es para varias cosas: anunciar que ya está disponible el generador de slideshows para este modo de pantalla, animar a que la gente que hace virguerías de pixel-art se pueda lucir si lo desea, y pedir a los poseedores de alguno de los dos prototipos que comenten sus resultados en los televisores/monitores que usen con el ZX-UNO.

El ZX-UNO tiene un modo de resolución de 512x192, que no es más que el heredado del viejo Timex TC2048 y similares. Es el denominado modo hi-res. Tiene otro que es el hi-colour, pero de ese hablaremos en otro momento.

El modo de 512x192 usa un total de 12288 bytes en el banco 5 de RAM (la página habitual para el video en el Spectrum 128K). Como el ZX-UNO implementa el hardware del 128K, resulta que tenemos otra página de video situado en el banco 7.

Hay un efecto muy conocido y usado en las demos, sobre todo en las que vienen de Europa del éste, llamado gigascreen, que consiste en cambiar de página de video en cada retrazo vertical. En el Spectrum la interrupción del retrazo vertical ocurre en cada campo de video, así que cambiando los contenidos de lo que se ve en pantalla estamos presentando dos campos diferentes al televisor (hablaré de televisor, pero quiero decir televisor, monitor, tarjeta de captura de video, .... , lo que useis).

Dependiendo de como procese el televisor esta señal con campos con diferente información, se puede uno encontrar las siguientes situaciones:
1. Que el televisor sólo muestre uno de los dos campos, ignorando completamente el otro.
2. Que el televisor muestre los dos campos alternativamente en las mismas posiciones, originando un parpadeo más o menos ostensible según el contenido de la pantalla
3. Que el televisor haga un desentrelazado inteligente consistente en mezclar los contenidos de ambos campos para una misma scanline, resultando una línea con colores mezcla de cada campo original (por ejemplo, en un campo un scanline es amarillo y en el otro rojo, saldría naranja)
4. Que el televisor haga un desentrelazado inteligente consistente en poner el scanline de uno de los campos justo debajo del mismo scanline pero del otro campo

Las teles LCD baratitas y con una pantalla pequeña (7'' o así) suelen optar por la opción 1. Las teles CRT y algunas LCD optan por la 2. Las teles LCD/plasma de mayor tamaño o con un procesador de entrada más sofisticado pueden optar bien por la 3 o por la 4, o incluso dejar elegir al usuario. Si se usa como sistema de visualización una tarjeta de captura de video y un programa tal como DScaler para Windows, se pueden experimentar todas estas opciones.

Pues bien: aprovechando que precisamente las teles LCD/plasma suelen optar por alguno de los dos últimos métodos, sobre todo el 4, es posible obtener, con un tiempo de ocupación de CPU ridículo, una pantalla con una resolución real efectiva de 512x384 usando dos páginas de video de 12288 bytes cada una. Un buclecito conmuta de una página a otra. La conmutación tiene esta pinta:

Código: Seleccionar todo

LD BC,$7FFD
LD A,(23388)
XOR 8
LD (23388),A
OUT (C),A
La variable del sistema BANK_M (23388) debe contener siempre una copia del valor escrito en el puerto de conmutación de bancos $7FFD. Si se está en modo 48K, es conveniente inicializar esa variable con un POKE 23388,16 para evitar cuelgues imprevistos.

Este modo de video sólo usa dos colores: fondo y primer plano, definidos en el puerto de escritura $FF. En realidad el par de colores disponible es siempre un color + su complementario. Es decir, si se elige el negro, el otro color es blanco. Si se elige amarillo, el otro es azul. Si celeste, rojo, y así sucesivamente. El color de fondo (paper) tambíén se establece para el borde. Esto es una característica del Timex. No es algo que nos hayamos inventado para el ZX-UNO.

El programa que presento es una pequeña utilidad para la línea de comandos que puede leer una lista de ficheros PNG que hayan sido creados a una resolución de 512x384 y tengan dos colores (aunque el fichero debe grabarse con color en 24 bits). Los ficheros leidos se convierten a "gigascreen" y se van engarzando en un fichero TZX que incluye el cargador del slideshow. Para poder usar el fichero resultante en el ZX-UNO se requiere convertir el TZX a TAP. Para ello son muy aconsejables las ZX Modules: http://www.zx-modules.de/ En concreto, la utilidad ZX BlockEditor. Con ella, simplemente se carga el TZX y se vuelve a grabar, eligiendo el formato "Simple tape file" (TAP). Si hay mensajes diciendo que hay bloques que no se convertirán, se ignoran.

Una cosa a tener en cuenta: el Spectrum no sabe (en el ZX-UNO podríamos solucionar esto sin problemas) qué campo se está dibujando en pantalla, por lo que a la hora de presentar la información de los dos bancos, hay un 50% de posibilidades de que los campos se muestren en el orden incorrecto, resultando en una pantalla con líneas intercambiadas entre sí. Para solucionar esto, el visro de 512x384 tiene una tecla, la 's' para intercambiar el contenido de los campos y ordenarlos de forma correcta en pantalla.

La utilidad junto con algunas pantallas se ofrece a continuación. También estaré en el repositorio, pero como este fin de semana el servidor está caido, no puedo acceder a él, así que pongo los ficheros por descarga directa al final de este post.

Para los no poseedores de un ZX-UNO, pueden hacerse una idea de cómo se verían estas pantallas usando un emulador que emule el Timex TC2048. Que yo sepa, SpecEmu, Fuse y EightyOne. Eso sí: no verán el modo de 512x384, sino 512x192. César incorporó algunas cosas del ZX-UNO en el ZesarUX, pero no sé si los modos Timex en concreto están ahí.

Y para los que sencillamente no tengan ganas de andarse con modos raros de pantalla y sólo quieren ver cómo quedaría, aquí va un collage con todas las pantallas de la demo:
collage_todas_las_imagenes.png
Además de animar al personal a que haga sus slideshows, también quería pedir a los poseedores de un ZX-UNO que prueben la demo adjunta en sus televisores, y así comprueben qué tipo de desentrelazado hace. Las pantallas, sobre todo las dos primeras, permiten comprobar qué tal se comporta la señal de video generada por el ZX-UNO a altas frecuencias, dado que en algunos casos (por ejemplo la segunda pantalla con las barras verticales) la señal generada será la de mayor frecuencia posible. Si usais el ZX-UNO en RGB además de en video compuesto, mirad si hay mucha diferencia de nitidez en un caso o en otro.

Mirad también con atención la tercera imagen, la de la chica con el pelo negro. En la esquina izquierda superior e inferior hay dos pequeños textos que sólo pueden leerse correctamente a 512x384. El primero dice, precisamente "512x384". El otro es el logo de la persona/empresa que ha hecho la imagen, y debería leerse "Seven Heaven".

Una de las cosas que tengo que cambiar en el diseño de la ULA del ZX-UNO es el generador de sincronismos, para que saque una señal PAL entrelazada en lugar de (o además de) progresiva. Cuando eso ocurra volveré a pedir que hagais esta prueba a ver si los que ven peor la demo la ven mejor con el nuevo generador de sincronismos.

AVISO: dado que el contenido visual de esta demo puede provocar parpadeos en toda la pantalla, se desaconseja usar esta utilidad en presencia de usuarios con epilepsia.

Gracias :)
Adjuntos
genslideshow.zip
(137.64 KiB) Descargado 239 veces
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

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

Re: El modo de 512x384

Mensaje por chernandezba » 04 Oct 2015, 23:13

Hola

Comentar que a partir de ZEsarUX 3.1 se soportan los modos timex, pero el modo monocromo 512x192 está soportado aunque escala esos 512 pixeles de ancho a 256. Es un tema difícil de resolver de momento.
Por otra parte, el modo gigascreen y el interlaced solo está soportado para modos de vídeo standard de spectrum, por tanto no se puede usar gigascreen o interlaced con ulaplus, timex o Spectra.
Sí que se puede por tanto usar resolución de 256x384 activando el interlaced. El propio emulador tiene alguna demo que muestra este modo.

Saludos
César
----

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

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

Re: El modo de 512x384

Mensaje por chernandezba » 19 Oct 2015, 19:59

Hola

Estoy trabajando ya en la versión 3.2 de ZEsarUX y ya se puede habilitar el interlaced en los modos ULAplus, Timex y Spectra. Por tanto este modo de 512x384 ya está soportado (aunque con la limitación de que el ancho real es 256, reducido desde 512)

Saludos
César
----

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

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: El modo de 512x384

Mensaje por carmeloco » 27 Jul 2016, 11:29

Probando con las últimas versiones de firmware (Bios 0.46 core T22-14072016) veo que el TAP del SlideShow, (http://www.atc.us.es/svn/zxuno/software ... deshow.tap) veo que la tecla "s" no tiene ningún efecto en el cambio de los campos entrelazados. ¿Ha habido algún cambio que haga que esto no funcione?

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: El modo de 512x384

Mensaje por mcleod_ideafix » 27 Jul 2016, 15:03

carmeloco escribió:veo que la tecla "s" no tiene ningún efecto en el cambio de los campos entrelazados. ¿Ha habido algún cambio que haga que esto no funcione?
No, ninguno. ¿En qué tipo de tele la estás probando? Hay algunas que no desentrelazan los dos campos y por tanto en ellas esta demo no te muestra 384 lineas. En concreto, he podido observar que en algunas Samsung no desentrelaza. En las LG sí. En VGA, por otra parte, tampoco hay desentrelazado. Sólo por RGB y video compuesto, ya que en VGA siempre se saca video progresivo y el monitor no entiende de entrelazado.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

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

Re: El modo de 512x384

Mensaje por yombo » 27 Jul 2016, 18:21

Acabo de probarlo (no vi este hilo anteriormente). Mi monitor es un LG M2394D, y no me esperaba que se viera tan bien, ni que pillara el "modo 4". Se ve más nítido que el modo de spectrum normal por video compuesto :shock: Claro que el video compuesto nunca se ha visto muy bien en mi prototipo v2.

Las fotos no son muy buenas, en la segunda por ejemplo el texto "512x384" se ve mejor en realidad ( tan nítido como la ceja de la chica). En la primera foto las líneas verticales son gris intermedio en lugar de negro.

Sí se nota algo de aberración cromática, como manchas de color superpuestas a la imagen, que van desplazándose rápidamente.

Imagen

Imagen
Última edición por yombo el 27 Jul 2016, 18:35, editado 3 veces en total.

Avatar de Usuario
carmeloco
Mensajes: 751
Registrado: 25 Dic 2015, 12:02

Re: El modo de 512x384

Mensaje por carmeloco » 27 Jul 2016, 18:22

mcleod_ideafix escribió:
carmeloco escribió:veo que la tecla "s" no tiene ningún efecto en el cambio de los campos entrelazados. ¿Ha habido algún cambio que haga que esto no funcione?
No, ninguno. ¿En qué tipo de tele la estás probando? Hay algunas que no desentrelazan los dos campos y por tanto en ellas esta demo no te muestra 384 lineas. En concreto, he podido observar que en algunas Samsung no desentrelaza. En las LG sí. En VGA, por otra parte, tampoco hay desentrelazado. Sólo por RGB y video compuesto, ya que en VGA siempre se saca video progresivo y el monitor no entiende de entrelazado.
A ver, ninguno tampoco. Al pulsar la tecla, se ve como si por unos milisegundos (así a ojo, jejeje) hiciese el cambio de campos, pero luego vuelve a quedarse como estaba. Además, siempre se quedan los campos invertidos (en algunos dibujos como el de las letras o el de la pluma, es muy evidente). Al decirme lo de la tele, me hiciste dudar, ya que lo he probado en un monitor tft de 7 pulgadas que es el que uso para las pruebas con los :zxuno: y que yo diría que en su día, probé esto mismo y se veía perfectamente el cambio de campos con la tecla "s", pero por si a caso, lo he probado en un CRT, que estoy seguro que en ese funcionaba, y hace exactamente lo mismo.

Responder