En lugar de colocar múltiples chips estándares en la placa base, Nintendo optó por un diseño de chip único para alojar (y ocultar) la mayor parte de los componentes, incluyendo la CPU. Este tipo de diseño se denomina comúnmente System on a Chip (SoC) y, en este caso, fue desarrollado específicamente para esta consola, lo que permitió a Nintendo adaptarlo a sus necesidades (eficiencia energética, antipiratería y capacidades de E/S adicionales, entre otras). Además, el SoC de la Game Boy no aparecía en ningún catálogo comercial, lo que complicaba sobremanera la tarea a quienes quisieran copiarlo.
Dicho esto, el SoC de la Game Boy se conoce como DMG-CPU o Sharp LR35902 y, como su nombre indica, fue fabricado por Sharp Corporation. Esta empresa, junto con Ricoh (el proveedor de CPU de la NES), mantenía una estrecha relación con Nintendo.
El núcleo de la CPU
Dentro del DMG-CPU se encuentra el procesador principal: un Sharp SM83 , una combinación del popular Zilog Z80 (presente en la Sega Master System) y el Intel 8080. Funciona a ~4,19 MHz, más rápido que la CPU de ~1 MHz de la NES, aunque recuerda que las velocidades de reloj pueden ser engañosas.

El chip DMG-CPU en la placa base de mi Game Boy.
Cuando analicé la Master System, expliqué que el Z80 es en esencia un superconjunto del 8080. Entonces, ¿qué retiene y qué omite el SM83 de ambos?
- Ni los registros
IXeIYdel Z80 ni las instruccionesINyOUTdel 8080 están presentes. Esto significa que los puertos de E/S no están disponibles. Desconozco si fue una medida de ahorro, pero lo que sí está claro es que los componentes deben estar completamente mapeados en memoria . - Solo se implementa el conjunto de registros del Intel 8080. En consecuencia, hay únicamente siete registros de propósito general, frente a los 14 del Z80 (gracias a su conjunto 'alternativo' adicional).
- Solo se implementan partes del conjunto de instrucciones extendido del Z80; concretamente, las instrucciones de manipulación de bits.
Sharp también incorporó algunas instrucciones propias, ausentes tanto en el Z80 como en el 8080, que optimizan ciertas operaciones relacionadas con la forma en que Nintendo y Sharp organizaron el hardware. Un ejemplo es la nueva instrucción LDH (del inglés 'load high' ), diseñada específicamente para acceder a los últimos 256 bytes del mapa de memoria (donde las direcciones comienzan en $FF00) y, lo más importante, ocupa un byte menos (lo que la hace ligeramente más rápida).
El efecto Color

Placa base de la Game Boy Color .

La misma imagen con las partes importantes marcadas.
Casi una década después, tras el abandono de la Virtual Boy y su hardware de vanguardia, llegó una humilde sucesora: la Game Boy Color. Dentro de ella hay un nuevo SoC denominado CPU CGB que incorpora varias novedades. Sin embargo, su núcleo de CPU SM83 permanece prácticamente sin cambios, salvo por su velocidad de reloj duplicada (ahora a ~8,38 MHz).
Cuesta pensar que, tras casi una década, Nintendo mantuviera el mismo núcleo de CPU, pero esta decisión conllevaba las siguientes ventajas:
- Los desarrolladores podían reutilizar las habilidades adquiridas para programar la nueva consola.
- Se ahorraban costes al no tener que rediseñar el sistema para una nueva arquitectura.
- La retrocompatibilidad se conseguía con un esfuerzo mínimo. De hecho, Nintendo la implementó programando dos modos de operación en la CPU CGB:
- Modo normal: el SM83 opera a ~4,19 MHz.
- Modo de doble velocidad: el SM83 opera a ~8,38 MHz.
Eso sí, todo esto a costa de adoptar tecnología obsoleta para los estándares de finales de los 90. Basta con echar un vistazo al estado del mercado de CPU para apreciar las capacidades de las que Nintendo prescindía. Aunque, en su descargo, Nintendo sí lo intentó con el hardware de la Virtual Boy.
Acceso al hardware
El SM83 mantiene un bus de datos de 8 bits y un bus de direcciones de 16 bits, lo que permite direccionar hasta 64 KB de memoria. El mapa de memoria se compone principalmente de las siguientes regiones :
- Espacio del Game Pak (el cartucho de juego).
- Work RAM (WRAM), High RAM (HRAM) y Video RAM (VRAM).
- Diversas E/S (joypad, audio, gráficos y LCD).
- Controles de interrupción.
No te preocupes por los nombres nuevos: estos componentes se explican a lo largo del artículo.
Memoria disponible

Arquitectura de memoria del DMG (Game Boy original). La PPU arbitra el acceso a la VRAM.
Nintendo instaló 8 KB de RAM en la placa base, destinada a uso general (de ahí el nombre Work RAM o 'WRAM') . Vale la pena mencionar que eso supone cuatro veces la cantidad incluida en la NES.
Hay 127 B adicionales de RAM dentro del SoC. Se denomina High RAM (HRAM) y ofrece un pequeño espacio para datos que pueden recuperarse más rápido (mediante la ya mencionada instrucción LDH). La idea es muy similar al modo 'Zero Page' del MOS 6502 , que también optimizaba el rendimiento en función de la ubicación en memoria. Dicho esto, el bus de la High RAM no es técnicamente más rápido que el de la Work RAM, pero tiene prioridad para la CPU. Verás la importancia de esto en la sección 'Gráficos', cuando hable del Acceso Directo a Memoria (DMA).

Arquitectura de memoria ampliada del CGB (Game Boy Color).
Más adelante, con la variante Color, Nintendo amplió la WRAM a 32 KB. Sin embargo, dado que las capacidades de direccionamiento de la CPU no habían cambiado, integrar toda esa nueva memoria sin agotar el espacio de direcciones no era tarea sencilla. Para resolverlo, los ingenieros de Nintendo recurrieron al cambio de bancos dentro de la propia consola.
Aunque anteriormente se encontraba en los cartuchos de NES, la Game Boy Color aplica el mismo principio para acceder a los 24 KB extra de WRAM. El truco es sencillo: los últimos 4 KB del espacio original de 8 KB pueden intercambiarse entre siete bancos distintos. Para que esto funcione, la CPU incluye un registro adicional (llamado SVBK) que actúa como selector de banco, y es lo que los desarrolladores deben usar para acceder a la memoria extendida.