Difference between revisions of "HID Shared Memory"

From Nintendo Switch Brew
Jump to navigation Jump to search
Line 28: Line 28:
 
| 0x3C00
 
| 0x3C00
 
| 0x1000
 
| 0x1000
| [1.0.0-9.2.0] [[#BasicXpadSharedMemoryFormat|BasicXpad]]
+
| [[#DigitizerSharedMemoryFormat|Digitizer]] ([1.0.0-9.2.0] [[#BasicXpadSharedMemoryFormat|BasicXpad]])
|-
 
| 0x3C00
 
|
 
| [10.0.0+] [[#DigitizerSharedMemoryFormat|Digitizer]]
 
 
|-
 
|-
 
| 0x4C00
 
| 0x4C00
Line 63: Line 59:
 
|-
 
|-
 
| 0x3C200
 
| 0x3C200
| 0x20
+
| 0x1C
 
| [5.0.0+] [[#ConsoleSixAxisSensorSharedMemoryFormat|ConsoleSixAxisSensor]]
 
| [5.0.0+] [[#ConsoleSixAxisSensorSharedMemoryFormat|ConsoleSixAxisSensor]]
 
|}
 
|}
Line 941: Line 937:
 
|}
 
|}
  
=== UniquePadSharedMemoryEntry ===
+
== UniquePadSharedMemoryEntry ==
 
This is "nn::hid::detail::UniquePadSharedMemoryEntry".
 
This is "nn::hid::detail::UniquePadSharedMemoryEntry".
  
Line 955: Line 951:
 
|}
 
|}
  
==== UniquePadLifo ====
+
=== UniquePadLifo ===
 
This is "nn::hid::detail::UniquePadLifo". This is a RingLifo object.
 
This is "nn::hid::detail::UniquePadLifo". This is a RingLifo object.
  
Line 977: Line 973:
 
|-
 
|-
 
| 0x1A0
 
| 0x1A0
| 0x8
+
| 0x40
 
| UniquePadConfigMutex
 
| UniquePadConfigMutex
 
|}
 
|}
  
===== UniquePadConfigLifo =====
+
==== UniquePadConfigLifo ====
 
This is "nn::hid::detail::UniquePadConfigLifo". This is a RingLifo object.
 
This is "nn::hid::detail::UniquePadConfigLifo". This is a RingLifo object.
  
Line 1,011: Line 1,007:
 
|}
 
|}
  
====== UniquePadConfigAtomicStorage ======
+
===== UniquePadConfigAtomicStorage =====
 
This is "nn::hid::detail::UniquePadConfigAtomicStorage".
 
This is "nn::hid::detail::UniquePadConfigAtomicStorage".
  
Line 1,067: Line 1,063:
 
|}
 
|}
  
===== AnalogStickCalibrationStateImplLifo =====
+
==== AnalogStickCalibrationStateImplLifo ====
 
This is "nn::hid::detail::AnalogStickCalibrationStateImplLifo". This is a RingLifo object.
 
This is "nn::hid::detail::AnalogStickCalibrationStateImplLifo". This is a RingLifo object.
  
Line 1,094: Line 1,090:
 
| 0x20
 
| 0x20
 
| 0x28 * 2
 
| 0x28 * 2
| Array of [[#AnalogStickCalibrationStateImpl]]
+
| Array of [[#AnalogStickCalibrationStateImplAtomicStorage]]
 
|}
 
|}
  
====== AnalogStickCalibrationStateImplAtomicStorage ======
+
===== AnalogStickCalibrationStateImplAtomicStorage =====
 
This is "nn::hid::detail::AnalogStickCalibrationStateImplAtomicStorage".
 
This is "nn::hid::detail::AnalogStickCalibrationStateImplAtomicStorage".
  
Line 1,141: Line 1,137:
 
|}
 
|}
  
===== SixAxisSensorUserCalibrationStateLifo =====
+
==== SixAxisSensorUserCalibrationStateLifo ====
 
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateLifo". This is a RingLifo object.
 
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateLifo". This is a RingLifo object.
  
Line 1,171: Line 1,167:
 
|}
 
|}
  
====== SixAxisSensorUserCalibrationStateAtomicStorage ======
+
===== SixAxisSensorUserCalibrationStateAtomicStorage =====
 
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateAtomicStorage".
 
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateAtomicStorage".
  
Line 1,189: Line 1,185:
 
|}
 
|}
  
====== UniquePadConfig ======
+
====== SixAxisSensorUserCalibrationState ======
 
This is "nn::hid::detail::UniquePadConfig".
 
This is "nn::hid::detail::UniquePadConfig".
  
Line 1,199: Line 1,195:
 
|-
 
|-
 
| 0x0
 
| 0x0
| 0x8
+
| 0x4
 
| [[#SixAxisSensorUserCalibrationFlagsSet|Flags]]
 
| [[#SixAxisSensorUserCalibrationFlagsSet|Flags]]
 +
|-
 +
| 0x4
 +
| 0x4
 +
| Reserved
 
|-
 
|-
 
| 0x8
 
| 0x8
Line 1,214: Line 1,214:
 
This is "nn::hid::detail::NpadSharedMemoryFormat".
 
This is "nn::hid::detail::NpadSharedMemoryFormat".
  
This section contains a series of 10 0x5000 byte structures describing each available controller.
+
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x5000 * 10
 +
| Array of [[#NpadSharedMemoryEntry]]
 +
|}
  
 +
Each entry describes an available controller:
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Index
+
! Entry
 
! Description
 
! Description
 
|-
 
|-
Line 1,231: Line 1,241:
 
|}
 
|}
  
=== NpadState ===
+
== NpadSharedMemoryEntry ==
 +
This is "nn::hid::detail::NpadSharedMemoryEntry".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,239: Line 1,251:
 
|-
 
|-
 
| 0x0
 
| 0x0
| 0x28
+
| 0x43F0 ([1.0.0-8.1.0] 0x4410)
| [[#NpadStateHeader]]
+
| [[#NpadInternalState]]
 +
|}
 +
 
 +
=== NpadInternalState ===
 +
This is "nn::hid::detail::NpadInternalState".
 +
 
 +
{| class="wikitable" border="1"
 
|-
 
|-
| 0x28
+
! Offset
| 0x20
+
! Size
| NpadFullKeyHeader
+
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| [[HID_services#NpadStyleTag|StyleSet]]
 +
|-
 +
| 0x4
 +
| 0x4
 +
| [[HID_services#NpadJoyAssignmentMode|JoyAssignmentMode]]
 +
|-
 +
| 0x8
 +
| 0xC
 +
| [[#NpadFullKeyColorState|FullKeyColor]]
 +
|-
 +
| 0x14
 +
| 0x14
 +
| [[#NpadJoyColorState|JoyColor]]
 
|-
 
|-
| 0x48
+
| 0x28
| 0x30 * 17
+
| 0x350
| Array of NpadFullKeyState
+
| [[#NpadFullKeyLifo|FullKeyLifo]]
 
|-
 
|-
 
| 0x378
 
| 0x378
| 0x20
+
| 0x350
| [[#NpadHandheldHeader]]
+
| [[#NpadHandheldLifo|HandheldLifo]]
|-
 
| 0x398
 
| 0x30 * 17
 
| Array of [[#NpadHandheldState]]
 
 
|-
 
|-
 
| 0x6C8
 
| 0x6C8
| 0x20
+
| 0x350
| NpadJoyDualHeader
+
| [[#NpadJoyDualLifo|JoyDualLifo]]
|-
 
| 0x6E8
 
| 0x30 * 17
 
| Array of NpadJoyDualState
 
 
|-
 
|-
 
| 0xA18
 
| 0xA18
| 0x20
+
| 0x350
| NpadJoyLeftHeader
+
| [[#NpadJoyLeftLifo|JoyLeftLifo]]
|-
 
| 0xA38
 
| 0x30 * 17
 
| Array of NpadJoyLeftState
 
 
|-
 
|-
 
| 0xD68
 
| 0xD68
| 0x20
+
| 0x350
| NpadJoyRightHeader
+
| [[#NpadJoyRightLifo|JoyRightLifo]]
|-
 
| 0xD88
 
| 0x30 * 17
 
| Array of NpadJoyRightState
 
 
|-
 
|-
 
| 0x10B8
 
| 0x10B8
| 0x20
+
| 0x350
| NpadPalmaHeader ([1.0.0-3.0.2] NpadSystemHeader)
+
| [[#NpadPalmaLifo|PalmaLifo]] ([1.0.0-3.0.2] [[#NpadSystemLifo|SystemLifo]])
|-
 
| 0x12B8
 
| 0x30 * 17
 
| Array of NpadPalmaState ([1.0.0-3.0.2] NpadSystemState)
 
 
|-
 
|-
 
| 0x1408
 
| 0x1408
| 0x20
+
| 0x350
| NpadSystemExtHeader ([4.0.0+] also used by NpadSystem)
+
| [[#NpadSystemExtLifo|SystemExtLifo]] ([4.0.0+] also used for NpadSystem)
|-
 
| 0x1428
 
| 0x30 * 17
 
| Array of NpadSystemExtState ([4.0.0+] also used by NpadSystem)
 
 
|-
 
|-
 
| 0x1758
 
| 0x1758
| 0x20
+
| 0x708
| NpadSixAxisSensorFullKeyHeader
+
| [[#NpadSixAxisSensorLifo|FullKeySixAxisSensorLifo]]
|-
 
| 0x1778
 
| 0x68 * 17
 
| Array of NpadSixAxisSensorFullKeyState
 
 
|-
 
|-
 
| 0x1E60
 
| 0x1E60
| 0x20
+
| 0x708
| NpadSixAxisSensorHandheldHeader
+
| [[#NpadSixAxisSensorLifo|HandheldSixAxisSensorLifo]]
|-
 
| 0x1E80
 
| 0x68 * 17
 
| Array of NpadSixAxisSensorHandheldState
 
 
|-
 
|-
 
| 0x2568
 
| 0x2568
| 0x20
+
| 0x708
| NpadSixAxisSensorJoyLeftDualHeader
+
| [[#NpadSixAxisSensorLifo|JoyDualLeftSixAxisSensorLifo]]
|-
 
| 0x2588
 
| 0x68 * 17
 
| Array of NpadSixAxisSensorJoyLeftDualState
 
 
|-
 
|-
 
| 0x2C70
 
| 0x2C70
| 0x20
+
| 0x708
| NpadSixAxisSensorJoyRightDualHeader
+
| [[#NpadSixAxisSensorLifo|JoyDualRightSixAxisSensorLifo]]
|-
 
| 0x2C90
 
| 0x68 * 17
 
| Array of NpadSixAxisSensorJoyRightDualState
 
 
|-
 
|-
 
| 0x3378
 
| 0x3378
| 0x20
+
| 0x708
| NpadSixAxisSensorJoyLeftHeader
+
| [[#NpadSixAxisSensorLifo|JoyLeftSixAxisSensorLifo]]
|-
 
| 0x3398
 
| 0x68 * 17
 
| Array of NpadSixAxisSensorJoyLeftState
 
 
|-
 
|-
 
| 0x3A80
 
| 0x3A80
| 0x20
+
| 0x708
| NpadSixAxisSensorJoyRightHeader
+
| [[#NpadSixAxisSensorLifo|JoyRightSixAxisSensorLifo]]
|-
 
| 0x3AA0
 
| 0x68 * 17
 
| Array of NpadSixAxisSensorJoyRightState
 
 
|-
 
|-
 
| 0x4188
 
| 0x4188
Line 1,352: Line 1,338:
 
| 0x418C
 
| 0x418C
 
| 0x4
 
| 0x4
| Padding
+
| Reserved
 
|-
 
|-
 
| 0x4190
 
| 0x4190
 
| 0x8
 
| 0x8
| [[#NpadSystemProperties]]
+
| [[#NpadSystemProperties|SystemProperties]]
 
|-
 
|-
 
| 0x4198
 
| 0x4198
 
| 0x4
 
| 0x4
| [[#NpadSystemButtonProperties]]
+
| [[#NpadSystemButtonProperties|SystemButtonProperties]]
 
|-
 
|-
 
| 0x419C
 
| 0x419C
 
| 0x4
 
| 0x4
| BatteryIndex0 state (must be 0-4)
+
| BatteryLevel0
 
|-
 
|-
 
| 0x41A0
 
| 0x41A0
 
| 0x4
 
| 0x4
| BatteryIndex1 state (must be 0-4)
+
| BatteryLevel1
 
|-
 
|-
 
| 0x41A4
 
| 0x41A4
 
| 0x4
 
| 0x4
| BatteryIndex2 state (must be 0-4)
+
| BatteryLevel2
 
|-
 
|-
 
| 0x41A8
 
| 0x41A8
| 0x20
+
| 0x60
| [1.0.0-3.0.2] NfcXcdDeviceHandleHeader (Replaced by [[HID_services|commands]] GetXcdHandleForNpadWithNfc/IsNfcActivated)
+
| [1.0.0-8.1.0] [[#NfcXcdDeviceHandleState|NfcXcdDeviceHandle]] (replaced by [[HID_services|GetXcdHandleForNpadWithNfc/IsNfcActivated]])
|-
 
| 0x41C8
 
| 0x20 * 2
 
| [1.0.0-3.0.2] Array of [[#NfcXcdDeviceHandleState]] (See above)
 
 
|-
 
|-
 
| 0x41A8
 
| 0x41A8
 
| 0x4
 
| 0x4
| [9.0.0+] [[HID_services#AppletFooterUiAttribute|AppletFooterUiAttribute]]
+
| [9.0.0+] [[#AppletFooterUiAttribute|AppletFooterUiAttributes]]
 
|-
 
|-
 
| 0x41AC
 
| 0x41AC
 
| 0x1
 
| 0x1
| [9.0.0+] [[HID_services#AppletFooterUiType|AppletFooterUiType]]
+
| [9.0.0+] [[#AppletFooterUiType|AppletFooterUiType]]
 +
|-
 +
| 0x41AD
 +
| 0x7B
 +
| [9.0.0+] Reserved
 
|-
 
|-
 
| 0x4208
 
| 0x4208
| 0x8
+
| 0x40
| Mutex
+
| [1.0.0-8.1.0] Mutex
 
|-
 
|-
| 0x4228
+
| 0x4228 ([1.0.0-8.1.0] 0x4248)
| 0x20
+
| 0x1B8
| NpadGcTriggerHeader
+
| [[#NpadGcTriggerLifo|GcTriggerLifo]]
 
|-
 
|-
| 0x4248
+
| 0x43E0 ([1.0.0-8.1.0] 0x4400)
| 0x18 * 17
+
| 0x4
| Array of NpadGcTriggerState
+
| LarkTypeLAndMain
 
|-
 
|-
| 0x43E0
+
| 0x43E4 ([1.0.0-8.1.0] 0x4404)
 
| 0x4
 
| 0x4
|  
+
| LarkTypeR
 
|-
 
|-
| 0x43E4
+
| 0x43E8 ([1.0.0-8.1.0] 0x4408)
 
| 0x4
 
| 0x4
|  
+
| LuciaType
 
|-
 
|-
| 0x43E8
+
| 0x43EC ([1.0.0-8.1.0] 0x440C)
 
| 0x4
 
| 0x4
 
|  
 
|  
 
|}
 
|}
  
==== NpadStateHeader ====
+
==== NpadFullKeyLifo ====
 +
This is "nn::hid::detail::NpadFullKeyLifo". This is a RingLifo object.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,423: Line 1,411:
 
|-
 
|-
 
| 0x0
 
| 0x0
| 0x4
+
| 0x8
| [[HID_services#NpadStyleTag|NpadStyleSet]]
+
| RingLifoVptr
|-
 
| 0x4
 
| 0x4
 
| [[HID_services#NpadJoyAssignmentMode|NpadJoyAssignmentMode]]
 
 
|-
 
|-
 
| 0x8
 
| 0x8
| 0x4
+
| 0x8
| bit1 color set does not exist
+
| BufferCount
|-
 
| 0xC
 
| 0x4
 
| RGBA Body Color (single Joy-Con or Pro Controller)
 
 
|-
 
|-
 
| 0x10
 
| 0x10
| 0x4
+
| 0x8
| RGBA Button Color (single Joy-Con or Pro Controller)
+
| Tail
|-
 
| 0x14
 
| 0x4
 
| bit1 color set does not exist
 
 
|-
 
|-
 
| 0x18
 
| 0x18
| 0x4
+
| 0x8
| RGBA Body Color (right Joy-Con)
+
| Count
|-
 
| 0x1C
 
| 0x4
 
| RGBA Button Color (right Joy-Con)
 
 
|-
 
|-
 
| 0x20
 
| 0x20
| 0x4
+
| 0x30 * 17
| RGBA Body Color (left Joy-Con)
+
| Array of [[#NpadFullKeyStateAtomicStorage]]
|-
 
| 0x24
 
| 0x4
 
| RGBA Button Color (left Joy-Con)
 
 
|}
 
|}
  
==== NpadHandheldHeader ====
+
===== NpadFullKeyStateAtomicStorage =====
 +
This is "nn::hid::detail::NpadFullKeyStateAtomicStorage".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,472: Line 1,442:
 
| 0x0
 
| 0x0
 
| 0x8
 
| 0x8
| Timestamp in ticks
+
| SamplingNumber
 
|-
 
|-
 
| 0x8
 
| 0x8
| 0x8
+
| 0x28
| Number of entries (always 17)
+
| [[#NpadFullKeyState]]
|-
 
| 0x10
 
| 0x8
 
| Latest Entry Index
 
|-
 
| 0x18
 
| 0x8
 
| Maximum Entry Index (always 16)
 
 
|}
 
|}
  
==== NpadHandheldState ====
+
====== NpadFullKeyState ======
 +
This is "nn::hid::NpadFullKeyState".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,496: Line 1,460:
 
| 0x0
 
| 0x0
 
| 0x8
 
| 0x8
| Timestamp in samples (global)
+
| SamplingNumber
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 0x8
 
| 0x8
| Timestamp in samples
+
| [[#NpadButtonSet|Buttons]]
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 0x8
 
| 0x8
| [[#NpadButton]]
+
| [[#AnalogStickState|AnalogStickL]]
 
|-
 
|-
 
| 0x18
 
| 0x18
| 0x4
+
| 0x8
| Left Joystick X
+
| [[#AnalogStickState|AnalogStickR]]
|-
 
| 0x1C
 
| 0x4
 
| Left Joystick Y
 
 
|-
 
|-
 
| 0x20
 
| 0x20
 
| 0x4
 
| 0x4
| Right Joystick X
+
| [[#NpadAttributesSet|Attributes]]
 
|-
 
|-
 
| 0x24
 
| 0x24
 
| 0x4
 
| 0x4
| Right Joystick Y
+
| Reserved
|-
 
| 0x28
 
| 0x4
 
| Controller State (bit0 connected, bit1 wired)
 
|-
 
| 0x2C
 
| 0x4
 
| Padding
 
 
|}
 
|}
  
===== NpadButton =====
+
==== NpadHandheldLifo ====
This is the u64 bitmask for "nn::hid::NpadButton".
+
This is "nn::hid::detail::NpadHandheldLifo". This is a RingLifo object.
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Bit
+
! Offset
! Button
+
! Size
 +
! Description
 
|-
 
|-
| 0
+
| 0x0
| A
+
| 0x8
 +
| RingLifoVptr
 
|-
 
|-
| 1
+
| 0x8
| B
+
| 0x8
 +
| BufferCount
 
|-
 
|-
| 2
+
| 0x10
| X
+
| 0x8
 +
| Tail
 
|-
 
|-
| 3
+
| 0x18
| Y
+
| 0x8
 +
| Count
 
|-
 
|-
| 4
+
| 0x20
| Left Stick Pressed
+
| 0x30 * 17
|-
+
| Array of [[#NpadHandheldStateAtomicStorage]]
| 5
 
| Right Stick Pressed
 
|-
 
| 6
 
| L
 
|-
 
| 7
 
| R
 
|-
 
| 8
 
| ZL
 
|-
 
| 9
 
| ZR
 
|-
 
| 10
 
| Plus
 
|-
 
| 11
 
| Minus
 
|-
 
| 12
 
| Left
 
|-
 
| 13
 
| Up
 
|-
 
| 14
 
| Right
 
|-
 
| 15
 
| Down
 
|-
 
| 16
 
| Left Stick Left
 
|-
 
| 17
 
| Left Stick Up
 
|-
 
| 18
 
| Left Stick Right
 
|-
 
| 19
 
| Left Stick Down
 
|-
 
| 20
 
| Right Stick Left
 
|-
 
| 21
 
| Right Stick Up
 
|-
 
| 22
 
| Right Stick Right
 
|-
 
| 23
 
| Right Stick Down
 
|-
 
| 24
 
| LeftSL
 
|-
 
| 25
 
| LeftSR
 
|-
 
| 26
 
| RightSL
 
|-
 
| 27
 
| RightSR
 
|-
 
| 28
 
| Palma
 
|-
 
| 29
 
|
 
|-
 
| 30
 
| HandheldLeftB (Left B button on NES controllers in Handheld mode)
 
 
|}
 
|}
  
===== NpadSixAxisSensorHandheldHeader =====
+
===== NpadHandheldStateAtomicStorage =====
 +
This is "nn::hid::detail::NpadHandheldStateAtomicStorage".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,642: Line 1,524:
 
| 0x0
 
| 0x0
 
| 0x8
 
| 0x8
| Timestamp in ticks
+
| SamplingNumber
 
|-
 
|-
 
| 0x8
 
| 0x8
| 0x8
+
| 0x28
| Number of entries (always 17)
+
| [[#NpadHandheldState]]
|-
 
| 0x10
 
| 0x8
 
| Latest Entry Index
 
|-
 
| 0x18
 
| 0x8
 
| Maximum Entry Index (up to 16)
 
 
|}
 
|}
  
===== NpadSixAxisSensorHandheldState =====
+
====== NpadHandheldState ======
 +
This is "nn::hid::NpadHandheldState".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,666: Line 1,542:
 
| 0x0
 
| 0x0
 
| 0x8
 
| 0x8
| Timestamp in samples (global)
+
| SamplingNumber
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 0x8
 
| 0x8
| Unknown
+
| [[#NpadButtonSet|Buttons]]
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 0x8
 
| 0x8
| Timestamp in samples
+
| [[#AnalogStickState|AnalogStickL]]
 +
|-
 +
| 0x18
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickR]]
 
|-
 
|-
| 0x1C
+
| 0x20
| 0x4 * 3
+
| 0x4
| Accelerometer data as 3 floats
+
| [[#NpadAttributesSet|Attributes]]
 
|-
 
|-
 
| 0x24
 
| 0x24
| 0x4 * 3
+
| 0x4
| Gyroscope data as 3 floats
+
| Reserved
|-
 
| 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.
+
==== NpadJoyDualLifo ====
 +
This is "nn::hid::detail::NpadJoyDualLifo". This is a RingLifo object.
  
==== NpadSystemProperties ====
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Bit
+
! Offset
 +
! Size
 
! Description
 
! Description
 
|-
 
|-
| 0
+
| 0x0
| PowerInfo0 isCharging
+
| 0x8
 +
| RingLifoVptr
 
|-
 
|-
| 1
+
| 0x8
| PowerInfo1 isCharging
+
| 0x8
 +
| BufferCount
 
|-
 
|-
| 2
+
| 0x10
| PowerInfo2 isCharging
+
| 0x8
 +
| Tail
 
|-
 
|-
| 3
+
| 0x18
| PowerInfo0 powerConnected
+
| 0x8
 +
| Count
 
|-
 
|-
| 4
+
| 0x20
| PowerInfo1 powerConnected
+
| 0x30 * 17
|-
+
| Array of [[#NpadJoyDualStateAtomicStorage]]
| 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
 
|-
 
| 15
 
| [8.0.0+] DirectionalButtonsSupported
 
|-
 
| 16-63
 
| Unused
 
 
|}
 
|}
  
==== NpadSystemButtonProperties ====
+
===== NpadJoyDualStateAtomicStorage =====
 +
This is "nn::hid::detail::NpadJoyDualStateAtomicStorage".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Bit
+
! Offset
 +
! Size
 
! Description
 
! Description
 
|-
 
|-
| 0
+
| 0x0
| UnintendedHomeButtonInputProtectionEnabled (if cleared)
+
| 0x8
|}
+
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x28
 +
| [[#NpadJoyDualState]]
 +
|}
 +
 
 +
====== NpadJoyDualState ======
 +
This is "nn::hid::NpadJoyDualState".
  
==== NfcXcdDeviceHandleState ====
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,770: Line 1,624:
 
| 0x0
 
| 0x0
 
| 0x8
 
| 0x8
| Timestamp in samples (global)
+
| SamplingNumber
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 0x8
 
| 0x8
| DeviceHandle
+
| [[#NpadButtonSet|Buttons]]
 
|-
 
|-
 
| 0x10
 
| 0x10
| 0x1
+
| 0x8
| Flag
+
| [[#AnalogStickState|AnalogStickL]]
 
|-
 
|-
| 0x11
+
| 0x18
| 0x1
+
| 0x8
| Flag
+
| [[#AnalogStickState|AnalogStickR]]
 
|-
 
|-
| 0x12
+
| 0x20
| 0x6
+
| 0x4
| Padding
+
| [[#NpadAttributesSet|Attributes]]
 
|-
 
|-
| 0x18
+
| 0x24
| 0x8
+
| 0x4
| Timestamp in samples
+
| Reserved
 
|}
 
|}
  
==== NpadGcTriggerState ====
+
==== NpadJoyLeftLifo ====
 +
This is "nn::hid::detail::NpadJoyLeftLifo". This is a RingLifo object.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,802: Line 1,658:
 
| 0x0
 
| 0x0
 
| 0x8
 
| 0x8
| Timestamp in samples (global)
+
| RingLifoVptr
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 0x8
 
| 0x8
| Timestamp in samples
+
| BufferCount
 
|-
 
|-
 
| 0x10
 
| 0x10
| 0x4
+
| 0x8
| L analog trigger. Valid range: 0x0-0x7FFF.
+
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 
|-
 
|-
| 0x14
+
| 0x20
| 0x4
+
| 0x30 * 17
| R analog trigger. Valid range: 0x0-0x7FFF.
+
| Array of [[#NpadJoyLeftStateAtomicStorage]]
 
|}
 
|}
  
== GestureSharedMemoryFormat ==
+
===== NpadJoyLeftStateAtomicStorage =====
This is "nn::hid::detail::GestureSharedMemoryFormat".
+
This is "nn::hid::detail::NpadJoyLeftStateAtomicStorage".
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 1,827: Line 1,687:
 
|-
 
|-
 
| 0x0
 
| 0x0
| 0x20
+
| 0x8
| [[#GestureHeader]]
+
| SamplingNumber
 
|-
 
|-
| 0x20
+
| 0x8
| 0x68 * 17
+
| 0x28
| Array of [[#GestureState]]
+
| [[#NpadJoyLeftState]]
 
|}
 
|}
  
=== GestureHeader ===
+
====== NpadJoyLeftState ======
 +
This is "nn::hid::NpadJoyLeftState".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 1,844: Line 1,706:
 
| 0x0
 
| 0x0
 
| 0x8
 
| 0x8
| Timestamp in ticks
+
| SamplingNumber
 
|-
 
|-
 
| 0x8
 
| 0x8
 
| 0x8
 
| 0x8
| Number of Entries (always 17)
+
| [[#NpadButtonSet|Buttons]]
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 0x8
 
| 0x8
| Latest Entry Index
+
| [[#AnalogStickState|AnalogStickL]]
 
|-
 
|-
 
| 0x18
 
| 0x18
| 0x8
+
| 0x8
| Maximum Entry Index (always 16)
+
| [[#AnalogStickState|AnalogStickR]]
|}
+
|-
 
+
| 0x20
=== GestureState ===
+
| 0x4
{| class="wikitable" border="1"
+
| [[#NpadAttributesSet|Attributes]]
|-
+
|-
! Offset
+
| 0x24
! Size
+
| 0x4
! Description
+
| Reserved
|-
+
|}
| 0x0
+
 
| 0x8
+
==== NpadJoyRightLifo ====
| Timestamp in samples (global)
+
This is "nn::hid::detail::NpadJoyRightLifo". This is a RingLifo object.
|-
+
 
| 0x8
+
{| class="wikitable" border="1"
| 0x60
+
|-
|  
+
! Offset
|}
+
! Size
 
+
! Description
== ConsoleSixAxisSensorSharedMemoryFormat ==
+
|-
{| class="wikitable" border="1"
+
| 0x0
|-
+
| 0x8
! Offset
+
| RingLifoVptr
! Size
+
|-
! Description
+
| 0x8
|-
+
| 0x8
| 0x0
+
| BufferCount
| 0x8
+
|-
| Timestamp in samples
+
| 0x10
 +
| 0x8
 +
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 +
|-
 +
| 0x20
 +
| 0x30 * 17
 +
| Array of [[#NpadJoyRightStateAtomicStorage]]
 +
|}
 +
 
 +
===== NpadJoyRightStateAtomicStorage =====
 +
This is "nn::hid::detail::NpadJoyRightStateAtomicStorage".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x28
 +
| [[#NpadJoyRightState]]
 +
|}
 +
 
 +
====== NpadJoyRightState ======
 +
This is "nn::hid::NpadJoyRightState".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x8
 +
| [[#NpadButtonSet|Buttons]]
 +
|-
 +
| 0x10
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickL]]
 +
|-
 +
| 0x18
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickR]]
 +
|-
 +
| 0x20
 +
| 0x4
 +
| [[#NpadAttributesSet|Attributes]]
 +
|-
 +
| 0x24
 +
| 0x4
 +
| Reserved
 +
|}
 +
 
 +
==== NpadPalmaLifo ====
 +
This is "nn::hid::detail::NpadPalmaLifo". This is a RingLifo object.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| RingLifoVptr
 +
|-
 +
| 0x8
 +
| 0x8
 +
| BufferCount
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 +
|-
 +
| 0x20
 +
| 0x30 * 17
 +
| Array of [[#NpadPalmaStateAtomicStorage]]
 +
|}
 +
 
 +
===== NpadPalmaStateAtomicStorage =====
 +
This is "nn::hid::detail::NpadPalmaStateAtomicStorage".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x28
 +
| [[#NpadPalmaState]]
 +
|}
 +
 
 +
====== NpadPalmaState ======
 +
This is "nn::hid::NpadPalmaState".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x8
 +
| [[#NpadButtonSet|Buttons]]
 +
|-
 +
| 0x10
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickL]]
 +
|-
 +
| 0x18
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickR]]
 +
|-
 +
| 0x20
 +
| 0x4
 +
| [[#NpadAttributesSet|Attributes]]
 +
|-
 +
| 0x24
 +
| 0x4
 +
| Reserved
 +
|}
 +
 
 +
==== NpadSystemLifo ====
 +
This is "nn::hid::detail::NpadSystemLifo". This is a RingLifo object.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| RingLifoVptr
 +
|-
 +
| 0x8
 +
| 0x8
 +
| BufferCount
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 +
|-
 +
| 0x20
 +
| 0x30 * 17
 +
| Array of [[#NpadSystemStateAtomicStorage]]
 +
|}
 +
 
 +
===== NpadSystemStateAtomicStorage =====
 +
This is "nn::hid::detail::NpadSystemStateAtomicStorage".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x28
 +
| [[#NpadSystemState]]
 +
|}
 +
 
 +
====== NpadSystemState ======
 +
This is "nn::hid::system::NpadSystemState".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x8
 +
| [[#NpadButtonSet|Buttons]]
 +
|-
 +
| 0x10
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickL]]
 +
|-
 +
| 0x18
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickR]]
 +
|-
 +
| 0x20
 +
| 0x4
 +
| [[#NpadAttributesSet|Attributes]]
 +
|-
 +
| 0x24
 +
| 0x4
 +
| Reserved
 +
|}
 +
 
 +
==== NpadSystemExtLifo ====
 +
This is "nn::hid::detail::NpadSystemExtLifo". This is a RingLifo object.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| RingLifoVptr
 +
|-
 +
| 0x8
 +
| 0x8
 +
| BufferCount
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 +
|-
 +
| 0x20
 +
| 0x30 * 17
 +
| Array of [[#NpadSystemExtStateAtomicStorage]]
 +
|}
 +
 
 +
===== NpadSystemExtStateAtomicStorage =====
 +
This is "nn::hid::detail::NpadSystemExtStateAtomicStorage".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x28
 +
| [[#NpadSystemState]]
 +
|}
 +
 
 +
====== NpadSystemExtState ======
 +
This is "nn::hid::system::NpadSystemExtState".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x8
 +
| [[#NpadButtonSet|Buttons]]
 +
|-
 +
| 0x10
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickL]]
 +
|-
 +
| 0x18
 +
| 0x8
 +
| [[#AnalogStickState|AnalogStickR]]
 +
|-
 +
| 0x20
 +
| 0x4
 +
| [[#NpadAttributesSet|Attributes]]
 +
|-
 +
| 0x24
 +
| 0x4
 +
| Reserved
 +
|}
 +
 
 +
==== NpadSixAxisSensorLifo ====
 +
This is "nn::hid::detail::NpadSixAxisSensorLifo". This is a RingLifo object.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| RingLifoVptr
 +
|-
 +
| 0x8
 +
| 0x8
 +
| BufferCount
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 +
|-
 +
| 0x20
 +
| 0x68 * 17
 +
| Array of [[#SixAxisSensorStateAtomicStorage]]
 +
|}
 +
 
 +
===== SixAxisSensorStateAtomicStorage =====
 +
This is "nn::hid::detail::SixAxisSensorStateAtomicStorage".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x60
 +
| [[#SixAxisSensorState]]
 +
|}
 +
 
 +
====== SixAxisSensorState ======
 +
This is "nn::hid::SixAxisSensorState".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| DeltaTime
 +
|-
 +
| 0x8
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x10
 +
| 0x4
 +
| AccelerationX
 +
|-
 +
| 0x14
 +
| 0x4
 +
| AccelerationY
 +
|-
 +
| 0x18
 +
| 0x4
 +
| AccelerationZ
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| AngularVelocityX
 +
|-
 +
| 0x20
 +
| 0x4
 +
| AngularVelocityY
 +
|-
 +
| 0x24
 +
| 0x4
 +
| AngularVelocityZ
 +
|-
 +
| 0x28
 +
| 0x4
 +
| AngleX
 +
|-
 +
| 0x2C
 +
| 0x4
 +
| AngleY
 +
|-
 +
| 0x30
 +
| 0x4
 +
| AngleZ
 +
|-
 +
| 0x34
 +
| 0x24
 +
| [[#DirectionState|Direction]]
 +
|-
 +
| 0x58
 +
| 0x4
 +
| [[#SixAxisSensorAttributeSet|Attributes]]
 +
|-
 +
| 0x5C
 +
| 0x4
 +
| Reserved
 +
|}
 +
 
 +
==== NfcXcdDeviceHandleState ====
 +
This is "nn::hid::detail::NfcXcdDeviceHandleState". This is a RingLifo object.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| RingLifoVptr
 +
|-
 +
| 0x8
 +
| 0x8
 +
| BufferCount
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 +
|-
 +
| 0x20
 +
| 0x20 * 2
 +
| Array of [[#NfcXcdDeviceHandleStateImplAtomicStorage]]
 +
|}
 +
 
 +
===== NfcXcdDeviceHandleStateImplAtomicStorage =====
 +
This is "nn::hid::detail::NfcXcdDeviceHandleStateImplAtomicStorage".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x18
 +
| [[#NfcXcdDeviceHandleStateImpl]]
 +
|}
 +
 
 +
====== NfcXcdDeviceHandleStateImpl ======
 +
This is "nn::hid::detail::NfcXcdDeviceHandleStateImpl".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| Handle
 +
|-
 +
| 0x8
 +
| 0x1
 +
| IsAvailable
 +
|-
 +
| 0x9
 +
| 0x1
 +
| IsActivated
 +
|-
 +
| 0xA
 +
| 0x6
 +
| Reserved
 +
|-
 +
| 0x10
 +
| 0x8
 +
| SamplingNumber
 +
|}
 +
 
 +
==== NpadGcTriggerLifo ====
 +
This is "nn::hid::detail::NpadGcTriggerLifo". This is a RingLifo object.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| RingLifoVptr
 +
|-
 +
| 0x8
 +
| 0x8
 +
| BufferCount
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 +
|-
 +
| 0x20
 +
| 0x18 * 17
 +
| Array of [[#NpadGcTriggerStateAtomicStorage]]
 +
|}
 +
 
 +
===== NpadGcTriggerStateAtomicStorage =====
 +
This is "nn::hid::detail::NpadGcTriggerStateAtomicStorage".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x10
 +
| [[#NpadGcTriggerState]]
 +
|}
 +
 
 +
====== NpadGcTriggerState ======
 +
This is "nn::hid::server::NpadGcTriggerState".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x8
 +
|
 +
|}
 +
 
 +
== GestureSharedMemoryFormat ==
 +
This is "nn::hid::detail::GestureSharedMemoryFormat".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x708
 +
| [[#GestureLifo]]
 +
|}
 +
 
 +
=== GestureLifo ===
 +
This is "nn::hid::detail::GestureLifo". This is a RingLifo object.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| RingLifoVptr
 +
|-
 +
| 0x8
 +
| 0x8
 +
| BufferCount
 +
|-
 +
| 0x10
 +
| 0x8
 +
| Tail
 +
|-
 +
| 0x18
 +
| 0x8
 +
| Count
 +
|-
 +
| 0x20
 +
| 0x68 * 17
 +
| Array of [[#GestureDummyStateAtomicStorage]]
 +
|}
 +
 
 +
===== GestureDummyStateAtomicStorage =====
 +
This is "nn::hid::detail::GestureDummyStateAtomicStorage".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x60
 +
| [[#GestureDummyState]]
 +
|}
 +
 
 +
====== GestureDummyState ======
 +
This is "nn::hid::detail::GestureDummyState".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 +
|-
 +
| 0x8
 +
| 0x8
 +
| ContextNumber
 +
|-
 +
| 0x10
 +
| 0x4
 +
| Type
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Direction
 +
|-
 +
| 0x18
 +
| 0x4
 +
| X
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Y
 +
|-
 +
| 0x20
 +
| 0x4
 +
| DeltaX
 +
|-
 +
| 0x24
 +
| 0x4
 +
| DeltaY
 +
|-
 +
| 0x28
 +
| 0x4
 +
| VelocityX
 +
|-
 +
| 0x2C
 +
| 0x4
 +
| VelocityY
 +
|-
 +
| 0x30
 +
| 0x4
 +
| [[#GestureAttributeSet|Attributes]]
 +
|-
 +
| 0x34
 +
| 0x4
 +
| Scale
 +
|-
 +
| 0x38
 +
| 0x4
 +
| RotationAngle
 +
|-
 +
| 0x3C
 +
| 0x4
 +
| PointCount
 +
|-
 +
| 0x40
 +
| 0x8 * 4
 +
| [[#GesturePoint|Points]]
 +
|}
 +
 
 +
== ConsoleSixAxisSensorSharedMemoryFormat ==
 +
This is "nn::hid::detail::ConsoleSixAxisSensorSharedMemoryFormat".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| SamplingNumber
 
|-
 
|-
 
| 0x8
 
| 0x8
Line 1,901: Line 2,475:
 
| 0xC
 
| 0xC
 
| GyroBias
 
| GyroBias
|-
 
| 0x1C
 
| 0x4
 
| Padding
 
 
|}
 
|}

Revision as of 18:37, 19 November 2020

HID shared memory is a 0x40000 byte read-only segment of memory shared between applications for input. The segment contains structures for most if not all input methods available to applications.

Contents

SharedMemoryFormat

This is "nn::hid::detail::SharedMemoryFormat".

Offset Size Description
0x0 0x400 DebugPad
0x400 0x3000 TouchScreen
0x3400 0x400 Mouse
0x3800 0x400 Keyboard
0x3C00 0x1000 Digitizer ([1.0.0-9.2.0] BasicXpad)
0x4C00 0x200 HomeButton
0x4E00 0x200 SleepButton
0x5000 0x200 CaptureButton
0x5200 0x800 (0x80 * 0x10) InputDetector
0x5A00 0x4000 (0x400 * 0x10) [1.0.0-4.1.0] UniquePad
0x9A00 0x32000 (0x5000 * 0x0A) Npad
0x3BA00 0x800 Gesture
0x3C200 0x1C [5.0.0+] ConsoleSixAxisSensor

DebugPadSharedMemoryFormat

This is "nn::hid::detail::DebugPadSharedMemoryFormat".

Offset Size Description
0x0 0x2C8 #DebugPadLifo

DebugPadLifo

This is "nn::hid::detail::DebugPadLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x28 * 17 Array of #DebugPadStateAtomicStorage

DebugPadStateAtomicStorage

This is "nn::hid::detail::DebugPadStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x20 #DebugPadState
DebugPadState

This is "nn::hid::DebugPadState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x4 Attributes
0xC 0x4 Buttons
0x10 0x8 AnalogStickR
0x18 0x8 AnalogStickL

TouchScreenSharedMemoryFormat

This is "nn::hid::detail::TouchScreenSharedMemoryFormat".

Offset Size Description
0x0 0x2C38 #TouchScreenLifo

TouchScreenLifo

This is "nn::hid::detail::TouchScreenLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x298 * 17 Array of #TouchScreenStateAtomicStorage

TouchScreenStateAtomicStorage

This is "nn::hid::detail::TouchScreenStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x290 #TouchScreenState
TouchScreenState

This is "nn::hid::detail::TouchScreenState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x4 Count
0xC 0x4 Reserved
0x10 0x28 * 16 Touches
TouchState

This is "nn::hid::TouchState".

Offset Size Description
0x0 0x8 DeltaTime
0x8 0x4 Attributes
0xC 0x4 FingerId
0x10 0x4 X
0x14 0x4 Y
0x18 0x4 DiameterX
0x1C 0x4 DiameterY
0x20 0x4 RotationAngle
0x24 0x4 Reserved

MouseSharedMemoryFormat

This is "nn::hid::detail::MouseSharedMemoryFormat".

Offset Size Description
0x0 0x350 #MouseLifo

MouseLifo

This is "nn::hid::detail::MouseLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #MouseStateAtomicStorage

MouseStateAtomicStorage

This is "nn::hid::detail::MouseStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #MouseState
MouseState

This is "nn::hid::detail::MouseState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x4 X
0xC 0x4 Y
0x10 0x4 DeltaX
0x14 0x4 DeltaY
0x18 0x4 WheelDeltaX
0x1C 0x4 WheelDeltaY
0x20 0x4 Buttons
0x24 0x4 Attributes

KeyboardSharedMemoryFormat

This is "nn::hid::detail::KeyboardSharedMemoryFormat".

Offset Size Description
0x0 0x3D8 #KeyboardLifo

KeyboardLifo

This is "nn::hid::detail::KeyboardLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x38 * 17 Array of #KeyboardStateAtomicStorage

KeyboardStateAtomicStorage

This is "nn::hid::detail::KeyboardStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x30 #KeyboardState
KeyboardState

This is "nn::hid::detail::KeyboardState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Modifiers
0x10 0x20 Keys

BasicXpadSharedMemoryFormat

This is "nn::hid::detail::BasicXpadSharedMemoryFormat".

Offset Size Description
0x0 0x400 * 4 Array of #BasicXpadSharedMemoryEntry

BasicXpadSharedMemoryEntry

This is "nn::hid::detail::BasicXpadSharedMemoryEntry".

Offset Size Description
0x0 0x2C8 #BasicXpadLifo

BasicXpadLifo

This is "nn::hid::detail::BasicXpadLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x28 * 17 Array of #BasicXpadStateAtomicStorage
BasicXpadStateAtomicStorage

This is "nn::hid::detail::BasicXpadStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x20 #BasicXpadState
BasicXpadState

This is "nn::hid::detail::BasicXpadState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x4 Attributes
0xC 0x4 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR

HomeButtonSharedMemoryFormat

This is "nn::hid::detail::HomeButtonSharedMemoryFormat".

Offset Size Description
0x0 0x1B8 #HomeButtonLifo

HomeButtonLifo

This is "nn::hid::detail::HomeButtonLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x18 * 17 Array of #HomeButtonStateAtomicStorage

HomeButtonStateAtomicStorage

This is "nn::hid::detail::HomeButtonStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x10 #HomeButtonState
HomeButtonState

This is "nn::hid::system::HomeButtonState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons

SleepButtonSharedMemoryFormat

This is "nn::hid::detail::SleepButtonSharedMemoryFormat".

Offset Size Description
0x0 0x1B8 #SleepButtonLifo

SleepButtonLifo

This is "nn::hid::detail::SleepButtonLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x18 * 17 Array of #SleepButtonStateAtomicStorage

SleepButtonStateAtomicStorage

This is "nn::hid::detail::SleepButtonStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x10 #SleepButtonState
SleepButtonState

This is "nn::hid::system::SleepButtonState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons

CaptureButtonSharedMemoryFormat

This is "nn::hid::detail::CaptureButtonSharedMemoryFormat".

Offset Size Description
0x0 0x1B8 #CaptureButtonLifo

CaptureButtonLifo

This is "nn::hid::detail::CaptureButtonLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x18 * 17 Array of #CaptureButtonStateAtomicStorage

CaptureButtonStateAtomicStorage

This is "nn::hid::detail::CaptureButtonStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x10 #CaptureButtonState
CaptureButtonState

This is "nn::hid::system::CaptureButtonState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons

InputDetectorSharedMemoryFormat

This is "nn::hid::detail::InputDetectorSharedMemoryFormat".

Offset Size Description
0x0 0x80 * 16 Array of #InputDetectorSharedMemoryEntry

InputDetectorSharedMemoryEntry

This is "nn::hid::detail::InputDetectorSharedMemoryEntry".

Offset Size Description
0x0 0x50 #InputDetectorLifo

InputDetectorLifo

This is "nn::hid::detail::InputDetectorLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x18 * 2 Array of #InputDetectorStateAtomicStorage
InputDetectorStateAtomicStorage

This is "nn::hid::detail::InputDetectorStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x10 #InputDetectorState
InputDetectorState

This is "nn::hid::detail::InputDetectorState".

Offset Size Description
0x0 0x8 InputSourceState
0x8 0x8 SamplingNumber

UniquePadSharedMemoryFormat

This is "nn::hid::detail::UniquePadSharedMemoryFormat".

[5.0.0+] This section has been removed from #SharedMemoryFormat. #UniquePadSharedMemoryFormat is now a specialization of #NpadSharedMemoryFormat.

Offset Size Description
0x0 0x400 * 16 Array of #UniquePadSharedMemoryEntry

UniquePadSharedMemoryEntry

This is "nn::hid::detail::UniquePadSharedMemoryEntry".

Offset Size Description
0x0 0x1E0 #UniquePadLifo

UniquePadLifo

This is "nn::hid::detail::UniquePadLifo". This is a RingLifo object.

Offset Size Description
0x0 0x80 #UniquePadConfigLifo
0x80 0x70 * 2 Array of #AnalogStickCalibrationStateImplLifo
0x160 0x40 #SixAxisSensorUserCalibrationStateLifo
0x1A0 0x40 UniquePadConfigMutex

UniquePadConfigLifo

This is "nn::hid::detail::UniquePadConfigLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 2 Array of #UniquePadConfigAtomicStorage
UniquePadConfigAtomicStorage

This is "nn::hid::detail::UniquePadConfigAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #UniquePadConfig
UniquePadConfig

This is "nn::hid::detail::UniquePadConfig".

Offset Size Description
0x0 0x4 Type
0x4 0x4 Interface
0x8 0x10 SerialNumber
0x18 0x4 ControllerNumber
0x1C 0x1 IsActive
0x1D 0x3 Reserved
0x20 0x8 SamplingNumber

AnalogStickCalibrationStateImplLifo

This is "nn::hid::detail::AnalogStickCalibrationStateImplLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x28 * 2 Array of #AnalogStickCalibrationStateImplAtomicStorage
AnalogStickCalibrationStateImplAtomicStorage

This is "nn::hid::detail::AnalogStickCalibrationStateImplAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x20 #AnalogStickCalibrationStateImpl
AnalogStickCalibrationStateImpl

This is "nn::hid::detail::AnalogStickCalibrationStateImpl".

Offset Size Description
0x0 0x8 State
0x8 0x8 Flags
0x10 0x8 Stage
0x18 0x8 SamplingNumber

SixAxisSensorUserCalibrationStateLifo

This is "nn::hid::detail::SixAxisSensorUserCalibrationStateLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x20 * 2 Array of #SixAxisSensorUserCalibrationStateAtomicStorage
SixAxisSensorUserCalibrationStateAtomicStorage

This is "nn::hid::detail::SixAxisSensorUserCalibrationStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x18 #SixAxisSensorUserCalibrationState
SixAxisSensorUserCalibrationState

This is "nn::hid::detail::UniquePadConfig".

Offset Size Description
0x0 0x4 Flags
0x4 0x4 Reserved
0x8 0x8 Stage
0x10 0x8 SamplingNumber

NpadSharedMemoryFormat

This is "nn::hid::detail::NpadSharedMemoryFormat".

Offset Size Description
0x0 0x5000 * 10 Array of #NpadSharedMemoryEntry

Each entry describes an available controller:

Entry Description
0 to 7 Players 1 to 8
8 Handheld Mode
9 Other

NpadSharedMemoryEntry

This is "nn::hid::detail::NpadSharedMemoryEntry".

Offset Size Description
0x0 0x43F0 ([1.0.0-8.1.0] 0x4410) #NpadInternalState

NpadInternalState

This is "nn::hid::detail::NpadInternalState".

Offset Size Description
0x0 0x4 StyleSet
0x4 0x4 JoyAssignmentMode
0x8 0xC FullKeyColor
0x14 0x14 JoyColor
0x28 0x350 FullKeyLifo
0x378 0x350 HandheldLifo
0x6C8 0x350 JoyDualLifo
0xA18 0x350 JoyLeftLifo
0xD68 0x350 JoyRightLifo
0x10B8 0x350 PalmaLifo ([1.0.0-3.0.2] SystemLifo)
0x1408 0x350 SystemExtLifo ([4.0.0+] also used for NpadSystem)
0x1758 0x708 FullKeySixAxisSensorLifo
0x1E60 0x708 HandheldSixAxisSensorLifo
0x2568 0x708 JoyDualLeftSixAxisSensorLifo
0x2C70 0x708 JoyDualRightSixAxisSensorLifo
0x3378 0x708 JoyLeftSixAxisSensorLifo
0x3A80 0x708 JoyRightSixAxisSensorLifo
0x4188 0x4 DeviceType
0x418C 0x4 Reserved
0x4190 0x8 SystemProperties
0x4198 0x4 SystemButtonProperties
0x419C 0x4 BatteryLevel0
0x41A0 0x4 BatteryLevel1
0x41A4 0x4 BatteryLevel2
0x41A8 0x60 [1.0.0-8.1.0] NfcXcdDeviceHandle (replaced by GetXcdHandleForNpadWithNfc/IsNfcActivated)
0x41A8 0x4 [9.0.0+] AppletFooterUiAttributes
0x41AC 0x1 [9.0.0+] AppletFooterUiType
0x41AD 0x7B [9.0.0+] Reserved
0x4208 0x40 [1.0.0-8.1.0] Mutex
0x4228 ([1.0.0-8.1.0] 0x4248) 0x1B8 GcTriggerLifo
0x43E0 ([1.0.0-8.1.0] 0x4400) 0x4 LarkTypeLAndMain
0x43E4 ([1.0.0-8.1.0] 0x4404) 0x4 LarkTypeR
0x43E8 ([1.0.0-8.1.0] 0x4408) 0x4 LuciaType
0x43EC ([1.0.0-8.1.0] 0x440C) 0x4

NpadFullKeyLifo

This is "nn::hid::detail::NpadFullKeyLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #NpadFullKeyStateAtomicStorage
NpadFullKeyStateAtomicStorage

This is "nn::hid::detail::NpadFullKeyStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #NpadFullKeyState
NpadFullKeyState

This is "nn::hid::NpadFullKeyState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR
0x20 0x4 Attributes
0x24 0x4 Reserved

NpadHandheldLifo

This is "nn::hid::detail::NpadHandheldLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #NpadHandheldStateAtomicStorage
NpadHandheldStateAtomicStorage

This is "nn::hid::detail::NpadHandheldStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #NpadHandheldState
NpadHandheldState

This is "nn::hid::NpadHandheldState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR
0x20 0x4 Attributes
0x24 0x4 Reserved

NpadJoyDualLifo

This is "nn::hid::detail::NpadJoyDualLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #NpadJoyDualStateAtomicStorage
NpadJoyDualStateAtomicStorage

This is "nn::hid::detail::NpadJoyDualStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #NpadJoyDualState
NpadJoyDualState

This is "nn::hid::NpadJoyDualState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR
0x20 0x4 Attributes
0x24 0x4 Reserved

NpadJoyLeftLifo

This is "nn::hid::detail::NpadJoyLeftLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #NpadJoyLeftStateAtomicStorage
NpadJoyLeftStateAtomicStorage

This is "nn::hid::detail::NpadJoyLeftStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #NpadJoyLeftState
NpadJoyLeftState

This is "nn::hid::NpadJoyLeftState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR
0x20 0x4 Attributes
0x24 0x4 Reserved

NpadJoyRightLifo

This is "nn::hid::detail::NpadJoyRightLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #NpadJoyRightStateAtomicStorage
NpadJoyRightStateAtomicStorage

This is "nn::hid::detail::NpadJoyRightStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #NpadJoyRightState
NpadJoyRightState

This is "nn::hid::NpadJoyRightState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR
0x20 0x4 Attributes
0x24 0x4 Reserved

NpadPalmaLifo

This is "nn::hid::detail::NpadPalmaLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #NpadPalmaStateAtomicStorage
NpadPalmaStateAtomicStorage

This is "nn::hid::detail::NpadPalmaStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #NpadPalmaState
NpadPalmaState

This is "nn::hid::NpadPalmaState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR
0x20 0x4 Attributes
0x24 0x4 Reserved

NpadSystemLifo

This is "nn::hid::detail::NpadSystemLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #NpadSystemStateAtomicStorage
NpadSystemStateAtomicStorage

This is "nn::hid::detail::NpadSystemStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #NpadSystemState
NpadSystemState

This is "nn::hid::system::NpadSystemState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR
0x20 0x4 Attributes
0x24 0x4 Reserved

NpadSystemExtLifo

This is "nn::hid::detail::NpadSystemExtLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x30 * 17 Array of #NpadSystemExtStateAtomicStorage
NpadSystemExtStateAtomicStorage

This is "nn::hid::detail::NpadSystemExtStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x28 #NpadSystemState
NpadSystemExtState

This is "nn::hid::system::NpadSystemExtState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 Buttons
0x10 0x8 AnalogStickL
0x18 0x8 AnalogStickR
0x20 0x4 Attributes
0x24 0x4 Reserved

NpadSixAxisSensorLifo

This is "nn::hid::detail::NpadSixAxisSensorLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x68 * 17 Array of #SixAxisSensorStateAtomicStorage
SixAxisSensorStateAtomicStorage

This is "nn::hid::detail::SixAxisSensorStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x60 #SixAxisSensorState
SixAxisSensorState

This is "nn::hid::SixAxisSensorState".

Offset Size Description
0x0 0x8 DeltaTime
0x8 0x8 SamplingNumber
0x10 0x4 AccelerationX
0x14 0x4 AccelerationY
0x18 0x4 AccelerationZ
0x1C 0x4 AngularVelocityX
0x20 0x4 AngularVelocityY
0x24 0x4 AngularVelocityZ
0x28 0x4 AngleX
0x2C 0x4 AngleY
0x30 0x4 AngleZ
0x34 0x24 Direction
0x58 0x4 Attributes
0x5C 0x4 Reserved

NfcXcdDeviceHandleState

This is "nn::hid::detail::NfcXcdDeviceHandleState". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x20 * 2 Array of #NfcXcdDeviceHandleStateImplAtomicStorage
NfcXcdDeviceHandleStateImplAtomicStorage

This is "nn::hid::detail::NfcXcdDeviceHandleStateImplAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x18 #NfcXcdDeviceHandleStateImpl
NfcXcdDeviceHandleStateImpl

This is "nn::hid::detail::NfcXcdDeviceHandleStateImpl".

Offset Size Description
0x0 0x8 Handle
0x8 0x1 IsAvailable
0x9 0x1 IsActivated
0xA 0x6 Reserved
0x10 0x8 SamplingNumber

NpadGcTriggerLifo

This is "nn::hid::detail::NpadGcTriggerLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x18 * 17 Array of #NpadGcTriggerStateAtomicStorage
NpadGcTriggerStateAtomicStorage

This is "nn::hid::detail::NpadGcTriggerStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x10 #NpadGcTriggerState
NpadGcTriggerState

This is "nn::hid::server::NpadGcTriggerState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8

GestureSharedMemoryFormat

This is "nn::hid::detail::GestureSharedMemoryFormat".

Offset Size Description
0x0 0x708 #GestureLifo

GestureLifo

This is "nn::hid::detail::GestureLifo". This is a RingLifo object.

Offset Size Description
0x0 0x8 RingLifoVptr
0x8 0x8 BufferCount
0x10 0x8 Tail
0x18 0x8 Count
0x20 0x68 * 17 Array of #GestureDummyStateAtomicStorage
GestureDummyStateAtomicStorage

This is "nn::hid::detail::GestureDummyStateAtomicStorage".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x60 #GestureDummyState
GestureDummyState

This is "nn::hid::detail::GestureDummyState".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x8 ContextNumber
0x10 0x4 Type
0x14 0x4 Direction
0x18 0x4 X
0x1C 0x4 Y
0x20 0x4 DeltaX
0x24 0x4 DeltaY
0x28 0x4 VelocityX
0x2C 0x4 VelocityY
0x30 0x4 Attributes
0x34 0x4 Scale
0x38 0x4 RotationAngle
0x3C 0x4 PointCount
0x40 0x8 * 4 Points

ConsoleSixAxisSensorSharedMemoryFormat

This is "nn::hid::detail::ConsoleSixAxisSensorSharedMemoryFormat".

Offset Size Description
0x0 0x8 SamplingNumber
0x8 0x1 IsSevenSixAxisSensorAtRest
0x9 0x3 Padding
0xC 0x4 VerticalizationError
0x10 0xC GyroBias