![]() ![]() There are two ways of initializing the extension. ![]() The Extension Controller must have been initialized prior to this. A six-byte read of register 0xa400fa will return these bytes. Once initialized, the last six bytes of the register block identify the connected Extension Controller. Data streamed through the Input Reports must also be decrypted using the above transformation if encryption is enabled. The Wii Remote will stream data bytes from the Extension Controller starting at offset 0x08, and continuing for however many bytes the current Data Reporting Mode requires. If the Wii Remote is initialized using the new method listed below, then the encryption of the extension bytes is disabled and they need not be decrypted using the transform listed above. The calculations should be performed mod 256, that is, truncated to 8 bits (in languages such as C and Python, use &0xFF or work directly with 8-bit datatypes). Proof of why any two pairs of table entries a,b and x,y are equivalent if (a^b^x^y)&0x80 = 0 is left as an exercise to the reader. The value 0x17 was used previously, which is equivalent. If the host key is 16 zero bytes, table1 and table2 are all 0x97. Where table1 and table2 are 8-byte tables calculated based on the 16-byte key sent by the host, and address is the address of the byte being read (only the bottom 3 bits matter). In encrypted mode, bytes can be decrypted using the following transformation:ĭecrypted_byte = (encrypted_byte XOR table1) + table2 Communications are optionally encrypted, and explicit initialization is required to disable encryption (see below). These registers are readable and writable. The data is 0x100 bytes long, and it is mirrored across the entire 16-bit address space up to 0xa4FFFF. Other extension Controllers are mapped at register address 0xa40000. Wii Motion Plus is mapped at register 0xa60000. Remember to set bit 2 (0x04) on the first byte of the Output Reports to write to registers! It is easy to make homebrew peripherals see the Tenkey numberpad project(japanese), gyro project(japanese), the Twiidler project, the DIY Wii drum controller, the OpenChord Guitar,or the DIY Wii guitar proof of concept demo video. Peripheral Protocol is 400kHz "fast" I2C, with slave address 0x52. The Wii Motion Plus is a small expansion which itself has an expansion port, allowing people to plug the Nunchuk into the Wii Motion Plus and the Wii Motion Plus into the Wii Remote. There are also many third party versions of classic controllers and nunchuks. The balance board acts like a dummy Wiimote with its own type of extension controller. In addition, Guitar Hero guitars and drums also act as extension controllers, although the Rock Band guitars and drums connect using their own system. Nintendo has currently released two extensions, the Nunchuk and the Classic Controller. Communications are encrypted, as detailed in below. Communications are bidirectional synchronous serial I2C, and the devices provide a virtual register block of length 0x100 that is mapped at 0xa40000 in the Wii Remote's address space (The 7-bit I2C address is 0x52). The Wii Remote includes a 6-pin expansion port that allows external peripherals to be connected to it. Pins on the Wii expansion controller cable ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |