***HILO PIRATA*** Posibilidades técnicas del hardware en sistemas de 16-Bit

No soy muy dado a crear hilos pero debido a las quejas (a las que también me sumo) que vengo leyendo en los últimos días, propiciadas por la saturación de comentarios relacionados con temas técnicos, he considerado oportuno crear un hilo específico para tratar de forma más ordenada todo lo referente a estas cuestiones.

El objetivo es centralizar en un mismo lugar toda la información posible, creo que lo más adecuado es separar cada generación de máquinas, es por ello por lo que este espacio hará referencia sólo a sistemas de 16-Bit, independientemente de que sean consolas u ordenadores. Si otros usuarios consideran que se debería hacer lo mismo pero orientado hacía sistemas de otras generaciones, por mi parte tienen toda la libertad de hacerlo, o igualmente, me lo pueden comunicar y si hace falta lo publico yo mismo, por eso no hay problema.

Creo que no queda mucho más que comentar, si alguien tiene alguna sugerencia sólo tiene hacerse oír.

¡Push Start Button!


**Algunos hilos relacionados**

Curiosidades de NES (por Diskover)
Curiosidades de Mega Drive (por BMBx64)
Curiosidades de Nintendo 64 (por BMBx64)
***HILO PIRATA*** Juegos en desarrollo (por robotnik16)
Molaría que estos hilos llegasen para quedarse para elevar un poco el nivel de EOL, donde normalmente hay pocos juegos y consolas y muchas batallitas y piques. Seguramente molaría más que cada consola tuviese su hilo para que fuese más fácil de encontrar por cualquiera que lo necesitase o tuviese curiosidad. Y si ya se convirtiese en wiki... [beer]
Pues te tomo la palabra @Manveru Ainu, todavía estamos a tiempo de hacer uno específico de cada sistema.
Como sugerencia, se pueden aprovechar y enlazar en el primer post los hilos de curiosidades de Megadrive, NES y N64, y tomarlos como los oficiales técnicos de esos sistemas, siendo este el hilo para el debate general y los otros para hablar exclusivamente de los detalles del sistema correspondiente, igual que se hace hasta ahora, pero dándoles más relevancia (los compis que llevan esos hilos la merecen ).

EDIT: @robotnik16 [oki]
Sería lo suyo. Hay muchos hilos interesantes que se pierden en el tiempo y por eso casi cada día hay hilos y dudas cíclicas. Además eso desmotiva bastante, el currarte algo y que a los dos días se pierda en un agujero negro y sea como si nunca hubiera existido.
En un principio he metido toda una generación del tirón porque siempre que hablamos de una consola acabamos hablando también de su competidora, así que había pensado en incluir sistemas contemporáneos en el mismo saco y un problema menos. Pero si la mayoría ve con buenos ojos el crear hilos oficiales de cada máquina, por mi perfecto.

Edito: Hecho @gynion [oki]

Para ir abriendo boca, comentar algo que ha salido en la última Retrogamer (la que tiene el Zelda a Link to the Past en portada), hablan del juego Lionheart de Amiga, que según parece supera el límite de colores en pantalla del ordenador, llegando a alcanzar casi 200 colores simultáneamente, que no es moco de pavo precisamente...

¿No se supone que el Amiga pone un máximo de 32 colores en pantalla? Para los que no conozcan el juego, echadle un vistazo porque tiene unos gráficos increíbles (y no sólo por el colorido), mejores que los del Shadow of the Beast...

https://m.youtube.com/watch?v=n6b0rrhqMv8 (Lionheart para Amiga)
Aprovecho para poner por aquí algunos gifs.

Toy Story (hasta usa un plano con transparencias para simular la sombra de un tragaluz con las hélices:
Imagen


Unas pocas rotaciones mas, esta vez en el axelay:
Imagen


También del axelay. Esta ya es mas bestia. Rotan TODAS las tiles del ENORME enemigo de final de fase:
https://youtu.be/u7qiVPx53DA?t=243

Y como no, no podía faltar la bola del super aleste [rtfm]
https://www.youtube.com/watch?v=AInS8lSf_tc


Este vale también para megadrive, porque son el mismo juego: Capacidad para actualizar tiles, cada dos frames se actualizan las animaciones de todos los objetos.
Imagen


Acción intensa [hallow]
Imagen
Lo de las hélices del Toy Story también sucede en MD, me imagino que lo conseguirían de otra manera... más "artesanal".
robotnik16 escribió:Lo de las hélices del Toy Story también sucede en MD, me imagino que lo conseguirían de otra manera... más "artesanal".


Si, al final parece que es una animación.

Resulta un poco extraño que para una cosa tan intrascendente realicen animaciones tan extraordinariamente largas, cuando para otras mas fundamentales el bucle es mas cortito.
@robotnik16 , muy bonito el lionheart. El personaje me ha recordado mucho, mucho a He-man, imagino que estará inspirado o que la idea viene de los Masters del Universo. Son calcados:

Imagen
Imagen

De echo, incluso el mundo parece Eternia.

Un saludo.
Ahora que dices lo de He-man @aranya, viendo un gameplay completo del juego se me pasó comentar el sospechoso parecido que tiene con el Flink, yo creo que hay gráficos directamente ripeados. Está claro que no le quita mérito a nivel técnico pero sí que pierde un poco de gracia. A no ser que hubiera salido antes...

(Lionheart)
https://www.youtube.com/watch?v=EH9Ipw_tGCY&#t=0m00s

(Flink)
https://www.youtube.com/watch?v=AbEAyl7QX0U&#t=0m00s
Que jodida maravilla, el flink, un must have en toda regla.
Señor Ventura escribió:Que jodida maravilla, el flink, un must have en toda regla.


El flink de mega cd es aún más bestia, con más niveles y mejor música. El siguiente juego que hizo esta gente es el Lomax, para mí el juego 2d más bestia de la generación 32bits (y ya es decir).

Ese hilo es muy interesante,
robotnik16 escribió:Ahora que dices lo de He-man @aranya, viendo un gameplay completo del juego se me pasó comentar el sospechoso parecido que tiene con el Flink, yo creo que hay gráficos directamente ripeados. Está claro que no le quita mérito a nivel técnico pero sí que pierde un poco de gracia. A no ser que hubiera salido antes...

(Lionheart)
https://www.youtube.com/watch?v=EH9Ipw_tGCY&#t=0m00s

(Flink)
https://www.youtube.com/watch?v=AbEAyl7QX0U&#t=0m00s

Lo que decía antes del parecido, pues resulta que comparten el mismo "artista", un tal Henk Nieborg... Ahora ya cuadra.
¿Alguien ha visto esto?

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

Me parece una auténtica pasada si de verdad es para SNES, y me encantaría saber cómo se hacen ciertos efectos, porque eso de que se enmascaren sprites cuando pasas detrás de objetos es una idea genial pero de mucho coste de CPU.
Pues si no lo tienes claro tú... XD

Exactamente a qué efecto te refieres, ¿a lo del conejo o las sillas, por ejemplo? ¿No es algo parecido a lo que pueda verse en una aventura gráfica o rpg al uso?
robotnik16 escribió:Pues si no lo tienes claro tú... XD

Exactamente a qué efecto te refieres, ¿a lo del conejo o las sillas, por ejemplo? ¿No es algo parecido a lo que pueda verse en una aventura gráfica o rpg al uso?


Hombre, no he visto el código, y aunque estaría bien echarle un ojo, no me siento con ánimo de desensamblarlo y analizarlo a pelo.
El efecto al que me refiero es que usa un único BG de 256 colores, por lo que los sprites en teoría solo pueden estar delante o detrás del BG, por tanto siendo imposible que parte del escenario (el baúl por ejemplo) tape las piernas del personaje. Sin embargo, se ve que lo hace y es difícil saber cómo.
Sexy MotherFucker está baneado del subforo por "faltas de respeto"
magno escribió:El efecto al que me refiero es que usa un único BG de 256 colores, por lo que los sprites en teoría solo pueden estar delante o detrás del BG, por tanto siendo imposible que parte del escenario (el baúl por ejemplo) tape las piernas del personaje. Sin embargo, se ve que lo hace y es difícil saber cómo.


En la descripción que va haciendo en el vídeo dice "This trick is achieved with masking sprites".
El juego incluye un marcador que mide el uso de la cpu, y esta siempre por encima del 70%, asi que todo cuadra.

Sobre el streaming de tiles a 256 colores, vale que pesan 64 bytes, pero para un scroll multi direcconal, el DMA cumple de sobra a no ser que quieras hacer un sonic a toda pastilla, y mas aun cuando los sprites seguramente estén instalados en la vram, y no dependan de actualizar tiles al vuelo (de hecho sus animaciones son limitadas, y caben de sobra).

Para los escépticos, un streaming de tiles a 32 bytes para un scroll multi direccional en el sonic también sería mas que dudoso en megadrive.


Editado: ¿En snes un tile de 16x8 pixeles a 16 colores en el modo hi-res también ocupa 64 bytes?.
Sexy MotherFucker escribió:En la descripción que va haciendo en el vídeo dice "This trick is achieved with masking sprites".


Ajá, pero... ¿qué es exactamente eso? No puedes quitar de un plumazo un trozo del sprite aunque sea 8x8 porque se notaría y tendrías que estar detectando colisiones por sub-sprite y no por sprite. Enmascararlo con el enventanado solo conseguiría formas irregulares, como el contorno del baúl, si se hace por HDMA (es posible) pero tendría que estar calculada la forma irregular para cada elemento que tape a un sprite, y eso podría ser factible, pero es un trabajo de locos: para cada escenario tendría pre-calculado qué cosas tapan y tendría un HDMA enmascarando esa porción y que iría cambiando en cada frame según el baúl se fuera desplazando por la pantalla con el scroll.


Señor Ventura escribió:El juego incluye un marcador que mide el uso de la cpu, y esta siempre por encima del 70%, asi que todo cuadra.


Bueno, no sé qué cuadra exactamenete... el uso de CPU está muy alto en otros juegos también y eso tampoco explica cómo se hacen los efectos.


Señor Ventura escribió:Sobre el streaming de tiles a 256 colores, vale que pesan 64 bytes, pero para un scroll multi direcconal, el DMA cumple de sobra a no ser que quieras hacer un sonic a toda pastilla, y mas aun cuando los sprites seguramente estén instalados en la vram, y no dependan de actualizar tiles al vuelo (de hecho sus animaciones son limitadas, y caben de sobra).


No es un streaming de tiles, creo que eso ya te lo he comentado cientos de veces: las tiles se transfieren 1 sola vez, todas del tirón a VRAM cuando se cambia de escena. El scroll se hace cambiando el tilemap, que son unos cuantos bytes por frame,
Las animaciones de los sprites no se suelen meter todas en VRAM porque entonces para animar al personaje tendrías que estar cambiando el TileNumber cada frame; si las animaciones fueran muy básicas sí se podría hacer (aunque no he visto ningún juego que lo haga), pero en este caso precisamente son demasiado complejas para que residan en VRAM. Los sprites sí se suelen enviar a VRAM en cada frame según cada postura de aninmación, y para ahorrar ancho de banda (qué aquí sí podría ser crítico si actualizas demasiados), la postura de animación se suelen actualizar cada x frames, es decir, que se mantiene al personaje en una postura de la animación 2~3 frames y luego se actualiza a la nueva postura; en ese lapso de 2~3 frames se aprovecha para actualizar otros sprites.



Señor Ventura escribió:Editado: ¿En snes un tile de 16x8 pixeles a 16 colores en el modo hi-res también ocupa 64 bytes?.


Pues depende de cómo lo mires; efectivamente el tile 16x8 4BPP ocupará 64 bytes para el campo par, pero para duplicar la resolución vertical tendrás que tener otra tile igual en otro lado de VRAM que será la que se use cuando se dibuje el campo impar. Porque si solo usas la misma tile para los dos campos tendrías un modo pseudo-hires, ya que no estarías duplicando realmente el número de líneas de pantalla, sino haciendo que la SNES saque por la señal de video 2 campos entrelazados partiendo del mismo frame.

Si el modo HiRes es en horizontal, los píxeles pares se obtienen de la sub-screen y los impares de la main-screen, por lo que igual que antes, tendrías 2 tiles 16x8 4BPP, una con los píxeles pares y otra con los impares.
magno escribió:No es un streaming de tiles, creo que eso ya te lo he comentado cientos de veces: las tiles se transfieren 1 sola vez, todas del tirón a VRAM cuando se cambia de escena. El scroll se hace cambiando el tilemap, que son unos cuantos bytes por frame,
Las animaciones de los sprites no se suelen meter todas en VRAM porque entonces para animar al personaje tendrías que estar cambiando el TileNumber cada frame; si las animaciones fueran muy básicas sí se podría hacer (aunque no he visto ningún juego que lo haga), pero en este caso precisamente son demasiado complejas para que residan en VRAM. Los sprites sí se suelen enviar a VRAM en cada frame según cada postura de aninmación, y para ahorrar ancho de banda (qué aquí sí podría ser crítico si actualizas demasiados), la postura de animación se suelen actualizar cada x frames, es decir, que se mantiene al personaje en una postura de la animación 2~3 frames y luego se actualiza a la nueva postura; en ese lapso de 2~3 frames se aprovecha para actualizar otros sprites.


Es que probablemente en este juego transfiera los tiles, y quepan todos en los 32KB designados de la vram, para luego no tener que necesitar enviarlos de nuevo.

No se me ha entendido, es que en el video dice streaming de tiles a 256 colores, y fuera de lo que es el ejemplo del video, un plano sin repetición de patrones, que obligue a "stremear" constantemente en dos direcciones a la vez, tiene el handicap de tener que actualizar la fila horizontal y la fila vertical al mismo tiempo.

Tenia en mente por ejemplo la demo que hizo theelf del metal slug para la mega, que salvo la compresión de tiles (que no hacen falta volver a enviar), todo es por streaming porque el plano prácticamente no repite patrones.

El sonic sin embargo alberga todos los tiles de mapeados enormes porque repite patrones, y no hace falta transferir mas, por eso llega a ser tan rápido.
20 respuestas