1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
#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 */
|