Karoshi MSX Community
05 de Julio de 2021, 11:53:55 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: Sprites Multicolor Sc4  (Leído 2861 veces)
0 Usuarios y 1 Visitante están viendo este tema.
assembler
Karoshi Fan
**
Mensajes: 62

assembler@ya.com
Email
« : 24 de Febrero de 2012, 09:34:17 pm »

Buenas.

Estoy trasteando el SC4 y me surge una duda.

He definido un sprite multicolor con el TinnySprite de Jannone y lo muestro correctamente, pero en el lote he creado otro par de sprites con otros colores diferentes y al mostrarlos me salen con los colores del primer grupo de sprites.

Sprites 0 a 3: personaje sin armadura (16x32, 2 sprites arriba y 2 abajo): pelo amarillo oscuro, cuerpo amarillo claro, calzoncillos blancos. Perfecto.
Sprites 4 a 7: personaje con armadura (Mismo tamaño): Gris y negro. (Según definición de colores). Al mostrarlos salen con la forma de los sprites 4 a 7, pero en amarillo, blanco y azul.


¿Las definiciones de Sprite van asociadas con su color, o hay que indicar la forma y el patron de color a utilizar?
He probado a usar el 4º byte de la tabla de atributos, por si acaso, pero nada de nada.


En línea
zilogZ80a
Karoshi Lover
***
Mensajes: 115



WWW Email
« Respuesta #1 : 24 de Febrero de 2012, 11:51:26 pm »

Hola Assembler

A diferencia de los SPRs en MSX1 donde en los ATRs defines el color en el 4 valor del ATR

En los SPRs en MODE 2 de MSX2 tiene que poner el ATR y los bytes del color para cada SPRITE que pongas en la pantalla. ya que esta es la forma de definir el color de un sprite,

Imagina que tienes un sprite solo y su color. pero quieres mostrar 2 veces este sprite en 2 sitios de la pantalla.

tendrias que poner las 2 tablas de 4 valores de los ATRs
despues los bytes del sprite en su zona de VRAM
y despues tendrias que poner 2 veces los colores de este sprite repetidos, ya que el primero seria el color del primer ATR y el segundo seria el color del segundo atr. ya que es aqui donde se define el color del ATR.

Ahora si quieres tener el mismo sprite en la pantalla que es el mismo grafico del sprite pero que tenga colores distintos.
pondrias en vram los bytes del sprite
y los bytes del color de este y del otro ATR.

No se si me he explicado bien. espero haberte ayudado.
En línea
assembler
Karoshi Fan
**
Mensajes: 62

assembler@ya.com
Email
« Respuesta #2 : 25 de Febrero de 2012, 08:08:47 am »

Ok. Veo que hablamos el mismo "lenguaje"  laugh

Me ha quedado claro. Los colores de los sprites en 0x1c00 son para el plano, no para la "forma". Se ha trasladado el cuarto byte de la Tabla de atributos a esa estructura de 16 bytes por sprite.

Hala, ya puedo seguir programando.


Muchas gracias.
En línea
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« Respuesta #3 : 25 de Febrero de 2012, 11:55:21 am »

yo tambien estoy aprendiendo como funcionan los sprites!  Cheesy
No sabia que la información de color es para planos.

quería añadir, que en los valores de los colores incluye atributos en los bits superiores:
Código:
The bytes in that color table are used as follow:
  Bit 0-3    CL  Color Code (0-15)
  Bit 4      0   Unused
  Bit 5      IC  Ignore collisions with other sprites. (1=Ignore)
  Bit 6      CC  Mix color with sprite that has next higher priority.
  Bit 7      EC  Early clock (shift this line of the sprite 32 pixels to left)

http://nocash.emubase.de/portar.htm#foregroundsprites
En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
zilogZ80a
Karoshi Lover
***
Mensajes: 115



WWW Email
« Respuesta #4 : 25 de Febrero de 2012, 03:14:33 pm »

yo tambien estoy aprendiendo como funcionan los sprites!  Cheesy
No sabia que la información de color es para planos.

quería añadir, que en los valores de los colores incluye atributos en los bits superiores:
Código:
The bytes in that color table are used as follow:
  Bit 0-3    CL  Color Code (0-15)
  Bit 4      0   Unused
  Bit 5      IC  Ignore collisions with other sprites. (1=Ignore)
  Bit 6      CC  Mix color with sprite that has next higher priority.
  Bit 7      EC  Early clock (shift this line of the sprite 32 pixels to left)

http://nocash.emubase.de/portar.htm#foregroundsprites



Hola Aorante,

Efectivamente. los bits sobre el 4º valor del ATR tienen sus funciones.

De hecho no solo hay que limitarse a poner 1 color por byte en SPRs en Mode2, puedes activar el bit 6 de mezcla de color.
Crear 2 sprites y poner uno encima del otro esto te puede dar 3 colores por byte. el propio de cada color y alli donde coincidan los bits entre ambos sprites te genereran un tercer color que sera la mezcla de los 2. si uno es azul=4 y el otro verde=3 donde se mezcle la tinta de cada sprite sera 4+3=7 Cyan

Incluso podrias seguir mezclando sprites para tener mas colores. Pero esta el problema de los 8 Sprites en linea. a mas mezclas menos sprites en linea.

Un saludo.
 
En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!