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

15, 6, 7, 8, 9
Señor Ventura escribió:@Diskover ¿en el juego original no hay laser?.


Sí, pero está formado con fragmentos, no es una linea continua.
Diskover escribió:Bueno, como todos sabéis ya a estas alturas del hilo, la NES solo puede mostrar 8 sprites de 8x8 pixeles en línea. Esto es un auténtico quebradero de cabeza para algunos juegos que pueden acabar convirtiendose en un festival de parpadeos de sprites, sobre todo en juegos como los shooter.

Sin embargo, las investigaciones y la obtención de nueva documentación en pleno 2021, nos permite arañar un poco más dentro de la PPU de la NES/Famicom y sacar partido.

De esta forma, un japones que se hace llamar @Nao_u en Youtube, nos muestra una demo técnica del videojuego Salamander que él mismo ha programado (todos sabéis que este juego sin embargo tiene una versión oficial en esta consola), en donde podemos observar como puede utilizar el disparo de rayo, dibujando una linea entera a lo largo de la pantalla sin ningún tipo de parpadeo de por medio.



¿Como es posible esto? ¿Como lo ha hecho? Pues ingeniosamente; usando el efecto raster por un lado, y la interrupción de pantalla (IRQ) que le proporciona el mapper MMC3.

El efecto raster, se usa para los juegos de conducción para dibujar la carretera y sus curvas.
La interrupción IRQ del MMC3, permite en un momento dado dibujar en alguna porción de la pantalla lo que tengamos cargado en otra nametable distinta a la que actualmente se ejecuta

De esta forma, en esta demo, en la Nametable A vemos el escenario donde nos estamos moviendo, etc... Sin embargo, en la Nametable B, tenemos una porción de la pantalla dibujada con una gran franja verde. Esa franja verde es la que se usará como laser.

Imagen


Cuando pulsamos el botón B de disparo, se comprueba donde esta el disparador del rallo para iniciar el tiro (esto gracias al efecto raster), y luego ya se dibuja el disparo entero gracias al IRQ, al cual le hemos programado para que haga una interrupción de 1 pixel de alto y muestre la Nametable B. El resto son meras colisiones con los sprites, los cuales, cuando toquen esa interrupción, impactan y explotan.

Sorprendentemente, es un efecto barato y no come casi recursos.

Para terminar, el efecto de doble fondo, es una simple actualización de tiles en la VRAM que se ejecuta también gracias a la facilidad de cambios de porciones de bancos gráficos que proporciona el MMC3 de gratis.

Podéis descargaros la demo aquí: https://www.youtube.com/redirect?event= ... sLaser.nes


Mmm... normalmente la interrupción se dispara al llegar al final de la scanline y aquí el laser lo dibuja a partir de cualquier punto de la pantalla. Supongo que tendrá un precálculo de en que momento se ha de hacer el cambio de fondo a partir de la interrupción de hblank de la linea anterior, de forma similar a como se hace con la colisión del sprite 0 en otros juegos pero mucho más eficiente.
MasterDan escribió:Mmm... normalmente la interrupción se dispara al llegar al final de la scanline y aquí el laser lo dibuja a partir de cualquier punto de la pantalla. Supongo que tendrá un precálculo de en que momento se ha de hacer el cambio de fondo a partir de la interrupción de hblank de la linea anterior, de forma similar a como se hace con la colisión del sprite 0 en otros juegos pero mucho más eficiente.


Como he explicado en el propio post, gracias a la ejecución del "raster", la interrupción cuando se ejecuta, puede nacer donde queramos si el raster está movido en el eje X.
Diskover escribió:
MasterDan escribió:Mmm... normalmente la interrupción se dispara al llegar al final de la scanline y aquí el laser lo dibuja a partir de cualquier punto de la pantalla. Supongo que tendrá un precálculo de en que momento se ha de hacer el cambio de fondo a partir de la interrupción de hblank de la linea anterior, de forma similar a como se hace con la colisión del sprite 0 en otros juegos pero mucho más eficiente.


Como he explicado en el propio post, gracias a la ejecución del "raster", la interrupción cuando se ejecuta, puede nacer donde queramos si el raster está movido en el eje X.


¿Hacia arriba no?.
Señor Ventura escribió:
Diskover escribió:
MasterDan escribió:Mmm... normalmente la interrupción se dispara al llegar al final de la scanline y aquí el laser lo dibuja a partir de cualquier punto de la pantalla. Supongo que tendrá un precálculo de en que momento se ha de hacer el cambio de fondo a partir de la interrupción de hblank de la linea anterior, de forma similar a como se hace con la colisión del sprite 0 en otros juegos pero mucho más eficiente.


Como he explicado en el propio post, gracias a la ejecución del "raster", la interrupción cuando se ejecuta, puede nacer donde queramos si el raster está movido en el eje X.


¿Hacia arriba no?.


En NES parece ser que era muy, muy complicado hacer interrupciones de línea, e incluso rasters effect en vertical.

Cuando apareció el MMC5, por fin se pudo realizar el IRQ vertical, pero creo que un solo juego le ha dado uso. Olvídate incluso de ver algún efectillo chulo con ello por ahora, pues en la scene todavía no se han metido mucho con este mapper.

Y ahora que ha aparecido el mapper MXM-0, creo que la comunidad tirará por ahí, pues da muchísimo más que el MMC5.
Interesante proyecto que se está realizando por aquí:

@Diskover

Muy buena pinta.
Para Nes? Lo digo porque hay proyectos nes Style pero son para pc
Diskover escribió:Interesante proyecto que se está realizando por aquí:



Tiene mucho homenaje al Shatterhand
danibus escribió:@Diskover

Muy buena pinta.
Para Nes? Lo digo porque hay proyectos nes Style pero son para pc


Todo lo que salga en este hilo es para NES si o si
La verdad es que se está sacando bastante jugo a NES últimamente sin entrar en el uso de chips de apoyo nuevos y rasps insertadas en cartuchos. Cuesta creer que algunos juegos que salen se muevan así tal cual en el sistema y muchas veces es simplemente por un gran trabajo en el diseño gráfico y buen uso de la paleta de colores ¿Qué cosas lllegaríamos a ver en NES y MS en sus buenos años si ya existiera un mercado grande con consumidores adultos comprando juegos todos los meses?

Y para quien se lo haya perdido, @Diskover ha retomado su homebrew de portear Vigilante a NES. El hilo es este: hilo_homebrew-vigilante-para-nes-port-de-sms_2174926
@SuperPadLand La gracia del doom de la NES es que alcanza los 60fps a pantalla completa, cosa imposible de conseguir ni por las 16 bits. El buffer de megadrive y snes limita cualquier streaming a 30fps, y con un tamaño de pantalla no demasiado grande.
Echadle un ojo a esto, ya no serían necesarias pistolas de 400€ para jugar cuatro juegos en un LCD: http://neslcdmod.com/
Os dejo un video del programador homebrew CutterCross, quien está desarrollando un programa de dibujo "tipo paint" para la NES.

Es muy curioso el dominio que tiene sobre la máquina, a la cual le saca tanto partido que consigue poner hasta 104 colores en pantalla usando distintos trucos.



Así como hacer efectos raster sin ningún tipo de chip de apoyo.

¿Una IA jugando al Tetris de la NES hasta hacerlo mierda?

Si, aquí es:

Diskover escribió:¿Una IA jugando al Tetris de la NES hasta hacerlo mierda?

Si, aquí es:



A ver quién es el guapo que coloca las "L"´s a esa velocidad :Ð .

Impresiona verlo...yo en los primeros niveles sigo el mismo patrón de dejar una columna vacía pero claro...llega un momento que la velocidad de dedos y del juego no se coordinan...es que ha sacado 10 veces más puntuación [boing]
Curioso es que el juego se crashee mucho después de superar los límites originales para un humano.
Interesante artículo del usuario de Twitter @upsilandre, que nos narra como la NES fue "descubriendo" el scroll en varias direcciones, y abre debate sobre si Nintendo diseñó la consola con esa perspectiva o si fue todo un cumulo de investigaciones y desarrollo entre varias compañías.

SPOILER: diseño claro desde el principio pero soltado a cuenta gotas.

Link: LE PARADOXE ORIGINEL DE LA FAMICOM
416 respuestas
15, 6, 7, 8, 9