185 lines
3.1 KiB
C
185 lines
3.1 KiB
C
#ifndef _MSM_DATA_H
|
|
#define _MSM_DATA_H
|
|
|
|
#include "dolphin.h"
|
|
#include "musyx/musyx.h"
|
|
|
|
#define MSM_STREAM_FLAG_STEREO 0x1
|
|
#define MSM_STREAM_FLAG_LOOP 0x2
|
|
|
|
#define MSM_FILE_VERSION 2
|
|
#define MSM_PDT_FILE_VERSION 1
|
|
|
|
typedef struct MSMHeader_s {
|
|
s32 magic;
|
|
s32 version;
|
|
s32 endOfs;
|
|
s32 endSize;
|
|
s32 infoOfs;
|
|
u32 infoSize;
|
|
s32 auxParamOfs;
|
|
u32 auxParamSize;
|
|
s32 grpInfoOfs;
|
|
s32 grpInfoSize;
|
|
s32 musOfs;
|
|
s32 musSize;
|
|
s32 seOfs;
|
|
s32 seSize;
|
|
s32 grpDataOfs;
|
|
s32 grpDataSize;
|
|
s32 sampOfs;
|
|
s32 sampSize;
|
|
s32 dummyMusOfs;
|
|
s32 dummyMusSize;
|
|
s32 grpSetOfs;
|
|
s32 grpSetSize;
|
|
s32 pad[2];
|
|
} MSM_HEADER; // sizeof 0x60
|
|
|
|
typedef struct MSMInfo_s {
|
|
s8 voices;
|
|
s8 music;
|
|
s8 sfx;
|
|
s8 grpMax;
|
|
s16 musMax;
|
|
s16 seMax;
|
|
s8 musChanMax;
|
|
s8 stackDepthA;
|
|
s8 stackDepthB;
|
|
s8 surroundF;
|
|
s8 unkC[2];
|
|
s8 auxParamA;
|
|
s8 auxParamB;
|
|
s32 minMem;
|
|
s32 aramSize;
|
|
s32 grpBufSizeA;
|
|
s32 grpBufSizeB;
|
|
s32 dummyMusSize;
|
|
s32 unk24;
|
|
s8 baseGrpNum;
|
|
s8 baseGrp[23];
|
|
} MSM_INFO;
|
|
|
|
typedef struct {
|
|
u32 tempDisableFX;
|
|
f32 coloration;
|
|
f32 mix;
|
|
f32 time;
|
|
f32 damping;
|
|
f32 preDelay;
|
|
f32 crosstalk;
|
|
} MSM_AUXPARAM_REVERBHI;
|
|
|
|
typedef struct {
|
|
u32 tempDisableFX;
|
|
f32 coloration;
|
|
f32 mix;
|
|
f32 time;
|
|
f32 damping;
|
|
f32 preDelay;
|
|
f32 crosstalk;
|
|
} MSM_AUXPARAM_REVERBSTD;
|
|
|
|
typedef struct {
|
|
u32 baseDelay;
|
|
u32 variation;
|
|
u32 period;
|
|
} MSM_AUXPARAM_CHORUS;
|
|
|
|
typedef struct {
|
|
u32 delay[3];
|
|
u32 feedback[3];
|
|
u32 output[3];
|
|
} MSM_AUXPARAM_DELAY;
|
|
|
|
typedef struct MSMAuxParam_s {
|
|
s8 type;
|
|
u8 pad[3];
|
|
union {
|
|
MSM_AUXPARAM_REVERBHI revHi;
|
|
MSM_AUXPARAM_REVERBSTD revStd;
|
|
MSM_AUXPARAM_CHORUS chorus;
|
|
MSM_AUXPARAM_DELAY delay;
|
|
};
|
|
} MSM_AUXPARAM;
|
|
|
|
typedef struct MSMSe_s {
|
|
SND_GROUPID gid;
|
|
SND_FXID fxId;
|
|
s8 vol;
|
|
s8 pan;
|
|
s16 pitchBend;
|
|
u8 span;
|
|
u8 reverb;
|
|
u8 chorus;
|
|
s8 emitterF;
|
|
s8 emiComp;
|
|
u8 pad[3];
|
|
} MSM_SE;
|
|
|
|
typedef struct MSMMus_s {
|
|
SND_GROUPID sgid;
|
|
SND_SONGID sid;
|
|
s32 songOfs;
|
|
s32 songSize;
|
|
s8 songGrp;
|
|
s8 vol;
|
|
u8 pad[2];
|
|
} MSM_MUS; // Size 0x10
|
|
|
|
typedef struct MSMGrpHead_s {
|
|
s32 poolOfs;
|
|
s32 projOfs;
|
|
s32 sdirOfs;
|
|
s32 sngOfs;
|
|
} MSM_GRP_HEAD;
|
|
|
|
typedef struct MSMGrpInfo_s {
|
|
SND_GROUPID gid;
|
|
s8 stackNo;
|
|
s8 subGrpId;
|
|
s32 dataOfs;
|
|
s32 dataSize;
|
|
s32 sampOfs;
|
|
s32 sampSize;
|
|
u8 pad[12];
|
|
} MSM_GRP_INFO;
|
|
|
|
typedef struct MSMGrpSet_s {
|
|
s8 numGrpSet;
|
|
s8 grpSetW;
|
|
s8 data[1];
|
|
} MSM_GRP_SET;
|
|
|
|
typedef struct MSMStreamHeader_s {
|
|
s16 version;
|
|
s16 streamMax;
|
|
s32 chanMax;
|
|
s32 sampleFrq;
|
|
s32 maxBufs;
|
|
u32 streamPackListOfs;
|
|
u32 adpcmParamOfs;
|
|
u32 streamPackOfs;
|
|
u32 sampleOfs;
|
|
} MSM_STREAM_HEADER;
|
|
|
|
typedef struct MSMStream_s {
|
|
s32 sampleOfs;
|
|
s16 adpcmParamIdx;
|
|
u16 pad;
|
|
} MSM_STREAM;
|
|
|
|
typedef struct MSMStreamPack_s {
|
|
s8 flag;
|
|
s8 vol;
|
|
s8 pan;
|
|
s8 span;
|
|
s8 auxA;
|
|
s8 auxB;
|
|
u16 frq;
|
|
u32 loopOfsEnd;
|
|
u32 loopOfsStart;
|
|
MSM_STREAM stream[2];
|
|
} MSM_STREAM_PACK; // Size unknown
|
|
|
|
#endif
|