mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 15:01:33 -04:00
155 lines
5.5 KiB
C++
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 */
|