Changes

←Created page with 'The Classic Controller Pro likes non-Pro, but Nintendo replaced 2 analog triggers(LT and LR) with 2 digital button. == Data Format == The Classic Controller Pro reports its in...'
The Classic Controller Pro likes non-Pro, but Nintendo replaced 2 analog triggers(LT and LR) with 2 digital button.
== Data Format ==
The Classic Controller Pro reports its information as 6 bytes of data, readable at 0xa40008 and streamable using Data Reporting Modes that include Extension bytes (unused bytes are filled with 0x00). The data is packed into the six bytes as follows ('''after decryption'''):

{| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em; text-align: center;"
|- style="background-color: #ddd;"
| style="background-color: #fff;" |  
| style="border: 1px solid #ccc; padding: 0.2em; text-align: center;" colspan="8"| '''Bit'''
|- style="background-color: #cdc;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Byte'''
| style="border: 1px solid #ccc; padding: 0.2em; width:3.3em;" | '''7'''
| style="border: 1px solid #ccc; padding: 0.2em; width:3.3em;" | '''6'''
| style="border: 1px solid #ccc; padding: 0.2em; width:3.3em;" | '''5'''
| style="border: 1px solid #ccc; padding: 0.2em; width:3.3em;" | '''4'''
| style="border: 1px solid #ccc; padding: 0.2em; width:3.3em;" | '''3'''
| style="border: 1px solid #ccc; padding: 0.2em; width:3.3em;" | '''2'''
| style="border: 1px solid #ccc; padding: 0.2em; width:3.3em;" | '''1'''
| style="border: 1px solid #ccc; padding: 0.2em; width:3.3em;" | '''0'''
|- style="background-color: #ded;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 0
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''RX'''<span style="color: #777;">&lt;<span style="color: #c00;">4:3</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="6" | '''LX'''<span style="color: #777;">&lt;<span style="color: #c00;">5:0</span>&gt;</span>
|- style="background-color: #ded;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 1
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''RX'''<span style="color: #777;">&lt;<span style="color: #c00;">2:1</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="6" | '''LY'''<span style="color: #777;">&lt;<span style="color: #c00;">5:0</span>&gt;</span>
|- style="background-color: #ded;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 2
| style="border: 1px solid #ccc; padding: 0.2em;" | '''RX'''<span style="color: #777;">&lt;<span style="color: #c00;">0</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="2" | '''LT'''<span style="color: #777;">&lt;<span style="color: #c00;">4:3</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="5" | '''RY'''<span style="color: #777;">&lt;<span style="color: #c00;">4:0</span>&gt;</span>
|- style="background-color: #ded;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 3
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="3" | '''LT'''<span style="color: #777;">&lt;<span style="color: #c00;">2:0</span>&gt;</span>
| style="border: 1px solid #ccc; padding: 0.2em;" colspan="5" | '''RT'''<span style="color: #777;">&lt;<span style="color: #c00;">4:0</span>&gt;</span>
|- style="background-color: #ded;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 4
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">DR</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">DD</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">LT</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">-</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">H</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">+</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">RT</span>
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd; color: #888;" | 1
|- style="background-color: #ded;"
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #eee;" | 5
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">ZL</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">B</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">Y</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">A</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">X</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">ZR</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">DL</span>
| style="border: 1px solid #ccc; padding: 0.2em;" | '''B'''<span style="color: #c00;">DU</span>
|}
LX,LY are the left Analog Stick X and Y (0-63), RX and RY are the right Analog Stick X and Y (0-31), and LT and RT are the Left and Right Buttons (0 or 31). The left Analog Stick has twice the precision of the other analog values.

BD{L,R,U,D} are the D-Pad direction buttons. B{ZR,ZL,A,B,X,Y,+,H,-} are the discrete buttons. B{LT,RT} are the digital button click of LT and RT. All buttons are 0 when pressed.

Nintendo games calibrate the center position of the Analog Sticks upon power-up or insertion of the Classic Controller Pro.

== Hardware ==

The classic controller pro uses several different hardware parts for its various inputs.

{| class="wikitable" border="1"
! Input
! Hardware
! Circuit board surface and mounting
|-
| A
| [http://en.wikipedia.org/wiki/Membrane_switch membrane switch]
| top
|-
| B
| membrane switch
| top
|-
| -
| [http://en.wikipedia.org/wiki/Micro_switch microswitch]
| top
|-
| Home
| microswitch
| top
|-
| +
| microswitch
| top
|-
| X
| membrane switch
| top
|-
| Y
| membrane switch
| top
|-
| Up
| membrane switch
| top
|-
| Down
| membrane switch
| top
|-
| Left
| membrane switch
| top
|-
| Right
| membrane switch
| top
|-
| Left joystick X
| axial [http://en.wikipedia.org/wiki/Potentiometer potentiometer], 30KΩ
| daughterboard, [http://en.wikipedia.org/wiki/Through-hole_technology through-hole]
|-
| Left joystick Y
| axial potentiometer, 30KΩ
| daughterboard, through-hole
|-
| Right joystick X
| axial potentiometer, 30KΩ linear
| daughterboard, through-hole
|-
| Right joystick Y
| axial potentiometer, 30KΩ linear
| daughterboard, through-hole
|-
| L
| switch
|
|-
| R
| switch
|
|-
| ZL
|
|
|-
| ZR
|
|
|}

[[Category:Hardware]]
2

edits