Página 2 de 2

Re: Chip de Sprites virtual para ZX Spectrum

Publicado: 11 Nov 2015, 23:14
por chernandezba
Hola

He subido otro video de demo:

https://youtu.be/vUTapkT4wl0

Mostrando el zoom sobre sprites, espejo horizontal y vertical, y algún movimiento nuevo de Sonic ;)

Espero que os guste.

Saludos
César

Re: Chip de Sprites virtual para ZX Spectrum

Publicado: 11 Nov 2015, 23:36
por Haplo
Que caña, me quedo embobado la verdad.
Una cosa, los glitches(no sé si se denominan así) que hacen los sprites a veces al moverlos verticalmente son debidos a las rutinas de pintado del programa no a la "velocidad" del chip, correcto?

Re: Chip de Sprites virtual para ZX Spectrum

Publicado: 12 Nov 2015, 00:03
por chernandezba
Si, es debido a eso. Piensa que por ejemplo, cuando Sonic salta y está el "malo" en pantalla, tengo que actualizar los dos objetos. Son muchos sprites a cambiar las coordenadas x e y, además de realizar un scroll vertical. Mas o menos todo esto se cambia al principio de una interrupción de pantalla, y si tarda mucho en actualizar todas esas coordenadas, se encuentra que el chip de video ya ha mostrado parte de esos sprites en pantalla. De ahí los "glitches" o parpadeos. Además, cuando Sonic salta, tengo que cambiar continuamente el sprite de "giro" de Sonic, y eso significa desactivar el sprite anterior y hacer visible el siguiente del giro... ahí también puede suceder un parpadeo.

No es nada provocado directamente por el chip, sino que es la manera de redibujar los sprites por el programa de demo. La verdad es que me he encontrado con estos problemas por primera vez, dado que nunca había trabajado con sprites.... ;)


Saludos
César

Re: Chip de Sprites virtual para ZX Spectrum

Publicado: 12 Nov 2015, 00:07
por chernandezba
Ah y respecto a la "velocidad" del chip....
El dibujado de pantalla se realiza de la siguiente manera:

-Cada 50 veces por segundo, se empieza a dibujar la pantalla, leyendo las direcciones de memoria 16384-23295, además del border, desde la linea superior hasta la inferior. Cuando se ha llegado "abajo", ha pasado otro 1/50 de segundo y se vuelve a arriba de nuevo a dibujar. Esto es así en un Spectrum normal.

-El chip de sprites lo que hace es que, además de leer las direcciones de memoria y el border, también se lea la tabla de sprites y se muestre la linea correspondiente al sprite. Por ejemplo, cuando se leen los primeros pixeles de pantalla (justo por debajo del border superior, coordenada Y=0) si hay algún sprite que tenga alguna de sus 8 líneas en la coordenada Y=0, se muestra dicha linea de sprite. Siguiendo el mismo ejemplo, se realiza lo mismo para Y=1, Y=2 así hasta Y=191. Realmente el concepto de dibujado de sprite es muy simple

Por tanto, el concepto de "velocidad" del chip no tendría mucho sentido aquí. Se podria medir la velocidad de dibujado de pantalla en 1/50 de segundo.
Saludos

Re: Chip de Sprites virtual para ZX Spectrum

Publicado: 12 Nov 2015, 00:22
por Haplo
Ok, lo suponía. Imagino que optimizando las rutinas de manejo de datos se podrán minimizar esas cosillas dentro de unos límites, claro está. El "cuello de botella" sería la velocidad del spectrum en actualizar los datos del sprite.
¿cuándo podremos meterle mano al invento? :mrgreen:

Re: Chip de Sprites virtual para ZX Spectrum

Publicado: 12 Nov 2015, 00:30
por chernandezba
Si, esas rutinas de manejo de sprites no están para nada optimizadas. Aparte que el tamaño del sprite de Sonic lo he dejado igual para todos sus movimientos, para facilitarme la conversión del bitmap, pero soy consciente que uso muchos más bytes de los que debería.
En cuanto a probarlo... Bueno como siempre se puede bajar el código fuente de la última snapshot y compilarlo... Pero bueno como sé que no es un proceso cómodo, ya pasaré un binario compilado, al menos para windows, para que podáis probar la demo :)

Re: Chip de Sprites virtual para ZX Spectrum

Publicado: 12 Nov 2015, 10:22
por Hark0
Grande!!!!

:plasplas: