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). |