mirror of
https://github.com/zeldaret/ss
synced 2026-05-24 07:10:53 -04:00
84 lines
2.5 KiB
C
84 lines
2.5 KiB
C
#ifndef RVL_SDK_AX_VPB_H
|
|
#define RVL_SDK_AX_VPB_H
|
|
#include "common.h"
|
|
#include "rvl/AX/AXPB.h"
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define AX_SAMPLE_RATE 32000
|
|
#define AX_VOICE_MAX 96
|
|
|
|
typedef u32 AXVPBSyncFlags;
|
|
enum AXVPBSyncFlags_et
|
|
{
|
|
AX_VPB_SYNC_FLAG_SRC_TYPE = (1 << 0),
|
|
AX_VPB_SYNC_FLAG_MIXER_CTRL = (1 << 1),
|
|
AX_VPB_SYNC_FLAG_STATE = (1 << 2),
|
|
AX_VPB_SYNC_FLAG_TYPE = (1 << 3),
|
|
AX_VPB_SYNC_FLAG_MIX = (1 << 4),
|
|
AX_VPB_SYNC_FLAG_ITD = (1 << 5),
|
|
AX_VPB_SYNC_FLAG_ITD_TARGET = (1 << 6),
|
|
AX_VPB_SYNC_FLAG_DPOP = (1 << 7),
|
|
AX_VPB_SYNC_FLAG_VE = (1 << 8),
|
|
AX_VPB_SYNC_FLAG_VE_DELTA = (1 << 9),
|
|
AX_VPB_SYNC_FLAG_ADDR = 1 << 10,
|
|
AX_VPB_SYNC_FLAG_ADDR_LOOP_FLAG = 1 << 11,
|
|
AX_VPB_SYNC_FLAG_ADDR_LOOP_ADDR = 1 << 12,
|
|
AX_VPB_SYNC_FLAG_ADDR_END_ADDR = 1 << 13,
|
|
AX_VPB_SYNC_FLAG_ADDR_CURRENT_ADDR = 1 << 14,
|
|
AX_VPB_SYNC_FLAG_ADPCM = 1 << 15,
|
|
AX_VPB_SYNC_FLAG_SRC = 1 << 16,
|
|
AX_VPB_SYNC_FLAG_SRC_RATIO = 1 << 17,
|
|
AX_VPB_SYNC_FLAG_ADPCM_LOOP = 1 << 18,
|
|
AX_VPB_SYNC_FLAG_LPF = 1 << 19,
|
|
AX_VPB_SYNC_FLAG_LPF_COEFS = 1 << 20,
|
|
AX_VPB_SYNC_FLAG_BIQUAD = 1 << 21,
|
|
AX_VPB_SYNC_FLAG_BIQUAD_COEFS = 1 << 22,
|
|
AX_VPB_SYNC_FLAG_RMT_ON = 1 << 23,
|
|
AX_VPB_SYNC_FLAG_RMT_MIXER_CTRL = 1 << 24,
|
|
AX_VPB_SYNC_FLAG_RMT_MIX = 1 << 25,
|
|
AX_VPB_SYNC_FLAG_RMT_DPOP = 1 << 26,
|
|
AX_VPB_SYNC_FLAG_RMT_SRC = 1 << 27,
|
|
AX_VPB_SYNC_FLAG_RMT_IIR = 1 << 28,
|
|
AX_VPB_SYNC_FLAG_RMT_IIR_LPF_COEFS = 1 << 29,
|
|
AX_VPB_SYNC_FLAG_RMT_IIR_BIQUAD_COEFS = 1 << 30,
|
|
AX_VPB_SYNC_FLAG_FULL_PB = 1 << 31
|
|
};
|
|
|
|
typedef void (*AXVoiceCallback)(void *voice);
|
|
|
|
typedef struct _AXVPB {
|
|
void *next; // at 0x0
|
|
void *prev; // at 0x4
|
|
void *next1; // at 0x8
|
|
u32 priority; // at 0xC
|
|
AXVoiceCallback callback; // at 0x10
|
|
u32 userContext; // at 0x14
|
|
u32 index; // at 0x18
|
|
u32 sync; // at 0x1C
|
|
u32 depop; // at 0x20
|
|
void *itdBuffer; // at 0x24
|
|
AXPB pb; // at 0x28
|
|
} AXVPB;
|
|
|
|
s32 __AXGetNumVoices(void);
|
|
void __AXServiceVPB(AXVPB *vpb);
|
|
void __AXDumpVPB(AXVPB *vpb);
|
|
void __AXSyncPBs(u32 baseCycles);
|
|
AXPB *__AXGetPBs(void);
|
|
void __AXSetPBDefault(AXVPB *vpb);
|
|
void __AXVPBInit(void);
|
|
void AXSetVoiceState(AXVPB *vpb, u16 state);
|
|
void AXSetVoiceAddr(AXVPB *vpb, AXPBADDR *addr);
|
|
void AXGetLpfCoefs(u16 freq, u16 *a, u16 *b);
|
|
void AXSetMaxDspCycles(u32 num);
|
|
s32 AXGetMaxVoices(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|