mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 14:41:38 -04:00
100 lines
3.2 KiB
C
100 lines
3.2 KiB
C
#ifndef M_VIBCTL_H
|
|
#define M_VIBCTL_H
|
|
|
|
#include "types.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define mVibctl_FLAG_FORCE_STOP_NONE 0
|
|
#define mVibctl_FLAG_FORCE_STOP0 (1 << 0) // 1
|
|
#define mVibctl_FLAG_FORCE_STOP1 (1 << 1) // 2
|
|
#define mVibctl_FLAG_FORCE_STOP2 (1 << 2) // 4
|
|
#define mVibctl_FLAG_FORCE_STOP3 (1 << 3) // 8
|
|
#define mVibctl_FLAG_FORCE_STOP_ALL \
|
|
(mVibctl_FLAG_FORCE_STOP0 | mVibctl_FLAG_FORCE_STOP1 | mVibctl_FLAG_FORCE_STOP2 | mVibctl_FLAG_FORCE_STOP3) // 15
|
|
|
|
enum {
|
|
mVibctl_ELEM_ENTRY_ATTACK, // fade-in program
|
|
mVibctl_ELEM_ENTRY_SUSTAIN, // sustain program
|
|
mVibctl_ELEM_ENTRY_RELEASE, // fade-out program
|
|
mVibctl_ELEM_ENTRY_END, // program has finished
|
|
|
|
mVibctl_ELEM_ENTRY_NUM = mVibctl_ELEM_ENTRY_END
|
|
};
|
|
|
|
enum {
|
|
mVibctl_VIB_PROG_NON, // rumble config attack, shake tree attack
|
|
mVibctl_VIB_PROG_FFF, // fish touch bobber, fishing rod cast, rumble config sustain, Mouth of Truth furniture
|
|
// interaction attack & sustain, shovel hits soft object, net swing, axe cut attack & release,
|
|
// trip attack, pick weed sustain & release
|
|
mVibctl_VIB_PROG_F, // unused?
|
|
mVibctl_VIB_PROG_MF, // unused?
|
|
mVibctl_VIB_PROG_MP, // unused?
|
|
mVibctl_VIB_PROG_P, // rumble config release, shake tree release
|
|
mVibctl_VIB_PROG_FUNBARI, // unused?
|
|
mVibctl_VIB_PROG_ANAHORI, // digging with shovel
|
|
mVibctl_VIB_PROG_ANAUME, // filling hole with shovel
|
|
mVibctl_VIB_PROG_IMPACT, // fish bite bobber, shovel hits hard object
|
|
mVibctl_VIB_PROG_KI_GA_TAORERU, // axe cut sustain
|
|
mVibctl_VIB_PROG_KI_WO_YUSURU, // shake tree sustain
|
|
mVibctl_VIB_PROG_KORONODA, // trip sustain
|
|
mVibctl_VIB_PROG_SURPRISE, // Mouth of Truth furniture interaction release
|
|
mVibctl_VIB_PROG_DUMMY_B, // unused?
|
|
mVibctl_VIB_PROG_SAMPLE, // unused?
|
|
|
|
mVibctl_VIB_PROG_NUM
|
|
};
|
|
|
|
#define mVibctl_ELEM_NUM 4
|
|
|
|
typedef struct vibration_element_entry_s {
|
|
int type;
|
|
int frames;
|
|
f32 step;
|
|
} mVibInfo_elem_entry_c;
|
|
|
|
typedef struct vibration_element_s {
|
|
mVibInfo_elem_entry_c entries[mVibctl_ELEM_ENTRY_NUM];
|
|
f32 step0;
|
|
f32 step1;
|
|
int now_entry;
|
|
int state_idx;
|
|
f32 frame_intensity;
|
|
int entry_frame;
|
|
f32 now_intensity;
|
|
int command; // for padmgr, PAD_MOTOR_*
|
|
} mVibElem_c;
|
|
|
|
typedef struct vibration_info_s {
|
|
mVibElem_c* target_elem;
|
|
mVibElem_c elements[mVibctl_ELEM_NUM];
|
|
int num_elements;
|
|
int force_stop;
|
|
int last_force_stop;
|
|
} mVibInfo_c;
|
|
|
|
typedef struct vibration_work_data_S {
|
|
const u8* data;
|
|
int count;
|
|
} mVibWorkData_c;
|
|
|
|
extern void mVibctl_ct();
|
|
extern void mVibctl_init0();
|
|
extern void mVibctl_init();
|
|
extern void mVibctl_cleanup();
|
|
extern void mVibctl_reset();
|
|
extern void mVibctl_entry(int total_frames, int attack_type, int sustain_type, int release_type, int attack_frames,
|
|
int sustain_frames, int release_frames, f32 step);
|
|
extern void mVibctl_simple_entry(int total_frames, int type, int attack_frames, int sustain_frames, int release_frames,
|
|
f32 step);
|
|
extern void mVibctl_set_force_stop(int force_stop);
|
|
extern void mVibctl_clr_force_stop(int force_stop);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|