IR:RST Shared Memory
This page describes the format of the ir:rst's shared memory. It contains the current state of New 3DS input device, ie the c-stick and the ZL/ZR shoulder buttons.
Size: 0x88 ?
Offset 0x0
| Relative offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | A counter that ranges from 0 to 7, presumably to indicate which entry was last updated |
| 0x4 | 0x4 | Unused ? (value 0x0) |
| 0x8 | 0x80 | Array of 8 entries, where each entry (see below) is 0x10-bytes. |
IR 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.
PAD State
| Bit | Description |
|---|---|
| 14 | ZL |
| 15 | ZR |
| 24 | C-stick right |
| 25 | C-stick left |
| 26 | C-stick up |
| 27 | C-stick down |
The ir:rst PAD entries are the same format as HID ones and meant to be ORd with them (they are complementary, there is no overlap in used bits).
Entry format
| Relative offset | Size | Description |
|---|---|---|
| 0x0 | 0x4 | Current PAD state. |
| 0x4 | 0x4 | PAD state for buttons which were pressed(bitmasks which changed from value 0 to value 1) since the last HID update. |
| 0x8 | 0x4 | PAD state for buttons which were released(bitmasks which changed from value 1 to value 0) since the last HID update. |
| 0xC | 0x4 | This stores c-stick info: the low s16 is the X coordinate, the high s16 is the Y coordinate. The c-stick center is exactly 0 for these fields. The range for these fields is approximately: -0x9C(bottom/left) - 0x9C(top/right). |