[Modo Radastaniano] - Intentando comprender Sprite + Máscara

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Avatar de Usuario
Hark0
Mensajes: 683
Registrado: 27 Sep 2015, 00:31
Ubicación: Cornellà de Llobregat - BCN
Contactar:

[Modo Radastaniano] - Intentando comprender Sprite + Máscara

Mensaje por Hark0 » 22 Oct 2015, 11:19

Abro este post con la intención de entender / implementar correctamente el pintado de gráficos en modo radastariano, sobre todo con el tema de las máscaras.

Para empezar, voy a partir de la base que tenemos esta paleta que me parece ideal para juegos (definida por @Haplo):

Paleta: 0,64,8,3,99,110,128,84,28,18,31,180,188,252,182,255

Que corresponde a estos colores (pantallazo de la muestra de @Haplo):
Imagen

Bien, si tengo este gráfico de 8x8px:
Imagen
Donde el color magenta (255,0,255) es el color que quiero transparente.

Entiendo que estoy usando en este gráfico los colores de la paleta:
8 - Rojo.
10 - Magenta (el que quiero transparente).
13 - Amarillo.

Ahora bien, si convierto este gráfico con la utilidad RADSPRAD.EXE de @na_th_an.

Comando:
radsprad grafico_8x8.png out.h "00400803636E80541C121FB4BCFCB6FF"
(Paleta de @Haplo)

Resultado:
._sprite_0
defb 0x66, 0x6D, 0xDD, 0xDD
defb 0x64, 0x46, 0xDD, 0xDD
defb 0x64, 0x44, 0x6D, 0xDD
defb 0x64, 0x44, 0x46, 0xDD
defb 0x64, 0x44, 0x44, 0x6D
defb 0x66, 0x66, 0x66, 0x66
defb 0x6D, 0xDD, 0xDD, 0xD6
defb 0x6D, 0xDD, 0xDD, 0xD6

Y cuando lo pinto en pantalla normal, obtengo ésto:
Imagen

(Para empezar no entiendo porqué me ha cambiado los colores).

Y si lo intento pintar con la función de máscara (adjunto fichero de @Haplo), directamente NO pinta nada.

Entiendo que necesito la máscara... osea que falta en mi declaración del sprite.

Pero ¿dónde va ubicada?

Así?
defb 0x66, MASCARA, 0x6D, MASCARA, 0xDD, MASCARA, 0xDD, MASCARA
...

O así?
defb 0x66, 0x6D, 0xDD, 0xDD, MASCARA,MASCARA,MASCARA,MASCARA
...

O bien primero los defb del sprite entero y luego los defb de la máscara.


¿Alguien me lo aclara para torpes como yo?

Gracias anticipadas ;)
Adjuntos
Codigo Fuente_Haplo.txt
(956 Bytes) Descargado 87 veces
grafico_8x8.png
grafico_8x8.png (979 Bytes) Visto 3969 veces
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.

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

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Haplo » 22 Oct 2015, 13:56

Hark0, no te liesss, revisa el mp en zdp que te envié, está explicada esa parte también!
A ver si te lo afino un poco más.

la paleta que yo uso es ésta:

DEFB 8,64,0,3,99,110,128,84,28,18,31,180,188,252,182,255.

Como ves, el primer valor 8 (indice #0) corresponde a un marrón oscuro, que es un color que sólo uso como transparente en MIS sprites. Así que en tu caso el color magenta (31?) debe ir en ese lugar, no el negro (0) como tienes puesto.

Ten en cuenta que el programa de edición gráfica que uso tiene ya definida exactamente la misma paleta.
Yo la hice en Paint Shop Pro cogiendo los valores con el cuentagotas de una captura de la utilidad de generar la paleta ULA del BASin. Algo cutre el método, pero me funciona :mrgreen:
Hark0 escribió: Entiendo que necesito la máscara... osea que falta en mi declaración del sprite.

Pero ¿dónde va ubicada?
Así
defb 0x66, MASCARA, 0x6D, MASCARA, 0xDD, MASCARA, 0xDD, MASCARA
...

Avatar de Usuario
Hark0
Mensajes: 683
Registrado: 27 Sep 2015, 00:31
Ubicación: Cornellà de Llobregat - BCN
Contactar:

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Hark0 » 22 Oct 2015, 18:50

Ok, lo del color "transparente" en la posición 0 ya os lo había leido a Antonio... esa es la parte que menos me preocupa.... lo más importante era el tema de la ubicación de los bytes máscara.

Seguiré con el tema y postearé resultados. Gracias!

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

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

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Haplo » 22 Oct 2015, 20:08

Ah, cambia el título del post, "radastariano" suena algo raro XD

Avatar de Usuario
Hark0
Mensajes: 683
Registrado: 27 Sep 2015, 00:31
Ubicación: Cornellà de Llobregat - BCN
Contactar:

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Hark0 » 22 Oct 2015, 20:38

que propones?

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

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

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Haplo » 22 Oct 2015, 20:46

"Radastaniano"es la denominación universalmente aceptada jejjej

Avatar de Usuario
Radastan
Mensajes: 386
Registrado: 05 Oct 2015, 14:39

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Radastan » 23 Oct 2015, 09:46

Haplo, de verdad, lo que no comprendo es porqué usas un dato adicional para la máscara en vez de usar el color 0 directamente como tal.

Es que eso es lo lógico, ganas en velocidad y memoria.

A ver si hago hueco, modifico mi rutina para funcionar de dicha forma, y así queda más sencillo.

Avatar de Usuario
Hark0
Mensajes: 683
Registrado: 27 Sep 2015, 00:31
Ubicación: Cornellà de Llobregat - BCN
Contactar:

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Hark0 » 23 Oct 2015, 10:10

Radastan escribió:Haplo, de verdad, lo que no comprendo es porqué usas un dato adicional para la máscara en vez de usar el color 0 directamente como tal.

Es que eso es lo lógico, ganas en velocidad y memoria.

A ver si hago hueco, modifico mi rutina para funcionar de dicha forma, y así queda más sencillo.

Si la adjuntas por aqui.... ya no te cuento... :P
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.

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

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Haplo » 23 Oct 2015, 11:00

Radastan, si das con un método más rápido y encima sin usar un byte adicional para la máscara, el que va a salir en vídeo por la casa voy a ser yo :boingg:
Cierto es que este tema lo miré hace meses y que en aquel entonces estaba menos puesto en ASM que ahora (se aprende mogollón peleándose con los ciclos de reloj jejej), asi que es posible que no sea la solución óptima.

No he publicado mis cutre rutinas por aquí porque no quiero "liar" a la gente cuando se supone que en breve sacarás tu kit más sencillito y ordenado. Si alguien me ha pedido algo por privado se lo he mandado pero siempre advirtiendo que son específicas de mi proyecto y que son "hardcore", aparte de que no son fáciles de entender si no tienes experiencia en ASM.

Avatar de Usuario
Hark0
Mensajes: 683
Registrado: 27 Sep 2015, 00:31
Ubicación: Cornellà de Llobregat - BCN
Contactar:

Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara

Mensaje por Hark0 » 23 Oct 2015, 12:31

Por cierto, que el color que siempre he usado en mi juegos, para el transparente es la combinación RGB (255,0,255), el magenta "cantón".

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

Responder