Line 43: |
Line 43: |
| | 0x4C00 | | | 0x4C00 |
| | 0x200 | | | 0x200 |
− | | Unknown | + | | Unknown, header which says it has 17 entries, but the max entry index is 0 |
| |- | | |- |
| | 0x4E00 | | | 0x4E00 |
| | 0x200 | | | 0x200 |
− | | Unknown | + | | Unknown, header which says it has 17 entries, but the max entry index is 0 |
| |- | | |- |
| | 0x5000 | | | 0x5000 |
| | 0x200 | | | 0x200 |
− | | Unknown | + | | Unknown, header which says it has 17 entries, but the max entry index is 0 |
| |- | | |- |
| | 0x5200 | | | 0x5200 |
− | | 0x800 | + | | 0x80*0x10 |
− | | Unknown | + | | Unknown, 16 structures with a header and 2 entries each |
| |- | | |- |
| | 0x5A00 | | | 0x5A00 |
Line 68: |
Line 68: |
| | 0x4600 | | | 0x4600 |
| | Unknown | | | Unknown |
| + | |- |
| + | | 0x3C200 |
| + | | ? |
| + | | [5.0.0+] SevenSixAxisSensor |
| |- | | |- |
| |} | | |} |
Line 84: |
Line 88: |
| |- | | |- |
| | 0x28 | | | 0x28 |
− | | 0x290 * 17 | + | | 0x298 * 17 |
| | Touch Entries | | | Touch Entries |
| |- | | |- |
Line 99: |
Line 103: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in ticks? |
| |- | | |- |
| | 0x8 | | | 0x8 |
Line 115: |
Line 119: |
| | 0x20 | | | 0x20 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in samples |
| |- | | |- |
| |} | | |} |
Line 146: |
Line 150: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in samples |
| |- | | |- |
| | 0x8 | | | 0x8 |
Line 163: |
Line 167: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in samples |
| |- | | |- |
| | 0x8 | | | 0x8 |
− | | 0x8 | + | | 0x4 |
− | | Unknown | + | | Padding |
| + | |- |
| + | | 0xC |
| + | | 0x4 |
| + | | Touch Index |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 191: |
Line 199: |
| | 0x24 | | | 0x24 |
| | 0x4 | | | 0x4 |
− | | Unknown | + | | Padding |
| |- | | |- |
| |} | | |} |
Line 223: |
Line 231: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in ticks? |
| |- | | |- |
| | 0x8 | | | 0x8 |
Line 249: |
Line 257: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in samples |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Timestamp Again? | + | | Timestamp in samples again? |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 299: |
Line 307: |
| |- | | |- |
| | 0x20 | | | 0x20 |
− | | 0x30 * 17 | + | | 0x38 * 17 |
| | Keyboard Entries | | | Keyboard Entries |
| |- | | |- |
Line 314: |
Line 322: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in ticks? |
| |- | | |- |
| | 0x8 | | | 0x8 |
Line 340: |
Line 348: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in samples |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Timestamp Again? | + | | Timestamp in samples again? |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 435: |
Line 443: |
| | Controller Main State | | | Controller Main State |
| |- | | |- |
− | | 0x41D0 | + | | 0x1758 |
− | | 0x10 | + | | 0x20 header + 0x68 * 17 |
− | | Controller MAC | + | | SixAxisSensor Pro Controller State |
| + | |- |
| + | | 0x1E60 |
| + | | 0x20 header + 0x68 * 17 |
| + | | SixAxisSensor Handheld State |
| + | |- |
| + | | 0x2568 |
| + | | 0x20 header + 0x68 * 17 |
| + | | SixAxisSensor Pair Left State |
| + | |- |
| + | | 0x2C70 |
| + | | 0x20 header + 0x68 * 17 |
| + | | SixAxisSensor Pair Right State |
| + | |- |
| + | | 0x3378 |
| + | | 0x20 header + 0x68 * 17 |
| + | | SixAxisSensor Single Left State |
| + | |- |
| + | | 0x3A80 |
| + | | 0x20 header + 0x68 * 17 |
| + | | SixAxisSensor Single Right State |
| + | |- |
| + | | 0x4188 |
| + | | 0x4 |
| + | | [[HID_services#DeviceType|DeviceType]] |
| + | |- |
| + | | 0x418C |
| + | | 0x4 |
| + | | Padding |
| + | |- |
| + | | 0x4190 |
| + | | 0x8 |
| + | | Flags |
| + | |- |
| + | | 0x4198 |
| + | | 0x4 |
| + | | Flags2 |
| + | |- |
| + | | 0x419C |
| + | | 0x4 |
| + | | PowerInfo0 battery state |
| + | |- |
| + | | 0x41A0 |
| + | | 0x4 |
| + | | PowerInfo1 battery state |
| + | |- |
| + | | 0x41A4 |
| + | | 0x4 |
| + | | PowerInfo2 battery state |
| + | |- |
| + | | 0x41D0 |
| + | | 0x10 |
| + | | Controller MAC |
| + | |- |
| + | | 0x41F0 |
| + | | 0x10 |
| + | | Controller MAC |
| + | |- |
| + | |} |
| + | |
| + | The battery state must be 0-4. |
| + | |
| + | ==== Flags ==== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Bit |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | PowerInfo0 isCharging |
| + | |- |
| + | | 1 |
| + | | PowerInfo1 isCharging |
| + | |- |
| + | | 2 |
| + | | PowerInfo2 isCharging |
| + | |- |
| + | | 3 |
| + | | PowerInfo0 powerConnected |
| + | |- |
| + | | 4 |
| + | | PowerInfo1 powerConnected |
| + | |- |
| + | | 5 |
| + | | PowerInfo2 powerConnected |
| + | |- |
| + | | 6-8 |
| + | | Unused |
| + | |- |
| + | | 9 |
| + | | UnsupportedButtonPressed_NpadSystem |
| + | |- |
| + | | 10 |
| + | | UnsupportedButtonPressed_NpadSystemExt |
| + | |- |
| + | | 11 |
| + | | AbxyButtonOriented |
| + | |- |
| + | | 12 |
| + | | SlSrButtonOriented |
| + | |- |
| + | | 13 |
| + | | [4.0.0+] PlusButtonCapability |
| + | |- |
| + | | 14 |
| + | | [4.0.0+] MinusButtonCapability |
| |- | | |- |
− | | 0x41F0 | + | | 15 |
− | | 0x10 | + | | [8.0.0+] DirectionalButtonsSupported |
− | | Controller MAC
| |
| |- | | |- |
| + | | 16-63 |
| + | | Unused |
| |} | | |} |
| + | |
| + | ==== Flags2 ==== |
| + | Bit0: clear = UnintendedHomeButtonInputProtectionEnabled. |
| | | |
| ==== Controller Header ==== | | ==== Controller Header ==== |
Line 505: |
Line 622: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in ticks? |
| |- | | |- |
| | 0x8 | | | 0x8 |
Line 531: |
Line 648: |
| | 0x0 | | | 0x0 |
| | 0x8 | | | 0x8 |
− | | Timestamp | + | | Timestamp in samples |
| |- | | |- |
| | 0x8 | | | 0x8 |
| | 0x8 | | | 0x8 |
− | | Timestamp Again | + | | Timestamp in samples again |
| |- | | |- |
| | 0x10 | | | 0x10 |
Line 649: |
Line 766: |
| |- | | |- |
| |} | | |} |
| + | |
| + | ===== SixAxisSensor State Header ===== |
| + | |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size in bytes |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in ticks? |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Number of entries, always 17 |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Latest Entry Index |
| + | |- |
| + | | 0x18 |
| + | | 0x8 |
| + | | Maximum Entry Index, up to 16 |
| + | |- |
| + | |} |
| + | |
| + | ===== SixAxisSensor State Entry ===== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Offset |
| + | ! Size in bytes |
| + | ! Description |
| + | |- |
| + | | 0x0 |
| + | | 0x8 |
| + | | Timestamp in samples |
| + | |- |
| + | | 0x8 |
| + | | 0x8 |
| + | | Unknown |
| + | |- |
| + | | 0x10 |
| + | | 0x8 |
| + | | Timestamp in samples again |
| + | |- |
| + | | 0x1C |
| + | | 0x4 * 3 |
| + | | Accelerometer data as 3 floats |
| + | |- |
| + | | 0x24 |
| + | | 0x4 * 3 |
| + | | Gyroscope data as 3 floats |
| + | |- |
| + | | 0x30 |
| + | | 0x4 * 3 |
| + | | Unknown sensor data as 3 floats |
| + | |- |
| + | | 0x3C |
| + | | 0x4 * 9 |
| + | | Orientation basis as 3x3 matrix of floats |
| + | |- |
| + | | 0x60 |
| + | | 0x8 |
| + | | Unknown, always 1 |
| + | |} |
| + | |
| + | Official sw copies the data from offset 0x8 size 0x60 to the final output state. |