Descripción del modo radastaniano

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

Descripción del modo radastaniano

Mensaje por mcleod_ideafix » 22 Dic 2015, 22:07

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.

Imagen
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Descripción del modo radastaniano

Mensaje por Haplo » 23 Dic 2015, 12:45

Lo de "4 páginas de pantalla", en que consiste, algo así como shadow RAM?

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

Re: Descripción del modo radastaniano

Mensaje por mcleod_ideafix » 23 Dic 2015, 14:23

Haplo escribió:Lo de "4 páginas de pantalla", en que consiste, algo así como shadow RAM?
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.

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

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

Re: Descripción del modo radastaniano

Mensaje por Uto » 20 May 2016, 19:02

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:

Código: Seleccionar todo

OUT 48955,64 : OUT 65339,3
Entiendo que si se activa, me quedaré sin poder ver el basic, pero era por probar

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

Re: Descripción del modo radastaniano

Mensaje por yombo » 20 May 2016, 21:33

Pues a mí me funciona, se me queda la pantalla en negro.
Estoy usando la versión del repositorio.

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

Re: Descripción del modo radastaniano

Mensaje por Uto » 21 May 2016, 10:57

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 :-(

Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Descripción del modo radastaniano

Mensaje por Haplo » 21 May 2016, 13:33

Has activado el modo ula plus en las opciones del emulador?

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

Re: Descripción del modo radastaniano

Mensaje por Uto » 21 May 2016, 13:54

Haplo escribió:Has activado el modo ula plus en las opciones del emulador?
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)

¿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.?

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

Re: Descripción del modo radastaniano

Mensaje por Uto » 18 Jun 2016, 00:56

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:

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
- 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.
Última edición por Uto el 23 Jun 2016, 08:24, editado 1 vez en total.

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

Re: Descripción del modo radastaniano

Mensaje por Uto » 22 Jun 2016, 11:37

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

Responder