|
|
@@ -5,6 +5,7 @@
|
|
|
#pragma once
|
|
|
|
|
|
#include <array>
|
|
|
+#include "common/bit_field.h"
|
|
|
#include "common/common_funcs.h"
|
|
|
#include "common/common_types.h"
|
|
|
#include "common/swap.h"
|
|
|
@@ -35,11 +36,40 @@ private:
|
|
|
};
|
|
|
static_assert(sizeof(AnalogStick) == 0x8);
|
|
|
|
|
|
+ struct PadState {
|
|
|
+ union {
|
|
|
+ u32_le raw{};
|
|
|
+ BitField<0, 1, u32_le> a;
|
|
|
+ BitField<1, 1, u32_le> b;
|
|
|
+ BitField<2, 1, u32_le> x;
|
|
|
+ BitField<3, 1, u32_le> y;
|
|
|
+ BitField<4, 1, u32_le> l;
|
|
|
+ BitField<5, 1, u32_le> r;
|
|
|
+ BitField<6, 1, u32_le> zl;
|
|
|
+ BitField<7, 1, u32_le> zr;
|
|
|
+ BitField<8, 1, u32_le> plus;
|
|
|
+ BitField<9, 1, u32_le> minus;
|
|
|
+ BitField<10, 1, u32_le> d_left;
|
|
|
+ BitField<11, 1, u32_le> d_up;
|
|
|
+ BitField<12, 1, u32_le> d_right;
|
|
|
+ BitField<13, 1, u32_le> d_down;
|
|
|
+ };
|
|
|
+ };
|
|
|
+ static_assert(sizeof(PadState) == 0x4, "PadState is an invalid size");
|
|
|
+
|
|
|
+ struct Attributes {
|
|
|
+ union {
|
|
|
+ u32_le raw{};
|
|
|
+ BitField<0, 1, u32_le> connected;
|
|
|
+ };
|
|
|
+ };
|
|
|
+ static_assert(sizeof(Attributes) == 0x4, "Attributes is an invalid size");
|
|
|
+
|
|
|
struct PadStates {
|
|
|
s64_le sampling_number;
|
|
|
s64_le sampling_number2;
|
|
|
- u32_le attribute;
|
|
|
- u32_le button_state;
|
|
|
+ Attributes attribute;
|
|
|
+ PadState pad_state;
|
|
|
AnalogStick r_stick;
|
|
|
AnalogStick l_stick;
|
|
|
};
|