Curiosidades de la NES/Famicom [Cuidado 56k y Tarifas Datos]

16, 7, 8, 9, 10
Mas cosas sobre la NES.

Existe una manera de medir el uso de los recursos de la NES y plasmarla en pantalla mientras se está usando, siempre y cuando el programador haya creado esta función específica.

En concreto, si usamos este primitivo depurador, aparecerá en pantalla un "capa trasparente" dibujándose de arriba hacia abajo. Cuanto menos grande sea la "capa trasparente" menos recursos estaremos usando, y lo mismo al reves.

Esta "capa trasparente" realmente lo que hace es dibujar los scanlines uno a uno con enfasis de color según vaya midiendo los recursos que la CPU está usando en ese momento, que es lo que da la ilusión de trasparencia.

La librería de NESdoug (para quienes programen en C y compilen con CC65), tiene la función gray_line(void), que es lo mismo pero dibujando con énfasis de color solo el último scanline donde acaban los procesos de medida, y no por todos los scanlines que sobre dibuja; aunque si queréis, se puede reprogramar a vuestro gusto.

El usuario de Twitter @matthughson sin embargo, creó su propia función de depuración un poco más trabajada, con posibilidad de teñir de distintos colores según empiezan y terminan X funciones que nos interesen medir.



Si, ya se que estaís pensando "¡Ey! ese recurso nos podría servir para simular transparencias"... Y efectivamente, ya en su día se llegó a usar. En concreto la compañía Source, en su videojuego Noah's Ark (publicado por Konami), para simular la subida y bajada del nivel del agua.

No sé si se había publicado ya, pero os traigo un video donde se muestra como se hacían los controles test de la NES en la fábrica de Japón, allá por el año 1990.

Explicación simple y fácil del parpadeo de sprites en NES que en realidad no es una limitación por si misma sino un truco de software de la época (que imagino terminó implementándose por hardware en posteriores sistemas):

@SuperPadLand
En todas las máquinas que he probado se hace a mano...
SuperPadLand escribió:Explicación simple y fácil del parpadeo de sprites en NES que en realidad no es una limitación por si misma sino un truco de software de la época (que imagino terminó implementándose por hardware en posteriores sistemas):



Ese tweet es confuso. Claro que existe una limitación. No conozco el HW de la NES pero siguiendo el tweet pone 8 sprites por línea, lo que significa que a partir del 9º sprite ya no se pintaría.
El flicker es una "solución" parcial, un truco de la época, como tu mismo dices, para pintar todos los sprites.
La idea es ir cambiando el orden de la lista de sprites de forma rápida, de esta forma "se pintan tantos como se pueda" y de ahí el parpadeo. Estos cambios de orden se hacen por parte del programador, no es algo que el HW haga por si mismo.
@danibus en el hilo dice eso mismo con videos, en uno muestra como el personaje desaparece ante una línea de enemigos que ya suman 8 sprites y en otro lo mismo con el parpadeo configurado.
Un interesante longplay sobre el hack de Somari que tan locos nos esta dejando

Como siempre, brutal documental de Gaming Historian sobre el proyecto de una NES portátil:

Diskover escribió:Un interesante longplay sobre el hack de Somari que tan locos nos esta dejando



Me mola el sprite del Sonic, tiene cara de gamberro [+risas]

EMaDeLoC escribió:Como siempre, brutal documental de Gaming Historian sobre el proyecto de una NES portátil:



La portátil que nos merecíamos en 1989-1990 con una autonomía de 5 minutos [carcajad]
@EMaDeLoC Lo que impacta es que no permitieran la producción de este cartucho-adaptador para jugar todo el catalogo de Game Boy en tu Nintendo "NES" ( y Clónicas como NASA, Creation .. ). [facepalm] [facepalm]
En la época hubiera sido un éxito seguro. ( El NES-BOY por ponerle nombre )

Imagen
@Creation Lo que Nintendo no permitió según el video fue la NES portátil (y con razón, ya que le fragmentaba el mercado y le hubiera podido pasar como le pasó a Sega pocos años después). El cartucho para jugar a juegos de la GB en la NES quien quería sacarlo y no lo hizo (por problemas ajenos al tema) fue Camerica.
@MasterDan también comentan que se debió a una más que posible futura demanda por parte de Nintendo América que les bloqueo / paro todo lo que tenían pensado lanzar Camerica.
Ese cartucho le hubiese dado más valor a las nes pero le hubiese quitado valor a la SNES.
Y a lo que había de dar valor era a esta última.
Lógico creo yo.
Pero yo tenía entendido que la GB era más potente que la NES, ¿cómo podría entonces tirar ese cartucho? A no ser que tuviera dentro circuitería adicional como tenía el Super Game Boy.
@danibus súmale que Nintendo no quiso ( pudiendo hacerlo ) un port de Super Mario Bros. 4 ( Super Mario World ) en Nintendo "NES" ( alegando que no era posible mostrar a Yoshi etc etc .. poco después se demostró que era una alegación falsa, para mantener la exclusividad del titulo en Super Nintendo y no mermar las ventas )
En ese momento muchos usuarios de Famicom / Nintendo "NES" no podían permitirse el tener una nueva Super Nintendo por lo que ese cartucho-adaptador ( Game Boy to "NES" ) y el port negado de la continuación de Super Mario Bros. 3 habría supuesto un golpe vital para mantener la NES a flote en su ultima etapa comercial.
La realidad fue que Nintendo dejo obsoleta a la Nintendo "NES" desde el momento 1 que apareció Super Nintendo dejando a sus usuarios sin alternativas que no fueran cambiar de sistema y pasar por caja.

@Creation Tonterias. El último juego que publicó Nintendo en EEUU para NES fue Wario's Woods en el 94, mientras que la SNES salió en el 91. En ese periodo Nintendo apoyó a la NES incluso publicando juegos de terceros que estos no querían publicar por que no les salia a cuenta (Megaman 6 te miro a ti) e incluso sacó la NES Top Loader a un precio irrisorio para quien aun no hubiera comprado la original.

Sacar un port de Super Mario World para NES era estúpido desde el punto de vista comercial, además de que no le llegaría a la suela de los zapatos al original lo único que podría conseguir es bajar las ventas de SNES, cosa que no les beneficiaría en absoluto.
@MasterDan Estando ya Super Nintendo en tiendas con su nuevo catalogo, fue insuficiente ( quitando ese MegaMan 6 y el Kirby de la NES ) lanzar otros títulos poco relevantes hasta el 94 en su ultima etapa comercial ( es correcto, pero fue un apoyo simbólico ), lo que expongo en el anterior post hubiera beneficiado más a los usuarios de Nintendo "NES" ( El cartucho-adaptador y un nuevo Super Mario Bros hubiera sido un mejor cierre a favor de su anterior sistema de 8-Bits.

Ahora desde el punto comercial de Nintendo, esta claro que eligió sus intereses comerciales sobre el de los usuarios de su anterior sistema, bloqueando cualquier intento que pudiera mermar ventas a su nueva Super Nintendo ( incluso viniendo de la misma Nintendo "NES" )

No parece nada absurdo un port de Super Mario World para NES, hubiera permitido a miles de usuarios de la Famicom / Nintendo "NES" que no podían tener o acceder a una Super Nintendo poder disfrutar de un nuevo titulo de Mario sin tener que hacer un gran desembolso en un nuevo sistema. ( pero eso no le interesaba a Nintendo como compañía )
Un gran port que llevaría al limite a la Nintendo "NES" de 8 -Bits ( sin entrar en comparaciones evidentes con un sistema superior ).

@Creation Sigue sin cuadrarme lo que comentas. He ido a mirar la wikipedia y he contado los juegos lanzados para NES en USA (que suelen ser los números más fiables) desde agosto del 91 (cuando lanzaron la SNES allá) hasta el último juego lanzado pala máquina (El ya comentado Wario's Woods). El resultado ha sido el siguiente:

De agosto del 91 hasta final de año: 48 lanzamientos
En el 92: 96 lanzamientos
En el 93: 43 lanzamientos
En el 94: 12 lanzamientos

Como se puede ver el 93 comenzó a decaer la cosa y el 94 fue la última exhalación comercial oficial de la máquina, pero también es lógico ya que estaba tenia ya 9 años desde su lanzamiento inicial en USA, su sucesora llevaba 4 años en el mercado y para acabar de situarnos en Japón ese año aparecía la Playstation a la venta.

Aun así estos números demuestran que la consola no fue abandonada sin más una vez salió SNES, si no que recibió al menos 3 años más de amplios lanzamientos.
MasterDan escribió:@Creation Sigue sin cuadrarme lo que comentas. He ido a mirar la wikipedia y he contado los juegos lanzados para NES en USA (que suelen ser los números más fiables) desde agosto del 91 (cuando lanzaron la SNES allá) hasta el último juego lanzado pala máquina (El ya comentado Wario's Woods). El resultado ha sido el siguiente:

De agosto del 91 hasta final de año: 48 lanzamientos
En el 92: 96 lanzamientos
En el 93: 43 lanzamientos
En el 94: 12 lanzamientos

Como se puede ver el 93 comenzó a decaer la cosa y el 94 fue la última exhalación comercial oficial de la máquina, pero también es lógico ya que estaba tenia ya 9 años desde su lanzamiento inicial en USA, su sucesora llevaba 4 años en el mercado y para acabar de situarnos en Japón ese año aparecía la Playstation a la venta.

Aun así estos números demuestran que la consola no fue abandonada sin más una vez salió SNES, si no que recibió al menos 3 años más de amplios lanzamientos.


También hay que tener en cuenta que la NES siguió teniendo distribución varios años más que no todo son nuevos lanzamientos. A las tiendas seguían llegando consolas y juegos, al menos aquí, varios años después del Wario Woods. Con un catálogo de 2000 juegos tampoco es que necesítase nuevas IP porque ya era un éxito y tenía fondo de armario que en occidente colaba como "juego nuevo".
SuperPadLand escribió:Me mola el sprite del Sonic, tiene cara de gamberro [+risas]


Creo que es el de Sonic 3 de Mega Drive
@MasterDan En esta parte de mi post e errado sin tener en cuenta la lista wiki que facilitas, pero entiendo que la idea de Nintendo era que los usuarios optaran por comprar la nueva Super Nintendo en lugar de seguir con la NES.
Creation escribió:La realidad fue que Nintendo dejo obsoleta a la Nintendo "NES" desde el momento 1 que apareció Super Nintendo dejando a sus usuarios sin alternativas que no fueran cambiar de sistema y pasar por caja.

Es correcto que Nintendo siguió dando soporte a Nintendo "NES" añado a la corrección que la producción y venta del cartucho-adaptador Game Boy sumado a una nueva entrega de Mario habría sido un plus importante que hubiera sumado a esos lanzamientos [oki]
.. también salió los geniales Mighty Final Fight de Capcom y el Battletoads and Double Dragon durante esa etapa final de "NES"
@Creation En general ninguna compañía que tenga un amplio nicho de mercado con una de sus máquinas la va a abandonar de repente dejando en estacada a sus usuarios cuando sacan una nueva, ya que sigue habiendo un gran número de potenciales clientes y además daría muy mala imagen.

Normalmente esto de abandonar rápidamente un producto lo hacen cuando este no ha funcionado (o no ha funcionado lo bien que se esperaba) para evitar perdidas, como hizo Nintendo con la Wii U por ejemplo o Sega en USA con la Master System (En Europa por eso esta no fue abandonada y convivió con su hermana de 16 bits).

El adaptador de juegos de GB hubiera molado, pero si lo hubiera intentado sacar Camerica seguramente Nintendo lo habría intentado impedir de alguna forma (Recordemos que era una de las compañías que sacaba juegos sin licencia para NES). Creo que si se lo hubieran presentado a Nintendo como hicieron con el cacharro para meter turbo en los mandos esta si lo habría lanzado (Bien que lanzó más adelante el Super Gameboy).

Lo de sacar más Marios hubiera estado seguramente bien, pero supongo que en aquellos momentos tenían toda la carne en el asador con SNES y nos podemos dar por satisfechos con juegazos como el Kirby, el Zoda's revenge.
También habría que tener en cuenta si un adaptador como ese hubiera vendido mucho o no. El Super Game Boy fue un producto minoritario, pero uno de sus grandes reclamos fueron las características extra que se le podían dar a los juegos de GB, potencia de procesado extra, coloreado, etc.

En NES quizá sus características no hubieran sido las mismas habida cuenta de que su hardware era más limitado, y no sé a cuánta gente con una NES le habría resultado atractivo jugar a juegos en blanco y negro que en la mayoría de los casos eran adaptaciones recortadas de juegos de NES. Si acaso el Link's Awakening les habría llamado la atención pero creo que nada más. (Y aún faltaban tres años para que Pokémon aparezca en escena XD )

P.D.: ya que saco el tema, existe una versión pirata de Pokémon para NES, está bastante curiosa. XD
chicos saben cual version es mejor entre el

NES Open Tournament Golf y el japonés Mario's Open Golf?
Se sabe algo de avances recientes del port de los Simpson Arcade ? .. llevan un tiempo sin noticias ( algo similar ocurre con la versión Mega Drive ) creo que ambos están en el desarrollo del 1º nivel.

Ese motor que emplea en los Simpson Arcade ( similar al port del TMNT II Arcade ) podría incluso con una pequeña demo del X-Men o Bucky O'Hare de Konami en un futuro para NES.
@Creation Supongo que se habrán aislado un poco para centrarse y seguir avanzando sin tanto anunciarlo en twitter.
En general, todos esos anuncios de avances de ports para NES y Mega se han relajado bastante...

Pues no estaría mal ver el Bucky O'Hare en consola, ya fuera en NES o en Megadrive... me gustaba mucho ese juego en recreativa y le pasa como al Cadillacs & Dinosaurs o el mismo The Simpsons, que no apareció ningún port para consola en su día.
(mensaje borrado)
Resumen de los mejores homebrew que han salido hasta la fecha:

Aprovechando que Morphcat Games acaba de lanzar un kickstarter presentando un nuevo proyecto para NES, donde pretende aunar en un solo cartucho tres de sus grandes y premiados éxitos: Böbl, Micro Mages, y Spacegulls; su creador ha lanzado un artículo muy interesante donde describe como hizo las ondas de agua en su videojuego Böbl, y que matemáticos y otros trucos hay detrás.

Este artículo, que a continuación enlazo aquí, me ha parecido bastante interesante, así que me he propuesto traducirlo para disfrute de todos.

Böbl - Simulación de la superficie del agua en NES


¡Hola a todos y bienvenidos!

En esta publicación, profundizaremos en cómo funcionan las animaciones de la superficie del agua en nuestro juego de NES de 8 bits Böbl.

Imagen


Seguramente este tiene que ser el detalle técnico más interesante de Böbl, ya que es algo que nunca antes se había visto en NES.


ROM versus RAM para gráficos

En NES, tienes la opción de equipar tu cartucho con un chip ROM o RAM para gráficos. Estos se denominan CHR ROM y CHR RAM respectivamente.


ROM CHR

Ventajas:

- No es necesario almacenar los gráficos en la ROM del programa, lo que deja más espacio para el código y otros datos, es decir, más contenido del juego.
- Con un asignador de memoria como MMC3, puedes actualizar muchos mosaicos a la vez sin costo de CPU intercambiando bancos de CHR ROM

Contras:

- Por lo general, estás limitado a solo un par de fotogramas de animación predefinidos.

Imagen
Mega Man 5 utiliza la conmutación de bancos CHR ROM para animar una gran cantidad de mosaicos.



CHR RAM

Ventajas

- Puede modificar mosaicos gráficos individuales durante el tiempo de ejecución, es decir, dibujar sobre ellos o reemplazarlos.
- Animaciones muy fluidas y fáciles de lograr.
- Permite efectos gráficos novedosos.


Contras

- Los gráficos deben almacenarse en la ROM del programa antes de cargarse en la RAM CHR, por lo que es posible que tengas que sacrificar el contenido del juego.
- Las actualizaciones de mosaicos requieren la participación de la CPU, por lo que existe un límite severo en la cantidad de animación que puedes tener al mismo tiempo.

Imagen
El juego de NES Battletoads utiliza CHR RAM para crear efectos gráficos interesantes, como los bordes de la pantalla que se desplazan verticalmente a una velocidad más rápida.


Aquí hay un primer plano del contenido de CHR RAM:

Imagen
Battletoads updates CHR RAM to achieve fluid parallax scrolling.



Pasemos a otro ejemplo:

Contra... también conocido como Probotector si eres de Europa, como nosotros ;)

Imagen


Si solo necesita actualizar unos pocos mosaicos, gana CHR RAM porque la conmutación de bancos de CHR ROM solo funciona en fragmentos de 1 KB, por lo que desperdiciaría mucho espacio duplicando gráficos.

Más importante aún, aquí puedes ver por qué las animaciones de fondo son útiles:

Si bien sería mucho más fácil usar sprites para una barrera eléctrica animada como esta, si intentas alinear más de 8 sprites horizontalmente en la NES, los que sobran desaparecen, lo que los juegos intentan eludir usando el infame parpadeo de sprites.

Sin embargo, para los mosaicos de fondo, ¡no existe tal límite! Todo parece estar bien.


Animando la superficie del agua.

Como se indicó anteriormente, la cantidad de actualizaciones de gráficos que la NES puede realizar por cuadro es muy limitada.

Una pantalla en Böbl puede tener un máximo de 32 mosaicos de superficies de agua animadas. Esas son las dos filas inferiores de mosaicos en el lado derecho (CHR RAM) de esta imagen:

Imagen
¡Y también hay animaciones de cascada independientes ejecutándose en todo momento!



Para alcanzar este número de actualizaciones de mosaicos, utilizamos dos trucos:

La mitad de los colores.

El formato gráfico de 4 colores (2 bits) de la NES utiliza 16 bytes por mosaico de 8x8 píxeles. Los mosaicos de superficie de agua de Böbl usan solo 2 colores (1 bit), lo que significa que podemos actualizar solo 8 bytes por mosaico.

Imagen



La mitad de la velocidad de fotogramas

Las actualizaciones se alternan: 16 mosaicos en cuadros pares y los otros 16 en cuadros impares. Esto significa que la animación de la superficie del agua se ejecuta a 30 fps mientras que el resto del juego se ejecuta a 60 fps. Afortunadamente, todo todavía parece fluido (nunca mejor dicho).

A continuación, veamos cómo funciona la simulación de la superficie del agua:
Piense en una superficie de agua como una secuencia de puntos. Cada uno describe el nivel del agua en una posición x determinada.

Imagen


Cuando un objeto golpea la superficie del agua, la velocidad vertical de uno de esos puntos cambia y efectivamente oscilará hacia adelante y hacia atrás alrededor del nivel de la superficie. Con el tiempo, el nivel del agua se propagará a puntos adyacentes, perdiendo impulso en el proceso. Con el tiempo, todos los puntos volverán a formar una superficie quieta.

Lograr esto de manera convincente requeriría bastante memoria y matemáticas, posiblemente incluyendo divisiones, que son extremadamente lentas en la pobre CPU de 8 bits alojada dentro de la NES.

Imagen


Afortunadamente, la CPU funciona bien en sumas y restas. Entonces nuestra solución fue generar previamente la deformación del agua. Es decir, almacenamos los cambios causados ​​en el nivel del agua como una especie de animación: una secuencia de números que le indican al juego cuánto debe subir o bajar el nivel del agua en un punto determinado, en un momento determinado.

Imagen


Luego generamos los mosaicos gráficos a partir de los niveles calculados de todos los puntos de la superficie del agua con algún código ensamblador optimizado (haga clic si se atreve).

Incluso con todas estas optimizaciones, el juego utiliza entre el 40 y el 60 % de la CPU sólo para el efecto de deformación del agua.
@Diskover todo un ejemplo máximo de como jugar con las limitaciones de un hardware [boing]
SuperPadLand escribió:@Diskover todo un ejemplo máximo de como jugar con las limitaciones de un hardware [boing]

No obstante, algunos ejemplos creo que podían ser mejores.

En el caso del CHR ROM para MMC3, el Megaman 5 no es el mejor ejemplo de uso óptimo aunque sí que sirve para ilustrar cuales podrían ser sus problemas si no se le sacaba partido (duplicación de tiles sin aprovechar animaciones)

Existen muchos juegos que usan esa combinación y el resultado es excelente, empezando por el propio Super Mario Bros. 3, que fue quien extremo el MMC3 y su opción CHR ROM
480 respuestas
16, 7, 8, 9, 10