Los juegos se distribuyen en un nuevo formato de cartucho propietario que sigue llamándose Game Pak, pero presenta un diseño más pequeño.

El nuevo diseño del Game Pak para juegos de GBA .
La programación para la GBA comparte algunas metodologías con la Super Nintendo, pero también hereda los avances de principios de los 2000: lenguajes de alto nivel estandarizados, compiladores fiables, CPUs RISC depurables, estaciones de trabajo no propietarias para el desarrollo, documentación comparativamente mejor y... ¡acceso a Internet!
Los programas de GBA se escriben principalmente en C con secciones de rendimiento crítico en ensamblador (ARM y Thumb) para ahorrar ciclos. El SDK oficial que Nintendo suministraba a los estudios autorizados incluía bibliotecas y compiladores.
Acceso a los datos del cartucho
Aunque el ARM7 tiene un bus de direcciones de 32 bits, hay solo 24 líneas de dirección conectadas al cartucho.
Esto significa, en teoría, que se puede acceder a hasta 16 MB en el cartucho sin necesidad de un mapeador. Sin embargo, el mapa de memoria muestra que 32 MB de datos del cartucho son accesibles . Entonces, ¿qué está pasando aquí? La verdad es que la Game Pak utiliza direcciones de 25 bits (lo que explica ese bloque de 32 MB) pero su bit más inferior está fijado a cero. Por lo tanto, solo se manipulan los 24 bits restantes. Así funciona el direccionamiento del Game Pak.

Representación del modelo de direccionamiento del Game Pak. Fíjate en cómo el último bit de la dirección de 25 bits (llamado 'A0') siempre es cero. También debo señalar que en realidad, las patillas de direcciones y datos están compartidas/multiplexadas.
Ahora bien, ¿significa esto que los datos situados en direcciones impares (con su bit menos significativo a 1) serán inaccesibles? No, porque el bus de datos es de 16 bits: en cada transferencia, la CPU o el controlador DMA obtiene el byte de la dirección indicada junto con el siguiente, lo que permite leer tanto direcciones pares como impares. Como puedes ver, se trata de otra obra de ingeniería que aprovecha al máximo las capacidades del hardware al tiempo que reduce los costes.
Curiosamente, las CPUs ARM de 26 bits también recurrían a la misma técnica. Estas albergaban un Contador de Programa de 24 bits, ya que las direcciones debían ser múltiplos de ocho (es decir, alineadas por palabra), por lo que los dos últimos bits de la dirección de 26 bits siempre eran ceros. Sin embargo, dado que estas CPUs leen 32 bits de memoria (el byte de la dirección indicada más los tres siguientes), se puede acceder a todo el espacio de direcciones de 26 bits.
Memoria RAM del cartucho
Para guardar partidas, los Game Pak podrían incluir :
- Static RAM (SRAM): es volátil, por lo que necesita una batería para mantener su contenido. El cableado de la consola la hace accesible a través del mapa de memoria de la CPU, con capacidades de hasta 64 KB (aunque los juegos comerciales no superaban los 32 KB).
- Flash ROM: similar a la SRAM pero sin necesidad de batería. No obstante, tiene un número limitado de ciclos de escritura.
- Electrically Erasable Programmable ROM (EEPROM): requieren una interfaz serie y teóricamente pueden escalar a cualquier tamaño (a menudo se encuentran de hasta 8 KB).
Accesorios
A lo largo de su ciclo de vida, la GBA contó con una interesante gama de accesorios que reimaginaron las posibilidades de uso de esta consola. Muchos de ellos sacaron partido de Multi-boot, la versatilidad del puerto EXT y la flexibilidad de la ranura del Game Pak.
El nuevo puerto EXT
La anterior conexión Game Boy Link (también llamada 'EXT' o interfaz serie) recibió una nueva actualización. Los mismos 6 pines que ofrecían capacidades multijugador y accesorios se mantuvieron, pero la electrónica de cada pin evolucionó significativamente.
El nuevo cable Link diseñado para la GBA presenta varios rasgos novedosos:
- Colores y tamaños diferenciados: un extremo es morado y el otro es gris y más grande. Detrás se esconde una jerarquía fija: el extremo morado designa a la consola conectada como maestra, y el extremo gris como esclava.
- Una toma adicional en mitad del cable: permite encadenar otro cable Link de GBA usando el conector morado/maestro.
El nuevo diseño lo hace incompatible con las consolas anteriores (y sus juegos). Sin embargo, permite encadenar hasta cuatro GBA con facilidad, estandarizando así arenas multijugador más grandes.
Nintendo también lanzó una variante llamada 'cable GameCube-Game Boy Advance', específicamente diseñado para conectar una GBA a una GameCube. Lo explico con más detalle en la siguiente pestaña.
Cambios internos
Desde el lado de la consola, la conexión serie original se amplió con modos de operación adicionales, seleccionables mediante dos registros.
Estos modos se agrupan en dos categorías:
- Modos síncronos, basados en el protocolo Serial Peripheral Interface (SPI). Este protocolo reserva un pin para marcar el ritmo del reloj, que el maestro (el conector morado) utiliza para controlar el flujo.
- Así es como siempre operaban las conexiones Link de la Game Boy y la Game Boy Color.
- Modos asíncronos, basados en la interfaz Universal Asynchronous Receiver-Transmitter (UART). No hay ningún reloj que dirija la señal; el único acuerdo es una tasa de baudios (bits por segundo) común definida por el juego. La consola maestra simplemente señaliza el inicio y el fin de cada transferencia.
- Liberar el pin de reloj deja líneas disponibles para coordinar la transferencia entre consolas.
Los juegos de GBA pueden elegir entre modos síncronos y asíncronos, mientras que los títulos de Game Boy que corren en la GBA están restringidos a sus modos SPI heredados. 'Oficialmente', estos últimos solo admiten el cable Link original, pero he aquí algo curioso: los juegos de GB también funcionan con dos cables Link de GBA encadenados y conectados a las consolas por los extremos grises (convirtiendo a ambas en esclavas). Esto se debe a que esa configuración cruza las líneas de datos entre las dos consolas, replicando el esquema del cable Link original.
Modos de intercambio
El conector EXT proporciona cuatro pines programables, que la consola gestiona a través de los siguientes modos de operación :
- Modo Normal, usando el protocolo SPI. Diseñado principalmente para intercambiar datos entre una GBA y un accesorio. La interfaz puede enviar y recibir paquetes de 8 o 32 bits, y opera a 256 KHz o 2 MHz, logrando transferencias de 32 KB/s o 250 KB/s respectivamente. Es bastante rápido; sin embargo, por problemas de fiabilidad, la velocidad mayor solo está prevista para accesorios conectados directamente al zócalo (sin cable).
- Aunque la velocidad es alta, corresponde a la CPU ARM (a 16,78 MHz) procesar los datos transferidos a tiempo, lo que puede ser todo un reto dado que tiene muchas otras tareas entre manos.
- Modo Multi-jugador, usando UART. A cambio de velocidad, permite comunicarse con hasta cuatro GBA encadenadas. Básicamente, las cuatro GBA se turnan para emitir un paquete de 16 bits por la misma línea de datos. Para lograrlo, cada GBA señaliza a la siguiente que transfiera su paquete, algo posible gracias al cableado del nuevo cable Link. Al final de la transferencia, todas las GBA contienen los paquetes que cada una ha enviado, almacenados en cuatro registros de 16 bits diferentes.
Dicho esto, ¿recuerdas Multi-boot? Esta función es compatible tanto con el Modo Normal como con el Modo Multi-jugador. Corresponde al maestro elegir cuál. La elección depende del número de periféricos y de la velocidad necesaria.
Aún más modos

El cable GameCube-Game Boy Advance , específicamente diseñado para conectarse al puerto del controlador de la GameCube (gestionado por la Interfaz Serie).
Para accesorios muy concretos, hay modos de comunicación adicionales disponibles:
- Modo UART. Se comporta como una interfaz RS-232. Concretamente, un null modem de 5 cables con control de flujo RTS/CTS. Además, envía y recibe datos en paquetes de 8 bits y usa un buffer FIFO para encolar hasta cuatro paquetes mientras se envían o reciben.
- Modo JOY BUS. Protocolo propietario en el que la GBA se convierte en periférico de la GameCube. La GBA solo puede recibir paquetes, procesar su contenido y responder.
- Este modo se usa exclusivamente con el 'cable GameCube-Game Boy Advance', que asigna a la GBA como esclava.
- Modo de uso general. Como su nombre indica, los cuatro pines pasan a ser controlables por el programa, lo que permite implementar un protocolo personalizado.