Gráficos en Consolas Antiguas. Temp 2 (V): Nintendo DS

Es el turno a la tercera generación de portátiles de Nintendo:

nintendo-ds-lite

Nintendo DS, NDS a partir de ahora, es una consola curiosa por el hecho que hereda tecnología de GBA al mismo tiempo que utiliza tecnología nueva para realizar sus gráficos. En esta entrada explicare como la consola genera los gráficos que muestra en pantalla.

CPU, DMA y Memoria Principal en el modo NDS

NDS utiliza como CPU un ARM9 a 66 Mhz, lo que le da una potencia de 74 MIPS en el Dhrystone. Carece de unidad de coma flotante y su potencia la coloca por encima de las CPUs de PlayStation y Saturn pero algo por debajo del MIPS R4200 utilizado en Nintendo64, en todo caso su potencia es más que suficiente para el nivel visual de la consola.

En cuanto a la memoria principal, la consola tiene unos 4MB de memoria FCRAM. Dicha memoria funciona a unos 33 Mhz con un bus de 16 bits y solo es accesible por el ARM9 y no por cualquier otro procesador por lo que al igual que ocurría en GBA para volcar los datos a las diferentes memorias dentro del sistema es necesaria la unidad DMA, la cual es exactamente la misma y funciona igual que la de GBA por lo que tenemos cuatro canales y el canal DMA0 es el que tiene más preferencia y es el que en este caso da acceso a la VRAM del sistema, la cual voy a describir más adelante. El DMA 1 y el DMA 2 al igual que en GBA se utilizan para al subsistema de sonido y el DMA 3 para acceder a las tarjetas donde se almacenan los juegos y volcar los datos en la VRAM o en la RAM principal según convenga.

Pantalla Doble = Doble PPU

Nintendo DS tiene dos pantallas distintas con la misma resolución y las siguientes especificaciones:

  • 256 pixeles visibles en horizontal, 355 pixels por periodo horizontal por lo que el HBlank es de 99 pixeles en total.
  • 192 pixeles visibles en vertical, 263 pixeles por periodo horizontal por lo que el VBlank es de 71 lineas.

Para generar los gráficos de NDS se utilizan una PPU en cada una de ellas… ¿El funcionamiento de estas PPU? Son la misma PPU que en GBA solo que: ahora funcionan a 33Mhz, lo que dado la resolución de pantalla de NDS esto permite una 6 operaciones por pixel en el Modo 0 de GBA así como mejoras de rendimiento en otros modos.

VRAM

Como curiosidad en el modo GBA la VRAM hace la función de la EWRAM aunque solo toma 256KB de la misma que es el total de memoria EWRAM que tenía GBA.

NDS dispone de 656KB de memoria VRAM, pero dicha VRAM no se encuentra repartida de manera equitativa entre ambas PPUs siendo esta compartida y variable según la memoria que utilice cada una. La PPU A asignada  a la pantalla superior puede tomar hasta 512KB y la PPU V hasta 256KB pero la asignación total entre ambas memorias no puede superar los 656KB.

El ancho de banda y la velocidad de acceso de cada PPU a la VRAM es de 16 bits a 33 Mhz, por lo que en este aspecto fuera de la velocidad de reloj no hay cambios respecto al acceso a la VRAM en GBA.

Motor 3D

La mayor novedad de NDS respecto a GBA es el motor 3D, lo cual permite renderizado de juegos en 3D a tiempo real:

super-mario-64-ds-20041120091123141

Soporta cosas como mapeado de texturas, corrección de perspectiva pero no usa filtros para las texturas aunque todo se ha de decir sus capacidades no son como las de una PlayStation o una Saturn ya que tiene un búfer de profundidad pero tampoco se trata del mismo motor 3D que N64 recortado y reducido sino que es uno completamente distinto. En cuanto a  las memorias utilizadas las texturas estas son tomadas de la VRAM asociada a la PPU A y el resto de memorias necesarias para el renderizado 3D son exclusivas del motor 3D y no son accesibles ni por la CPU.

En primer lugar al contrario de lo que muchos pueden llegar a intuir NDS no utiliza la PPU Apara rasterizar y texturizar los gráficos sino que 3DS tiene un motor 3D completo en su interior incluyendo motor geométrico y motor de rasteriza+texturizado, el cual acaba generando la imagen resultante como el primer fondo de la escena de la PPU A/Motor de Renderizado A. ¿Os acordáis cuando en la entrada de GBA os comente que la PPU manejaba un plano principal  y unos 4 fondos? Pues lo que hace el motor 3D de NDS es almacenar la imagen resultante como el primer fondo y dejar que de los fondos y del plano principal se encargue la PPU A siendo utilizado el plano principal para cosas como los marcadores de vida, puntuación…

La otra particularidad es que estamos hablando de un scanline renderer, este es el mismo concepto de gráficos de la tecnología de las consolas de 8 y 16 bits a la hora de dibujar en pantalla. Es decir, no hay búfer de imagen y la escena se va generando sobre el plano principal a un ratio constante de 60 fotogramas por segundo, 2048 poligonos por fotograma y 120K polígonos por segundo. Tasas que son fijas en todos los juegos de la consola que utilicen el motor 3D de la consola.

Nintendo DSi.

La DSi fue una versión de DS con mejoras lanzada unos año después que el hardware original.

nintendo_dsi_blanca

tiene cambios en el hardware principal que son los siguientes:

  • La CPU funciona ahora a 133 Mhz y tiene 16MB de RAM en vez de 4MB
  • Ha desaparecido el slot de cartuchos de GBA.
  • Se ha añadido un DMA nuevo con cuatro canales adicionales, sirven para acceder al nuevo DSP para el sonido y para acceder al contenido de las tarjetas SD.

A nivel de gráficos no añade nada nuevo respecto a DS pero uno se pregunta que hubiese ocurrido si Nintendo hubiese realizado una subida de vueltas también a ambas PPUs y un aumento en la resolución de pantalla. Quizas Nintendo se lo planteo y vio que la consola resultante no era el salto esperado y decidieron esperar a 3DS o en su defecto pensaron que era demasiado pronto para una sustitución dado el enorme éxito que estaba teniendo NDS en el mercado.

En fin, eso es todo.

Anuncios