IRRST Shared Memory

From 3dbrew
Revision as of 01:25, 26 October 2014 by Smea (talk | contribs)
Jump to navigation Jump to search

This is the shared-memory for "ir:rst". The additional New 3DS HID data is stored here. The structure of this is similar to the HID_Shared_Memory sections.

The total size of this shared-mem is 0x98-bytes.

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.

Entry format

Relative offset Size Description
0x0 0x4 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 0x2 C-stick Y value (center is exactly 0, ranges from -0x9C to 0x9C)
0xE 0x2 C-stick X value (center is exactly 0, ranges from -0x9C to 0x9C)

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