HID Shared Memory: Difference between revisions

No edit summary
No edit summary
Line 12: Line 12:
!  Description
!  Description
|-
|-
| 0x1C
| 0x0
| 0x4
| 0x8
| [[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).
| [[SVC|svcGetSystemTick]] tick-count output, for when HID module updates entry index0 in the below array.
|-
|-
| 0x28
| 0x8
| 0x4
| 0x8
| Second PAD state entry.
| 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.
|-
|-
| 0x34
| 0x10
| 0x4
| 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).
| Index in the following array which was last updated by HID module.
|-
|-
| 0x38
| 0x1C
| 0x4
| 0x4
| Third PAD state entry.
| [[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).
|-
|-
| 0x44
| 0x28
| 0x4
| 0x80
| Second circle-pad info entry.
| Array of 8 entries, where each entry(see below) is 0x10-bytes.
|}
 
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==
{| class="wikitable" border="1"
|-
|-
| 0x48
!  Relative offset
| 0x4
!  Size
| Fourth PAD state entry.
!  Description
|-
|-
| 0x54
| 0x0
| 0x4
| 0x4
| Third circle-pad info entry.
| PAD state.
|-
|-
| 0x58
| 0x4
| 0x4
| Fifth PAD state entry.
|-
| 0x64
| 0x4
| 0x4
| Fourth circle-pad info entry.
| ?
|-
|-
| 0x68
| 0x8
| 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
| 0x4
| Ninth PAD state entry.
| ?
|-
|-
| 0xA4
| 0xC
| 0x4
| 0x4
| Eighth circle-pad info entry.
| This stores circle-pad info: the low s16 is the X coordinate, the high s16 is the Y coordinate. The circle-pad center is approximately 0 for these fields. The range for these fields is approximately: -0x9C(bottom/left) - 0x9C(top/right).
|}
|}


Line 98: Line 76:
| 0x10
| 0x10
| 0x4
| 0x4
| Index in the array at +0x20 which was last updated by HID module.
| Index in the following array which was last updated by HID module.
|-
|-
| 0x18
| 0x18