Descripción del modo radastaniano
- mcleod_ideafix
- Mensajes: 831
- Registrado: 27 Sep 2015, 00:14
- Ubicación: Jerez de la Frontera
- Contactar:
Descripción del modo radastaniano
Viene del post original de ZdP:
http://www.zonadepruebas.com/viewtopic. ... xel#p39445
El modo "radastaniano" tiene las siguientes características:
- Resolución de 128x96 píxeles cuadrados, aspect ratio de la pantalla: 4:3
- Direccionamiento lineal en memoria en el rango 16384-22527
- Dentro de cada byte, los bits 4 a 7 contienen el color del pixel más a la izquierda, y 0 a 3, el color del pixel de más a la derecha
- Los colores se toman de las 16 primeras entradas (0 a 15) de la paleta de ULAplus
- El color del borde se toma de las entradas 0 a 7 de la paleta. (¿se prefiere así, o que tome el color de otras entradas distintas, tales como desde la 16 a la 23 para que el color del borde pueda hacerse independiente del de la pantalla?)
- No hay contención del Z80 en ningún momento.
- 4 páginas de pantalla disponibles: 4000h, 6000h, C000h, E000h. Estas dos últimas, en el banco 7 de memoria. Para cambiar de pantalla, por ejemplo de la 4000h a la 6000h, o de la C000h a la E000h, hay que poner un 1 en el bit 0 del puerto $FF (ya que esta característica está heredada de los modos de Timex implementados)
Como se usa:
- Establece los colores que vayas a usar en las entradas 0-15 de la paleta de ULAplus
- Activa el modo radastaniano junto con el de ULAplus, metiendo el valor 3 en el registro 64 de ULAplus
Efectos secundarios: si se activa únicamente el modo radastaniano sin activar ULAplus (es decir, poniendo un 2 en el registro 64 de ULAplus), la ULA se comportará de una forma no prevista, y que viene a ser lo siguiente:
- Resolución de 64x96 píxeles (pixeles el doble de largos que altos)
- Cada pixel se corresponde con un byte de memoria en el rango 16384-22527, direccionamiento lineal.
- El color de un pixel viene dado por el valor leido de memoria, interpretando los colores como en los atributos estándar (flash, brillo, paper, ink)
- Dado que el serializador de píxeles no está funcionando durante el modo radastaniano, el único valor que saca es 0, por lo que el color que siempre se escoge para el pixel es el que esté establecido como paper. Dicho de otra forma: los 3 bits menos significativos del byte leído no se usan para nada. El brillo y el flash se usan como de costumbre.
- El color del borde... bueno, el efecto colateral éste que comento hace que el borde presente como color el codificado en el atributo 0 B2 B1 B0 0 0 0 0. Es decir, que si pones OUT 254,7 el color que aparece es amarillo brillante. Como la componente de azul siempre es 0, los colores disponibles son negro, rojo, verde, y amarillo; con y sin brillo.
Otro ejemplito. Esta vez es un fotograma de la película Gravity.
http://www.zonadepruebas.com/viewtopic. ... xel#p39445
El modo "radastaniano" tiene las siguientes características:
- Resolución de 128x96 píxeles cuadrados, aspect ratio de la pantalla: 4:3
- Direccionamiento lineal en memoria en el rango 16384-22527
- Dentro de cada byte, los bits 4 a 7 contienen el color del pixel más a la izquierda, y 0 a 3, el color del pixel de más a la derecha
- Los colores se toman de las 16 primeras entradas (0 a 15) de la paleta de ULAplus
- El color del borde se toma de las entradas 0 a 7 de la paleta. (¿se prefiere así, o que tome el color de otras entradas distintas, tales como desde la 16 a la 23 para que el color del borde pueda hacerse independiente del de la pantalla?)
- No hay contención del Z80 en ningún momento.
- 4 páginas de pantalla disponibles: 4000h, 6000h, C000h, E000h. Estas dos últimas, en el banco 7 de memoria. Para cambiar de pantalla, por ejemplo de la 4000h a la 6000h, o de la C000h a la E000h, hay que poner un 1 en el bit 0 del puerto $FF (ya que esta característica está heredada de los modos de Timex implementados)
Como se usa:
- Establece los colores que vayas a usar en las entradas 0-15 de la paleta de ULAplus
- Activa el modo radastaniano junto con el de ULAplus, metiendo el valor 3 en el registro 64 de ULAplus
Efectos secundarios: si se activa únicamente el modo radastaniano sin activar ULAplus (es decir, poniendo un 2 en el registro 64 de ULAplus), la ULA se comportará de una forma no prevista, y que viene a ser lo siguiente:
- Resolución de 64x96 píxeles (pixeles el doble de largos que altos)
- Cada pixel se corresponde con un byte de memoria en el rango 16384-22527, direccionamiento lineal.
- El color de un pixel viene dado por el valor leido de memoria, interpretando los colores como en los atributos estándar (flash, brillo, paper, ink)
- Dado que el serializador de píxeles no está funcionando durante el modo radastaniano, el único valor que saca es 0, por lo que el color que siempre se escoge para el pixel es el que esté establecido como paper. Dicho de otra forma: los 3 bits menos significativos del byte leído no se usan para nada. El brillo y el flash se usan como de costumbre.
- El color del borde... bueno, el efecto colateral éste que comento hace que el borde presente como color el codificado en el atributo 0 B2 B1 B0 0 0 0 0. Es decir, que si pones OUT 254,7 el color que aparece es amarillo brillante. Como la componente de azul siempre es 0, los colores disponibles son negro, rojo, verde, y amarillo; con y sin brillo.
Otro ejemplito. Esta vez es un fotograma de la película Gravity.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
Re: Descripción del modo radastaniano
Lo de "4 páginas de pantalla", en que consiste, algo así como shadow RAM?
- mcleod_ideafix
- Mensajes: 831
- Registrado: 27 Sep 2015, 00:14
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Descripción del modo radastaniano
Más que shadow RAM son "shadow screen". Cuando tienes un 128K sabes que hay dos pantallas: la principal, en el banco 5, offset 0000h, y otra en el banco 7, offset 0000h. Pues bien: el Timex añade la posibilidad de otras dos pantallas en el banco actual: una que sería la principal del banco, en el referido offset 0000h, y otra en el mismo banco que esté activo, en el offset 2000h.Haplo escribió:Lo de "4 páginas de pantalla", en que consiste, algo así como shadow RAM?
Así, combinando la posibilidad de pantalla shadow del 128K con la pantalla shadow del Timex, tienes 4 posibles pantallas para visualizar:
- Banco 5, offset 0000h
- Banco 5, offset 2000h
- Banco 7, offset 0000h
- Banco 7, offset 2000h
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA
Re: Descripción del modo radastaniano
Una duda, ¿Esto funciona en ZesarUX 4.0?
Estoy haciendolos dos OUT (desde basic) y no observo nada (tengo seleccionado ZX Uno claro, con DivMMC aunque eso se supone que da igual)
Me refiero a estos:
Entiendo que si se activa, me quedaré sin poder ver el basic, pero era por probar
Estoy haciendolos dos OUT (desde basic) y no observo nada (tengo seleccionado ZX Uno claro, con DivMMC aunque eso se supone que da igual)
Me refiero a estos:
Código: Seleccionar todo
OUT 48955,64 : OUT 65339,3
Re: Descripción del modo radastaniano
Pues a mí me funciona, se me queda la pantalla en negro.
Estoy usando la versión del repositorio.
Estoy usando la versión del repositorio.
Re: Descripción del modo radastaniano
Hmmm, pues no lo consigo. He bajado ZEsarux 4.0 desde Sourceforge, y lo he probado tanto con la versión de Windows como en OSX. Entro en ZESARUX, le doy a F5, machine selection, ZX-Uno. Reinicia con el boot de ZXUno tipico, va a modo 48k, pongo los dos OUT y nada de nada, sigo en el prompt normal de BASIC. ¿Me falta hacer algo?
Voy a ver si con el 4.1....
Edito: pues nada, con la 4.1 tampoco. Algo se me tiene que estar escapando
Voy a ver si con el 4.1....
Edito: pues nada, con la 4.1 tampoco. Algo se me tiene que estar escapando
Re: Descripción del modo radastaniano
Has activado el modo ula plus en las opciones del emulador?
Re: Descripción del modo radastaniano
Pues era eso, y el caso es que ya había pensado yo si no sería eso, pero busqué la manera de activar Ulaplus tanto en el emulador como en la BIOS de ZXUno y no la encontré, así que di por supuesto que ya estaría de serie. Pero no, está en las opciones del emulador, apartado Display Settings (yo lo busqué en Hardware settings)Haplo escribió:Has activado el modo ula plus en las opciones del emulador?
¿Hay algun módulo de Z88DK que tenga las típicas funciones de cambiar al modo, salir del modo, cambiar entre pantalla shadow a normal y viceversa, etc.?
Re: Descripción del modo radastaniano
Voy a añadir un ejemplo en BASIC funcional, para que sirva de ejemplo. Pero antes decir que debido a lo que se indica en este hilo podría dejar de funciona en el futuro:
- Las lineas 10 y 20 son los datos RGB para 16 colores, tres datos (R, G, B) por cada color, para B el máximo es 3, para R y G, 7.
- La linea 30 activa el modo radastaniano
- La linea 40 cambia la paleta de los 16 colores 0 a 15, usando los datos en las lineas 10 y 20
- La linea 50 rellena la pantalla de colores aleatorios, basicamente como cada byte son dos pixeles, saca un color al azar de 0 a 15 y lo usa para el pixel de la derecha, y el pixel de la izquierda le da el color opuesto (15-color).
- Las lineas 60 y 70, esperan pulsar una tecla y vuelve al modo de video normal
Notas:
- Es necesario tener Ulaplus activado si estáis usando un emulador, y por supuesto emulación de ZX-Uno. Por ejemplo en ZesarUX hay que seleccionara la máquina ZX-Uno y además activar Ulaplus en display settings.
- Es un prograna muy lento. No prentede otra cosa, simplemente demostrar el modo.
Código: Seleccionar todo
10 DATA 0,0,0,0,0,3,7,0,0,0,7,0,7,7,0,0,7,3,7,7,0,7,7,3
20 DATA 1,1,1,1,1,2,3,1,1,1,3,1,3,3,1,1,3,2,3,3,1,3,3,2
30 OUT 48955,64: OUT 65339,3
40 FOR p = 0 to 15: READ r,g,b:OUT 48955, p: LET RGB=g*32+r*4+b: OUT 65339, RGB: NEXT p
50 FOR i = 16384 TO 22527: LET color = INT(RND*16): POKE i, color + 16 * (15-color):NEXT i
60 PAUSE 0
70 OUT 48955,64: OUT 65339,0:CLS
- La linea 30 activa el modo radastaniano
- La linea 40 cambia la paleta de los 16 colores 0 a 15, usando los datos en las lineas 10 y 20
- La linea 50 rellena la pantalla de colores aleatorios, basicamente como cada byte son dos pixeles, saca un color al azar de 0 a 15 y lo usa para el pixel de la derecha, y el pixel de la izquierda le da el color opuesto (15-color).
- Las lineas 60 y 70, esperan pulsar una tecla y vuelve al modo de video normal
Notas:
- Es necesario tener Ulaplus activado si estáis usando un emulador, y por supuesto emulación de ZX-Uno. Por ejemplo en ZesarUX hay que seleccionara la máquina ZX-Uno y además activar Ulaplus en display settings.
- Es un prograna muy lento. No prentede otra cosa, simplemente demostrar el modo.
Última edición por Uto el 23 Jun 2016, 08:24, editado 1 vez en total.
Re: Descripción del modo radastaniano
Por que quede también es este hilo, el modo de activar el modo Radastaniano cambiará en breve (supongo que cuando se publique nuevo core):
viewtopic.php?f=12&t=396&p=4683#p4683
viewtopic.php?f=12&t=396&p=4683#p4683