You are on page 1of 26

5.

EL WIIMOTE
5.1 INTRODUCCIN
En este captulo desarrollaremos los entresijos del elemento central de este trabajo.

Figura 5.1: El Wiimote

El Wii Remote, informalmente conocido como Wiimote, es el principal dispositivo de entrada de la consola Wii de Nintendo. Es un dispositivo sin cables, que usa la tecnologa estndar Bluetooth para comunicarse con la Wii.
1

El Wiimote parte de una concepci n radicalmente distinta a los dispositivos que se han venido utili!ando como controlador de videojuegos. "on forma de mando de television, el Wiimote incorpora aceler metros que pueden medir el movimiento que est produciendo el jugador en #l. $ambi#n puede interaccionar con una barra de infrarrojos que a%ade la funcionalidad de puntero. &odemos conectarle otros dispositivos al mando, que le a%aden versatilidad, para jugar a juegos que no requieran la capacidad de sentir el movimiento' un nunchu(, un controlador clsico o el Wii )otion &lus. &or *ltimo incorpora, como no poda ser de otra forma, multitud de botones, + el dispositivo que marc un antes + un despu#s en la evoluci n de los videojuegos, el ,&ad.

5.2 DESARROLLO

$odo indica que el desarrollo del Wii Remote comen! en torno al .//0, coincidiendo con el desarrollo de la nueva consola Wii. En este a%o, Nintendo solicit la licencia de algunas patentes basadas en sensores de movimiento a 1+ration 2nc., una compa%a que produce ratones de &" inhalmbricos con sensores de movimiento. 3s mismo, Nintendo insta a la compa%a a crear un controlador para una sola mano para ellos, que eventualmente desarrollara el 1+ropod "oncept, un gamepad ms tradicional que permitira control de movimiento. 4legados a este punto, 1+ration 2nc. $rabaja junto a la firma Bridge ,esign para trasladar a Nintendo sus ideas. "omo requerimiento tenan que preservar la consola 1ame "ube de Nintendo que todava se encontraba en el mercado. 5e e6periment con distintos modelos, esquemas, e incluso con encuestas a jugadores. 3 finales de .//7 Nintendo alcan! lo que pretenda, un controlador menos tradicional, con la forma habitual de un mando de televisi n + dise%ado junto con otro dispositivo, el Nunchuc(. El mando tena sensores de movimiento, puntero infrarrojo,... 3 finales de .//8 todos estaba preparado para la producci n masiva del controlador. ,urante el desarrollo del Wii Remote, el dise%ador de videojuegos, 5higeru )i+amoto acudi a tel#fonos m viles + controladores de navegaci n automtica para inspirarse. 9tro prototipo reuna las caractersticas de un stic( anal gico + un pantalla tctil, pero la idea fue desechada debido a la inminente salida de su consola portable, que tendra la misma filosofa. 3lgunas fuentes aseguran que el Wiimote fue originalmente desarrollado para la Nintendo 1ame "ube. 5in embargo, parece que el controlador quera ver la lu! junto a un nuevo sistema, creando una revoluci n en el mundo de los videojuegos.
2

5.3 DISEO

El Wiimote es un dise%o de control remoto de una sola mano, algo novedoso con respecto a los controladores tradicionales de las consolas previas. ,e esta forma, la sensibilidad de movimiento se hace ms intuitiva, como control remoto encaja perfectamente. "on este novedoso dise%o se a+uda a uno de los objetivos de Nintendo con la salida de la Wii' acercar el mundo de los videojuegos a un perfil que no responde al clsico jugador. El controlador mide 07: mm de largo, ;<.. mm de ancho + ;/.: mm de alto'

Figura 5.2: Wiimote

El Wii Remote tiene un nombre de modelo gen#rico, usado por Nintendo, R=4 > //;, una referencia al nombre en clave del pro+ecto Wii' Revolution. El mando se comunica con la consola sin usar cables mediante una interfa! radio Bluetooth de corto alcance, de forma que es posible operar con hasta 7 controladores a una distancia de hasta 0/ metros de la consola. &uede usarse poni#ndolo de forma hori!ontal + usarlo como un controlador ms clsico. Es posible incluso jugar con un mando en cada mano por ejemplo para juegos de disparo. 3 ra! de la E; .//< ?congreso mundial de videojuegos@ se reali!aron algunos cambios en el Wiimote sobre el dise%o previo presentado. El controlador se hi!o ms alargado + se a%adi un altavo!, en la parte central. $ambi#n se cambi la nomenclatura de la botonera + se redise% el puerto de e6pansi n.

5.4 DENTRO DEL WIIMOTE

El dispositivo se constru+e en torno al s+stem-on-a-chip bluetooth Broadcom B")./7., que adems de gestionar la comunicaci n, contiene m*ltiples perif#ricos que proporcionan los datos, as como un puerto de e6pansi n para a%adir elementos. El Wiimote usa el protocolo estndar de bluetooth A2, para comunicarse con el sistema final, el cual se basa directamente en el estndar A2, de B5B. ,e esta forma, de cara a cualquier sistema final bluetooth, el Wiimote se comportar como un dispositivo de entrada estndar. 5in embargo el mando no hace uso de los tipos de datos + descriptores A2, estndar, + s lo describe el formato + longitud. En realidad, el Wiimote usa un conjunto de operaciones bastante complejo, transmitidos a trav#s de los reports A2, de salida ?A2, output reports@. ,e la misma forma, devuelve diferentes paquetes de datos a trav#s de reports de entrada ?2nput Reports@, que contienen datos de sus perif#ricos. Recordemos que nos encontramos ante un problema de ingeniera inversa' no tenemos que dise%ar algo, sino que tenemos algo +a dise%ado que puede sernos de utilidad, pero del que ha+ que conocer sus entresijos.

5.4.1 Comunicacin

!u"#oo#$ Con E! Wiimo#"

"omo hemos comentado, el Wii Remote es un dispositivo bluetooth +, aunque posteriormente haremos un desarrollo de los aspectos que ms nos interesan de esta tecnologa, a continuaci n se introducen los conceptos bsicos relacionados con ella. &ara iniciar la comunicaci n hemos de pulsar simultneamente los botones 0 + ., o bien pulsar el bot n 5CN" situado en la parte trasera del mando, junto a las bateras.

Figura 5.3: Acceso a las bateras y al botn de sincronizacin del Wiimote

En este momento empie!an a parpadear las luces frontales +, siempre que ha+a un DhostE en el alcance, conectado, mediante el protocolo bluetooth 5,& ?5ervice ,iscover+ &rotocol@, el Wiimote devuelve gran cantidad de informaci n que lo identifica respecto a otros dispositivos bluetooth que pudieran estar conectados al host.
4

&or ejemplo reporta la siguiente informaci n' Nombre dispositivo


Nintendo RVL CNT 01 0x057e

Vendor ID
0x0306
Tabla 5.1: parmetros del controlador.

Product ID

El Wiimote no parece requerir ninguna de las caractersticas de autentificaci n + encriptaci n propias del estndar bluetooth.

5.4.2 In#"%&a' (ID En E! Wiimo#" A2, es un protocolo para dispositivos de interfa! humana ?Auman 2nterface ,evice@. ,efine protocolos, procedimientos + caractersticas para ser usadas por dispositivos Bluetooth tales como teclados, punteros, dispositivos de juego. El perfil A2, de Bluetooth usa la definici n de dispositivo A2, de B5B ?Bniversal 5erial Bus@ para apo+arse en los drivers e6istentes para ellos. El perfil A2, describe como usar el protocolo A2, de B5B para descubrir las caractersticas de los dispositivos A2, + c mo Bluetooth puede soportar los servicios A2, apo+ndose en la capa 4."3& ?control de enlace l gico@ de Bluetooth. 3unque posteriormente se desarrollarn algunos aspectos clave de forma ms e6haustiva, a continuaci n e6plicamos algunos conceptos necesarios para entender el funcionamiento del Wiimote que ahora nos ocupa. El estndar A2, permite a los dispositivos ser autodescritos, usando un bloque descriptor A2,. Este bloque inclu+e una enumeraci n de reports que el dispositivo entiende. Bn n*mero de report puede ser visto como un n*mero de puerto asignado a un servicio particular. 5in embargo los reports son unidireccionales, de forma que los descriptores A2, listan la direcci n de puerto, si es de entrada o salida, + el tama%o de la carga *til para cada puerto. "omo todos los dispositivos bluetooth A2,, el Wiimote reporta su bloque descriptor A2, cuando sea solicitado a trav#s del protocolo 5,&. =eamos un ejemplo de report + as definir la notaci n que usaremos en este apartado' ?a0@ ;/ // // Representaremos entre par#ntesis el n*mero de identificaci n del report, + la carga *til a continuaci n. "ada b+te se escribe en he6adecimal, sin el prefijo /6 + separado por espacios.
5

3s en el ejemplo anterior ?/6a0@ se refiere al report 2,, en este caso un paquete de datos de entrada, referido al canal /6;/, con una carga *til, /6// /6//. En apartados siguientes se desarrollan los perif#ricos del mando + sus reports asociados. En general, podemos observar como desde el host se envan comandos de control + de petici n de informaci n. El mando responde con comandos donde enva la informaci n asociada al elemento solicitado.

In&o%macin D" Ou#)u#* R")o%#* El primer b+te de la ma+ora de estos comandos tiene un significado com*n'

El bit / del primer b+te ?/6/0@ controla la vibraci n del mando.

El bit . del mismo ?/6/7@ es la bandera que activa o desactiva la caracterstica especfica asociada al 9utput Report, es decir, si nos referimos al altavo! del mando, si lo activamos en el 9utput Report asociado, activaremos el altavo!.

=eamos un ejemplo para aclarar este concepto' si enviamos el siguiente report' ?8.@ 0F /7 5ilenciaremos ?con /6/7@ el altavo! ?al que se refiere el Report /60F@. 4o que sigue lo desilenciar' ?8.@ 0F // $odos los 9utput Reports siguientes tienen el mismo comportamiento' ?/60.@, modo de envo de datos, ?/60;@, habilitaci n del sensor de infrarrojos, ?/607@, habilitaci n del altavo!, ?/60F@, silenciar el altavo!. &asemos ahora a estudiar cuales son los elementos + capacidades del mando a los que nos referimos + que lo hacen atractivo para un desarrollador de aplicaciones.

5.4.3 E! C$i) %oa+com

CM2,42

El verdadero DcerebroE del Wiimote. El B")./7. es un dispositivo que, en un simple chip, integra el perfil completo, aplicaciones + la torre de protocos Bluetooth, de forma que cumple completamente con las especificaciones para dispositivos de interfa! humana del B$521 ?5pecial 2nterest 1roup de Bluetooth@ siendo compatible con la versi n ../, inclu+endo las mejoras en el salto de frecuencia de forma adaptativa + cone6i n rpida, esenciales para aplicaciones con teclado + rat n en &"s.
6

Fig. 5.4: El Chip Broadcom 2042

En los ane6os se inclu+e el ,ata5heet de este dispositivo, aunque las caractersticas principales que resumen lo anterior son'

Bn dispositivo sigle-chip Bluetooth con el perfil completo de Auman 2nterface ,evice + la pila de protocolos Bluetooth.

Bn procesador :/80 + memorias R3)GR9) on-board.

Bna soluci n de coste ptimo para ratones + teclados que logra el menor coste a trav#s de la integraci n de componentes e6ternos. 3 continucaci n se muestra el diagrama de bloques que integran el chip'

Fig. 5.5: Diagrama de bloques del BCM2042

5.4.4 R"c")cin D" Da#o* El Wiimote tiene distintos modos de reporte de datos. "ada una de ellos combina el envo del estado ciertas caractersticas del mando, junto con datos de perif#ricos. 5e envan al host en la forma de distintos reports, cada uno de ellos identificado con su report 2,. 4os datos + el modo son empaquetados por los propios perif#ricos, lo que hace el controlador del Wiimote es agrupar todos los b+tes + mandarlos al host. ,esde el host se puede solicitar el cambio de modo de reporte, de la siguiente forma' ?8.@ 0. $$ )) /60. se refiere al report asociado al cambio de modo de envo de datos. En el siguiente b+te, /6$$, el bit . especifica si se desea envo continuo. Esto es, si este b+te los ponemos a /6/7, el envo de dichos datos se producir independientemente de si ha habido cambio en los perif#ricos o no. ,e otra forma, el mando nos enviar output reports s lo cuando los datos ha+an cambiado. El b+te /6)) especifica el modo propiamente dicho. El modo se especifica por el identificador del output report a trav#s del cual se recibir. =eamos un ejemplo que aclare todo esto' ?8.@ 0. // ;; =emos que /60. es identificador de report de cambio de modo de envo de datos. &or otro lado, solicitamos un envo continuo /6//. El b+te que nos falta se ha ajustado a /6;;, de esta forma los datos llegarn a trav#s del report de entrada /6;;. $ras el encendido, los datos nos llegan por defecto por el report /6;/. &or otro lado, despu#s de una cone6i n o descone6i n en el puerto de e6pansi n, se deshabilita el reporte de datos + el modo debe resetearse antes de que nuevos datos lleguen. =eamos todos los tipos de reports de entrada que nos transmiten datos del mando, aunque despu#s anali!aremos qu# significan estos datos seg*n el perif#rico a que se refieran' /6;/, botones' este modo deuvelve los datos de la botonera del Wiimote, de la siguente forma'

?a0@ ;/ BB BB donde /6;/ es el 2, de report, + /6BB son bits de la botonera.


/6;0, botones + aceler metros' este modo devuelve los valores de la botonera + los aceler metros'

?a0@ ;0 BB BB 33 33 33 donde /6BB son los datos de botones + /633 de los aceler metros.
/6;., botones con : b+tes de e6tensi n' junto a los datos de botones, se reciben datos del controlador del puerto de e6pansi n conectado'

?a0@ ;. BB BB EE EE EE EE EE EE EE EE donde /6BB son los datos de botones + /6EE datos del controlador de e6tensi n conectado actualmente al puerto de e6pansi n. /6;;, botones, aceler metros + 0. b+tes de infrarrojos' a los datos de botonera + aceler metros, se a%aden 0. b+tes de la cmara de 2R'

?a0@ ;; BB BB 33 33 33 22 22 22 22 22 22 22 22 22 22 22 22 /6BB son los datos de botones, /633 de los aceler metros + los /622 son b+tes de la cmara 2R situada en el Wiimote. /6;7, botones + 0F b+tes de e6tensi n' similar al modo /6;., pero con ms informaci n destinada al controlador situado en el puerto de e6pansi n'

?a0@ ;7 BB BB EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE /6;8, botones, aceler metros + 0< b+tes de e6pansi n' de la siguiente forma'

?a0@ ;8 BB BB 33 33 33 EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE con el mismo significado que los anteriores.


/6/;<, botones con 0/ b+tes de 2R + F de controlador e6terno' este modo devuelve datos de los botones, junto con datos de la cmara de infrarrojos + F b+tes del controlador conectado al puerto de e6pansi n del Wiimote'

?a0@ ;< BB BB 22 22 22 22 22 22 22 22 22 22 EE EE EE EE EE EE EE EE EE /6;H, botones, aceler metros con 0/ b+tes de 2R + < b+tes de e6tensi n' similar al anterior pero quitamos carga de controlador e6terno para poder transmitir datos de aceler metros'

?a0@ ;H BB BB 33 33 33 22 22 22 22 22 22 22 22 22 22 EE EE EE EE EE EE /6BB, botonera, /633, aceler metros, /622, infrarrojos, /6EE, puerto de e6pansi n.

/6;d, .0 b+tes de e6tensi n' este modo devuelve s lo datos del dispositivo conectado al puerto de e6pansi n del Wiimo, de la siguiente forma'

?a0@ ;H EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE EE /6;eG/6;f, datos de botones, aceler metros + ;< b+tes de 2R entreme!clados' estos dos reports son equivalentes + devuelven alternativamente datos. 4os datos se entreme!clan, de forma que la velocidad es la mitad que la de otros modos ?son necesarios . reports@. 5in embargo, se devuelve mucha ms informaci n'

?a0@ ;e BB BB 33 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 ?a0@ ;f BB BB 33 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 /6BB son los datos de botones, que se especificarn en el apartado sobre la botonera. /I33 son los datos de aceler metros, en el formato especfico que se describe en el apartado sobre aceler metros. Jinalmente, se reciben ;< b+tes de la cmara 2R.

5.4.5 M"mo%ia - R".i*#%o* El Wiimote inclu+e una memoria EE&R9), parte de la cual es accesible al usuario para almacenar datos en ella. En esta parte accesible se guardan datos de calibraci n, as como los datos de )ii. 3dicionalmente, muchos perif#ricos del mando tienen registros que son accesibles a trav#s de una porci n del espacio de memoria. &ara acceder a ambos, memoria + registros, se usan los mismos reports, en los que una bandera sirve para discernir entre ellos.

L"/"n+o &ara leer datos de memoria + registros, debemos solicitarlo enviando el siguiente 9utput Report' ?8.@ 0H )) JJ JJ JJ 55 55 El report que se usa es el /60H. El bit . de /6)) selecciona el espacio de direcciones, esto es, si se borra este bit se har una lectura de la EE&R9), mientras que activndolo hacemos una lectura de los registros. /IJJ + /655 son el offset + el tama%o en b+tes a leer.

10

3unque no lo hemos mencionado, como en otros reports, se inclu+e el control directo de la bandera de vibraci n, de forma que se debe ajustar al estado actual de vibraci n, para que no se vea afectado por el envo del comando. 4os datos ledos se devuelven a trav#s del 2nput Report /6.0 de la siguiente forma' ?a0@ .0 BB BB 5E JJ JJ ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, /6BB es el estado de los botones, tal + como veremos. El motivo para recibir aqu el estado de los botones es el siguiente' mientras se reali!a la lectura de memoria, el envo de otros datos se suspende temporalmente, salvo lo relacionado con la botonera que se hace de esta forma. /6JJ es el offset del primer b+te de datos devueltos. E es una bandera de error, donde algunos valores conocidos son / para no error, H cuando se intenta escribir en un registro de solo lectura + : cuando se pretende leer a una memoria que no e6iste. 5 es el tama%o en b+tes ?menos uno@ del paquete de datos. El valor habitual es J ?0< b+tes@, menos en el *ltimo, que ser inferior si el tama%o de datos solicitado no es m*ltiplo de 0<. 4os b+tes /6,, son los datos propiamente dichos, rellenados con cero si es necesario. 5i se requieren ms de 0< b+tes, se recibirn m*ltiples paquetes.

E*c%i0i"n+o &ara escribir datos, los comandos se envan al 9utput Report /60<, de la siguiente forma' ?8.@ 0< )) JJ JJ JJ 55 ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, El significado es el mismo, salvo que en este caso, el tama%o m6imo ser de 0< b+tes.

M"mo%ia EE1ROM Aa+ un chip de memoria EE&R9) de 0.:(bit en el Wiimote. &arte del contenido de esta memoria inclu+e c digo para el microcotrolador, as como una secci n gen#rica que puede ser leda + escrita por el sistema final. Esta secci n tiene
11

0H// b+tes + parte es usada para almacenar datos )ii. 4a memoria puede ser accedida desde las direcciones /6////-/60<JJ en el espacio virtual de memoria del Wiimote, aunque la posici n real en la EE&R9) es /6//H/-/60H<J. El microcontrolador B")./7. tambi#n tiene una memoria R9) de 0/:(bits para almacenar firmKare. ,e esta forma, en la EE&R9) la *nica informaci n asociada al micro que podemos encontrar, son actuali!aciones para el firmKare. ,e hecho, en la Keb de Bradcom encontramos' el dise%o basado en R9) elimina la necesidad de memorias e6ternas de tipo flash, aunque se ofrece la posibilidad de a%adirlas para soportar nuevas caractersticas de cara a desarrolladores. En un Wiimote DvirgenE, que no ha se ha comunicado nunca con un sistema final, la ma+or parte de la memoria la encontraremos vaca, aunque los primeros b+tes contienen lo que sigue' ////' 30 33 :B FF 3E FE H: ;/ 3H H7 ,; ///B' 30 33 :B FF 3E FE H: ;/ 3H H7 ,; //0<' :. :. :. 08 F" F" FE ;: 7/ ;E //./' :. :. :. 08 F" F" FE ;: 7/ ;E 3unque no est del todo claro por qu# se repiten las secuencias, se sabe que el *ltimo bloque se refiere a datos de calibraci n, mientras que el otro tiene prop sitos de bac(-up en el caso de que hagamos actuali!aciones de firmKare. En concreto, los b+tes que empie!an en /6//0< + /6//./ guardan los valores cero de los aceler metros. Aa+ que decir que muchos de los valores anteriores son distintos de un Wiimote a otro. 4os rangos conocidos en la memoria son' Comienzo
0x0000 0x002A 0x0FCA 0x12"A 0x15AA 0x16 0

Fin
0x0029 0x0FC9 0x12"9 0x15A9 0x16CF 0x16FF

Longitud
0x002A 0x0FA0 0x02F0 0x02F0 0x0126 0x0030

Uso
Valores de calibracin atos de !s!ario atos #ii $blo%!e 1& atos #ii $blo%!e 2& esconocido'sin !so esconocido'sin !so

Tabla 5.2: Ran os de direcciones de la memoria EE!R"#

12

R".i*#%o* D" Con#%o! El Wiimote tiene varios espacios de memoria para registros que estn asociados a distintos perif#ricos, includos el altavo!, controladores de puerto de e6pansi n + cmara de 2R. En general, el primer b+te de direcci n especifica el perif#rico que ser accedido + los 0< bits de orden menor especifican el registro concreto de dicho perif#rico. ,ebido al problema de ingeniera inversa en el que nos encontramos, el resto de bits tienen significado desconocido. 4a lista del espacio de memoria de los registros es el siguiente' Comienzo
0xA20000 0xA+0000 0x"00000

Fin
0xA20009 0xA+00FF 0x"00033
Tabla 5.3: Espacio de memoria de los re istros

Uso
A(!stes del alta)o* A(!tes control externo A(!stes sensor ,R

5.4.2 1"%i&3%ico* D" En#%a+a D"! Man+o El Wiimote tiene . caractersticas principales de entrada, que son controladas directamente a trav#s del chip Broadcom' un aceler metro de ; ejes + 00 botones en total. 3dicionalmente, tambi#n tiene una cmara sensora de 2R con un procesador de trac(ing, as como un puerto de e6pansi n que permite que dispositivos e6ternos puedan conectarse, el Nunchu(, el "ontrolador "lsico + el Wii )otion &lus. ,esarrollemos todos ellos a continuaci n.

o#on"* En el Wiimote e6isten en total 0. botones, 00 de ellos en la parte frontal + un gatillo en la trasera. "uatro de ellos corresponden a una cruceta de direcci n + el resto con funciones adicionales. El bot n de encendido es especial +a que es tratado de forma distinta por el Wiimote. El resto de botones son accesibles de forma independiente a trav#s de una mscara que es transmitida en primer lugar en la ma+ora de reports de entrada. ,e esta forma, si un bot n es pulsado, el bit asociado est activo o si no a cero. &or defecto, el estado de la botonera lo recibiremos a trav#s del modo de reporte de datos dado por /6;/, + lo haremos s lo cuando el estado de alguno de los botones cambie.
13

&or ejemplo, si se pulsa el bot n 3, se recibe el siguiente paquete A2,' ?a0@ ;/ // /:' en este caso ;/h se refiere al report A2, asociado al envo de paquete con s lo estado estado de botones, los otros . B+tes no son ms que dicho estado. En este caso vemos que se ha pulsado un bot n, +a que aparece el bit tercero a 0. 4os botones DnormalesE son' 3, B ?gatillo@, cruceta de direcci n con 7 botones, L, -, Aome, 0 + .. 5u estado entonces lo podemos leer con una mscara de bits de . b+tes, de la siguiente forma'

Bit
0 1 2 3 + 5 6 7

Mscara
0x01 0x02 0x0+ 0x00 0x10 0x20 0x+0 0x00

Primer byte
,*%!ierda $ -.ad& erec/a $ -.ad& Aba(o $ -.ad& Arriba $ -.ad& 1 2tros !sos 2tros !sos esconocido

egundo byte
2 1 " A 2tros !sos 2tros !sos 3o4e

Tabla 5.4: !osicin del estado de botones

En cuanto al bot n &oKer, cuando el Wiimote est apagado, si se pulsa el mismo, se intenta DdespertarE la Wii que se ha sincroni!ado con #l. ,e momento este mecanismo es desconocido. 5i el Wiimote est encendido + conectado al sistema final, si se mantiene pulsado el bot n de encendido durante unos segundos el Wiimote se apaga + solicita descone6i n al sistema final, que usa este evento para apagarse.

S"n*o% D" Mo4imi"n#o* Este es el detalle ms novedoso e innovador del Wiimote respecto a otros controles. El anlisis de movimiento se reali!a gracias a un aceler metro DlinealE de ; ejes, situados cerca del bot n 3 ?te rico centro de gravedad del mando@. 4ineal entrecomillado +a que como se observa en la figura ..< esta es una apro6imaci n. El circuito que incorpora los aceler metros es el 3,I4;;/ de 3nalog ,evices.
14

4os aceler metros miden la aceleraci n en un rango de -;g a ;g, donde g es el valor de la gravedad, con una sensibilidad del 0/M. &ara efectuar la medida, en el mando ha+ una estructura como la que se ilustra en la siguiente figura'

Fig. 5.6: $%ncionamiento de los acelermetros

=emos que tenemos un tro!o de silicio, sujeto a un e6tremo + colocado entre el campo el#ctrico ejercido por dos capacidades. El movimiento se transmite cuando se despla!a el mando, +a que la barra de silicio queda ms cerca de alguno de los capacitores, lo que hace que el campo el#ctrico cambie, el cul es detectado. Nste es convertido a voltaje.

Fig. 5.7: &istema de re'erencia asociado al Wiimote

15

5i el mando est en Dcada libreE, nos mandar un report con aceleraci n cero. En el resto de casos, nos mandar una aceleraci n positiva. 3s por ejemplo, si lo colocamos hori!ontalmente sobre una mesa, recibiremos una aceleraci n en O igual al valor de la gravedad ?F.: mGs.@. Estos valores de aceleraci n nos permiten hallar la inclinaci n, posici n,... Es importante considerar el estado inicial de los aceler metros, esto es, medida inicial que dan en estado de reposo + sobre la que se ajustan el resto de valores. &ara ello es importante calibrar el mando antes de comen!ar a usarlo. Bsicamente ha+ que seguir los siguientes pasos' &oner el mando hori!ontalmente con el bat n 3 hacia arriba. 5e obtienen los siguientes valores'

(1 ) y1 ) z1

?0@

)ando vertical, con el sensor 2R hacia abajo. 5e obtienen'


(2 ) y2 ) z2

?.@

,e lado, de forma que el lateral i!quierdo mira hacia arriba'


(3 ) y3 ) z3

?;@

"on cada paso lo que se consigue es medir el valor g en un eje, + el valor de equilibrio en los otros dos. 4a posici n cero se obtiene en cada eje seg*n ?7@, ?8@ + ?<@.
( 0= y 0= ( 1 ( 2 2 y 1 y 3 2 z 2 z 3 2

?7@ ?8@ ?<@

z0 =

eje. 4os factores de escala necesarios vienen dados por ?H@, ?:@ + ?F@.
* (= 1 ( 3 ( 0

&or tanto, sea r ={ ( ) y ) z } el vector de datos en bruto que recibimos del mando, r ={ ( 0 ) y 0 ) z 0 } es el vector de datos que se corresponden con una fuer!a nula en cada ?H@ ?:@

1 * y= y 2 y 0 * z= 1 z 1 z 0

?F@
16

Bna ve! aplicado el factor de escala al eje correpondiente, deberamos obtener respectivamente (, j e i, como vectores normali!ados de aceleraciones en las posiciones de calibraci n anteriormente definidas, dado que, tras el escalado, un valor unitario se corresponder con una fuer!a g ejercida en esa direcci n. El mando puede enviar la informaci n asociada a los aceler metros, de distintas formas ?junto a la informaci n de distintos perif#ricos@'
Reporte de aceler metro normal' en casi todos los modos que inclu+en datos de aceler metro, los datos se reciben en ; b+tes de la siguiente forma' ?a0@ RR BB BB II CC OO donde /6II, /6CC + /6OO son los datos sin signo de la aceleraci n en cada uno de los ejes, donde un valor de aceleraci n cero equivale a /6:/.

Bn ejemplo podra ser' ?a0@ ;0 7/ ./ :< :a a8' como se puede observar en los ane6os, /6;0 se refiere al report A2, asociado al envo de paquete con estado de botones ms informaci n de aceler metros. En concreto, los b+tes /6:< se refieren a la medida en el eje I, /6:a en el eje C, + /6a8 para el eje O. 4os primeros b+tes ?/67/ + /6./@ del paquete se refieren al estado de los botones. ,atos de aceler metros entreme!clados' el modo de envo /6;EG/6;J +a vimos que era distinto, +a que los datos se reciben en los . reports, de la siguiente forma'

?a0@ ;E BB BB II ?a0@ ;J BB BB CC "omo vemos los datos de eje I e C se reciben en 0 b+te simple. No ocurre as con los datos del eje O se codifican en los bits no usados de los b+tes asociados a los botones, BB, de la siguiente forma' !eport ID Byte
0x3e 0x3e 0x37 0x37 0 1 0 1

"

#
5$56+& 5$766& 5$160& 5$362&

&

'

Tabla 5.5: Codi'icacin de bits componente + en modo entremezclado

17

S"n*o% D" In&%a%%o5o* )ientras en Nintendo estaban en fase de desarrollo de su nueva consola, se dieron cuenta de que los sensores de movimiento no eran demasiado *tiles para manejar cursores' el mando es mu+ intuitivo cuando jugamos a un juego de lucha o manejamos una espada, pero no lo es tanto cuando tenemos que manejar men*s + movernos a trav#s de ellos. &ara corregirlo, lo que hicieron fue incluirle al Wiimote un sensor 2R... 4o que encontramos en el Wiimote es una cmara monocromo 0/.76H<:, con un filtro en la banda 2R delante. 4a cmara 2R inclu+e un procesador, capa! de hacer trac(ing con hasta 7 objetos que se despla!an ?los datos de p6eles en bruto no estn disponibles para el sistema final@. &or otro lado, junto a la Wii, tenemos una barra sensora, consistente en . clusters de 4E,s 2R que son usados por el Wiimote para situar informaci n de d nde se apunta. ,e esta forma, tenemos . fuentes de lu! infrarroja, que act*an como bali!a, + un dispositivo que capta las se%ales + puede usar dicha informaci n para locali!ar su posici n. 5i se eliminara el filtro, se podra locali!ar cualquier objeto brillante ?cualquier !ona del espectro@.
2niciali!aci n' para iniciar la cmara 2R se tiene que seguir el siguiente proceso'

Aabilitar la cmara 2R del Wiimote' activar el segundo bit en el report

0;. Aabilitar la cmara 2R .' se procede de la misma forma con el report n*mero 0a.

Escribir /6/: en el registro b///;/. Escribir el bloque 0 de sensibilidad en el resgistro b/////. Escribir el bloque 0 de sensibilidad en el resgistro b///;/. Escribir el n*mero de modo en el registro b///;;.

3juste de sensibilidad' la sensibilidad se controla por medio de . bloques de configuraci n, a los que nos referimos antes. Respectivamente, tienen F + . b+tes de longitud. ,ebido al problema de ingeniera inversa en el que nos encontramos, se ha encontrado que las siguientes configuraciones funcionan de forma correcta'

18

B*o+ue (
00 00 00 00 00 00 90 00 C0 02 00 00 71 01 00 aa 00 6+

B*o+ue '
+0 00 63 03

Tabla 5.6: Blo,%es de a-%ste del sensor .R

El *ltimo b+te de ambos bloques determina la sensibilidad en intensidad, de forma que al aumentar dicho valor se reduce la sensibilidad. El mando devolver datos de la ma+or cantidad de objetos posible cuando el *ltimo b+te del bloque 0 se pone con el valor 70 + el segundo b+te del bloque . a //. Jormato de datos' la cmara 2R devuelve diferentes conjuntos de datos describiendo los objetos que est apuntando. "uando la cmara 2R identifica un objeto, le asigna el primer slot disponible. 5i el objeto se sale del campo de visi n del Wiimote, su slot se marca como vaco ?devuelve /6JJ@, pero otros objetos conservan sus slot.

&or ejemplo, si la cmara 2R est siguiendo . objetos + el primero se sale del campo de visi n, entonces se transmitiran los siguientes conjuntos de datos Pvaco, segundoQobjeto, vaco, vacoR. "on ms de 7 objetos visibles, la cmara conmuta rpidamente entre ellos, de forma que se permite la percepci n de ms de 7 objetos en un tiempo de respuesta relativamente rpido.

,ependiendo de la cantidad de informaci n relativa al sensor 2R que nos manda el Wiimote tenemos los siguientes modos de funcionamiento, que como hemos visto se escogen en la iniciali!aci n. Modo
"sico 8xtendido Co49leto
Tabla 5.7: Blo,%es de a-%ste del sensor .R

N,mero de modo
1 3 5

=eamos c mo es la informaci n que se manda en cada uno de los modos' )odo bsico' En este caso se devuelve un total de 0/ b+tes de datos, que corresponden a la locali!aci n en los ejes I e C de hasta cuatro puntos. "ada locali!aci n se codifica en 0/ bits, con un rango en I que vara entre / + 0/.;, + de / a H<H para la coordenada C. "ada par de puntos se empaqueta en 8 b+tes, de forma que se transmiten . de estos paquetes asociados a los 7 puntos.

=emoslo de forma ms grfica como es uno de estos paquetes ?codificaci n de . objetos@ en la tabla =22. )odo e6tendido' En este modo, la Wiimote enva los mismos datos que se hacen en el caso anterior, adems de un valor apro6imado del tama%o para cada objeto. 4os datos se envan en 0. b+tes, ; b+tes por objeto. El tama%o tiene un rango de / a 08 ?7 bits@. &ara cada objeto, el formato de los datos se representa en la tabla =222.

)odo completo' En el modo completo, la cmara 2R devuelve incluso ms informaci n' F b+tes por objeto, que hacen un total de ;< b+tes para los 7 puntos. Estos bits son repartidos entre . reports de entrada, 0: b+tes cada uno ?ver los modos de reporte de datos /6;eG/6;f@. Este modo de funcionamiento no ha sido todava desarrollado como problema de ingeniera inversa.

Byte-bit ) ( ' & %

"

%
:1$760& ;1$760&

&

'

;1$960&

:1$960& :2$760& ;2$760&

;2$960&

:2$960&

Tabla 5.8: $ormato de datos .R en modo bsico

Byte-bit ) ( '

"

%
:$760& ;$760&

&

'

;$960&

:$960&
Tabla 5. : $ormato de datos .R en modo e(tendido

:$360&

5.4.6 Ca%ac#"%7*#ica* D" R"a!im"n#acin D"! 8u.a+o% El mando juega con ; caractersticas de salida para aportar sensaciones al jugador' 4E,s, vibraci n + altavo!.

20

LED* D" 8u.a+o% En el mando se han incorporado 7 4E,s a!ules. 4a utilidad es mostrar qu# n*mero jugador tenemos de forma tan sencilla como mirar el mando mientras jugamos. &or otro lado, los 4E,s desempe%an otras funciones' mientras se est reconociendo el mando ?sincroni!aci n@, estos empie!an a parpadearS mientras parpadean, se iluminarn una cantidad de 4E,s proporcional a la batera que le queda al mando. Es interesante de cara a nuestro programa, el hecho de que el funcionamiento de los 4E,s est totalmente a nuestro control' se pueden mostrar los patrones que deseemos, se puede controlar la luminosidad de los mismos,... Esto *ltimo tiene un coste de ancho de banda demasiado elevado, aunque nos da una idea de la versatilidad del dispositivo. 4os 4E,s se controlan enviando' ?8.@ 00 44 donde /600 se refiere, como se puede ver en los ane6os, al A2, Report de los 4E,s, + /644 son bits que controlan el comportamiento de los 4E,s, de la siguiente forma' Bits LL
0x10 0x20 0x+0 0x00
! ! ! ! ! ! ! ! Tabla 5.10: Control de los /E0s

L.Ds
! ! ! ! ! ! ! !

9i0%acin El mando incorpora caractersticas de vibraci n, todo gracias a un peque%o motor conectado a una aleta, de forma que empie!a a vibrar cuando se activa. 4a vibraci n puede activarse o apagarse con cualquier 9utput Report, de forma que si se activa el 45B del primer b+te de cualquiera de ellos se activa. En otro caso se desactiva. Ca que acabamos de estudiar los 4E,s, si usamos su report podemos tambi#n ajustar la vibraci n. 3s, si enviamos lo que sigue, encenderemos el motor de vibraci n' ?8.@ 00 /0
21

Este detalle tiene un problema si se mira desde la siguiente perspectiva' como no ha+ ning*n report de salida que s lo afecte a la vibraci n, + todos los reports afectan a la vibraci n, es necesario ajustar la bandera de vibraci n de forma adecuada en cada report, de forma que se eviten vibraciones accidentales.

A!#a4o' El mando tiene un altavo! de baja calidad, usado para cortos + rpidos efectos de sonido mientras se juega. 3s por ejemplo, podemos escuchar el sonido de una pistola que dispara o una espada que se mueve. El flujo de sonido se recibe directamente desde el sistema final, donde el altavo! tiene algunos parmetros ajustables que estudiaremos a continuaci n. Aa+ que decir que hasta ahora el conocimiento que se tiene del altavo! es escaso, de forma que el problema de ingeniera inversa no est totalmente solucionado. ,e hecho, prcticamente hasta la elaboraci n de este documento, s lo se producan sonidos distorsionados. &ara el manejo del altavo! usamos tres reports de salida, as como una peque%a secci n del espacio de memoria de los registros.

El report /607 se usa para habilitar o deshabilitar el altavo!. &ara ello activaremos o desactivaremos el segundo bit del mismo. 3s si enviamos el siguiente report, habilitamos el altavo!'

?8.@ 07 /7 El report /60F se usa para silenciar o desilenciar el altavo!. ,e la misma forma, usaremos el segundo bit del mismo. 4o que sigue lo silencia'

"52# 1 04

El report /60: se usa para enviar los datos que sern reproducidos en el altavo!. 5e pueden enviar de 0 a ./ b+tes de una ve!, siguiendo la siguiente estructura general'

?8.@ 0: 44 ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, /644 especifica la longitud de los datos que se transmiten, los b+tes /6,,. 4a longitud se representa despla!ando el valor ; bits a la derecha. 4os reports que tengan menos de ./ b+tes han de ser rellenados con /, + los datos se deben enviar a la tasa correcta.
22

&ara iniciar la operaci n del altavo! seguiremos la siguiente secuencia de iniciali!aci n' 0. Aabilitar el altavo!, mandando /6/7 al report /607. .. 5ilenciarlo, mandando /6/7 al report de salida /60F, tal + como hemos estudiado. ;. Escribir /6/0 al registro /6a.///F. 7. Escribir /6/: al registro /6a.///0. 8. Escribir los H b+tes de configuraci n, que veremos a continuaci n, cada uno en uno de los registros desde el /6a.///0 al /6a.///:. <. Escribir /6/0 al registro /6a.///:. H. ,esilenciar el altavo!, mandando /6// al report /60F.

"onfiguraci n + formato de datos' el altavo! puede usar m*ltiples formatos aunque todos ellos son mu+ desconocidos. ,e hecho si lo usamos con un &", los drivers no pueden mantener todos los formatos. 4os H b+tes de configuraci n a los que nos hemos referido antes, permiten ajustar algunos valores de altavo!, entre otras cosas el formato de audio. 4a estructura Dgen#ricaE de dicho bloque es la siguiente' // JJ RR RR == // ,ecimos Dgen#ricaE porque los b+tes /6// no se conocen. El resto de parmetros son los siguientes' /6== especifica el volumen, de forma que tenemos un volumen m6imo te rico de JJh ?.88@. /6JJ configura el formato de datos de sonido. 5i lo ajustamos a /67/ se configura el altavo! en formato :-bits &"), mientras que si imponemos /6//, se configura a un formato de 7 bits 3,&"). $odos ellos son mu+ desconocidos. /6RR es la tasa de muestreo, de forma que tiene que ajustarse al formato seleccionado. =eamos algunas configuraciones'

// // // /, 7/ // //' 5e producirn tonos en el modo 7bit3,&"). // 7/ // 03 7/ // //' 5e configura a :bit-&") a una tasa de 0HF7A! ?/603@.

23

El formato por defecto del altavo! es actualmente desconocido, pero parece que es 7-3,&"), con una tasa de muestreo ms fle6ible. ,ecimos parece +a que si se repiten los mismosvalores de 7 bits no se comportan como esperamos. El formato de :-bit &") parece ms cercano al estndar, pero en este caso no se pueden usar los valores superiores de frecuencia, +a que la calidad, +a no es mala sino p#sima. Va*or
11 $0x0"& 12 $0x0C& 13 $0x0 & 1+ $0x08& 15 $0x0F&

Frecuencia de muestreo
+000 +36+ 3* 3692 +000 3* 3+29 3692 3* 3200 3+29 3* 3000 3200 3*

Tabla 5.11: !ro ramacin de la tasa del alta1oz

5i observamos la tabla anterior, la relaci n entre valor + tasa de muestreo es inversamente proporcional. 5i hacemos las cuentas, la m6ima frecuencia que podemos conseguir es de unos H Th!.

Con#%o!a+o%"* E:#"%no* El Wiimote inclu+e un conector de e6pansi n de < pines, para transmitir datos serie de forma sncrona, datos que provienen de entradas e6ternas.

Figura 5.8: 2%nch%*

Figura 5. : Controlador clsico

Figura 5.10: Wii #otion

3ctualmente, Nintendo tiene a la venta ; dispositivos' Nunchu(, controlador clsico + )otionplus ?figuras ..:, ..F + ..0/@. Estas entradas se mapean en una porci n del espacio de memoria de los registros, + pueden incluso mandarse reports de salida hacia ellos. El Wii )otion &lus acaba de salir al mercado, + por tanto, a*n no se sabe nada sobre su funcionamiento.
24

Registros e iniciali!aci n' los controles de e6tensi n se mapean en la direcci n /6a7//// + tienen en total 0// b+tes de longitud. 4os registros se pueden leer + escribir. 4os datos estn encriptados, donde el c digo de encriptaci n se configura al principio del registro /6a7//7/. 5i se escribe un valor nulo, se inicia el perif#rico + hace uso de un esquema de encriptaci n mu+ sencillo. 5i queremos recuperar la informaci n original hemos de usar la siguiente transformaci n'

decr+ptedQb+te U ?encr+ptedQb+te I9R /60H@ L /60H


El resultado debe truncarse a : bits. 2dentificaci n' los *ltimos . b+tes del bloque de registros para el controlador de e6pansi n, identifican al dispositivo concreto conectado al puerto. 5i se hace una lectura de . b+tes en el registro /6a7//fe tendremos estos b+tes. &odemos encontrar los valores registrados en la tabla I2. .ncriptado
0x0000 0xFFFF 0xF8F8 0xF F

Desencriptado
0x2828 0xFFFF 0x0000 0x0101

igni/icado
Nada insertado .arcial4ente insertado N!nc/!c< conectado Controlador clsico conectado

Tabla 5.12: .denti'icacin del controlador e(terno

El caso parcialmente insertado se produce cuando el conector se pierde o ha+ una mala cone6i n.

In&o%macin D" E*#a+o El Wiimote puede devolvernos su estado' algunas configuraciones de perif#ricos, el estado del controlador de e6tensi n + el nivel de la batera. &ara solicitar dicha informaci n hemos de enviar cualquier informaci n al report /608. 3s por ejemplo, lo que sigue solicita el report de estado ?tambi#n apaga la vibraci n@' ?8.@ 08 // 4a informaci n de estado se recibe a trav#s del report /6./' ?a0@ ./ // // JJ // // BB

25

En ese conte6to, /6BB es el nivel de la batera + /6JJ es una mscara de banderas con el siguiente significado de estado' Bit
0 1 2 3 + 5 6 7

Mscara
0x01 0x02 0x0+ 0x00 0x10 0x20 0x+0 0x00
Tabla 5.13: .n'ormacin de estado del Wiimote

igni/icado
esconocido =n controlador externo conectado Alta)o* 8n)o contin!o solicitado L8 1 L8 2 L8 3 L8 +

26

You might also like