2022-08-13 02:48:34 +00:00
|
|
|
#ifndef _CRUMBLEVOICE_HPP
|
|
|
|
#define _CRUMBLEVOICE_HPP
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
|
|
|
#include "rstl/reserved_vector.hpp"
|
|
|
|
#include "rstl/vector.hpp"
|
|
|
|
|
|
|
|
enum ERumblePriority {
|
|
|
|
kRP_None,
|
|
|
|
kRP_One,
|
|
|
|
kRP_Two,
|
|
|
|
kRP_Three,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct SAdsrData {
|
|
|
|
f32 x0_attackGain;
|
|
|
|
f32 x4_autoReleaseDur;
|
|
|
|
f32 x8_attackDur;
|
|
|
|
f32 xc_decayDur;
|
|
|
|
f32 x10_sustainGain;
|
|
|
|
f32 x14_releaseDur;
|
|
|
|
bool x18_24_hasSustain : 1;
|
|
|
|
bool x18_25_autoRelease : 1;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct SAdsrDelta {
|
|
|
|
enum EPhase {
|
|
|
|
kP_Stop,
|
|
|
|
kP_PrePulse,
|
|
|
|
kP_Attack,
|
|
|
|
kP_Decay,
|
|
|
|
kP_Sustain,
|
|
|
|
kP_Release,
|
|
|
|
};
|
|
|
|
|
|
|
|
f32 x0_curIntensity;
|
|
|
|
f32 x4_attackTime;
|
|
|
|
f32 x8_decayTime;
|
|
|
|
f32 xc_releaseTime;
|
|
|
|
f32 x10_autoReleaseTime;
|
|
|
|
f32 x14_attackIntensity;
|
|
|
|
f32 x18_sustainIntensity;
|
|
|
|
ERumblePriority x1c_priority;
|
|
|
|
EPhase x20_phase;
|
|
|
|
};
|
|
|
|
|
|
|
|
class CRumbleVoice {
|
|
|
|
private:
|
|
|
|
rstl::vector< SAdsrData > x0_datas;
|
|
|
|
rstl::vector< SAdsrDelta > x10_deltas;
|
|
|
|
rstl::reserved_vector< s16, 4 > x20_handleIds;
|
|
|
|
s16 x2c_usedChannels;
|
|
|
|
u8 x2e_lastId;
|
|
|
|
};
|
|
|
|
|
2022-09-18 06:05:46 +00:00
|
|
|
#endif
|