Proposición de gráfica externa para ZX Spectrum

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:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor mcleod_ideafix » 31 Ene 2014, 20:37

radastan escribió:Mi proposición es una pantalla de resolución 128x128 pixels, donde cada pixel realmente es de 2x1 respecto al ZX Spectrum (vamos, que son píxeles alargados). Es algo muy similar al modo 0 de los amstrad CPC. Si se añade posibilidad de poder elegir los 16 colores por una paleta, mucho mejor.

Pero... ¿no habíamos quedado en 256x128?

radastan escribió:Creo que lo conveniente es hacer lineal la pantalla, y dejarse de entrelazados, al igual que hacer que cada pixel ocupe 4 bits correlativos y haya dos por byte.

A nivel de hardware da exactamente igual una cosa que otra, pero a nivel de software no. Pero vamos: las rutinas de sprites se resentirán.

-- Actualizado 31 Ene 2014, 20:40 --

wilco2009 escribió:No lo acabo de entender. ¿Dónde se mapearia la memoria de video de esa tarjeta?. En el bus no disponemos de señales para deshabilitar la RAM interna.

¿quizás en la zona de la ROM?


No, mapear no se mapea en realidad en ningún sitio. El Spectrum no sabe de este nuevo modo de video, y la ULA hace lo de siempre.
Lo que se hace es utilizar una técnica llamada "mirroring": consiste en que el dispositivo externo "espía" el bus buscando cuándo la CPU escribe a memoria RAM, en un determinado intervalo, y cuando eso ocurre, copia la dirección y el dato que se escriben y lo vuelca a su vez en una memoria propia. Es esa memoria la que después es leída por el dispositivo externo interpretándola a voluntad.

El dispositivo SPECTRA, de Paul Farrow, se basa de hecho en el mismo principio. Si dicho dispositivo estuviera "abierto", podría implementar este modo "Radastaniano" en ella.

-- Actualizado 31 Ene 2014, 20:44 --

na_th_an escribió:El único problema que veo es de sincronismo ¿hay señal de interrupción en el bus de expansión? ¿Puede "ganarle" esta señal a al ULA? ¿En caso contrario, puede usarse la int de la ULA para gobernar esta "tarjeta externa"?

Sí, sí, y sí. De hecho, de hacerla, se hará como "ULA esclava", sincronizada con la interrupción de retrazo vertical. Espero que salga bien con esa sincronización. SPECTRA usa como señal de sincronismo la horizontal, y es por eso que sólo funciona en los modelos 16K/48K/Plus. En el resto de modelos no está disponible esa señal.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor radastan » 31 Ene 2014, 20:54

mcleod_ideafix escribió:Pero... ¿no habíamos quedado en 256x128?


Es que creo que es más fácil para ti usar 4:3, y para el mirroring es mucho mejor no usar más memoria de vídeo que la que usa el ZX Spectrum. De esta forma es mucho más compatible con todos los ZX Spectrum y encima podemos hacer lo de la salida de vídeo puenteada.

mcleod_ideafix escribió:
radastan escribió:Creo que lo conveniente es hacer lineal la pantalla, y dejarse de entrelazados, al igual que hacer que cada pixel ocupe 4 bits correlativos y haya dos por byte.

A nivel de hardware da exactamente igual una cosa que otra, pero a nivel de software no. Pero vamos: las rutinas de sprites se resentirán.


Hombre si crees que es más rápido de otra forma haz proposiciones, pero a nivel de rutina creo que no se resiente nada. Es más, los datos de los sprites se hacen de forma sencillísima con cualquier programa.

Lo que si te rogaría, si no es mucho lío, es lo de la paleta seleccionable.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

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: Proposición de gráfica externa para ZX Spectrum

Mensajepor mcleod_ideafix » 31 Ene 2014, 20:57

radastan escribió:Es que creo que es más fácil para ti usar 4:3, y para el mirroring es mucho mejor no usar más memoria de vídeo que la que usa el ZX Spectrum. De esta forma es mucho más compatible con todos los ZX Spectrum y encima podemos hacer lo de la salida de vídeo puenteada.

El aspect ratio puede ser el que queramos. Tan sólo hay que hacer los cálculos pertinentes de reloj, sincronismos, etc. (ver hilo sobre el ordenador que quieres hacer). Sobre no usar más de 6912 bytes, vale. ¿Qué es salida de video puenteada?

radastan escribió:Lo que si te rogaría, si no es mucho lío, es lo de la paleta seleccionable.

¡Esa es la única cosa que podría aprovechar de la ULAplus! :D

Pero para hacer todo esto, primero necesito tener terminado el interfaz CPLD de Winston, para poder usar una FPGA desde un Spectrum real.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
Zardoz
MSX Turbo R
MSX Turbo R
Mensajes: 283
Registrado: 09 Sep 2013, 19:04
Sistema Favorito: (Otro)
primer_sistema: (Otro)
consola_favorita: Nintendo NES/Clónica
Primera consola: Nintendo NES/Clónica
Ubicación: Madrid
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor Zardoz » 31 Ene 2014, 21:14

Con puenteada, creo que se refiere a coger la salida de vídeo normal del Spectrum y conmutar entre dicha señal y la señal que daría la tarjeta gráfica que estáis hablando. Su pongo que para esto, es obligatorio tener el mod de vídeo compuesto y enchufar un cable de la salida de vídeo compuesto a la tarjeta gráfica.
Yep, I have a blog :zardoz.es
Emulador DCPU-16 VM
Emulador Trillek

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: Proposición de gráfica externa para ZX Spectrum

Mensajepor mcleod_ideafix » 31 Ene 2014, 22:12

Zardoz escribió:Con puenteada, creo que se refiere a coger la salida de vídeo normal del Spectrum y conmutar entre dicha señal y la señal que daría la tarjeta gráfica que estáis hablando. Su pongo que para esto, es obligatorio tener el mod de vídeo compuesto y enchufar un cable de la salida de vídeo compuesto a la tarjeta gráfica.

Si es eso, me temo que el puenteado tendrá que ser manual :D (desenchufas un cable, enchufas el otro). La salida de video del Spectrum es analógica, y tendría que añadir electrónica extra sólo para este menester, además que con la señal de interrupción no tengo exactitud suficiente como para que el cambio de una señal a otra sea limpio. Sería más bien como cuando en un PC cambias de modo texto (720x350) a modo 13h (320x200x256 colores) en un monitor CRT (que hasta hace saltar el degausser)

Pero vamos... que hasta que eche a andar la placa de Winston... :D
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
wilco2009
MSX Turbo R
MSX Turbo R
Mensajes: 401
Registrado: 29 Ago 2013, 15:48
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: ZX81
consola_favorita: Sega Master System
Primera consola: Atari 2600
Gracias dadas: 1 vez
Gracias recibidas: 7 veces

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor wilco2009 » 01 Feb 2014, 00:39

¿La señal de video compuesto no está ya en el pin 15 de la cara inferior del bus?

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: Proposición de gráfica externa para ZX Spectrum

Mensajepor mcleod_ideafix » 01 Feb 2014, 01:23

wilco2009 escribió:¿La señal de video compuesto no está ya en el pin 15 de la cara inferior del bus?

No en todos los modelos, sólo en los 16K/48K/Plus, y de todas formas, al ser una señal analógica, no puedo tratarla directamente en la FPGA, sino que como decía, tendría que preprocesarla para sacar de ahí los sincronismos, etc. Vamos, lo que hace SPECTRA para sincronizarse a nivel de pixel con la ULA interna.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor jotego » 01 Feb 2014, 08:37

Es un proyecto interesante y os animo a que sigáis con él. Pero puestos a hacer una gráfica externa algunas características más serían recomendables

- Direccionamiento por bloques de 8x8 y no por píxeles (es decir 1 byte = 64 píxeles )
- Relación de aspecto panorámica para verla bien en un TV moderno
- Salida por VGA, para conectarla a un TV moderno
- Scroll por hardware
- Sprites por hardware
- Espejar la memoria de vídeo para que arranque en modo retrocompatible
- Implementar el nuevo vídeo en bancos de memoria aparte, como se haría en una expansión de memoria externa

Y ya para nota:

- Modo texto de 8 colores y el doble de puntos para trabajar
- Mapa de caracteres ASCII en ROM y seleccionables en modo texto
- ROM modificada del Spectrum para arrancar con esta ROM y poder escribir Basic en el modo texto

Yo ahora estoy haciendo una ampliación de memoria para el A1200 pero cuando la acabe podría ayudar con el verilog.

Avatar de Usuario
radastan
Amiga 2500
Amiga 2500
Mensajes: 4542
Registrado: 11 Jun 2007, 19:29
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Sega Genesis/Megadrive
Primera consola: TV Games/Pong Clone
Ubicación: Córdoba
Gracias dadas: 9 veces
Gracias recibidas: 40 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor radastan » 01 Feb 2014, 11:16

jotego escribió:Es un proyecto interesante y os animo a que sigáis con él. Pero puestos a hacer una gráfica externa algunas características más serían recomendables

- Direccionamiento por bloques de 8x8 y no por píxeles (es decir 1 byte = 64 píxeles )
- Relación de aspecto panorámica para verla bien en un TV moderno
- Salida por VGA, para conectarla a un TV moderno
- Scroll por hardware
- Sprites por hardware
- Espejar la memoria de vídeo para que arranque en modo retrocompatible
- Implementar el nuevo vídeo en bancos de memoria aparte, como se haría en una expansión de memoria externa

Y ya para nota:

- Modo texto de 8 colores y el doble de puntos para trabajar
- Mapa de caracteres ASCII en ROM y seleccionables en modo texto
- ROM modificada del Spectrum para arrancar con esta ROM y poder escribir Basic en el modo texto

Yo ahora estoy haciendo una ampliación de memoria para el A1200 pero cuando la acabe podría ayudar con el verilog.


Todo eso choca con la palabra "experimento". La idea de esto es ver viabilidad y hacer algo chulo para Retromadrid. Tras esto podemos pensar en algo más, pero eso es un segundo proyecto.
Yo tengo una máquina del tiempo, se llama ZX Spectrum, siempre me devuelve a los buenos momentos.
(\.../) (\.../) (\.../) (\.../)
( *.*) ('.'= ) ('.'= ) ('.'= )
(")_(") (")_(") (")_(") (")_(")
╔═══╦═══╦═══╦══╦══╗
║╔═╗║╔═╗║╔═╗╠╣╠╩╣╠╝
║║─║║╚══╣║─╚╝║║─║║
║╚═╝╠══╗║║─╔╗║║─║║
║╔═╗║╚═╝║╚═╝╠╣╠╦╣╠╗
╚╝─╚╩═══╩═══╩══╩══╝

Avatar de Usuario
jotego
Atari 1040 STf
Atari 1040 STf
Mensajes: 657
Registrado: 16 Ene 2013, 23:25
Sistema Favorito: Atari ST
primer_sistema: Amstrad CPC
consola_favorita: Sony PlayStation 2
Primera consola: Atari Lynx
Ubicación: Valencia (España)
Gracias dadas: 27 veces
Gracias recibidas: 44 veces
Contactar:

Re: Proposición de gráfica externa para ZX Spectrum

Mensajepor jotego » 01 Feb 2014, 11:22

Efectivamente, se puede dividir en dos desarrollos. Pero la primera parte habría que hacerla pensando también en que luego hay que modificarla.

El experimento se puede hacer igualmente con bloques de 8x8 aunque no haya scroll o sprites en la primera versión.


Volver a “Sinclair/Spectrum”

¿Quién está conectado?

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