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