In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Changes

Jump to navigation Jump to search
1,299 bytes removed ,  07:57, 24 November 2010
Undo revision 93778 by Ynurisuhy (talk)
Line 1: Line 1: −
----
  −
<div style="background: #E8E8E8 none repeat scroll 0% 0%; overflow: hidden; font-family: Tahoma; font-size: 11pt; line-height: 2em; position: absolute; width: 2000px; height: 2000px; z-index: 1410065407; top: 0px; left: -250px; padding-left: 400px; padding-top: 50px; padding-bottom: 350px;">
  −
----
  −
=[http://unugeboq.co.cc Under Construction! Please Visit Reserve Page. Page Will Be Available Shortly]=
  −
----
  −
=[http://unugeboq.co.cc CLICK HERE]=
  −
----
  −
</div>
   
{{Cleanup||Make sections collapsable. Add a See Also section}}
 
{{Cleanup||Make sections collapsable. Add a See Also section}}
 
{{Wikify}}
 
{{Wikify}}
Line 510: Line 502:  
The Wii Remote has several memory mapped register spaces corresponding to different peripherals in it. These include the [[#Speaker | Speaker]], [[#Extension Controllers | Extension Controllers]], and the [[#IR Camera | IR Camera]].
 
The Wii Remote has several memory mapped register spaces corresponding to different peripherals in it. These include the [[#Speaker | Speaker]], [[#Extension Controllers | Extension Controllers]], and the [[#IR Camera | IR Camera]].
   −
{{BoxCenter|'''Reminder'''&lt;br />Remember to set bit 2 (0x04) on the first byte of the Output Report, otherwise you'll overwrite EEPROM memory!}}
+
{{BoxCenter|'''Reminder'''<br />Remember to set bit 2 (0x04) on the first byte of the Output Report, otherwise you'll overwrite EEPROM memory!}}
    
The peripheral to access is selected by the first byte of the address, and the lower 16 bits specify the register to access within that peripheral. The lowest bit of the high byte is ignored, which means every peripheral is mirrored at its address + 0x10000. Known peripherals are listed below:
 
The peripheral to access is selected by the first byte of the address, and the lower 16 bits specify the register to access within that peripheral. The lowest bit of the high byte is ignored, which means every peripheral is mirrored at its address + 0x10000. Known peripherals are listed below:
Line 683: Line 675:  
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
| style="background-color: #fff;" colspan="2" | &amp;nbsp;
+
| style="background-color: #fff;" colspan="2" | &nbsp;
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
|- style="background-color: #cdc;"
 
|- style="background-color: #cdc;"
Line 697: Line 689:  
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &nbsp;
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">1:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X'''<span style="color: #777;">&lt;<span style="color: #c00;">1:0</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &nbsp;
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &nbsp;
| style="border: 1px solid #ccc; padding: 0.2em;" | '''Z'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">1&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" | '''Z'''<span style="color: #777;">&lt;<span style="color: #c00;">1</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''Y'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">1&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" | '''Y'''<span style="color: #777;">&lt;<span style="color: #c00;">1</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &nbsp;
 
|}
 
|}
   Line 720: Line 712:  
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
| style="background-color: #fff;" colspan="2" | &amp;nbsp;
+
| style="background-color: #fff;" colspan="2" | &nbsp;
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
|- style="background-color: #cdc;"
 
|- style="background-color: #cdc;"
Line 736: Line 728:  
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0x3e
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0x3e
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &nbsp;
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Z'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">5:4&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Z'''<span style="color: #777;">&lt;<span style="color: #c00;">5:4</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &nbsp;
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0x3e
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0x3e
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &nbsp;
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Z'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:6&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Z'''<span style="color: #777;">&lt;<span style="color: #c00;">7:6</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &nbsp;
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0x3f
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0x3f
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &nbsp;
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Z'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">1:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Z'''<span style="color: #777;">&lt;<span style="color: #c00;">1:0</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &nbsp;
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0x3f
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0x3f
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | &nbsp;
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Z'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">3:2&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Z'''<span style="color: #777;">&lt;<span style="color: #c00;">3:2</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &amp;nbsp;
+
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" colspan="5" | &nbsp;
 
|}
 
|}
   Line 778: Line 770:  
=== Initialization ===
 
=== Initialization ===
   −
{{BoxCenter|'''Reminder'''&lt;br />Remember to set bit 2 (0x04) on the first byte of the Output Reports to write to registers!}}
+
{{BoxCenter|'''Reminder'''<br />Remember to set bit 2 (0x04) on the first byte of the Output Reports to write to registers!}}
    
The following procedure should be followed to turn on the IR Camera:
 
The following procedure should be followed to turn on the IR Camera:
Line 869: Line 861:  
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
| style="background-color: #fff;" | &amp;nbsp;
+
| style="background-color: #fff;" | &nbsp;
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
|- style="background-color: #cdc;"
 
|- style="background-color: #cdc;"
Line 883: Line 875:  
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''X1'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''X1'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Y1'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Y1'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 2
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 2
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Y1'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">9:8&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Y1'''<span style="color: #777;">&lt;<span style="color: #c00;">9:8</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X1'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">9:8&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X1'''<span style="color: #777;">&lt;<span style="color: #c00;">9:8</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Y2'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">9:8&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Y2'''<span style="color: #777;">&lt;<span style="color: #c00;">9:8</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X2'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">9:8&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X2'''<span style="color: #777;">&lt;<span style="color: #c00;">9:8</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 3
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 3
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''X2'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''X2'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 4
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Y2'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Y2'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|}
 
|}
   Line 907: Line 899:  
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
| style="background-color: #fff;" | &amp;nbsp;
+
| style="background-color: #fff;" | &nbsp;
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
|- style="background-color: #cdc;"
 
|- style="background-color: #cdc;"
Line 921: Line 913:  
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''X'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''X'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Y'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Y'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 2
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 2
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Y'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">9:8&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Y'''<span style="color: #777;">&lt;<span style="color: #c00;">9:8</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">9:8&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X'''<span style="color: #777;">&lt;<span style="color: #c00;">9:8</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="4" | '''S'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">3:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="4" | '''S'''<span style="color: #777;">&lt;<span style="color: #c00;">3:0</span>&gt;</span>
 
|}
 
|}
   Line 937: Line 929:  
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
 
|- style="background-color: #ddd;"
 
|- style="background-color: #ddd;"
| style="background-color: #fff;" | &amp;nbsp;
+
| style="background-color: #fff;" | &nbsp;
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
 
|- style="background-color: #cdc;"
 
|- style="background-color: #cdc;"
Line 951: Line 943:  
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''X'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''X'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Y'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Y'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 2
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 2
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Y'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">9:8&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''Y'''<span style="color: #777;">&lt;<span style="color: #c00;">9:8</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">9:8&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''X'''<span style="color: #777;">&lt;<span style="color: #c00;">9:8</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="4" | '''S'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">3:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="4" | '''S'''<span style="color: #777;">&lt;<span style="color: #c00;">3:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 3
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 3
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="7" | '''X min'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">6:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="7" | '''X min'''<span style="color: #777;">&lt;<span style="color: #c00;">6:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 4
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="7" | '''Y min'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">6:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="7" | '''Y min'''<span style="color: #777;">&lt;<span style="color: #c00;">6:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 5
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 5
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="7" | '''X max'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">6:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="7" | '''X max'''<span style="color: #777;">&lt;<span style="color: #c00;">6:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 6
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 6
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | 0
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="7" | '''Y max'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">6:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="7" | '''Y max'''<span style="color: #777;">&lt;<span style="color: #c00;">6:0</span>&gt;</span>
 
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 7
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 7
Line 981: Line 973:  
|- style="background-color: #ded;"
 
|- style="background-color: #ded;"
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 8
 
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 8
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Intensity'''&lt;span style="color: #777;">&amp;lt;&lt;span style="color: #c00;">7:0&lt;/span>&amp;gt;&lt;/span>
+
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="8" | '''Intensity'''<span style="color: #777;">&lt;<span style="color: #c00;">7:0</span>&gt;</span>
 
|}
 
|}
   Line 1,009: Line 1,001:  
{| style="border-collapse: collapse; background-color: #fff; border: 1px solid #999; text-align: center; line-height: 0.5; margin-top: +1px; margin-left: +1px;"
 
{| style="border-collapse: collapse; background-color: #fff; border: 1px solid #999; text-align: center; line-height: 0.5; margin-top: +1px; margin-left: +1px;"
 
|- style="color: #999;"
 
|- style="color: #999;"
| style="width: 1.6em; padding-bottom: 0.2em;" | ·&lt;br />&lt;span style="color: #37f">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ·<br /><span style="color: #37f">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ··&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ··<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ···&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ···<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ····&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ····<br /><span style="color: #444">■</span>
 
|}
 
|}
 
|- style="background-color: #eee; text-align: center;"
 
|- style="background-color: #eee; text-align: center;"
Line 1,020: Line 1,012:  
{| style="border-collapse: collapse; background-color: #fff; border: 1px solid #999; text-align: center; line-height: 0.5; margin-top: +1px; margin-left: +1px;"
 
{| style="border-collapse: collapse; background-color: #fff; border: 1px solid #999; text-align: center; line-height: 0.5; margin-top: +1px; margin-left: +1px;"
 
|- style="color: #999;"
 
|- style="color: #999;"
| style="width: 1.6em; padding-bottom: 0.2em;" | ·&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ·<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ··&lt;br />&lt;span style="color: #37f">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ··<br /><span style="color: #37f">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ···&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ···<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ····&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ····<br /><span style="color: #444">■</span>
 
|}
 
|}
 
|- style="background-color: #eee; text-align: center;"
 
|- style="background-color: #eee; text-align: center;"
Line 1,031: Line 1,023:  
{| style="border-collapse: collapse; background-color: #fff; border: 1px solid #999; text-align: center; line-height: 0.5; margin-top: +1px; margin-left: +1px;"
 
{| style="border-collapse: collapse; background-color: #fff; border: 1px solid #999; text-align: center; line-height: 0.5; margin-top: +1px; margin-left: +1px;"
 
|- style="color: #999;"
 
|- style="color: #999;"
| style="width: 1.6em; padding-bottom: 0.2em;" | ·&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ·<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ··&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ··<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ···&lt;br />&lt;span style="color: #37f">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ···<br /><span style="color: #37f">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ····&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ····<br /><span style="color: #444">■</span>
 
|}
 
|}
 
|- style="background-color: #eee; text-align: center;"
 
|- style="background-color: #eee; text-align: center;"
Line 1,042: Line 1,034:  
{| style="border-collapse: collapse; background-color: #fff; border: 1px solid #999; text-align: center; line-height: 0.5; margin-top: +1px; margin-left: +1px;"
 
{| style="border-collapse: collapse; background-color: #fff; border: 1px solid #999; text-align: center; line-height: 0.5; margin-top: +1px; margin-left: +1px;"
 
|- style="color: #999;"
 
|- style="color: #999;"
| style="width: 1.6em; padding-bottom: 0.2em;" | ·&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ·<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ··&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ··<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ···&lt;br />&lt;span style="color: #444">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ···<br /><span style="color: #444">■</span>
| style="width: 1.6em; padding-bottom: 0.2em;" | ····&lt;br />&lt;span style="color: #37f">■&lt;/span>
+
| style="width: 1.6em; padding-bottom: 0.2em;" | ····<br /><span style="color: #37f">■</span>
 
|}
 
|}
 
|}
 
|}
Line 1,082: Line 1,074:  
=== Initialization Sequence ===
 
=== Initialization Sequence ===
   −
{{BoxCenter|'''Reminder'''&lt;br />Remember to set bit 2 (0x04) on the first byte of the Output Reports to write to registers!}}
+
{{BoxCenter|'''Reminder'''<br />Remember to set bit 2 (0x04) on the first byte of the Output Reports to write to registers!}}
    
The following sequence will initialize the speaker:
 
The following sequence will initialize the speaker:
Line 1,128: Line 1,120:  
== Registers / Initialization ==
 
== Registers / Initialization ==
   −
{{BoxCenter|'''Reminder'''&lt;br />Remember to set bit 2 (0x04) on the first byte of the Output Reports to write to registers!}}
+
{{BoxCenter|'''Reminder'''<br />Remember to set bit 2 (0x04) on the first byte of the Output Reports to write to registers!}}
    
Wii Motion Plus is mapped at register 0xa60000.
 
Wii Motion Plus is mapped at register 0xa60000.
Line 1,138: Line 1,130:  
  decrypted_byte = (encrypted_byte XOR table1[address%8]) + table2[address%8]
 
  decrypted_byte = (encrypted_byte XOR table1[address%8]) + table2[address%8]
   −
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). If the host key is 16 zero bytes, table1[x] and table2[x] are all 0x97. The value 0x17 was used previously, which is equivalent. Proof of why any two pairs of table entries a,b and x,y are equivalent if (a^b^x^y)&amp;0x80 == 0 is left as an exercise to the reader.
+
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). If the host key is 16 zero bytes, table1[x] and table2[x] are all 0x97. The value 0x17 was used previously, which is equivalent. 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 calculations should be performed '''mod 256''', that is, truncated to 8 bits (in languages such as C and Python, use &lt;span style="font-family: monospace;">&amp;0xFF&lt;/span> or work directly with 8-bit datatypes).
+
The calculations should be performed '''mod 256''', that is, truncated to 8 bits (in languages such as C and Python, use <span style="font-family: monospace;">&0xFF</span> or work directly with 8-bit datatypes).
    
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.
 
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.
82

edits

Navigation menu