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.
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