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:
|}
|}


== TouchScreen ==
== DebugPad ==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 71: Line 71:
|-
|-
| 0x0
| 0x0
| 0x28
| 0x20
| [[#TouchScreenHeader]]
| [[#DebugPadHeader]]
|-
|-
| 0x28
| 0x20
| 0x298 * 17
| 0x28 * 17
| Array of [[#TouchScreenState]]
| Array of [[#DebugPadState]]
|}
|}


=== TouchScreenHeader ===
=== 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, always 17
| Number of Entries (always 17)
|-
|-
| 0x10
| 0x10
Line 100: Line 100:
| 0x18
| 0x18
| 0x8
| 0x8
| Maximum Entry Index, always 16
| 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
| 0x8
| 0x298 * 17
| Timestamp in samples
| Array of [[#TouchScreenState]]
|}
|}


=== 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
| [[#TouchScreenStateHeader]]
| 0x8
| Latest Entry Index
|-
|-
| 0x10
| 0x18
| 0x28 * 16
| 0x8
| [[#TouchScreenStateData]]
| Maximum Entry Index (always 16)
|}
|}


==== TouchScreenStateHeader ====
=== 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
|-
|-
| 0x8
| 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, always 17
| Number of Entries (always 17)
|-
|-
| 0x10
| 0x10
Line 220: Line 264:
| 0x18
| 0x18
| 0x8
| 0x8
| Maximum Entry Index, always 16
| 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 again?
| 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, always 17
| Number of Entries (always 17)
|-
|-
| 0x10
| 0x10
Line 304: Line 348:
| 0x18
| 0x18
| 0x8
| 0x8
| Maximum Entry Index, always 16
| 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 again?
| 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
! Offset
!   Size in bytes
! Size in bytes
!   Description
! 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 again
| 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, always 17
| Number of entries (always 17)
|-
|-
| 0x10
| 0x10
Line 751: Line 1,075:
| 0x18
| 0x18
| 0x8
| 0x8
| Maximum Entry Index, up to 16
| 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 again
| 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
|}
|}