|
|
@ -113,8 +113,13 @@ public: |
|
|
BitField<2, 1, u32> joycon_dual; |
|
|
BitField<2, 1, u32> joycon_dual; |
|
|
BitField<3, 1, u32> joycon_left; |
|
|
BitField<3, 1, u32> joycon_left; |
|
|
BitField<4, 1, u32> joycon_right; |
|
|
BitField<4, 1, u32> joycon_right; |
|
|
|
|
|
|
|
|
BitField<6, 1, u32> pokeball; // TODO(ogniK): Confirm when possible |
|
|
|
|
|
|
|
|
BitField<5, 1, u32> gamecube; |
|
|
|
|
|
BitField<6, 1, u32> pokeball; |
|
|
|
|
|
BitField<7, 1, u32> lark; |
|
|
|
|
|
BitField<8, 1, u32> handheld_lark; |
|
|
|
|
|
BitField<9, 1, u32> lucia; |
|
|
|
|
|
BitField<29, 1, u32> system_ext; |
|
|
|
|
|
BitField<30, 1, u32> system; |
|
|
}; |
|
|
}; |
|
|
}; |
|
|
}; |
|
|
static_assert(sizeof(NpadStyleSet) == 4, "NpadStyleSet is an invalid size"); |
|
|
static_assert(sizeof(NpadStyleSet) == 4, "NpadStyleSet is an invalid size"); |
|
|
@ -285,6 +290,9 @@ private: |
|
|
|
|
|
|
|
|
BitField<26, 1, u64> right_sl; |
|
|
BitField<26, 1, u64> right_sl; |
|
|
BitField<27, 1, u64> right_sr; |
|
|
BitField<27, 1, u64> right_sr; |
|
|
|
|
|
|
|
|
|
|
|
BitField<28, 1, u64> palma; |
|
|
|
|
|
BitField<30, 1, u64> handheld_left_b; |
|
|
}; |
|
|
}; |
|
|
}; |
|
|
}; |
|
|
static_assert(sizeof(ControllerPadState) == 8, "ControllerPadState is an invalid size"); |
|
|
static_assert(sizeof(ControllerPadState) == 8, "ControllerPadState is an invalid size"); |
|
|
@ -329,6 +337,15 @@ private: |
|
|
}; |
|
|
}; |
|
|
static_assert(sizeof(NPadGeneric) == 0x350, "NPadGeneric is an invalid size"); |
|
|
static_assert(sizeof(NPadGeneric) == 0x350, "NPadGeneric is an invalid size"); |
|
|
|
|
|
|
|
|
|
|
|
struct SixAxisAttributes { |
|
|
|
|
|
union { |
|
|
|
|
|
u32_le raw{}; |
|
|
|
|
|
BitField<0, 1, u32> IsConnected; |
|
|
|
|
|
BitField<1, 1, u32> IsInterpolated; |
|
|
|
|
|
}; |
|
|
|
|
|
}; |
|
|
|
|
|
static_assert(sizeof(SixAxisAttributes) == 4, "SixAxisAttributes is an invalid size"); |
|
|
|
|
|
|
|
|
struct SixAxisStates { |
|
|
struct SixAxisStates { |
|
|
s64_le timestamp{}; |
|
|
s64_le timestamp{}; |
|
|
INSERT_PADDING_WORDS(2); |
|
|
INSERT_PADDING_WORDS(2); |
|
|
@ -337,7 +354,8 @@ private: |
|
|
Common::Vec3f gyro{}; |
|
|
Common::Vec3f gyro{}; |
|
|
Common::Vec3f rotation{}; |
|
|
Common::Vec3f rotation{}; |
|
|
std::array<Common::Vec3f, 3> orientation{}; |
|
|
std::array<Common::Vec3f, 3> orientation{}; |
|
|
s64_le always_one{1}; |
|
|
|
|
|
|
|
|
SixAxisAttributes attribute; |
|
|
|
|
|
INSERT_PADDING_BYTES(4); // Reserved |
|
|
}; |
|
|
}; |
|
|
static_assert(sizeof(SixAxisStates) == 0x68, "SixAxisStates is an invalid size"); |
|
|
static_assert(sizeof(SixAxisStates) == 0x68, "SixAxisStates is an invalid size"); |
|
|
|
|
|
|
|
|
@ -356,10 +374,19 @@ private: |
|
|
struct NPadProperties { |
|
|
struct NPadProperties { |
|
|
union { |
|
|
union { |
|
|
s64_le raw{}; |
|
|
s64_le raw{}; |
|
|
|
|
|
BitField<0, 1, s64> is_charging_joy_dual; |
|
|
|
|
|
BitField<1, 1, s64> is_charging_joy_left; |
|
|
|
|
|
BitField<2, 1, s64> is_charging_joy_right; |
|
|
|
|
|
BitField<3, 1, s64> is_powered_joy_dual; |
|
|
|
|
|
BitField<4, 1, s64> is_powered_joy_left; |
|
|
|
|
|
BitField<5, 1, s64> is_powered_joy_right; |
|
|
|
|
|
BitField<9, 1, s64> is_system_unsuported_button; |
|
|
|
|
|
BitField<10, 1, s64> is_system_ext_unsuported_button; |
|
|
BitField<11, 1, s64> is_vertical; |
|
|
BitField<11, 1, s64> is_vertical; |
|
|
BitField<12, 1, s64> is_horizontal; |
|
|
BitField<12, 1, s64> is_horizontal; |
|
|
BitField<13, 1, s64> use_plus; |
|
|
BitField<13, 1, s64> use_plus; |
|
|
BitField<14, 1, s64> use_minus; |
|
|
BitField<14, 1, s64> use_minus; |
|
|
|
|
|
BitField<15, 1, s64> use_directional_buttons; |
|
|
}; |
|
|
}; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|