HID Shared Memory: Difference between revisions
No edit summary |
|||
Line 12: | Line 12: | ||
| 0x0 | | 0x0 | ||
| 0x400 | | 0x400 | ||
| DebugPad | | [[#DebugPad]] | ||
|- | |- | ||
| 0x400 | | 0x400 | ||
Line 28: | Line 28: | ||
| 0x3C00 | | 0x3C00 | ||
| 0x1000 (0x400 * 0x04) | | 0x1000 (0x400 * 0x04) | ||
| BasicXpad | | [[#BasicXpad]] | ||
|- | |- | ||
| 0x4C00 | | 0x4C00 | ||
Line 63: | Line 63: | ||
|} | |} | ||
== | == DebugPad == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 71: | Line 71: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x20 | ||
| [[# | | [[#DebugPadHeader]] | ||
|- | |- | ||
| | | 0x20 | ||
| | | 0x28 * 17 | ||
| Array of [[# | | Array of [[#DebugPadState]] | ||
|} | |} | ||
=== | === DebugPadHeader === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 88: | Line 88: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| Timestamp in ticks | | Timestamp in ticks | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| Number of Entries | | Number of Entries (always 17) | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
Line 100: | Line 100: | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| Maximum Entry Index | | Maximum Entry Index (always 16) | ||
|} | |||
=== DebugPadState === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in samples (global) | |||
|- | |||
| 0x8 | |||
| 0x20 | |||
| | |||
|} | |||
== TouchScreen == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x20 | |||
| [[#TouchScreenHeader]] | |||
|- | |- | ||
| 0x20 | | 0x20 | ||
| | | 0x298 * 17 | ||
| | | Array of [[#TouchScreenState]] | ||
|} | |} | ||
=== | === TouchScreenHeader === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 115: | Line 143: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| 0x8 | |||
| Timestamp in ticks | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Number of Entries (always 17) | |||
|- | |||
| 0x10 | | 0x10 | ||
| | | 0x8 | ||
| Latest Entry Index | |||
|- | |- | ||
| | | 0x18 | ||
| | | 0x8 | ||
| | | Maximum Entry Index (always 16) | ||
|} | |} | ||
=== | === TouchScreenState === | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 131: | Line 167: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| 0x8 | |||
| Timestamp in samples (global) | |||
|- | |||
| 0x8 | |||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples | ||
|- | |- | ||
| | | 0x10 | ||
| 0x8 | | 0x8 | ||
| Touch count | | Touch count | ||
|- | |||
| 0x18 | |||
| 0x28 * 16 | |||
| [[#TouchScreenStateData]] | |||
|} | |} | ||
Line 208: | Line 252: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| Timestamp in ticks | | Timestamp in ticks | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| Number of Entries | | Number of Entries (always 17) | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
Line 220: | Line 264: | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| Maximum Entry Index | | Maximum Entry Index (always 16) | ||
|} | |} | ||
Line 232: | Line 276: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples (global) | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
Line 292: | Line 336: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| Timestamp in ticks | | Timestamp in ticks | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| Number of Entries | | Number of Entries (always 17) | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
Line 304: | Line 348: | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| Maximum Entry Index | | Maximum Entry Index (always 16) | ||
|} | |} | ||
Line 316: | Line 360: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples (global) | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
Line 329: | Line 373: | ||
| 0x20 | | 0x20 | ||
| Keys Down, each key gets one bit based on the HID keyboard scan code (F1 is 0x3A, bit 0x3A is set) | | Keys Down, each key gets one bit based on the HID keyboard scan code (F1 is 0x3A, bit 0x3A is set) | ||
|} | |||
== BasicXpad == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x20 | |||
| [[#BasicXpadHeader]] | |||
|- | |||
| 0x20 | |||
| 0x28 * 17 | |||
| Array of [[#BasicXpadState]] | |||
|} | |||
=== BasicXpadHeader === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in ticks | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Number of Entries (always 17) | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| Latest Entry Index | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Maximum Entry Index (always 16) | |||
|} | |||
=== BasicXpadState === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in samples (global) | |||
|- | |||
| 0x8 | |||
| 0x20 | |||
| | |||
|} | |||
== HomeButton == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x20 | |||
| [[#HomeButtonHeader]] | |||
|- | |||
| 0x20 | |||
| 0x18 * 17 | |||
| Array of [[#HomeButtonState]] | |||
|} | |||
=== HomeButtonHeader === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in ticks | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Number of Entries (always 17) | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| Latest Entry Index | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Maximum Entry Index (always 16) | |||
|} | |||
=== HomeButtonState === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in samples (global) | |||
|- | |||
| 0x8 | |||
| 0x10 | |||
| | |||
|} | |||
== SleepButton == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x20 | |||
| [[#SleepButtonHeader]] | |||
|- | |||
| 0x20 | |||
| 0x18 * 17 | |||
| Array of [[#SleepButtonState]] | |||
|} | |||
=== SleepButtonHeader === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in ticks | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Number of Entries (always 17) | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| Latest Entry Index | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Maximum Entry Index (always 16) | |||
|} | |||
=== SleepButtonState === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in samples (global) | |||
|- | |||
| 0x8 | |||
| 0x10 | |||
| | |||
|} | |||
== CaptureButton == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x20 | |||
| [[#CaptureButtonHeader]] | |||
|- | |||
| 0x20 | |||
| 0x18 * 17 | |||
| Array of [[#CaptureButtonState]] | |||
|} | |||
=== CaptureButtonHeader === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in ticks | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Number of Entries (always 17) | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| Latest Entry Index | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Maximum Entry Index (always 16) | |||
|} | |||
=== CaptureButtonState === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in samples (global) | |||
|- | |||
| 0x8 | |||
| 0x10 | |||
| | |||
|} | |||
== InputDetector == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x20 | |||
| [[#InputDetectorHeader]] | |||
|- | |||
| 0x20 | |||
| 0x18 * 2 | |||
| Array of [[#InputDetectorState]] | |||
|} | |||
=== InputDetectorHeader === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in ticks | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Number of Entries (always 17) | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| Latest Entry Index | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Maximum Entry Index (always 16) | |||
|} | |||
=== InputDetectorState === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in samples (global) | |||
|- | |||
| 0x8 | |||
| 0x10 | |||
| | |||
|} | |} | ||
Line 336: | Line 660: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! | ! Offset | ||
! | ! Size in bytes | ||
! | ! Description | ||
|- | |- | ||
| 0x30 | | 0x30 | ||
Line 612: | Line 936: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples (global) | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
Line 739: | Line 1,063: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| Timestamp in ticks | | Timestamp in ticks | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| Number of entries | | Number of entries (always 17) | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
Line 751: | Line 1,075: | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| Maximum Entry Index | | Maximum Entry Index (up to 16) | ||
|} | |} | ||
Line 763: | Line 1,087: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples (global) | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
Line 771: | Line 1,095: | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| Timestamp in samples | | Timestamp in samples | ||
|- | |- | ||
| 0x1C | | 0x1C | ||
Line 856: | Line 1,180: | ||
| 0 | | 0 | ||
| UnintendedHomeButtonInputProtectionEnabled (if cleared) | | UnintendedHomeButtonInputProtectionEnabled (if cleared) | ||
|} | |||
== Gesture == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x20 | |||
| [[#GestureHeader]] | |||
|- | |||
| 0x20 | |||
| 0x68 * 17 | |||
| Array of [[#GestureState]] | |||
|} | |||
=== GestureHeader === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in ticks | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| Number of Entries (always 17) | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| Latest Entry Index | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Maximum Entry Index (always 16) | |||
|} | |||
=== GestureState === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Timestamp in samples (global) | |||
|- | |||
| 0x8 | |||
| 0x60 | |||
| | |||
|} | |||
== ConsoleSixAxisSensor == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| | |||
|- | |||
| 0x8 | |||
| 0x1 | |||
| | |||
|- | |||
| 0x9 | |||
| 0x3 | |||
| Padding | |||
|- | |||
| 0xC | |||
| 0x4 | |||
| | |||
|- | |||
| 0x10 | |||
| 0xC | |||
| | |||
|- | |||
| 0x1C | |||
| 0x4 | |||
| Padding | |||
|} | |} |