|
|
|
@ -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; |
|
|
|
}; |
|
|
|
|