Label much of MSM (#535)

This commit is contained in:
Liam Coleman 2025-01-15 23:40:36 -06:00 committed by GitHub
parent f6ca7da943
commit 77da4907df
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 2207 additions and 2190 deletions

View file

@ -3,6 +3,7 @@
#include "dolphin.h"
#include "musyx/musyx.h"
#include "game/msm_data.h"
#define MSM_SEPARAM_NONE 0
#define MSM_SEPARAM_VOL (1 << 0)
@ -40,25 +41,24 @@
#define MSM_ERR_READFAIL -2
#define MSM_ERR_OUTOFMEM -10
#define MSM_ERR_OUTOFAMEM -20
#define MSM_ERR_INITFAIL -20
#define MSM_ERR_1E -30
#define MSM_ERR_INITFAIL -30
#define MSM_ERR_INVALID_AUXPARAM -31
#define MSM_ERR_20 -32
#define MSM_ERR_GRP_FAILPUSH -32
#define MSM_ERR_PLAYFAIL -33
#define MSM_ERR_22 -34
#define MSM_LISTENER_NO_UPDATA -34
#define MSM_ERR_STREAMALLOC_FAIL -35
#define MSM_ERR_INSTALLED -36
#define MSM_ERR_64 -100
#define MSM_ERR_65 -101
#define MSM_ERR_STACK_OVERFLOW -101
#define MSM_ERR_GRP_NOTLOADED -103
#define MSM_ERR_6E -110
#define MSM_ERR_6F -111
#define MSM_ERR_CHANLIMIT -110
#define MSM_ERR_INVALIDSE -111
#define MSM_ERR_INVALIDID -120
#define MSM_ERR_INVALIDFILE -121
#define MSM_ERR_REMOVEDID -122
#define MSM_ERR_MUSGRP_NOTLOADED -123
#define MSM_ERR_OUTOFMUS -130
#define MSM_ERR_8C -140
#define MSM_ERR_RANGE_STREAM -140
#define MSM_VOL_MAX 127
#define MSM_PAN_LEFT 32
@ -132,19 +132,6 @@ typedef struct msmSeParam_s {
Vec pos;
} MSM_SEPARAM;
typedef struct msmSe_s {
u16 groupId;
u16 fxId;
s8 vol;
s8 pan;
s16 pitchBend;
u8 span;
u8 reverb;
u8 chorus;
s8 doppler;
s8 comp;
u8 pad[3];
} MSMSE;
typedef struct msmSeListener_s {
s32 flag;
@ -173,10 +160,11 @@ typedef struct msmStreamParam_s {
} MSM_STREAMPARAM;
s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram);
s32 msmSysSetOutputMode(SND_OUTPUTMODE mode);
BOOL msmSysSetOutputMode(SND_OUTPUTMODE mode);
s32 msmSysDelGroupAll(void);
s32 msmSysGetSampSize(BOOL baseGrp);
s32 msmSysDelGroupBase(s32 grpNum);
s32 msmSysSetAux(s32 auxA, s32 auxB);
s32 msmSeSetParam(int seNo, MSM_SEPARAM *param);
int msmSePlay(int seId, MSM_SEPARAM *param);
@ -190,6 +178,8 @@ void msmSeDelListener(void);
s32 msmSeGetStatus(int seNo);
s32 msmSeGetNumPlay(BOOL baseGrp);
s32 msmSeGetEntryID(s32 seId, int *seNo);
void msmSeSetMasterVolume(s32 vol);
MSM_SE* msmSeGetIndexPtr(s32 seId);
int msmMusPlay(int musId, MSM_MUSPARAM *musParam);
s32 msmMusStop(int musNo, s32 speed);
@ -199,6 +189,8 @@ s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl);
void msmMusStopAll(BOOL checkGrp, s32 speed);
s32 msmMusGetStatus(int musNo);
s32 msmMusGetNumPlay(BOOL baseGrp);
s32 msmMusSetParam(s32 musNo, MSM_MUSPARAM *param);
void msmMusSetMasterVolume(s32 vol);
int msmStreamPlay(int streamId, MSM_STREAMPARAM *streamParam);
s32 msmStreamStop(int streamNo, s32 speed);
@ -207,5 +199,7 @@ s32 msmStreamPause(int streamNo, BOOL pause, s32 speed);
void msmStreamStopAll(s32 speed);
s32 msmStreamGetStatus(int streamNo);
void msmStreamSetMasterVolume(s32 arg0);
void msmStreamSetOutputMode(s32 outputMode);
#endif

185
include/game/msm_data.h Normal file
View file

@ -0,0 +1,185 @@
#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

View file

@ -3,8 +3,8 @@
#include "dolphin/types.h"
void msmMemFree(void *);
void *msmMemAlloc(u32);
void msmMemInit(void *, u32);
void msmMemFree(void *ptr);
void *msmMemAlloc(u32 sze);
void msmMemInit(void *ptr, u32 size);
#endif

View file

@ -16,6 +16,6 @@ s32 msmMusPause(int musNo, BOOL pause, s32 speed);
void msmMusStopAll(BOOL checkGrp, s32 speed);
s32 msmMusStop(int musNo, s32 speed);
int msmMusPlay(int musId, MSM_MUSPARAM* musParam);
s32 msmMusInit(sysData* arg0, DVDFileInfo* arg1);
s32 msmMusInit(MSM_SYS* arg0, DVDFileInfo* arg1);
#endif

View file

@ -5,7 +5,7 @@
#include "msm/msmsys.h"
void msmSePeriodicProc(void);
MSMSE* msmSeGetIndexPtr(s32 arg0);
MSM_SE* msmSeGetIndexPtr(s32 arg0);
void msmSeDelListener(void);
s32 msmSeUpdataListener(Vec* pos, Vec* heading);
s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_SELISTENER* listener);
@ -18,6 +18,6 @@ void msmSePauseAll(BOOL pause, s32 speed);
void msmSeStopAll(BOOL checkGrp, s32 speed);
s32 msmSeStop(int seNo, s32 speed);
int msmSePlay(int seId, MSM_SEPARAM* param);
s32 msmSeInit(sysData* arg0, DVDFileInfo* arg1);
s32 msmSeInit(MSM_SYS* arg0, DVDFileInfo* arg1);
#endif

View file

@ -13,10 +13,6 @@ void msmStreamSetOutputMode(s32 arg0);
void msmStreamAmemFree(void);
s32 msmStreamAmemAlloc(void);
s32 msmStreamInit(char* arg0);
void msmStreamPauseOff(s32 arg0);
void msmStreamPauseOn(s32 streamNo, s32 arg1);
s32 msmStreamPackStartStereo(s32 arg0, MSM_STREAMPARAM* arg1, s32 arg2);
s32 msmStreamPackStartMono(s32 arg0, MSM_STREAMPARAM* arg1, s32 arg2);
void msmStreamSlotOff(s32 streamNo);
#endif

View file

@ -5,167 +5,63 @@
#include "dolphin.h"
typedef struct {
u32 tempDisableFX;
f32 coloration;
f32 mix;
f32 time;
f32 damping;
f32 preDelay;
f32 crosstalk;
} SubStructRev;
#define MSM_AUX_REVERBHI 0
#define MSM_AUX_REVERBSTD 1
#define MSM_AUX_CHORUS 2
#define MSM_AUX_DELAY 3
typedef struct {
u32 baseDelay;
u32 variation;
u32 period;
} SubStructCh;
typedef struct {
u32 delay[3];
u32 feedback[3];
u32 output[3];
} SubDelay;
typedef struct _unkSubStruct {
s8 unk0;
union {
SubStructRev rev;
SubStructCh ch;
SubDelay delay;
};
} unkSubStruct;
#define MSM_AUXNO_NULL -2
#define MSM_AUXNO_UNSET -1
typedef union {
SND_AUX_REVERBHI revHi;
SND_AUX_REVERBSTD revStd;
SND_AUX_CHORUS ch;
SND_AUX_CHORUS chorus;
SND_AUX_DELAY delay;
} UnkSndAuxUnion; // Size 0x1E0
} MSM_AUX; // Size 0x1E0
typedef struct _unkSubStruct3 {
char unk[0x4];
s32 unk4;
char unk8[0x8];
s32 unk10; // offset
u32 unk14; // length
s32 unk18; // offset
u32 unk1C; // length
s32 unk20;
s32 unk24;
s32 unk28;
s32 unk2C;
s32 unk30;
s32 unk34;
s32 unk38;
char unk3C[4];
s32 unk40;
char unk44[4];
s32 unk48;
char unk4C[4];
s32 unk50;
s32 unk54;
char unk58[8];
} unkSubStruct3; // sizeof 0x60
typedef struct MSMGrpWork_s {
s8 grpId;
s8 baseGrpF;
u32 num;
void *buf;
} MSM_GRP_STACK;
typedef struct _unkStruct3 {
s32 unk0;
s32 unk4;
s32 unk8;
} unkStruct3;
typedef struct _sndInitData {
s8 unk0;
s8 unk1;
s8 unk2;
s8 unk3;
s16 unk4;
s16 unk6;
s8 unk8;
s8 unk9;
s8 unkA;
s8 unkB;
char unkC[2];
s8 unkE;
s8 unkF;
u32 unk10;
s32 unk14;
s32 unk18;
s32 unk1C;
s32 unk20;
char unk24[4];
s8 unk28;
s8 unk29[10]; // size unknown
} sndInitData;
typedef struct {
/* 0x00 */ s8 unk00;
/* 0x01 */ s8 unk01;
/* 0x02 */ char unk02[2];
/* 0x04 */ u32 unk04;
/* 0x08 */ void *unk08;
} UnkStructSys43C; // Size 0xC
typedef struct _unkStruct4 {
SND_GROUPID unk0;
s8 unk2;
s8 unk3;
s32 unk4;
s32 unk8;
s32 unkC;
s32 unk10;
char unk14[0xC];
} unkStruct4; // Size 0x20
typedef struct {
/* 0x00 */ s8 unk00;
/* 0x01 */ s8 unk01;
/* 0x02 */ s8 unk02[1]; // unknown array length
} UnkSys3F0Struct; // Size unknown
typedef struct _sysData {
s32 unk0;
s8 unk4;
typedef struct MSMSys_s {
s32 msmEntryNum;
s8 outputMode;
s8 unk5;
s8 unk6;
s8 unk7;
s32 unk8;
unkSubStruct3 *unkC;
sndInitData *unk10;
unkSubStruct *unk14;
s8 unk18[2];
s8 unk1A;
s8 unk1B;
UnkSndAuxUnion unk1C[2]; // 0: userA, 1: userB
s8 unk3DC;
char unk3DD[3];
s32 unk3E0;
u32 unk3E4;
u32 unk3E8;
unkStruct4 *unk3EC;
UnkSys3F0Struct *unk3F0;
s8 unk3F4;
unkStruct3 *unk3F8[1]; // unknown array length
char unk3FC[0x38];
s8 unk434;
u8 unk435;
s8 unk436;
char unk437[1];
void *unk438;
UnkStructSys43C unk43C[1]; // unknown array length
char unk448[0x24];
s8 unk46C;
u8 unk46D;
s8 unk46E;
char unk46F[1];
void *unk470;
UnkStructSys43C unk474[1]; // unknown array length
char unk480[0x6C];
s32 unk4EC;
BOOL unk4F0;
AIDCallback unk4F4;
s32 unk4F8;
} sysData;
s8 arInitF;
s32 aramP;
MSM_HEADER *header;
MSM_INFO *info;
MSM_AUXPARAM *auxParam;
s8 auxParamNo[2];
MSM_AUX aux[2]; // 0: userA, 1: userB
s8 grpMax;
s32 grpNum;
u32 sampSize;
u32 sampSizeBase;
MSM_GRP_INFO *grpInfo;
MSM_GRP_SET *grpSet;
s8 baseGrpNum;
MSM_GRP_HEAD *grpData[15];
s8 grpStackAMax;
u8 grpStackADepth;
s8 grpStackAOfs;
void *grpBufA;
MSM_GRP_STACK grpStackA[4];
s8 grpStackBMax;
u8 grpStackBDepth;
s8 grpStackBOfs;
void *grpBufB;
MSM_GRP_STACK grpStackB[10];
s32 irqDepth;
BOOL irqState;
AIDCallback oldAIDCallback;
s32 timer;
} MSM_SYS;
s32 msmSysSearchGroupStack(s32 arg0, s32 arg1);
s32 msmSysGroupInit(DVDFileInfo *arg0);
@ -176,8 +72,7 @@ void *msmSysGetGroupDataPtr(s32 arg0);
BOOL msmSysCheckLoadGroupID(s32 arg0);
void msmSysRegularProc(void);
s32 msmSysGetOutputMode(void);
s32 msmSysSetOutputMode(SND_OUTPUTMODE mode);
s32 msmSysSetAux(s32 arg0, s32 arg1);
BOOL msmSysSetOutputMode(SND_OUTPUTMODE mode);
s32 msmSysGetSampSize(BOOL baseGrp);
s32 msmSysDelGroupAll(void);
s32 msmSysDelGroupBase(s32 grpNum);