Difference between revisions of "HID Shared Memory"
Line 87: | Line 87: | ||
! Size | ! Size | ||
! Description | ! Description | ||
+ | |- | ||
+ | | 0x0 | ||
+ | | 0x8 | ||
+ | | [[SVC|svcGetSystemTick]] tick-count output, for when HID module updates entry index0 in the below array. | ||
+ | |- | ||
+ | | 0x8 | ||
+ | | 0x8 | ||
+ | | Before the above tick-count field is updated, that value is copied into this field. Therefore, this contains the tick-count for the previous time that entry index0 in the below array was updated by HID module. | ||
|- | |- | ||
| 0x10 | | 0x10 | ||
Line 98: | Line 106: | ||
| 0x20 | | 0x20 | ||
| 0x40 | | 0x40 | ||
− | | 8 | + | | 8 Touch-screen entries, containing pixel coordinates. |
|} | |} | ||
Revision as of 02:46, 20 August 2014
This page describes the format of the HID shared memory.
The data for each of the below entries(PAD state, circle-pad, touch-screen, etc) is originally written by the HID module at different times per frame.
size: 0x2b0 (FIRM 4.4)
Offset 0x0
Relative offset | Size | Description |
---|---|---|
0x1C | 0x4 | PAD state. Bit set = button pressed, bit clear = button not pressed. Bit28-31 do not apply to this entry, but they apply to further PAD state entries. Bit28-31 are set when the corresponding circle pad coordinate is >=41 (or <=-41). |
0x28 | 0x4 | Second PAD state entry. |
0x34 | 0x4 | This stores circle-pad info: the low s16 is the X coordinate, the high s16 is the Y coordinate. The circle-pad center is ~0 for these fields. The range for these fields is approximately: -0x9C(bottom/left) - 0x9C(top/right). |
0x38 | 0x4 | Third PAD state entry. |
0x44 | 0x4 | Second circle-pad info entry. |
0x48 | 0x4 | Fourth PAD state entry. |
0x54 | 0x4 | Third circle-pad info entry. |
0x58 | 0x4 | Fifth PAD state entry. |
0x64 | 0x4 | Fourth circle-pad info entry. |
0x68 | 0x4 | Sixth PAD state entry. |
0x74 | 0x4 | Fifth circle-pad info entry. |
0x78 | 0x4 | Seventh PAD state entry. |
0x84 | 0x4 | Sixth circle-pad info entry. |
0x88 | 0x4 | Eighth PAD state entry. |
0x94 | 0x4 | Seventh circle-pad info entry. |
0x98 | 0x4 | Ninth PAD state entry. |
0xA4 | 0x4 | Eighth circle-pad info entry. |
Offset 0xA8
Relative offset | Size | Description |
---|---|---|
0x0 | 0x8 | svcGetSystemTick tick-count output, for when HID module updates entry index0 in the below array. |
0x8 | 0x8 | Before the above tick-count field is updated, that value is copied into this field. Therefore, this contains the tick-count for the previous time that entry index0 in the below array was updated by HID module. |
0x10 | 0x4 | Index in the array at +0x20 which was last updated by HID module. |
0x18 | 0x8 | Touch-screen entry, which seems to contain raw coordinate data prior to being converted to pixel coordinates. |
0x20 | 0x40 | 8 Touch-screen entries, containing pixel coordinates. |
This 0x60-byte region stores state for touch-screen related info. Each touch-screen entry is all-zero when the touch-screen is not being touched.
HID module first updates index0, then index1, and so on. When updating the array when the index is already 7, the index is reset to 0.
Entry format
Relative offset | Size | Description |
---|---|---|
0x0 | 0x2 | X coordinate. |
0x2 | 0x2 | Y coordinate. |
0x4 | 0x4 | The u8 at +0 here is 0x0 when this entry doesn't contain any actual data, value 0x1 indicates that this entry contains actual data. |
Offset 0x108
The size of this region is 0x50-bytes. This probably contains the gyroscope and/or accelerometer state?
Offset 0x158
The size of this region is 0xE0-bytes. Unknown, contains 0xFF/0x00 bytes?
Offset 0x238
The size of this region is 0x78-bytes. Unknown, contains 0xFF/0x00 bytes?