A decir verdad, las capacidades de E/S de la Nintendo DS merecen un estudio aparte. Equipos que antes estaban fuera del alcance del gran público —como la conectividad inalámbrica, una pantalla táctil, un Reloj en Tiempo Real (RTC, del inglés Real-Time Clock) y un micrófono— combinados con software de primera categoría, hicieron destacar a esta consola año tras año durante todo su ciclo de vida. Diría que Nintendo acertó con la innovación adecuada, al precio adecuado y en el momento adecuado; una filosofía reafirmada con la llegada de la Wii, dos años después.
Bajo el capó, sin embargo, los componentes de E/S son gestionados en exclusiva por el ARM7. De hecho, más allá de transferir datos de un lado a otro, no verás demasiada actividad en esa CPU... lo que, en última instancia, deja al ARM7 un tanto desaprovechado.
Acceso a cartuchos y memoria
En cuanto a los componentes internos, hay un bloque de Memory Interface que conecta tres extremos:
- Un Slot-1 de 17 pines, donde van las tarjetas de Nintendo DS.
- Un Slot-2 de 32 pines, donde residen los Game Paks de GBA o los accesorios (como el Rumble Pak).
- 4 MB de PSRAM, que es la memoria principal.
Ambas CPU pueden acceder a esta interfaz, aunque contiene registros que se modifican para priorizar una CPU sobre la otra en caso de que se emitan dos solicitudes simultáneas en el mismo bus.

Modelo de memoria externa con el ancho del bus de datos etiquetado.
Dentro de las tarjetas Slot-1
Aquí viene la parte complicada: a diferencia del Game Pak original, las tarjetas DS no están mapeadas en memoria; utilizan múltiples interfaces serie para comunicarse. Por tanto, para que cualquiera de las CPU pueda leer el contenido de la tarjeta, este debe copiarse primero a la RAM.
En el caso del chip ROM de la tarjeta, la CPU debe enviar bloques de comandos de 64 bits que referencian direcciones de 32 bits a la tarjeta DS. Después, los datos pueden recuperarse bien extrayéndolos de un registro de 32 bits, bien mediante DMA. El bus de datos tiene 4 bits de ancho y, dependiendo del tipo de ROM instalada, puede alcanzar velocidades de hasta 6,7 MB/s .
Junto a la ROM de la tarjeta DS, suele haber un chip de 'respaldo' para almacenar los datos de guardado. A estos chips se accede mediante un bus de Interfaz Periférica Serie (SPI, del inglés Serial Peripheral Interface) . En él podemos encontrar:
- EEPROM o memoria flash: Como ya incluían los Game Paks.
- RAM Ferroeléctrica (FRAM): Se comporta como la Static RAM (SRAM) pero no requiere batería.
Curiosamente, algunos juegos reutilizaron el bus SPI para incluir hardware especial, como:
- Un controlador infrarrojo: Ciertos títulos de Pokémon integran en su tarjeta un sensor y un emisor de infrarrojos, ya sea para comunicarse con un podómetro externo (el Pokéwalker), o para interactuar con otros jugadores antes de usar el Wi-Fi (presumiblemente como mecanismo adicional de protección contra copias).
- Un controlador Bluetooth 2.1: El juego Learn with Pokémon: Typing Adventure albergaba en su tarjeta un controlador Broadcom BCM2070 , utilizado para conectarse al teclado inalámbrico incluido en la caja del juego.
- Un adaptador MicroSD: El juego DSvision, exclusivo de Japón, permitía a los usuarios reproducir películas en la Nintendo DS (podría considerarse un sucesor espiritual del GBA Video). Las películas se vendían en tarjetas MicroSD de 512 MB con marca DSvision , o se descargaban de sus servidores y se transferían mediante un adaptador USB-MicroSD patentado . En ambos casos, los datos empleaban gestión de derechos digitales para impedir el acceso o la modificación por terceros.
- Puede que recuerdes la MicroSD como el ingrediente principal de las 'flashcards'. La idea es similar, pero la ejecución es muy diferente. Entro en más detalles más adelante, en la sección 'Antipiratería'.
Dentro de los cartuchos Slot-2
En la parte inferior de la consola, el Slot-2 está mapeado en memoria usando el patillaje original, aunque las direcciones están ligeramente desplazadas en modo DS. Sin embargo, al igual que en la GBA, el bus de datos de la ROM tiene 16 bits de ancho y el bus de datos de la RAM tiene 8 bits.
Periféricos
El ARM7 también está conectado a otro nodo SPI que hace de interfaz con el controlador de pantalla táctil, que gestiona la pantalla inferior. Está formada por un panel resistivo que requiere el uso de un lápiz stylus. El bus también conecta con la memoria flash donde se almacena el firmware (más detalles en la sección 'Sistema Operativo').

Un puzle de centralita. Para rescatar a la chiquilla, el jugador tenía que deslizar la pantalla con dos dedos al mismo tiempo para encender las luces.
Una característica curiosa de esta pantalla táctil es que, además de detectar las posiciones X/Y, también puede devolver la posición diagonal (usada para calcular el 'valor de presión', que representa el área sobre la que se ejerce presión). Por desgracia, esta función nunca se expuso oficialmente. Así que, que yo sepa, ningún juego comercial hizo uso de esta característica indocumentada, salvo el homebrew.
En cuanto este artículo se difundió por distintos foros, muchos lectores señalaron que Hotel Dusk: Room 215 recurría a esta característica en uno de sus puzles, donde se le indica al jugador que use dos dedos al mismo tiempo . Sin embargo, no es así. Tras realizar una serie de experimentos con el depurador no$gba, observé que el puzle no hace uso de los datos de presión. En cambio, comprueba si los valores X/Y alternan de forma brusca. El juego interpreta este comportamiento como si el jugador estuviera presionando la pantalla con dos dedos.
El controlador de pantalla táctil también está conectado al micrófono de la consola. Los juegos lo operan simplemente activando un amplificador y después emitiendo comandos SPI para obtener su entrada, bit a bit . El audio capturado tiene una resolución de 8 bits, aunque su frecuencia de muestreo depende de cuántos ciclos el ARM7 tenga previsto dedicar a la extracción de muestras. En general, aunque el micrófono es muy básico en cuanto a capacidades, los juegos lo usaron bien como detector básico de voz o para identificar acciones como soplar en él. WarioWare: Touched! y la serie Nintendogs son ejemplos de juegos que aprovecharon el uso del micrófono.
Por último, en el mismo conjunto, encontramos el Reloj en Tiempo Real (RTC). Algunos títulos recurrieron a él para que los escenarios evolucionasen conforme avanzaba el tiempo. Juegos como Animal Crossing: Wild World, The Sims 2 y la serie Pokémon son ejemplos notables. El sistema operativo de esta consola también mantenía un calendario interno para uno de sus servicios.
Red inalámbrica
Por último, y no menos importante, la consola alberga un Controlador Inalámbrico dedicado que implementa la especificación IEEE 802.11b, también conocida como 'Wi-Fi'. El controlador opera en la banda de 2,4 GHz, donde Nintendo implementó numerosos servicios innovadores para habilitar el juego multijugador :
- Internet Play: La consola se conecta a un punto de acceso (PA) Wi-Fi existente para comunicarse con un servidor en línea.
- En esta ocasión, Nintendo proporcionó la infraestructura de red y las bibliotecas necesarias para gestionar la autenticación y el emparejamiento. Posteriormente, toda la comunicación entre cliente y servidor era gestionada por servidores con certificados SSLv3 firmados por Nintendo .
- Para las conexiones a puntos de acceso cifrados, la consola solo admitía Wired Equivalent Privacy (WEP), un protocolo actualmente considerado inseguro.
- Multi-card Play: Configura la Nintendo DS como punto de acceso con un identificador personalizado, permitiendo que hasta 15 consolas se conecten a ella.
- Single-card Play: El sucesor del Multiboot, que permite al juego cargar un pequeño programa en otra DS. Resultaba especialmente útil cuando un grupo de amigos solo disponía de una copia de la tarjeta.
Puede que recuerdes que todo esto también se comercializó bajo el memorable logotipo 'Nintendo Wi-Fi Connection'.
