Gráficos en consolas antiguas (VIII): Game Boy y Game Boy Color

Antes de entrar de lleno en las 16 bits toca hablar de la la clásica portátil de Nintendo, la cual tampoco necesita presentación ya que la conocemos todos.

Gameboy

 

No obstante al contrario de la Game Gear de Sega, su hardware no es una adaptación del hardware de su hermana de 8 bits sino que tiene un hardware completamente distinto al de la Famicom/NES aunque hereda ciertas ideas de la misma en su diseño. Sus especificaciones técnicas son la siguientes:

  • Chip principal que integra todos los componentes menos la memoria RAM.
  • 8KB de memoria RAM y 8KB de VRAM.
  • La CPU esta basada en el  Z80 pero no esun Z80, muchas de las instrucciones han sido sustituidas por otras por lo que si habéis programado en un Z80 convencional no esperéis que de entrada el código os funcione en una GameBoy.
  • La CPU funciona a 4.19Mhz.

Aunque antes de ir a por por el hardware gráfico nos hemos de centrar en la pantalla, la cual tiene una resolución de 160×144 pixeles y 2 bits de “color”, el motivo de ponerlo entre comillas es porque la consola tenía una pantalla monocromo con 4 valores para representar los gráficos, producto de eliminar el Colorburst de la pantalla del dispositivo, algo que fue muy criticado en su época pero que le dio la victoria en el mercado al durar las pilas 6 veces más que la competencia con 2/3 de las pilas. En el caso de la GameBoy Color Nintendo añadio el Colorburst a la pantalla y la consola paso a tener una paleta de 56 colores disponible, pero con el handicap de que los sprites como mucho podían tener cuatro colores distintos cada uno, precisamente el mismo tipo de limitación que la Famicom/NES y de ahí a que muchos juegos de la GBC tuviesen ese aspecto tan Famicom/NES.

En cuanto a los gráficos, la forma de generar los gráficos por parte del sistema era la misma que hemos visto hasta ahora, la diferencia es que el Name Table era de una resolución de 256×256 pixeles (32×32 patrones/sprites)  por lo que el tamaño de esta era de 1024 bytes mientras que la resolución de pantalla era de 160×144 pixeles(20×18 patrones/sprites). El motivo de hacer esto era que se generaba más pantalla de lo que se mostraba para que así el desplazamiento de pantalla (scroll) no mostrase el escenario formandose delante de los jugadores, dicho desplazamiento se controlaba con los registros SCROLLX y SCROLLY del procesador gráfico/PPU.

No obstante el sistema de generación de las “Name Tables” era algo distinto al de las consolas basadas en el TMS9918A y con el Z80 como procesador (ver las partes VI y VII de esta serie) ya que en el caso de GameBoy la CPU podía escribir directamente sobre el espacio de memoria de la VRAM. Por lo que el Z80 de GameBoy no necesitaba los engorrosos 16 ciclos de reloj para transmitir un byte de información a la VRAM sino solamente 4.

La Name Table se generaba durante el periodo de VBlank, en el caso de Game Boy esto correspondía a 10 escaneos de linea que traducido en ciclos eran 4560 ciclos de reloj de la CPU. Teniendo en cuenta que el Z80 necesita unos cuatro ciclos para leer y/o escribir en memoria y la Name Table es de 1024 bytes  (4096 ciclos) entonces era posible transmitir la tabla entera durante el periodo del VBlank

¿Y que hay del procesador gráfico? Game Boy tenía uno precisamente integrado en el chip principal, su funcionamiento es muy similar al de la PPU de NES, sus especificaciones son:

  • 10 Sprites distintos por escaneo de linea.
  • 40 Sprites distintos por pantalla almacenados en la OAM, al igual que Famicom/NES esta se encuentra dentro del chip y son transmitidos desde la VRAM y/o el cartucho utilizando un dispositivo DMA por lo que su transferencia no consume ciclos de reloj por parte de la PPU.
  • El tamaño de cada sprite es de 8×8 con 4 valores de “color” distintos por Sprite.
  • Paleta de 10 “colores” sino uno de ellos el transparente (en esa zona la pantalla no muestra nada).
  • La velocidad de reloj de la PPU y la CPU es la misma.

Ahora bien, la gran incognita de todo esto es la Game Boy Color.

SONY DSC

 

La pantalla no aumento de resolución y dado que la informacion por sprite/patrón de color siguió siendo de cuatro valores entonces estos no ocupaban un mayor tamaño en la OAM y esta no se tuvo que aumentar de tamaño por ese motivo ni tampoco se aumento el números de patrones/sprites en la msima., el tamaño de la Name Table era el mismo que en GameBoy, la resolución de pantalla la misma y el único cambio entendible esta en una mejora de la MMU del procesador principal para permitir cartuchos mucho más grandes de tamaño.  GBC sobre el papel era el doble de potente que la GB original y nunca aprovecho esa potencia adicional que podría haberse utilizado para aumentar la resolución de pantalla al doble de pixeles (240×216 pixeles) pero GBC no fue más que un hack de la GameBoy original, producto del inesperado éxito de Pokémon.

Anuncios