pokediamond/include/nitro/SND_exChannel_shared.h
2021-08-25 18:03:51 +02:00

115 lines
2.2 KiB
C

#ifndef GUARD_SND_EXCHANNEL_SHARED_H
#define GUARD_SND_EXCHANNEL_SHARED_H
#include "nitro/types.h"
#define SND_ENV_ATTACK 0
#define SND_ENV_DECAY 1
#define SND_ENV_SUSTAIN 2
#define SND_ENV_RELEASE 3
#define SND_CHN_TYPE_PCM 0
#define SND_CHN_TYPE_PSG 1
#define SND_CHN_TYPE_NOISE 2
#define SND_CHN_SYNC_START 0x1
#define SND_CHN_SYNC_STOP 0x2
#define SND_CHN_SYNC_TIMER 0x4
#define SND_CHN_SYNC_VOLUME 0x8
#define SND_CHN_SYNC_PAN 0x10
#define SND_LFO_PITCH 0
#define SND_LFO_VOLUME 1
#define SND_LFO_PAN 2
struct SNDWaveParam
{
u8 format; // 0x0
u8 loopEnabled; // 0x1
u16 samplerate; // 0x2
u16 timer; // 0x4
u16 loopStart; // 0x6
u32 loopLength; // 0x8
}; // size = 0xC
struct SNDLfoParam
{
u8 target; // 0x0
u8 speed; // 0x1
u8 depth; // 0x2
u8 range; // 0x3
u16 delay; // 0x4
}; // size = 0x6
struct SNDLfo
{
struct SNDLfoParam param; // 0x0
u16 delayCounter; // 0x6
u16 counter; // 0x8
}; // size = 0xA
struct SNDExChannel;
typedef void (*SNDExChannelCallback)(struct SNDExChannel *chn, int status, void *userData);
struct SNDExChannel
{
u8 id; // 0x00
u8 type; // 0x01
u8 envStatus; // 0x02
struct
{
u8 active : 1;
u8 start : 1;
u8 autoSweep : 1;
u8 syncFlag : 5;
} flags; // 0x03
u8 panRange; // 0x04
u8 rootMidiKey; // 0x05
s16 userDecay2; // 0x06
u8 midiKey; // 0x08
u8 velocity; // 0x09
s8 initPan; // 0x0A
s8 userPan; // 0x0B
s16 userDecay; // 0x0C
s16 userPitch; // 0x0E
s32 envAttenuation; // 0x10
s32 sweepCounter; // 0x14
s32 sweepLength; // 0x18
u8 envAttack; // 0x1C
u8 envSustain; // 0x1D
u16 envDecay; // 0x1E
u16 envRelease; // 0x20
u8 priority; // 0x22
u8 pan; // 0x23
u16 volume; // 0x24
u16 timer; // 0x26
struct SNDLfo lfo; // 0x28
s16 sweepPitch; // 0x32
s32 length; // 0x34
struct SNDWaveParam waveParam; // 0x38
union
{
const void *waveDataPtr;
s32 dutyCycle;
}; // 0x44
SNDExChannelCallback callback; // 0x48
void *callbackUserData; // 0x4C
struct SNDExChannel *channelLLNext; // 0x50
}; // size = 0x54
#endif // GUARD_SND_EXCHANNEL_SHARED_H