1#include <inttypes.h>
2typedef uint32_t mpers_ptr_t;
3typedef
4struct {
5uint16_t type;
6int16_t id;
7uint16_t direction;
8struct {
9uint16_t button;
10uint16_t interval;
11} ATTRIBUTE_PACKED trigger;
12struct {
13uint16_t length;
14uint16_t delay;
15} ATTRIBUTE_PACKED replay;
16unsigned char mpers_filler_1[2];
17union {
18struct {
19int16_t level;
20struct {
21uint16_t attack_length;
22uint16_t attack_level;
23uint16_t fade_length;
24uint16_t fade_level;
25} ATTRIBUTE_PACKED envelope;
26} ATTRIBUTE_PACKED constant;
27struct {
28int16_t start_level;
29int16_t end_level;
30struct {
31uint16_t attack_length;
32uint16_t attack_level;
33uint16_t fade_length;
34uint16_t fade_level;
35} ATTRIBUTE_PACKED envelope;
36} ATTRIBUTE_PACKED ramp;
37struct {
38uint16_t waveform;
39uint16_t period;
40int16_t magnitude;
41int16_t offset;
42uint16_t phase;
43struct {
44uint16_t attack_length;
45uint16_t attack_level;
46uint16_t fade_length;
47uint16_t fade_level;
48} ATTRIBUTE_PACKED envelope;
49unsigned char mpers_filler_2[2];
50uint32_t custom_len;
51mpers_ptr_t custom_data;
52} ATTRIBUTE_PACKED periodic;
53struct {
54uint16_t right_saturation;
55uint16_t left_saturation;
56int16_t right_coeff;
57int16_t left_coeff;
58uint16_t deadband;
59int16_t center;
60} ATTRIBUTE_PACKED condition[2];
61struct {
62uint16_t strong_magnitude;
63uint16_t weak_magnitude;
64} ATTRIBUTE_PACKED rumble;
65} u;
66} ATTRIBUTE_PACKED mx32_struct_ff_effect;
67#define MPERS_mx32_struct_ff_effect mx32_struct_ff_effect
68