Página 1 de 1

Ahora que estamos en verano ¿Sprite o 7up?

Publicado: 11 Jul 2019 07:58
por Mlake
Seguro que todos recordamos los "piques" sobre distintas plataformas que teniamos de chavales, charlas que no llegaban a nada porque al fin y al cabo gracias a tener maquinas diferentes, entre amiguetes podiamos catar todos los juegos/programas, aprender cosas.....

El otro dia tuve una conversacion del estilo y me entró una nostalgia del copon. :D
La cosa es que al llegar al tema sprites, aparecio la frase "es que tal maquina tiene X sprites y la otra tiene Y". Un clasico.
En ese momento mi cabeza volvío 30 años atras, mis tardes de niño delante del Spectrum, el bocata, y sobre todo.... la falta de sprites.
No pido color, ni scroll, solo unos personajes que se muevan como los de la NES de mi primo. :(
Con el tiempo indagas y descubres la razon. Los dichosos sprites.

¿Que son? ¿Porque hace que haya maquinas que parezcan de otro planeta solo por tener estas cosas?

Como siempre me parecio curioso el tema, seguro que hay gente con maquinas sin sprites que les gustaria conocer el funcionamiento (un poco por encima). A lo mejor les anima a probar otras plataformas.



La forma de generar la imagen en los tipicos cacharros tipicos de la epoca es asi (algunos no teniamos nada, casi todo a pelo desde CPU).

Imagen

El controlador de video compone la señal usando los caracteres de una ROM, tiles de un cartucho/disco/cassette, charset redefinible,mapas,punteros,lo que sea.... para sus cosas tiene ademas una memoria exclusiva (VRAM).
Nos da igual que sea un mapa de tiles/caracteres, un buffer de pantalla, lo que sea.
Hasta aqui todos somos iguales, cada uno con sus caracteristicas de color, resolucion, hardware de scroll (si existe) y demas. Unos mejores y otros peores....

¿Que pasa si a esa pantalla le pudieramos añadir algo mas?
Lo primero es pensar "si quisiera añadirle algo, ya lo hubiera puesto yo en el mapa/buffer de pantalla".

Entonces te pintan esto:


Imagen

¿A quien no se le ponen los dientes largos con una pantalla extra cuando la memoria es carisima? Como es logico decidimos comprar una capa extra por un precio bastante razonable para lo que nos ofrece.
El problema es que llegamos a casa, nos liamos a "pintar" .
Nuestro primer sprite es la leche, pero el segundo no cabe. Ahi es cuando miras la letra pequeña ....
"El dibujo no representa una capa extra, representa un sistema de prioridades.
Ademas, usted solo ha comprado un sprite"

¿Que he comprado que?
Muy sencillo, la imagen de fondo es la de siempre, pero el sprite es un CIRCUITO que "inyecta" los pixels de ese dibujo en el momento necesario.
Por eso no necesitan gastar una pantalla nueva (memoria) ni tocar la vieja. Solo esperan al momento necesario para "mezclarse" antes de salir.
Algo asi como los OSD verdes de las TV, pero en lugar de atacar al RGB analogico lo hacemos dentro del procesador de video. (por hacer un simil)

Ahora hay que decidir cuantos nos hacen falta, no son tan caros como tener una pantalla nueva, pero valen sus buenas perras. Asi que decidimos que con 4 nos vale.
Si nos gastamos mas,no sale rentable al bosillo.

Una vez seguimos con nuestro proyecto nos sale otro problema, los 4 que tenemos no nos dan, tenemos que comprar mas. :(
Llega un momento que has gastado tanto que no puedes ni tirar para atras asi que tiene que haber una forma de seguir menos cara.

Pensamos un poco.... si el sprite inyecta cada linea del dibujo, ¿Que hace el resto? Exacto, nada.
Eso se tiene que aprovechar de alguna manera y aqui vamos a presentar a esta cucaracha.

Imagen

El TMS9918 es el "estandar" de los sprites, todos (o casi) los sprites domesticos funcionan por el mismo estilo. PPU,VicII, SEGA....
Por eso lo vamos a usar como apoyo y para tener un contexto.

A lo que ibamos. Reutilizar los sprites.

Solo tenemos 4 sprites, necesitamos mas y el presupuesto es minimo.
¿Cuantos hacen falta? Por pedir.... pues 32
¿Como lo organizamos? Mediante tablas.

Lo primero es mirar el hueco para los sprites. Tenemos unos KB que nos da para 256 sprites de 8*8 o 64 de 16*16
Ahora toca reutilizar los sprites asi que con 128bytes tenemos que apañar a los 32 .
1B para la X, otro para la Y, otro para saber que tile usar (de los 256/64 que vimos antes) y otro para otras cosas (que color de la paleta coger y demas).
4x32=128. Justo.

Con esos mapas, los cuatro sprites intentan hacer lo que pueden. Si estan ocupados con otra peticion, no pueden atenderla y ese sprite no se pinta.

Imagen

Por eso hay que saber diferenciar un SPRITE DE VERDAD y una simple anotacion en una tabla.
Si fuera tan facil, ponemos una tabla inmensa, anunciamos un gritón de sprites y salvese quien pueda.:D

Como digo, la mayoria sigue un sistema parecido (o lo "imitan"). Por eso no hay que fiarse cuando oyes "mi equipo tiene X sprites" porque seguramente hablan del tamaño de la tabla y no del numero de "inyectores".





RESUMEN: Cuando vayas a un bar a pedir Sprite y te digan que el 7Up es lo mismo, no te fies... -drinks

PD: Si no he sacado al Amiga en el hilo es porque es de las pocas excepciones. Sigue el mismo principio, Denise inyecta y las dos tablas se "unen" en una donde se mezcla el bitmap con la posicion/ configuracion del mismo.
Pero el "circuito" no tiene nada que ver.

Re: Ahora que estamos en verano ¿Sprite o 7up?

Publicado: 11 Jul 2019 19:43
por jltursan
Un gran integrado el TMS9918A (con A, ojo), si tenemos en cuenta las fechas en las que apareció es todo un logro. La de equipos que montan ese chip de video...

Pena que no pudiese presentar al menos hasta 8 sprites multicolores y que mediante interrupciones de línea pudiese multiplexar la cantidad...espera, que eso es lo que hace el Yamaha V9938 :-D

Re: Ahora que estamos en verano ¿Sprite o 7up?

Publicado: 11 Jul 2019 20:11
por zxpope
gracias por el interesante hilo

manteniendo el color clash (una seña de identidad)
me encantaria que los nuevos spectrum basados en fpga pudiesen incorporar una gestion de sprites tipo TMS9918a y/o V9938

el problema es ?quien va utilizar esta extension?

yo creo que la forma de normalizar extensiones modernas en el ZX es hacer que el AGD (arcade game designer)
pueda mover los sprites o por software o por hardware

ventaja
mover mas cosas
mover mas rapidamente
mover pantallas mas grandes (mas pixels)

en fin, yo sprite. donde vivo no hay 7up

zxpope

Re: Ahora que estamos en verano ¿Sprite o 7up?

Publicado: 12 Jul 2019 02:12
por Mlake
zxpope escribió:gracias por el interesante hilo

manteniendo el color clash (una seña de identidad)
me encantaria que los nuevos spectrum basados en fpga pudiesen incorporar una gestion de sprites tipo TMS9918a y/o V9938

el problema es ?quien va utilizar esta extension?

yo creo que la forma de normalizar extensiones modernas en el ZX es hacer que el AGD (arcade game designer)
pueda mover los sprites o por software o por hardware

ventaja
mover mas cosas
mover mas rapidamente
mover pantallas mas grandes (mas pixels)

en fin, yo sprite. donde vivo no hay 7up

zxpope

Yo creo que es una opcion muy golosa y facil de "atacar". Como hemos visto, la idea es meter los tiles/bitmaps en un pozo y armar una tabla con todos los posibles usos (32).
El problema de todas estas "extensiones" es que cada cual lo hace a su modo como bien apuntas.

Yo no soy muy purista asi que metiendo FPGA de por medio, prefiero alguna burrada de este estilo. -grin

https://www.youtube.com/watch?v=e4gy3lJ3ZU4

Re: Ahora que estamos en verano ¿Sprite o 7up?

Publicado: 12 Jul 2019 09:55
por Chema
Pues yo voy a ser la nota discordante ;) Como crecí con el Speccy y el Oric, los sprites por hardware no me atraen demasiado. Ojo, que no digo que no sean fundamentales para los juegos (sobre todo en algunos géneros), pero no es algo que me entusiasme.

Supongo que, como me gustan los juegos raros (puzzles, aventuras, 3D, isométricos,...) y en esos el uso de los sprites ayuda menos, pues.... Además, aprendí a hacerlos por software y ya es costumbre.

Me parece mucho más interesante tener cosas como doble-búfer por hardware, cosa que tiene el speccy 128K, el C64 y muchos otros, pero no el Oric. También otras ayudas como scroll por hardware o modos de vídeo versátiles, combinables, y que permitan hacer cosillas.

Y yo si soy más purista. Todos los añadidos modernos que "mejoren" las máquinas de manera artificiosa, no me dicen nada. Molan y tal, pero me atraen más bien poco. Me molan las restricciones de la época...

Re: Ahora que estamos en verano ¿Sprite o 7up?

Publicado: 12 Jul 2019 13:45
por zxpope
hola,

el spectrum tiene un diseño muy refinado que ha aguantado el paso del tiempo (30años!), asi que es dificil de mejorarlo.
pero el paso de tiempo nos ha traido cosas que no existian entonces: televisores enormes

aumentar la resolución del spectrum (en fpga) x4 o x16 es posible, por ejemplo, aumentando x4 o x16 la ram de video (via bankswitching)
pero... el z80 deberia ser 4/16 veces mas potente para refrescar con la misma agilidad la pantalla.

aquí es donde vendria en auxilio el uso de sprites
para el programador del AGD quedaria transparente su uso

tambien seria posible instanciar 2/4/8/16 CPUs tipo Z80 para mover la pantalla (ya hay un core con 4cpus),
pero el procesado paralelo lia la programación...

@mlake, al comentar que el patron de uso del TMS9918 es similar en otras arquitecturas vic20,c64,sega puede servir a modo de especificacion para los aficionados a programar FPGAs

en fin,
es un tema que voy dandole a la rosca hace tiempo

salud
zxpope

Re: Ahora que estamos en verano ¿Sprite o 7up?

Publicado: 13 Jul 2019 02:49
por Mlake
zxpope escribió:[...]

@mlake, al comentar que el patron de uso del TMS9918 es similar en otras arquitecturas vic20,c64,sega puede servir a modo de especificacion para los aficionados a programar FPGAs

[...]

Imagen

Que todos los coches tengan volante, palanca y 3 pedales, no quiere decir que bajo el capó sean iguales.
A la hora de hacer el hard, cada cacharro lo implementa a su forma (siguiendo el sistema de tablas que vimos).

Algunos como Sega (por ejemplo) tambien usa la VDP para generar sonido (PSG), otros como la NeoGeo que no tienen background por lo que la escena se genera 100% a base de sprites.....


Sobre el tema del hilo, podemos ver en el circulo rojo de la imagen como se mezclan el fondo y los 4 sprites (no 32) antes de salir por el color bus hacia la salida de video.