HID Shared Memory: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
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. | 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. | ||
= SharedMemoryFormat = | |||
This is "nn::hid::detail::SharedMemoryFormat". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 12: | Line 12: | ||
| 0x0 | | 0x0 | ||
| 0x400 | | 0x400 | ||
| [[#DebugPad]] | | [[#DebugPadSharedMemoryFormat|DebugPad]] | ||
|- | |- | ||
| 0x400 | | 0x400 | ||
| 0x3000 | | 0x3000 | ||
| [[#TouchScreen]] | | [[#TouchScreenSharedMemoryFormat|TouchScreen]] | ||
|- | |- | ||
| 0x3400 | | 0x3400 | ||
| 0x400 | | 0x400 | ||
| [[#Mouse]] | | [[#MouseSharedMemoryFormat|Mouse]] | ||
|- | |- | ||
| 0x3800 | | 0x3800 | ||
| 0x400 | | 0x400 | ||
| [[#Keyboard]] | | [[#KeyboardSharedMemoryFormat|Keyboard]] | ||
|- | |- | ||
| 0x3C00 | | 0x3C00 | ||
| 0x1000 | | 0x1000 | ||
| [1.0.0-9.2.0] [[#BasicXpad]] | | [1.0.0-9.2.0] [[#BasicXpadSharedMemoryFormat|BasicXpad]] | ||
|- | |- | ||
| 0x3C00 | | 0x3C00 | ||
| | | | ||
| [10.0.0+] Digitizer | | [10.0.0+] [[#DigitizerSharedMemoryFormat|Digitizer]] | ||
|- | |- | ||
| 0x4C00 | | 0x4C00 | ||
| 0x200 | | 0x200 | ||
| [[#HomeButton]] | | [[#HomeButtonSharedMemoryFormat|HomeButton]] | ||
|- | |- | ||
| 0x4E00 | | 0x4E00 | ||
| 0x200 | | 0x200 | ||
| [[#SleepButton]] | | [[#SleepButtonSharedMemoryFormat|SleepButton]] | ||
|- | |- | ||
| 0x5000 | | 0x5000 | ||
| 0x200 | | 0x200 | ||
| [[#CaptureButton]] | | [[#CaptureButtonSharedMemoryFormat|CaptureButton]] | ||
|- | |- | ||
| 0x5200 | | 0x5200 | ||
| 0x800 (0x80 * 0x10) | | 0x800 (0x80 * 0x10) | ||
| [[#InputDetector]] | | [[#InputDetectorSharedMemoryFormat|InputDetector]] | ||
|- | |- | ||
| 0x5A00 | | 0x5A00 | ||
| 0x4000 (0x400 * 0x10) | | 0x4000 (0x400 * 0x10) | ||
| [1.0.0-4.1.0] [[#UniquePad]] | | [1.0.0-4.1.0] [[#UniquePadSharedMemoryFormat|UniquePad]] | ||
|- | |- | ||
| 0x9A00 | | 0x9A00 | ||
| 0x32000 (0x5000 * 0x0A) | | 0x32000 (0x5000 * 0x0A) | ||
| [[#Npad]] | | [[#NpadSharedMemoryFormat|Npad]] | ||
|- | |- | ||
| 0x3BA00 | | 0x3BA00 | ||
| 0x800 | | 0x800 | ||
| [[#Gesture]] | | [[#GestureSharedMemoryFormat|Gesture]] | ||
|- | |- | ||
| 0x3C200 | | 0x3C200 | ||
| 0x20 | | 0x20 | ||
| [5.0.0+] [[#ConsoleSixAxisSensor]] | | [5.0.0+] [[#ConsoleSixAxisSensorSharedMemoryFormat|ConsoleSixAxisSensor]] | ||
|} | |} | ||
== | == DebugPadSharedMemoryFormat == | ||
This is "nn::hid::detail::DebugPadSharedMemoryFormat". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 75: | Line 77: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x2C8 | ||
| [[# | | [[#DebugPadLifo]] | ||
|} | |} | ||
=== | === DebugPadLifo === | ||
This is "nn::hid::detail::DebugPadLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 92: | Line 92: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | RingLifoVptr | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| | | BufferCount | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | Tail | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| | | Count | ||
|- | |||
| 0x20 | |||
| 0x28 * 17 | |||
| Array of [[#DebugPadStateAtomicStorage]] | |||
|} | |} | ||
=== | ==== DebugPadStateAtomicStorage ==== | ||
This is "nn::hid::detail::DebugPadStateAtomicStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 116: | Line 122: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x20 | | 0x20 | ||
| | | [[#DebugPadState]] | ||
|} | |} | ||
== | ===== DebugPadState ===== | ||
This is "nn::hid::DebugPadState". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 131: | Line 139: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| | | 0x8 | ||
| | | 0x4 | ||
| | | [[#DebugPadAttributeSet|Attributes]] | ||
|- | |- | ||
| 0xC | |||
| 0x4 | |||
| [[#DebugPadButtonSet|Buttons]] | |||
| | |||
| | |||
| | |||
| | |||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | [[#AnalogStickState|AnalogStickR]] | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| | | [[#AnalogStickState|AnalogStickL]] | ||
|} | |} | ||
== | == TouchScreenSharedMemoryFormat == | ||
This is "nn::hid::detail::TouchScreenSharedMemoryFormat". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 171: | Line 169: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x2C38 | ||
| | | [[#TouchScreenLifo]] | ||
|} | |||
=== TouchScreenLifo === | |||
This is "nn::hid::detail::TouchScreenLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| RingLifoVptr | |||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| | | BufferCount | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | Tail | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| | | 0x8 | ||
| [[# | | Count | ||
|- | |||
| 0x20 | |||
| 0x298 * 17 | |||
| Array of [[#TouchScreenStateAtomicStorage]] | |||
|} | |} | ||
==== | ==== TouchScreenStateAtomicStorage ==== | ||
This is "nn::hid::detail::TouchScreenStateAtomicStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 196: | Line 214: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| | | 0x290 | ||
| | | [[#TouchScreenState]] | ||
|} | |||
===== TouchScreenState ===== | |||
This is "nn::hid::detail::TouchScreenState". | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
! Offset | |||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 | ||
| | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| | | 0x8 | ||
| 0x4 | | 0x4 | ||
| | | Count | ||
|- | |- | ||
| | | 0xC | ||
| 0x4 | | 0x4 | ||
| | | Reserved | ||
|- | |- | ||
| | | 0x10 | ||
| | | 0x28 * 16 | ||
| | | [[#TouchState|Touches]] | ||
| | |||
|} | |} | ||
== | ====== TouchState ====== | ||
This is "nn::hid::TouchState". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 256: | Line 258: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | DeltaTime | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| | | 0x4 | ||
| | | [[#TouchAttributeSet|Attributes]] | ||
|- | |||
| 0xC | |||
| 0x4 | |||
| FingerId | |||
|- | |- | ||
| 0x10 | | 0x10 | ||
| | | 0x4 | ||
| | | X | ||
|- | |||
| 0x14 | |||
| 0x4 | |||
| Y | |||
|- | |- | ||
| 0x18 | | 0x18 | ||
| | | 0x4 | ||
| | | DiameterX | ||
|- | |- | ||
| 0x1C | |||
| 0x4 | |||
| DiameterY | |||
| 0x1C | |||
| 0x4 | |||
| | |||
|- | |- | ||
| 0x20 | | 0x20 | ||
| 0x4 | | 0x4 | ||
| | | RotationAngle | ||
|- | |- | ||
| 0x24 | | 0x24 | ||
| 0x4 | | 0x4 | ||
| | | Reserved | ||
|} | |} | ||
== | == MouseSharedMemoryFormat == | ||
This is "nn::hid::detail::MouseSharedMemoryFormat". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 322: | Line 302: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x350 | ||
| [[# | | [[#MouseLifo]] | ||
|} | |} | ||
=== | === MouseLifo === | ||
This is "nn::hid::detail::MouseLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 340: | Line 318: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | RingLifoVptr | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| | | BufferCount | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | Tail | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| | | Count | ||
|- | |||
| 0x20 | |||
| 0x30 * 17 | |||
| Array of [[#MouseStateAtomicStorage]] | |||
|} | |} | ||
=== | ==== MouseStateAtomicStorage ==== | ||
This is "nn::hid::detail::MouseStateAtomicStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 364: | Line 348: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| | | 0x28 | ||
| | | [[#MouseState]] | ||
|} | |} | ||
== | ===== MouseState ===== | ||
This is "nn::hid::detail::MouseState". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 387: | Line 365: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x20 | | 0x8 | ||
| | | 0x4 | ||
| | | X | ||
|- | |||
| 0xC | |||
| 0x4 | |||
| Y | |||
|- | |||
| 0x10 | |||
| 0x4 | |||
| DeltaX | |||
|- | |||
| 0x14 | |||
| 0x4 | |||
| DeltaY | |||
|- | |||
| 0x18 | |||
| 0x4 | |||
| WheelDeltaX | |||
|- | |||
| 0x1C | |||
| 0x4 | |||
| WheelDeltaY | |||
|- | |||
| 0x20 | |||
| 0x4 | |||
| [[#MouseButtonSet|Buttons]] | |||
|- | |||
| 0x24 | |||
| 0x4 | |||
| [[#MouseAttributeSet|Attributes]] | |||
|} | |} | ||
=== | == KeyboardSharedMemoryFormat == | ||
This is "nn::hid::detail::KeyboardSharedMemoryFormat". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x3D8 | |||
| [[#KeyboardLifo]] | |||
|} | |||
=== KeyboardLifo === | |||
This is "nn::hid::detail::KeyboardLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 404: | Line 426: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | RingLifoVptr | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| | | BufferCount | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | Tail | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| | | Count | ||
|- | |||
| 0x20 | |||
| 0x38 * 17 | |||
| Array of [[#KeyboardStateAtomicStorage]] | |||
|} | |} | ||
=== | ==== KeyboardStateAtomicStorage ==== | ||
This is "nn::hid::detail::KeyboardStateAtomicStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 428: | Line 456: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| | | 0x30 | ||
| | | [[#KeyboardState]] | ||
|} | |} | ||
== | ===== KeyboardState ===== | ||
This is "nn::hid::detail::KeyboardState". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 443: | Line 473: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | |||
| 0x8 | |||
| [[#KeyboardModifierSet|Modifiers]] | |||
|- | |||
| 0x10 | |||
| 0x20 | | 0x20 | ||
| | | [[#KeyboardKeySet|Keys]] | ||
|} | |} | ||
== | == BasicXpadSharedMemoryFormat == | ||
This is "nn::hid::detail::BasicXpadSharedMemoryFormat". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 459: | Line 495: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x400 * 4 | ||
| | | Array of [[#BasicXpadSharedMemoryEntry]] | ||
|} | |||
=== BasicXpadSharedMemoryEntry === | |||
This is "nn::hid::detail::BasicXpadSharedMemoryEntry". | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
! Offset | |||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 | ||
| | | 0x2C8 | ||
| | | [[#BasicXpadLifo]] | ||
|} | |} | ||
=== | ==== BasicXpadLifo ==== | ||
This is "nn::hid::detail::BasicXpadLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 484: | Line 524: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | RingLifoVptr | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | |||
| BufferCount | |||
|- | |||
| 0x10 | | 0x10 | ||
| | | 0x8 | ||
| Tail | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Count | |||
|- | |||
| 0x20 | |||
| 0x28 * 17 | |||
| Array of [[#BasicXpadStateAtomicStorage]] | |||
|} | |} | ||
== | ===== BasicXpadStateAtomicStorage ===== | ||
This is "nn::hid::detail::BasicXpadStateAtomicStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 499: | Line 553: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | |||
| 0x20 | | 0x20 | ||
| | | [[#BasicXpadState]] | ||
|} | |} | ||
=== | ====== BasicXpadState ====== | ||
This is "nn::hid::detail::BasicXpadState". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 516: | Line 572: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| | | 0x4 | ||
| | | [[#BasicXpadAttributeSet|Attributes]] | ||
|- | |||
| 0xC | |||
| 0x4 | |||
| [[#BasicXpadButtonSet|Buttons]] | |||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | [[#AnalogStickState|AnalogStickL]] | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| | | [[#AnalogStickState|AnalogStickR]] | ||
|} | |} | ||
== | == HomeButtonSharedMemoryFormat == | ||
This is "nn::hid::detail::HomeButtonSharedMemoryFormat". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 539: | Line 601: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x1B8 | ||
| [[#HomeButtonLifo]] | |||
| | |||
|} | |} | ||
== | === HomeButtonLifo === | ||
This is "nn::hid::detail::HomeButtonLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 572: | Line 616: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | RingLifoVptr | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| | | BufferCount | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | Tail | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| | | Count | ||
|- | |||
| 0x20 | |||
| 0x18 * 17 | |||
| Array of [[#HomeButtonStateAtomicStorage]] | |||
|} | |} | ||
=== | ==== HomeButtonStateAtomicStorage ==== | ||
This is "nn::hid::detail::HomeButtonStateAtomicStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 596: | Line 646: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x10 | | 0x10 | ||
| | | [[#HomeButtonState]] | ||
|} | |} | ||
== | ===== HomeButtonState ===== | ||
This is "nn::hid::system::HomeButtonState". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 611: | Line 663: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| | | 0x8 | ||
| | | 0x8 | ||
| | | [[#HomeButtonSet|Buttons]] | ||
|} | |} | ||
== | == SleepButtonSharedMemoryFormat == | ||
This is "nn::hid::detail::SleepButtonSharedMemoryFormat". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 627: | Line 681: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x1B8 | ||
| | | [[#SleepButtonLifo]] | ||
|} | |} | ||
=== | === SleepButtonLifo === | ||
This is "nn::hid::detail::SleepButtonLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 652: | Line 696: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | RingLifoVptr | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | |||
| BufferCount | |||
|- | |||
| 0x10 | | 0x10 | ||
| | | 0x8 | ||
| Tail | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Count | |||
|- | |||
| 0x20 | |||
| 0x18 * 17 | |||
| Array of [[#SleepButtonStateAtomicStorage]] | |||
|} | |} | ||
== | ==== SleepButtonStateAtomicStorage ==== | ||
This | This is "nn::hid::detail::SleepButtonStateAtomicStorage". | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 671: | Line 725: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| | | 0x8 | ||
| | | 0x10 | ||
| | | [[#SleepButtonState]] | ||
|} | |} | ||
=== | ===== SleepButtonState ===== | ||
This is "nn::hid::system::SleepButtonState". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 687: | Line 743: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| | | 0x8 | ||
| | | 0x8 | ||
| | | [[#SleepButtonSet|Buttons]] | ||
|} | |} | ||
==== | == CaptureButtonSharedMemoryFormat == | ||
This is "nn::hid::detail::CaptureButtonSharedMemoryFormat". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x1B8 | |||
| [[#CaptureButtonLifo]] | |||
|} | |||
=== CaptureButtonLifo === | |||
This is "nn::hid::detail::CaptureButtonLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 704: | Line 776: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | RingLifoVptr | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| | | BufferCount | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | Tail | ||
|- | |- | ||
| 0x18 | | 0x18 | ||
| 0x8 | | 0x8 | ||
| | | Count | ||
|- | |||
| 0x20 | |||
| 0x18 * 17 | |||
| Array of [[#CaptureButtonStateAtomicStorage]] | |||
|} | |} | ||
==== | ==== CaptureButtonStateAtomicStorage ==== | ||
This is "nn::hid::detail::CaptureButtonStateAtomicStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 728: | Line 806: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | SamplingNumber | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x10 | | 0x10 | ||
| | | [[#CaptureButtonState]] | ||
|} | |} | ||
=== | ===== CaptureButtonState ===== | ||
This is "nn::hid::system::CaptureButtonState". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 747: | Line 823: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| 0x20 | | 0x8 | ||
| [[# | | SamplingNumber | ||
|- | |- | ||
| 0x20 | | 0x8 | ||
| 0x28 * 2 | | 0x8 | ||
| Array of [[# | | [[#CaptureButtonSet|Buttons]] | ||
|} | |} | ||
==== | == InputDetectorSharedMemoryFormat == | ||
{| class="wikitable" border="1" | This is "nn::hid::detail::InputDetectorSharedMemoryFormat". | ||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x80 * 16 | |||
| Array of [[#InputDetectorSharedMemoryEntry]] | |||
|} | |||
=== InputDetectorSharedMemoryEntry === | |||
This is "nn::hid::detail::InputDetectorSharedMemoryEntry". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x50 | |||
| [[#InputDetectorLifo]] | |||
|} | |||
==== InputDetectorLifo ==== | |||
This is "nn::hid::detail::InputDetectorLifo". 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 * 2 | |||
| Array of [[#InputDetectorStateAtomicStorage]] | |||
|} | |||
===== InputDetectorStateAtomicStorage ===== | |||
This is "nn::hid::detail::InputDetectorStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x10 | |||
| [[#InputDetectorState]] | |||
|} | |||
====== InputDetectorState ====== | |||
This is "nn::hid::detail::InputDetectorState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! 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]]. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x400 * 16 | |||
| Array of [[#UniquePadSharedMemoryEntry]] | |||
|} | |||
=== UniquePadSharedMemoryEntry === | |||
This is "nn::hid::detail::UniquePadSharedMemoryEntry". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x1E0 | |||
| [[#UniquePadLifo]] | |||
|} | |||
==== UniquePadLifo ==== | |||
This is "nn::hid::detail::UniquePadLifo". This is a RingLifo object. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x80 | |||
| [[#UniquePadConfigLifo]] | |||
|- | |||
| 0x80 | |||
| 0x70 * 2 | |||
| Array of [[#AnalogStickCalibrationStateImplLifo]] | |||
|- | |||
| 0x160 | |||
| 0x40 | |||
| [[#SixAxisSensorUserCalibrationStateLifo]] | |||
|- | |||
| 0x1A0 | |||
| 0x8 | |||
| UniquePadConfigMutex | |||
|} | |||
===== UniquePadConfigLifo ===== | |||
This is "nn::hid::detail::UniquePadConfigLifo". 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 * 2 | |||
| Array of [[#UniquePadConfigAtomicStorage]] | |||
|} | |||
====== UniquePadConfigAtomicStorage ====== | |||
This is "nn::hid::detail::UniquePadConfigAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x28 | |||
| [[#UniquePadConfig]] | |||
|} | |||
======= UniquePadConfig ======= | |||
This is "nn::hid::detail::UniquePadConfig". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x4 | |||
| [[#UniquePadType|Type]] | |||
|- | |||
| 0x4 | |||
| 0x4 | |||
| [[#UniquePadInterface|Interface]] | |||
|- | |||
| 0x8 | |||
| 0x10 | |||
| [[#UniquePadSerialNumber|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. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| RingLifoVptr | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| BufferCount | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| Tail | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| Count | |||
|- | |||
| 0x20 | |||
| 0x28 * 2 | |||
| Array of [[#AnalogStickCalibrationStateImpl]] | |||
|} | |||
====== AnalogStickCalibrationStateImplAtomicStorage ====== | |||
This is "nn::hid::detail::AnalogStickCalibrationStateImplAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x20 | |||
| [[#AnalogStickCalibrationStateImpl]] | |||
|} | |||
======= AnalogStickCalibrationStateImpl ======= | |||
This is "nn::hid::detail::AnalogStickCalibrationStateImpl". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| [[#AnalogStickState|State]] | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| [[#AnalogStickCalibrationFlagsSet|Flags]] | |||
|- | |||
| 0x10 | |||
| 0x8 | |||
| Stage | |||
|- | |||
| 0x18 | |||
| 0x8 | |||
| SamplingNumber | |||
|} | |||
===== SixAxisSensorUserCalibrationStateLifo ===== | |||
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateLifo". 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 [[#SixAxisSensorUserCalibrationStateAtomicStorage]] | |||
|} | |||
====== SixAxisSensorUserCalibrationStateAtomicStorage ====== | |||
This is "nn::hid::detail::SixAxisSensorUserCalibrationStateAtomicStorage". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| SamplingNumber | |||
|- | |||
| 0x8 | |||
| 0x18 | |||
| [[#SixAxisSensorUserCalibrationState]] | |||
|} | |||
======= UniquePadConfig ======= | |||
This is "nn::hid::detail::UniquePadConfig". | |||
{| class="wikitable" border="1" | |||
|- | |- | ||
! Offset | ! Offset | ||
Line 764: | Line 1,200: | ||
| 0x0 | | 0x0 | ||
| 0x8 | | 0x8 | ||
| | | [[#SixAxisSensorUserCalibrationFlagsSet|Flags]] | ||
|- | |- | ||
| 0x8 | | 0x8 | ||
| 0x8 | | 0x8 | ||
| | | Stage | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
| 0x8 | | 0x8 | ||
| | | SamplingNumber | ||
|} | |} | ||
== | == NpadSharedMemoryFormat == | ||
This is "nn::hid::detail::NpadSharedMemoryFormat". | |||
This section contains a series of 10 0x5000 byte structures describing each available controller. | This section contains a series of 10 0x5000 byte structures describing each available controller. | ||
Line 1,399: | Line 1,817: | ||
|} | |} | ||
== | == GestureSharedMemoryFormat == | ||
This is "nn::hid::detail::GestureSharedMemoryFormat". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 1,455: | Line 1,875: | ||
|} | |} | ||
== | == ConsoleSixAxisSensorSharedMemoryFormat == | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- |