[Modo Radastaniano] - Intentando comprender Sprite + Máscara
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
[Modo Radastaniano] - Intentando comprender Sprite + Máscara
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):
Bien, si tengo este gráfico de 8x8px:
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:
(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
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):
Bien, si tengo este gráfico de 8x8px:
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:
(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 214 veces
-
- grafico_8x8.png (979 Bytes) Visto 7738 veces
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: [Modo Radastariano] - Intentando comprender Sprite + Máscara
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
defb 0x66, MASCARA, 0x6D, MASCARA, 0xDD, MASCARA, 0xDD, MASCARA
...
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
AsíHark0 escribió: Entiendo que necesito la máscara... osea que falta en mi declaración del sprite.
Pero ¿dónde va ubicada?
defb 0x66, MASCARA, 0x6D, MASCARA, 0xDD, MASCARA, 0xDD, MASCARA
...
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara
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!
Seguiré con el tema y postearé resultados. Gracias!
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: [Modo Radastariano] - Intentando comprender Sprite + Máscara
Ah, cambia el título del post, "radastariano" suena algo raro XD
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara
que propones?
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: [Modo Radastariano] - Intentando comprender Sprite + Máscara
"Radastaniano"es la denominación universalmente aceptada jejjej
Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara
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.
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.
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara
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...
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: [Modo Radastariano] - Intentando comprender Sprite + Máscara
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
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.
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.
- Hark0
- Mensajes: 683
- Registrado: 27 Sep 2015, 00:31
- Ubicación: Cornellà de Llobregat - BCN
- Contactar:
Re: [Modo Radastariano] - Intentando comprender Sprite + Máscara
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".
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA.