Segredos do GamePad Wii U
O Digital Foundry sobre como foi aplicada engenharia em reverso ao comando - e como funciona exactamente.
O GamePad Wii U foi alvo de engenharia em reverso pelos programadores do emulador GameCube/Wii de seu nome Dolphin, sendo emuladas por completo as funções do comando. Quando ouvimos as notícias no Twitter, contactamos o programador Pierre Bourdon para descobrir mais. Ao piratear o GamePad, acreditamos que os programadores teriam uma informação extensiva sobre como realmente funciona o inovador controlo da Nintendo.
"Começamos a trabalhar no GamePad Wii U assim que (eu e outros dois piratas) lhe deitamos as mãos," diz-nos Bourdon. "O GamePad não é na verdade um aparelho muito seguro (comparado com a Wii U). O firmware do aparelho está guardado em flash não encriptado, o que nos permite aplicar engenharia em reverso ao código binário bem facilmente. Também usa um 802.11n quase padrão, o que tornou fácil experimentar coisas num PC."
O GamePad em si não é tão complexo quanto até o mais básico tablet Android - essencialmente é um comando de jogos normal, com um ecrã táctil e um placa WiFi, acompanhado de um chip descodificador para o stream de vídeo. Os seus comandos em si são reenviados para a Wii U pelo mesmo canal WiFi (180 vezes por segundo), em contraste com o Bluetooth empregue no Wiimote.
"Começamos o nosso trabalho ao emparelhar uma Wii U/GamePad, presumindo que as chaves de encriptação WiFi seriam transferidas durante o emparelhamento. Acontece que o emparelhamento é (quase) WPS padrão (um protocolo padrão de encriptação WiFi), com apenas uma pequena ofuscação adicionada à encriptação," continua Bourdon. "Modificamos o wpa_supplicant/hostapd para o por a funcionar com coisas não padrão, e fomos capazes de emparelhar um PC com uma Wii U dessa forma. Isto demorou-nos menos de uma semana - o nosso tempo desde então tem sido gasto a aplicar engenharia revertida ao protocolo personalizado de comunicações usado entre a Wii U e o GamePad."
"O GamePad não é na verdade um aparelho muito seguro (comparado com a Wii U). O firmware do aparelho está guardado em flash não encriptado, o que nos permitiu aplicar engenharia em reverso ao código binário com facilidade."
Protocolos de comunicação personalizados significa que podemos descartar teorias anteriores que a Nintendo empregou o uso de streaming de vídeo Miracast technology da Broadcom para por a funcionar o GamePad Wii U, apesar de existirem similaridades.
"O vídeo é comprimido usando h.264 (perfil base, sem fotogramas B)," partilha Bourdon. "O áudio geralmente não está descomprimido, mas encontramos menções a formatos de áudio comprimidos no firmware...encontramos menções de [Miracast] quando começamos a trabalhar no GamePad, mas acabou per ser falso. Não existe nenhum Miracast no GamePad. Áudio, vídeo e input streaming é feito com protocolos personalizados."
Perfil h.264 base descarta muitas das técnicas de compressão avançadas empregues pelo codificador, mas a Nintendo compensa com a sua pura largura de banda em bruto. Uma amostra em captura do stream WiFi oferece até 33MB de dados capturados em 87 segundos - isto dá-nos uma média perto de 3mbps. Bem luxuoso para um stream de 858x480 a 60FPS, mas o vídeo capturado aqui apenas está a mostrar os menus principais da Wii U. Bourdon diz-nos que a Wii U usa o rácio bit variável, significando que a largura de banda aumenta de acordo com a complexidade da image que tem que codificar.
"Esta medida não inclui áudio. Eis um gráfico do tamanho de fotograma ao longo do tempo nestes 33MB," diz ele.
"Apesar da média de 3mbps, vemos picos entre os 25-40mbps, e uma massiva variação na largura de banda que apenas pode ser atribuída à codificação de rácio de bit variável."
Apesar da média de 3mbps, vemos picos entre os 25-40mbps, e uma variação massiva na largura de banda que apenas se pode dever ao rácio de bits variável da codificação de vídeo h.264. Quanto mais complexa a imagem, mais informação é precisa para manter a qualidade de imagem - algo que a Wii U parece mais do que capaz de transmitir com sucesso pela sua ligação sem fios 802.11n.
"Não verifiquei mas penso que os picos são apenas a Wii U a enviar um largo fotograma (imagem completa/fotograma chave)," explica Bourdon. "Se fizeres a média da largura de banda sobre algo como 10 fotogramas estes picos desaparecem na maioria. No modo operacional normal a Wii U envia um I-fotograma e depois apenas P fotogramas, a não ser que a aplicação precisa de enviar um I-fotograma ou um fotograma que não foi recebido devidamente pelo GamePad (devido a perda de uma unidade formatada de dados)."
A confirmação de um codificador h.264 inserido na Wii U (acredita-se que é uma parte do chip gráfico) é similar a elementos do equipamento encontrados tanto na nova Xbox como na PlayStation 4, portanto existe a leve possibilidade que funções na nuvem possam estar inseridas na Wii U, especialmente desde que Bourdon confirmou que a funcionalidade para suportar dois GamePads Wii U ao mesmo tempo está inserida no firmware.
"É possível actualizar a flash do GamePad, significando que a Nintendo pode adicionar funcionalidades ao comando com o tempo."
"Não vejo razão para não poder enviar vídeo/áudio GamePad para a internet (tanto a internet como o GamePad podem ser difíceis/impossíveis)," oferece Bourdon. "O firmware do chip que gere a comunicação entre o GamePad (chamado de DRH) pode ser melhorado, portanto isto pode estar nos planos futuros da Nintendo. É apenas especulação, não vemos nada no firmware que indique que estão a planear fazer isto."
Mas e quanto às possibilidade de completa emulação Wii U, tendo em conta o talento da equipa de piratas? O trabalho levado a cabo por Pierre Bourdon e os seus colegas no emulador Dolphin é espantoso ficamos curiosos se a herança de processador partilhada entre Wii e Wii U poderia oferecer algum tipo de avanço para correr jogos da 'nova geração' Nintendo no PC.
"O PowerPC é 'meh' para emulação - não é difícil, nem fácil. Tendo mais núcleos para emular torna as coisas mais fáceis para a emulação na minha opinião: significa que os jogos precisam menos de timing preciso," diz ele. "O maior problema será a gráfica: emular uma complicada e programável gráfica é algo que penso ainda não ter sido feito, e pode ser muito difícil com APIs como DX e GL a esconder tantos detalhes dos programadores."