| #include <inttypes.h> |
| typedef uint32_t mpers_ptr_t; |
| typedef |
| struct { |
| uint16_t type; |
| int16_t id; |
| uint16_t direction; |
| struct { |
| uint16_t button; |
| uint16_t interval; |
| } ATTRIBUTE_PACKED trigger; |
| struct { |
| uint16_t length; |
| uint16_t delay; |
| } ATTRIBUTE_PACKED replay; |
| unsigned char mpers_filler_1[2]; |
| union { |
| struct { |
| int16_t level; |
| struct { |
| uint16_t attack_length; |
| uint16_t attack_level; |
| uint16_t fade_length; |
| uint16_t fade_level; |
| } ATTRIBUTE_PACKED envelope; |
| } ATTRIBUTE_PACKED constant; |
| struct { |
| int16_t start_level; |
| int16_t end_level; |
| struct { |
| uint16_t attack_length; |
| uint16_t attack_level; |
| uint16_t fade_length; |
| uint16_t fade_level; |
| } ATTRIBUTE_PACKED envelope; |
| } ATTRIBUTE_PACKED ramp; |
| struct { |
| uint16_t waveform; |
| uint16_t period; |
| int16_t magnitude; |
| int16_t offset; |
| uint16_t phase; |
| struct { |
| uint16_t attack_length; |
| uint16_t attack_level; |
| uint16_t fade_length; |
| uint16_t fade_level; |
| } ATTRIBUTE_PACKED envelope; |
| unsigned char mpers_filler_2[2]; |
| uint32_t custom_len; |
| mpers_ptr_t custom_data; |
| } ATTRIBUTE_PACKED periodic; |
| struct { |
| uint16_t right_saturation; |
| uint16_t left_saturation; |
| int16_t right_coeff; |
| int16_t left_coeff; |
| uint16_t deadband; |
| int16_t center; |
| } ATTRIBUTE_PACKED condition[2]; |
| struct { |
| uint16_t strong_magnitude; |
| uint16_t weak_magnitude; |
| } ATTRIBUTE_PACKED rumble; |
| } u; |
| } ATTRIBUTE_PACKED mx32_struct_ff_effect; |
| #define MPERS_mx32_struct_ff_effect mx32_struct_ff_effect |