diff --git a/nx/include/switch/services/irs.h b/nx/include/switch/services/irs.h index 5a24158d..751424e9 100644 --- a/nx/include/switch/services/irs.h +++ b/nx/include/switch/services/irs.h @@ -315,23 +315,16 @@ typedef struct { s64 sampling_number; ///< SamplingNumber u64 timestamp; ///< TimeStamp - u8 pointing_status0; ///< PointingStatus - u8 reserved0[0xb]; ///< Reserved - float position0_x; ///< PositionX - float position0_y; ///< PositionY - u8 reserved1[0xc]; ///< Reserved - - u8 pointing_status1; ///< PointingStatus - u8 reserved2[0xb]; ///< Reserved - float position1_x; ///< PositionX - float position1_y; ///< PositionY - u8 reserved3[0xc]; ///< Reserved - - u8 pointing_status2; ///< PointingStatus - u8 reserved4[0xb]; ///< Reserved - float position2_x; ///< PositionX - float position2_y; ///< PositionY - u8 reserved5[0xc]; ///< Reserved + struct { + u8 pointing_status; ///< PointingStatus + u8 reserved[0x3]; ///< Reserved + u8 unk_x4[0x4]; ///< Unknown + float unk_x8; ///< Unknown + float position_x; ///< PositionX + float position_y; ///< PositionY + float unk_x14; ///< Unknown + IrsRect window_of_interest; ///< WindowOfInterest + } data[3]; } IrsPointingProcessorMarkerState; /// PointingProcessorState diff --git a/nx/source/services/irs.c b/nx/source/services/irs.c index 729ad638..9a802b7c 100644 --- a/nx/source/services/irs.c +++ b/nx/source/services/irs.c @@ -1062,20 +1062,12 @@ Result irsGetPointingProcessorStates(IrsIrCameraHandle handle, IrsPointingProces states[i].sampling_number = tmp_states[i].sampling_number; states[i].timestamp = tmp_states[i].timestamp; - if (tmp_states[i].pointing_status0) { - pos_x+= tmp_states[i].position0_x; - pos_y+= tmp_states[i].position0_y; - poscount++; - } - if (tmp_states[i].pointing_status1) { - pos_x+= tmp_states[i].position1_x; - pos_y+= tmp_states[i].position1_y; - poscount++; - } - if (tmp_states[i].pointing_status2) { - pos_x+= tmp_states[i].position2_x; - pos_y+= tmp_states[i].position2_y; - poscount++; + for (u32 pointi=0; pointi<3; pointi++) { + if (tmp_states[i].data[pointi].pointing_status) { + pos_x+= tmp_states[i].data[pointi].position_x; + pos_y+= tmp_states[i].data[pointi].position_y; + poscount++; + } } states[i].pointing_status = poscount < 3;