Files
2025-04-03 17:01:12 -04:00

155 lines
5.5 KiB
C++

#ifndef JASDSPINTERFACE_H
#define JASDSPINTERFACE_H
#include "dolphin/types.h"
namespace JASystem {
namespace Driver {
struct Wave_ {
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
/* 0x02 */ u8 field_0x2;
/* 0x03 */ u8 field_0x3[0x10 - 0x3];
/* 0x10 */ int field_0x10;
/* 0x14 */ int field_0x14;
/* 0x18 */ int field_0x18;
/* 0x1C */ int field_0x1c;
/* 0x20 */ short field_0x20;
/* 0x22 */ short field_0x22;
/* 0x24 */ u32* field_0x24;
};
}
namespace DSPInterface {
struct FxlineConfig_ {
/* 0x00 */ u8 field_0x0;
/* 0x02 */ u16 field_0x2;
/* 0x04 */ short field_0x4;
/* 0x06 */ u16 field_0x6;
/* 0x08 */ short field_0x8;
/* 0x0C */ int field_0xc;
/* 0x10 */ short field_0x10[8];
};
class FXBuffer {
public:
bool setFXLine(s16* param_1, FxlineConfig_* param_2);
/* 0x00 */ short field_0x0;
/* 0x02 */ short field_0x2;
/* 0x04 */ s16* field_0x4;
/* 0x08 */ short field_0x8;
/* 0x0A */ short field_0xa;
/* 0x0C */ short field_0xc;
/* 0x0E */ short field_0xe;
/* 0x10 */ short field_0x10[8];
};
class DSPBuffer {
public:
void allocInit();
void playStart();
void setWaveInfo(Driver::Wave_* param_1, u32 param_2, u32 param_3);
void setOscInfo(u32 param_1);
void initAutoMixer();
void setAutoMixer(u16 param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5);
void setPitch(u16 param_1);
void setMixerInitDelayMax(u8 param_1);
void setMixerInitVolume(u8 param_1, s16 param_2, u8 param_3);
void setMixerVolume(u8 param_1, s16 param_2, u8 param_3);
void setMixerVolumeOnly(u8 param_1, short param_2);
void setPauseFlag(u8 param_1);
void flushChannel();
void initFilter();
void setFilterMode(u16 param_1);
void setIIRFilterParam(s16* param_1);
void setFIR8FilterParam(s16* param_1);
void setDistFilter(s16 param_1);
void setBusConnect(u8 param_1, u8 param_2);
/* 0x00 */ u16 field_0x0;
/* 0x02 */ u16 field_0x2;
/* 0x04 */ u16 field_0x4;
/* 0x06 */ u8 field0x6[0x8 - 0x6];
/* 0x08 */ u16 field_0x8;
/* 0x0A */ u8 field_0xa[0xc - 0xa];
/* 0x0C */ u16 field_0xc;
/* 0x0E */ u16 field_0xe;
/* 0x10 */ u16 field_0x10[1][4];
/* 0x18 */ u8 field_0x18[0x50 - 0x18];
/* 0x50 */ u16 field_0x50;
/* 0x52 */ u16 field_0x52;
/* 0x54 */ short field_0x54;
/* 0x56 */ u16 field_0x56;
/* 0x58 */ u16 field_0x58;
/* 0x5A */ u8 field_0x5a[0x60 - 0x5a];
/* 0x60 */ short field_0x60;
/* 0x62 */ u8 field_0x62[0x64 - 0x62];
/* 0x64 */ short field_0x64;
/* 0x66 */ short field_0x66;
/* 0x68 */ int field_0x68;
/* 0x6C */ u32 field_0x6c;
/* 0x70 */ u8 field_0x70[0x74 - 0x70];
/* 0x74 */ u32 field_0x74;
/* 0x78 */ short field_0x78[4];
/* 0x80 */ short field_0x80[20];
/* 0xA8 */ short field_0xa8[4];
/* 0xB8 */ u16 field_0xb0[16];
/* 0xD0 */ u8 field_0xd0[0x100 - 0xd0];
/* 0x100 */ u16 field_0x100;
/* 0x102 */ u16 field_0x102;
/* 0x104 */ short field_0x104;
/* 0x106 */ short field_0x106;
/* 0x108 */ short field_0x108;
/* 0x10A */ u16 field_0x10a;
/* 0x10C */ u32 field_0x10c;
/* 0x110 */ u32 field_0x110;
/* 0x114 */ u32 field_0x114;
/* 0x118 */ u32 field_0x118;
/* 0x11C */ int field_0x11c;
/* 0x120 */ short field_0x120[8];
/* 0x130 */ u8 field_0x130[0x148 - 0x130];
/* 0x148 */ short field_0x148[4];
/* 0x150 */ short field_0x150;
/* 0x152 */ u8 field_0x152[0x180 - 0x152];
};
void setDSPMixerLevel(float param_1);
DSPBuffer* getDSPHandle(u8 param_1);
void setFilterTable(short* param_1, short* param_2, u32 param_3);
void flushBuffer();
void invalChannelAll();
void clearBuffer();
void setupBuffer();
void initBuffer();
FXBuffer* getFXHandle(u8 param_1);
// TODO inlines
inline void boot(void (*)(void*)) {}
inline void finishWork(u16) {}
inline void flushChannel(u8) {}
inline void restart() {}
inline void setBusConnect(u8, u8, u8) {}
inline bool setFXLine(u8 i, s16* buffer, FxlineConfig_* config) {
return getFXHandle(i)->setFXLine(buffer, config);
}
inline void setMixerInitDelayMax(u8, u8) {}
inline void setMixerInitVolume(u8, u8, s16, u8) {}
inline void setMixerVolume(u8, u8, s16, u8) {}
inline void setPauseFlag(u8, u8) {}
inline void setPitch(u8, u16) {}
inline void sync(u32, u32, u32) {}
extern u16 SEND_TABLE[12];
extern u32 DOLBY2_DELAY_BUF[];
extern u16 JAS_DSP_PREFIX;
extern DSPBuffer* CH_BUF;
extern FXBuffer* FX_BUF;
extern f32 sDSPVolume;
};
}
u16 DSP_CreateMap2(u32 param_1);
#endif /* JASDSPINTERFACE_H */