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"  | ||
|-  | |-  | ||