Los secretos del GamePad de Wii U
Digital Foundry y la ingeniería inversa aplicada al último mando de Nintendo.
Los desarrolladores del emulador de GameCube/Wii Dolphin han aplicado ingeniería inversa al GamePad de Wii U para conseguir emular todas sus funciones en un PC. Cuando nos enteramos en Twitter, contactamos con el desarrollador Pierre Bourdon para conocer más al respecto. Al hackear el GamePad pensamos que los desarrolladores tendrían mucha información acerca de cómo funciona el innovador mando de Nintendo.
"Empezamos a trabajar con el GamePad de Wii U tan pronto como (tanto yo como otros dos hackers) conseguimos uno", explica Bourdon. "El GamePad no es un dispositivo especialmente seguro (comparado con la propia Wii U), en realidad. Su firmware está almacenado en una flash sin encriptar, lo cual nos permitió descifrar el código binario con bastante facilidad. También usa 802.11n casi estándar, lo cual hace todo más sencillo a la hora de experimentar en el PC".
El GamePad en si mismo no es ni de lejos tan complejo como la tableta Android más básica - esencialmente es un mando estándar, con una pantalla táctil y una tarjeta WiFi montadas con un decodificador de vídeo para la recepción del stream. Las entradas en el mando se envían de vuelta a la Wii U a través del mismo canal WiFi (180 por segundo), a diferencia del WiiMote, que lo hacía con Bluetooth.
"Empezamos nuestro trabajo haciendo sniffing al enlazar la Wii U y el GamePad, asumiendo que las claves de encriptación WiFi se enviarían al realizar el enlace. Al final resultó que el enlace es (casi) WPS estándar [un protocolo de encriptación WiFi], con tan sólo un poco de ofuscación añadida", prosigue Bourdon. "Modificamos el wpa_supplicant/hostapd para que trabajase de forma no estándar, y así conseguimos enlazar un PC con una Wii U. Esto nos costó menos de una semana: todo el tiempo transcurrido desde entonces se ha destinado a realizar ingeniería inversa del protocolo de comunicación usado entre la Wii U y el GamePad".
"El GamePad no es un dispositivo especialmente seguro (comparado con la propia Wii U). Su firmware está almacenado en una flash sin encriptar, lo cual nos permitió descifrar el código binario con bastante facilidad."
Protocolos de comunicación personalizados implican que podemos descartar viejas teorías que aseguraban que Nintendo había utilizado la tecnología de streaming de vídeo Miracast de Broadcom en el GamePad de Wii U, aunque hay ciertas similitudes.
"El vídeo se comprime usando h.264 (perfil base, sin B frames)", nos explica Bourdon. "El audio extrañamente no se comprime, aunque encontramos menciones sobre audio comprimido en el firmware. También había menciones a Miracast cuando empezamos a examinar el GamePad, pero resultaron ser falsas. No hay Miracast en el GamePad. El streaming de audio, vídeo y de las entradas se hace a través de protocolos propietarios".
El perfil base h.264 descarta muchas de las técnicas de compresión avanzadas del codec, aunque Nintendo lo compensa con ancho de banda puro y duro. Una captura de prueba del stream WiFi de Wii U arroja 33MB de datos transmitidos en 87 segundos, una media de 3mbps. Esto no es muy generoso para un stream de 858x480 a sesenta frames por segundo, pero el vídeo capturado sólo muestra los menús del front-end de Wii U. Pierre Bourdon nos explicó que Wii U usa bitrate variable, lo cual significa que el ancho de banda se escala en función de la complejidad de la imagen que debe codificar.
"Esta medida no incluye el audio. Aquí tienes una gráfica del tamaño del frame con el paso del tiempo en estos 33MB", dice.
"Pese a la media de 3mbps, vemos picos de entre 25mbps y 40mbps, una variación masiva en el ancho de banda que sólo puede deberse al uso de codificación con bitrate variable."
Pese a la media de 3mbps, vemos picos de entre 25mbps y 40mbps, una variación masiva en el ancho de banda que sólo puede deberse al uso de codificación h.264 con bitrate variable. Cuanto más compleja es la imagen más información se necesita para mantener su calidad - algo que Wii U es capaz de conseguir con éxito transmitiendo a través de su enlace wireless 802.11n.
"No lo he comprobado, pero creo que los picos son simplemente Wii U enviando un gran I-frame (una imagen completa o key frame)", explica Bourdon. "Si has la media del ancho de banda con más o menos diez frames estos picos casi desaparecen. Lo normal es que Wii U envíe sólo un I-frame y luego únicamente P frames, a no ser que la aplicación solicite enviar un I-frame o que el frame no haya sido recibido correctamente por el GamePad (debido a una pérdida de paquetes)".
La confirmación de que Wii U lleva en su interior un codificador h.264 (se cree que forma parte del chip gráfico) es un elemento de hardware similar a la Xbox de nueva generación y a la PlayStation 4, con lo cual hay una ligera posibilidad de que se añadan funciones en la nube a Wii U, especialmente teniendo en cuenta que Bourdon ha confirmado que la funcionalidad de compatibilidad con dos GamePads de Wii U simultáneos está integrada ya en el firmware.
"La flash del GamePad es actualizable, lo cual implica que Nintendo puede añadir funcionalidades nuevas al mando con el paso del tiempo."
"No veo ninguna razón por la cual no se pueda enviar el vídeo/audio del GamePad a internet (a internet y al GamePad puede ser difícil o incluso imposible", dice. "El firmware del chip que controla la comunicación con el GamePad (llamado DRH) puede actualizarse, así que quizás esté en los planes de Nintendo. De momento es sólo especulación, porque no vimos nada en el firmware que indique que están planeando algo así".
¿Y qué hay de las posibilidades de una emulación completa de Wii U, teniendo en cuenta el pedigrí del equipo de hackers? El trabajo llevado a cabo por Pierre Bourdon y sus colegas en el emulador Dolphin es destacable, y nos pica la curiosidad por saber si la herencia de CPU entre Wii y Wii U puede ofrecer ventajas a la hora de correr el software "nextgen" de Nintendo en un PC.
"PowerPC es 'meh' para emulación - no es ni difícil ni fácil. Tener más núcleos a emular, en mi opinión, puede hacer las cosas más fáciles para la emulación: significa que los juegos dependerán normalmente menos de un timing preciso", explica. "El mayor problema sería la GPU: emular una compleja GPU programable es algo que creo que no se ha hecho todavía, y podría ser muy difícil con APIs como DX o GL que esconden un montón de detalles a los desarrolladores".
Traducción por Josep Maria Sempere.