ZX-UNO: el modo de 512x384

Sinclair QL, ZX81, +2, +3, 128K ...
Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

ZX-UNO: el modo de 512x384

Mensajepor mcleod_ideafix » 10 May 2015, 21:37

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
collage_todas_las_imagenes.png (159.23 KiB) Visto 6478 veces


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
(138.19 KiB) Descargado 315 veces
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Quest
Atari 1040 STf
Atari 1040 STf
Mensajes: 900
Registrado: 18 Jul 2013, 22:20
Sistema Favorito: Commodore Amiga
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo SNES
Primera consola: Nintendo NES/Clónica
Gracias dadas: 9 veces
Gracias recibidas: 16 veces

Re: ZX-UNO: el modo de 512x384

Mensajepor Quest » 10 May 2015, 23:33

Buenas,

Sólo una respuesta rápida (antes de hacer pruebas más exhaustivas).

Este modo 512x384 ya lo había probado con un slideshow similar al que pones ahí (en concreto viene con 3 imágenes, la de la chica, la del mac con el programa de dibujo y otra de un escritorio de mac. Creo que lo descargué hace tiempo de alguna aportación tuya.

Sólo lo tenía probado en 2 pantallas con el ZX-UNO, pero te cuento lo que pasaba cuando lo probé:

- La 1º pantalla es una VGA TFT con soporte 15khz. El efecto que hace es el nº 2 de los que enumeras. El parpadeo es notable, va alternando los campos y se distinguen los textos pequeños.

- La 2ª pantalla es una TV LCD de 32" por vídeo compuesto. El resultado es curioso, porque no es siempre igual. El resultado parece ser algo tipo nº 3 o nº 4 dew desentrelazado inteligente. La primera vez que lo puse se veía perfecto. Ambos campos, cero parpadeos, nítido (sorprendentemente nítido para ser vídeo compuesto), las letras pequeñas totalmente legibles. Pero a veces, no sale bien y las filas están invertidas, como comentabas en algún caso. A veces cambiando de imagen a la siguiente "Se arregla" y a veces no. También "se arregla" a veces sacando y metiendo el cable de vídeo compuesto varias veces, sin cambiar de imagen.

Esto es lo que recuerdo perfectamente cuando lo probé. A ver si estos días me descargo la que has subido que veo que es más completa y la pruebo con más pantallas.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: ZX-UNO: el modo de 512x384

Mensajepor mcleod_ideafix » 10 May 2015, 23:41

Quest escribió:Pero a veces, no sale bien y las filas están invertidas, como comentabas en algún caso.

Si. Es precisamente el comportamiento que he descrito en el primer post. Y es por eso por lo que en este slideshow (que es una versión actualizada de aquel que descargartes) tienes la tecla 's' para cambiar el orden de los campos y así poder ver siempre bien las imágenes :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Hark0
Amiga 1200
Amiga 1200
Mensajes: 1695
Registrado: 11 Jul 2012, 23:44
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: (Otro)
Primera consola: (Otro)
Ubicación: Cornellà de Llobregat - Barcelona
Contactar:

Re: ZX-UNO: el modo de 512x384

Mensajepor Hark0 » 11 May 2015, 10:18

Descargo y esta tarde lo cato en mi placa... 8-)
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: ZX-UNO: el modo de 512x384

Mensajepor mcleod_ideafix » 11 May 2015, 20:18

El repositorio vuelve a estar disponible y ya he puesto todos los archivos allí, junto con el código fuente y algunos PNG's de ejemplo.

Dentro de la carpeta "software" del repositorio he añadido otra carpeta "tools" donde podreis encontrar el ZX BlockEditor. Indispensable para convertir ficheros TZX a TAP. OJO! Aunque se puede usar con cualquier TZX, el que se haga esto no significa necesariamente que el TAP así convertido pueda funcionar con DivIDE, DivMMC, y por ende, con el ZX-Uno en la tarjeta SD. El TZX que genera la utilidad generadora de slideshows sí es usable.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
scooter
Amiga 1200
Amiga 1200
Mensajes: 1031
Registrado: 17 Jul 2012, 09:25
primer_sistema: C64
Ubicación: Alicante

Re: ZX-UNO: el modo de 512x384

Mensajepor scooter » 12 May 2015, 19:58

Se me ocurre un modo de texto con fonts de 6x10... Sale 85x38
Lo que ocurre es que será lento, claro.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 54 veces
Contactar:

Re: ZX-UNO: el modo de 512x384

Mensajepor mcleod_ideafix » 12 May 2015, 20:13

scooter escribió:Se me ocurre un modo de texto con fonts de 6x10... Sale 85x38
Lo que ocurre es que será lento, claro.

Bueno.... el SE Basiv IV de Andrew Owen ya dispone de un modo de 80 columnas si mal no recuerdo, usando el modo de 512x192 y es usable.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 19 invitados