Sprite

Page 3/3
1 | 2 |

Par mohai

Paladin (899)

Portrait de mohai

04-03-2015, 13:31

Hola,

Voy a hacer una reflexión centrándome en el chip TMS9918, no el V9938.

El VDP procesa los sprites con una línea de retraso, por eso la coordenada vertical 0 se corresponde con la coordenada gráfica 1.
El VDP procesa los sprites para cada linea, en el tiempo que dibuja los bordes laterales.
Supongo que el truco para tener más tiempo para procesar sprites, consiste en usar el tiempo de dibujado del borde derecho e izquierdo (por este orden). Por eso la coordenada vertical de los sprites va retrasada una línea.
Es decir, que cuando dibuja el borde superior, no procesa sprites. Tiene que esperar a dibujar la primera línea de gráficos y el borde derecho, para empezar a procesar sprites.

¿Que pasa entonces cuando se dibuja la última línea gráfica de la pantalla, en la coordenada 191?
Pues que, al llegar al borde derecho, el VDP sigue procesando sprites, pero no serán mostrados porque lo siguiente mostrado es el borde inferior.
Así, si algún sprite está colocado a partir de su coordenada vertical 191 (que coincide con la primera línea del borde), el VDP aún lo procesaría
y seguiría procesándolo hasta la coordenada 208, que usa como flag para ocultar sprites.
Supongo que el VDP deja de procesar sprites en la coordenada 209, por eso se señala en algunos textos como coordenada para que desaparezca el plano de sprite.

Esto aún lo tengo que probar en un MSX real. Lo he probado en el emulador BlueMSX y los sprites se dejan de procesar a partir de la coordenada vertical 192.

El funcionamiento con el V9938 es ligeramente diferente, porque los sprites tienen que ser procesados para las 255 coordenadas verticales, por aquello del scroll vertical.

Par mohai

Paladin (899)

Portrait de mohai

04-03-2015, 13:34

Corrijo:

El VDP comienza a procesar sprites en la coordenada vertical 255, porque esa se corresponde a la coordenada gráfica 0.
Eso me lleva a pensar que los sprites son procesados en el tiempo de dibujar el borde izquierdo sólamente y no ambos bordes.

Par e_sedes

Expert (112)

Portrait de e_sedes

05-03-2015, 12:29

¿No será que los procesa en todo momento menos en la coordenada de desactivación? Ten en cuenta que pueden estar por arriba asomando solo la puntita (entiendaseme Tongue )

Par mohai

Paladin (899)

Portrait de mohai

05-03-2015, 13:22

e_sedes wrote:

¿No será que los procesa en todo momento menos en la coordenada de desactivación? Ten en cuenta que pueden estar por arriba asomando solo la puntita (entiendaseme Tongue )

Si. Te entiendo.
Por eso dije que la coordenada primera ¿O última? de proceso es la 255.
No tengo claro si son procesados en todo el alto o el VDP deja de procesar en algunos momentos, porque lo probé en el emulador BlueMSX. Tengo que probarlo en un MSX1 real para estar seguro.
En el emulador dejan de coincidir en la coordenada 192, mas o menos.

Par DarkSchneider

Paladin (939)

Portrait de DarkSchneider

16-04-2015, 12:23

Según el manual del V9938:

Quote:

Sprite attribute table (SM1)
Y-coordinate defines the vertical position of the sprite. Note that if Y is equal to 208 (D0h), all lower priority sprites will not be displayed. It is important to know that when using vertical offset register R#23 to scroll the visible area of the screen, sprite with the Y coordinate of 208 will not be displayed and in order to display sprite in this area on the scrolled screen programmer should use Y-coordinate equal to 207 or 209.

Sprite attribute table (SM2)
Y-coordinate defines the vertical position of the sprite. Note that if Y is equal to 216 (D8h), all lower priority sprites will not be displayed. It is important to know that when using vertical offset register R#23 to scroll the visible area of the screen, sprite with the Ycoordinate of 216 will not be displayed and in order to display sprite in this area on the scrolled screen programmer should use Y=coordinate equal to 215 or 217.

Entonces el método es sencillo, ponerlo en una coordenada Y fuera de pantalla saltándote la 208/216 según el caso. Hay que tener mucho cuidado si tiene scroll.

Page 3/3
1 | 2 |