Sprites/Scroll en Neo Geo

Hola a todos.
Os escribo porque sigo intrigado con el sistema de hacer planos de scroll de Neo-Geo.
Por un lado tenemos lo que habéis posteado en este foro y es que lo sprites van linkados y ocupan casi todo el alto de la pantalla... y linkando y linkando se llena todo el fondo de la pantalla para al final desplazar estos y simular un scroll.

Por otro lado... en algunas fuentes se cita que la máquina tenía 3 planos de scroll.

Si los fondos, planos de scroll estuvieran construidos por sprites...se restarían bastantes al cómputo total que puede manejar la máquina ¿no?... y cuantos más planos de scroll formados por sprites ...menos sprites disponibles para la acción del juego ¿no?.

¿Puede ser esta la razón por la que los juegos de Neo-Geo no tengan una gran cantidad de planos?

Y me vuelvo a preguntar...si los fondos están formados por sprites...en los juegos en los que parpadean sprites por la cantidad que hay en línea, como por ejemplo en Last Resort a partir del min 00,53, cuando aparece el robot de fondo y la nave le ataca, ¿por qué sólo parpadean los sprites de los elementos del juego (naves, disparos, ...) y no los del fondo o scroll??
¿no se supone que son todo sprites y que además coinciden en la misma línea por lo tanto deberían parpadear?
http://www.youtube.com/watch?v=XcK_R-CTR28&feature=related
(si echáis una partida a este juego...lo podréis comprobar fácilmente)

En resumen...pues que sigo teniendo mis dudas de que un sistema tan potente como éste no pueda manejar planos de scroll como una consola normal o como un CPS de Capcom....visto de esta forma se pierde mucho potencial de la máquina haciendo los fondos.... y cuantos más fondos o planos...menos elementos en pantalla ¿no?

Un saludo y a ver si me podéis sacar de dudas.
[bye] [bye]
Buscando un sec he encontrado esto...
Unlike most other video game consoles of its time, the Neo Geo did not use tilemap background layers. Instead, it relied exclusively on drawing sprites to create the background. Sprites are vertical strips which are 16 pixels wide, and can be 16 to 512 pixels tall. By laying multiple sprites side by side, the system can simulate a background layer. The system can draw up to 384 sprites on the screen at a time, and up to 96 per scanline.

Edit: Traduzco para quien no ande mu versado en el inglis
A diferencia del resto de consolas de su epoca, la NeoGeo no hace uso de capas de fondo a base de tiles. Unicamente dibuja en pantalla sprites para crear el fondo, siendo estos tiras verticales de 16px de ancho por 16 a 512px de alto. Poniendo varios de estos sprites pegados se simula una capa de fondo. La NeoGeo es capaz de dibujar hasta un maximo de 384 sprites a la vez en pantalla y un maximo de 96 por linea.

y
Maximum sprites on screen: 384
Minimum sprite size: 1x2
Maximum sprite size: 16x512
Maximum sprites per scanline: 96
Background layers: 0


Y la verdad que no tenia ni idea que no usara el sistema tipico pero aun asi no deja de ser el mismo sistema que tirar de tilemap o fraccionar una textura mas grande en pedacitos como se hace incluso a dia de hoy para juegos 2D, ya que esta uniendo "pedazo" o tiles para conseguir rellenar todo el fondo...y contando la limitacion maxima de sprites, nole veo problema alguno salvo que quieran mostrar en pantalla la de dios de enemigos, junto con todo lleno de balas y ademas explosiones y yo que se que mas...
También hay que añadir que si que hay momentos que todo se pone lento. Imagen
Pero eso dudo bastante que sea por la carga en si sino que puede ser mas bien por el procesamiento de calculos exponencial que conlleva el incremento del numero de entidades xDDD vamos, que a mas enemigos/balas etc.. mas calculos de movimiento y colisiones habra que realizar etc...
KFR escribió:Pero eso dudo bastante que sea por la carga en si sino que puede ser mas bien por el procesamiento de calculos exponencial que conlleva el incremento del numero de entidades xDDD vamos, que a mas enemigos/balas etc.. mas calculos de movimiento y colisiones habra que realizar etc...


Ok, supongamos que se utilizan sprites para todos los fondos...en este juego hay 3 planos de scroll realizados con sprites...con lo que perdemos unos cuantos sprites más para los personajes.
¿porqué cuando parpadean los sprites de juego...no parpadean los sprites del fondo?
sgonzalez escribió:¿porqué cuando parpadean los sprites de juego...no parpadean los sprites del fondo?


Coño, bien visto.

Es probable que los sprites de lso personajes sean los ultimos en "cargar", y que la maquina diferencie varios niveles, separando cada uno de los fondos, con los objetos moviles. Ni idea realmente.
Supongo que tendrá algún tipo de "prioridades" para que no se vea mal un fondo parpadeando [+risas]
Quizás sea porque los sprites-fondo no requieren de una rutina o un cálculo en tiempo real como los sprites, además de estar superpuestos encima de otros sprites, es decir una nave de esas puede seguir un movimiento concreto, colisionar con nosotros, disparar y ser destruída sin embargo el fondo está precalculado su manejo, movimiento y su animación.

No sé si me explico, al fin y al cabo son especulaciones mías pero podría seguir teniendo una lógica que a la hora de parpadear se resintieran las navecillas. Tambié supongo que al tratarse de sprites las capas de scrolling sean fáciles de simular
Yo cada vez que tengo dudas dobre el funcionamiento de la neogeo, vuelvo a echar un vistazo a este manual

http://furrtek.free.fr/noclass/neogeo/NeoGeoPM.pdf

Basicamente, si algo no se confirma en ese manual, es casi seguro que no existe, y en la parte del VDP solo se habla de lo ya conocido: un layer fijo y sprites

Sobre el flickering, mi teoria es que en general los fondos, tienen una accion predefinida, scroll derecha,izquierda, etc... y los calculos son minimos.

En cambio los sprites de personajes, enemigos, tiros etc, necesitan estar recalculandose continuamente, y en casos puntuales el CPU se satura, y en ese momento, no le es posible dibujar los sprites en el vblank, necesitando de otro/s para hacerlo
Supongo que vuelvo a pedir imposibles...como cuando pedía un emulador de snes que pudiera tunear la cpu o el vdp de snes para hacer overclock o algún plugin que recuadre los sprites...pero lo pido de nuevo :-D

¿hay o existe algún emulador de neo-geo/mvs que permita recuadrar o identificar los sprites en pantalla del juego en cuestión?
Si existiese algo así saldríamos de dudas...

Respecto al citado momento de flickering...en ese momento tampoco hay una carga excesiva de elementos en pantalla...un robot explotando, la nave y 4 misiles...probablemente el superprobotector de snes tenga en algún momento más carga en pantalla que en ese preciso instante...incluso el propio Last Resort muestra más elementos en pantalla más adelante...
Lo único que se me ocurre son los trabajados fondos con 3 planos de scroll...lo cual probaría la teoría de que los fondos son sprites y al estar tan elaborados se pierde capacidad para mover los sprites de los protagonistas (nave, disparos, enemigos...) aunque sigue sin dar explicación al flickering que afecta a los protagonistas pero no afecta a los fondos...

Un saludo
El que un sprite este mas o menos elavorado poro o nada importa para que cueste mas cargarlo, al final tu estas cargando un rectangulo con una rejilla de pixels de x colores...y pista. Aun no haciendo uso de fondos como tal a diferencia del resto de sistemas, yo me decanto porque igualmente dichos sprites para el fondo estan prefijados o van en cierta zona de memoria o algo similar, vamos que no creo que sean "sprites al uso" como el resto que se usan para personajes, balas, etc... y el que hubiese instrucciones prediseñadas para hacer los efectos de scroll no seria nada raro puesto que mismamente el commodore64 cuenta con ello, tanto en vertical como horizontal e incluso ambos a la vez.
KFR escribió:El que un sprite este mas o menos elavorado poro o nada importa para que cueste mas cargarlo, al final tu estas cargando un rectangulo con una rejilla de pixels de x colores...y pista. Aun no haciendo uso de fondos como tal a diferencia del resto de sistemas, yo me decanto porque igualmente dichos sprites para el fondo estan prefijados o van en cierta zona de memoria o algo similar, vamos que no creo que sean "sprites al uso" como el resto que se usan para personajes, balas, etc... y el que hubiese instrucciones prediseñadas para hacer los efectos de scroll no seria nada raro puesto que mismamente el commodore64 cuenta con ello, tanto en vertical como horizontal e incluso ambos a la vez.


Cuando digo fondo elaborado, me refiero a que hay 3 planos de scroll grandes, con movimiento vertical y horizontal, vamos que realmente ocupan más de una tira horizontal...no sé si me explico bien...son 3 folios, no tres tiras de papel... [360º] [360º]

El c64 podía pone un plano de scroll por Hardware y sprites independientemente (como una NES o una Master)...sin embargo aquí estamos hablando de que Neo Geo sólo puede manejar sprites...

[bye]
sgonzalez escribió:Supongo que vuelvo a pedir imposibles...como cuando pedía un emulador de snes que pudiera tunear la cpu o el vdp de snes para hacer overclock o algún plugin que recuadre los sprites...pero lo pido de nuevo :-D

¿hay o existe algún emulador de neo-geo/mvs que permita recuadrar o identificar los sprites en pantalla del juego en cuestión?
Si existiese algo así saldríamos de dudas...


El emulador NeoRageX te dejaba desactivar Sprites para hacer capturas de pantalla, y algunos de los que desactivaban eran del fondo. No recuerdo si desaparecia todo el fondo cuando desactivas todo...
sgonzalez escribió:
KFR escribió:El que un sprite este mas o menos elavorado poro o nada importa para que cueste mas cargarlo, al final tu estas cargando un rectangulo con una rejilla de pixels de x colores...y pista. Aun no haciendo uso de fondos como tal a diferencia del resto de sistemas, yo me decanto porque igualmente dichos sprites para el fondo estan prefijados o van en cierta zona de memoria o algo similar, vamos que no creo que sean "sprites al uso" como el resto que se usan para personajes, balas, etc... y el que hubiese instrucciones prediseñadas para hacer los efectos de scroll no seria nada raro puesto que mismamente el commodore64 cuenta con ello, tanto en vertical como horizontal e incluso ambos a la vez.


Cuando digo fondo elaborado, me refiero a que hay 3 planos de scroll grandes, con movimiento vertical y horizontal, vamos que realmente ocupan más de una tira horizontal...no sé si me explico bien...son 3 folios, no tres tiras de papel... [360º] [360º]

El c64 podía pone un plano de scroll por Hardware y sprites independientemente (como una NES o una Master)...sin embargo aquí estamos hablando de que Neo Geo sólo puede manejar sprites...

[bye]
Si, si se que comentas 3 planos de fondo con o sin scroll que eso ya es aparte. Y sobre lo de que NeoGeo solo maneja sprites, no te digo que no pero igualmente puede que haga distinciones entre los sprites que van a formar parte del fondo y los que no.
Tambien puede ser un fallo de programación, quizá algún bucle de control de colisiones, movimientos etc... que no esté optimizado del todo... algún acceso a memoria o cálculos innecesarios...

Como bien dices, es extraño que juegos en consolas menos potentes, se muevan mejor... muchas veces ahí se nota la calidad y el trabajo de los programadores.
Si, si se que comentas 3 planos de fondo con o sin scroll que eso ya es aparte. Y sobre lo de que NeoGeo solo maneja sprites, no te digo que no pero igualmente puede que haga distinciones entre los sprites que van a formar parte del fondo y los que no.



No soy experto en neogeo, solo estuve programando un poco para aprender a portar a megadrive ejemplos de la neogeo, pero aqui va una explicacion a lo que comentas

Los sprites en neogeo, tienen una "variable" asociada, que indica si es un sprite solitario, o un sprite "de union".

Que significa "de union"? pues, que por ejemplo, tenemos un fondo que ocupa toda la pantalla de largo 320 pixeles, pues este fondo, logicamente estara dividido en 20 sprites, el primer sprite sera "solitario" pero el segundo, sera de union, ya que va inmediatamente a la derecha del primero y asi sucesivamente

Entonces, con solo hacer "scroll" sobre el sprimer sprite, todos los demas que tengan esta marca se moveran junto al primero

Asi que si, existe una especie de distincion, ya que cada sprite de union, seguira a un sprite maestro, mientras coincida la variable

Si alguien ve que me equivoco corrijame, ya que como dije, para neogeo programe mas para aprender como funciona que para hacer cosas utiles
theelf escribió:
Si, si se que comentas 3 planos de fondo con o sin scroll que eso ya es aparte. Y sobre lo de que NeoGeo solo maneja sprites, no te digo que no pero igualmente puede que haga distinciones entre los sprites que van a formar parte del fondo y los que no.



No soy experto en neogeo, solo estuve programando un poco para aprender a portar a megadrive ejemplos de la neogeo, pero aqui va una explicacion a lo que comentas

Los sprites en neogeo, tienen una "variable" asociada, que indica si es un sprite solitario, o un sprite "de union".

Que significa "de union"? pues, que por ejemplo, tenemos un fondo que ocupa toda la pantalla de largo 320 pixeles, pues este fondo, logicamente estara dividido en 20 sprites, el primer sprite sera "solitario" pero el segundo, sera de union, ya que va inmediatamente a la derecha del primero y asi sucesivamente

Entonces, con solo hacer "scroll" sobre el sprimer sprite, todos los demas que tengan esta marca se moveran junto al primero

Asi que si, existe una especie de distincion, ya que cada sprite de union, seguira a un sprite maestro, mientras coincida la variable

Si alguien ve que me equivoco corrijame, ya que como dije, para neogeo programe mas para aprender como funciona que para hacer cosas utiles


Gracias por aportar, contigo siempre se aprende algo nuevo. ;)

Ahora, y sin intencion de desvirtuar el hilo, me gustaria hacer una pregunta. ¿Que diferencias practicas existen entre un tile y un sprite?, ¿son objetos con propiedades diferentes?, ¿un tipo ocupa mas memoria que otro?, ¿uno puede ser animado y el otro no?...

Saludos. ;)
Gracias por aportar, contigo siempre se aprende algo nuevo. ;)

Ahora, y sin intencion de desvirtuar el hilo, me gustaria hacer una pregunta. ¿Que diferencias practicas existen entre un tile y un sprite?, ¿son objetos con propiedades diferentes?, ¿un tipo ocupa mas memoria que otro?, ¿uno puede ser animado y el otro no?...

Saludos. ;)


De nada.

A ver, basicamente un tile es una unidad grafica. La parte mas pequeña en que se puede dividir la pantalla son los pixeles, pero trabajar punto a punto es una tarea de chinos.. XD asi que se decidio agruparlos en conjuntos, y llamarlos de alguna forma, de ahi vienen los tiles.

Imagina que no es lo mismo trabajar con, 304x224=68096 pixeles, que con solo 266 tiles de 16x16 en pantalla no? XD jeje

En el caso de la SNES o la Megadrive por ejemplo, la consola permite hacer "tilesets" que es eso? significa hacer un mapa de tiles, como una especie de puzle, donde de todos los tiles repetidos solo se almacena el primero en memoria, pero si se guarda la ubicacion de cada uno en un mapa, que luego es interpretado y mostrado en pantalla

La Neogeo no permite esto, en cambio solo los usa para representar sprites, de ahi viene, lo que muchas veces hablo del gasto innecesario de memoria por parte de la neogeo, ya que de los sprites no se hacen mapas

Creo q me lie, y no se me entiende nada.. no?
Sip, lo de los sprites con linkado ya lo había leido.
Se pueden unir, linkar, enlazar (utilizad el término que queráis) supongo que con un puntero o algo así al siguiente sprite para poder hacer scrolles o mover personajes enormes por pantalla (por ejemplo una nave enemiga enorme o lo que sea...)

Pero se supone que sigue habiendo límite se sprites en línea antes de que se produzca flickering ¿no?...

¿¿Lo del emulador con posibilidad de recuadrar (o identificar de la manera que sea sprites) ?? ¿es viable? ¿existe algo así?

¿Cuántos sprites se gastan para llenar un fondo de pantalla en Neo-Geo?
[bye]
Si la neogeo trabaja a una resolucion de 320x224 y el sprite para fondo mayor es de 16x512, pues tenemos que de alto el tema va sobrado pero de ancho seria 320/16=20 aunque de hacerlo mas "normalmente" se usarian estilo tiles o secciones del mismo tamaño como formando un puzzle, como bien han dicho ya, y tendriamos 224/16=14, siendo 20 columnas por 14 filas, un total de 280tiles, cada uno de 16x16px.
KFR escribió:Si la neogeo trabaja a una resolucion de 320x224 y el sprite para fondo mayor es de 16x512, pues tenemos que de alto el tema va sobrado pero de ancho seria 320/16=20 aunque de hacerlo mas "normalmente" se usarian estilo tiles o secciones del mismo tamaño como formando un puzzle, como bien han dicho ya, y tendriamos 224/16=14, siendo 20 columnas por 14 filas, un total de 280tiles, cada uno de 16x16px.


Supongamos que tenemos 3 planos de scroll....320/16*3=60 menos el total de sprites que neo-geo maneja: 380-60 = 320 sprites libres ...tampoco está mal la cifra la verdad...
Aparte de los límites de la máquina, cómo está programado un juego tiene su importancia: por ejemplo, Metal Slug X es un Metal Slug 2 reprogramado y optimizado, en el que las ralentizaciones desaparecen o se mitigan.

De todas maneras, creo recordar que Neo-Geo no "carga" del cartucho como otras consolas en los sprites, sino que tiene en la Rom del cartucho todos los sprites del juego totalmente descomprimidos y listos para mostrar... de hecho, y si no me falla la memoria, actúa como una especie de extensión de la Vram.
21 respuestas