PS2SDK
PS2 Homebrew Libraries
libsnd2_internal.h
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # Copyright ps2dev - http://www.ps2dev.org
7 # Licenced under Academic Free License version 2.0
8 # Review ps2sdk README & LICENSE files for further details.
9 */
10 
11 #ifndef _LIBSND2_INTERNAL_H
12 #define _LIBSND2_INTERNAL_H
13 
14 #include <intrman.h>
15 #include <stdio.h>
16 #include <sysclib.h>
17 #include <tamtypes.h>
18 #include <thbase.h>
19 #include <timrman.h>
20 #include <vblank.h>
21 
22 #include "libspu2_internal.h"
23 
24 #include <libsnd2.h>
25 
26 typedef struct libsnd2_seq_tick_env_
27 {
28  s32 m_tick_mode;
29  s32 m_manual_tick;
30  void (*m_tick_callback)();
31  void (*m_vsync_callback)();
32  u8 m_vsync_tick;
33  u8 m_unk11;
34  u8 m_alarm_tick;
35  u8 m_pad13;
37 
38 typedef int (*libsnd2_vab_allocate_callback)(unsigned int size_in_bytes, int mode, s16 vab_id);
39 
40 typedef void (*libsnd2_ss_mark_callback_proc)(s16 seq_no, s16 sep_no, s16 data);
41 
43 {
44  libsnd2_ss_mark_callback_proc m_entries[16];
46 
48 {
49  u8 *m_seq_ptr;
50  u8 *m_unk04;
51  u8 *m_unk08;
52  u8 *m_unk0C;
53  u8 *m_unk10;
54  char m_play_mode;
55  char m_unk15;
56  u8 m_running_status;
57  u8 m_channel_idx;
58  char m_unk18;
59  char m_unk19;
60  char m_fn_idx;
61  u8 m_unk1B;
62  char m_unk1C;
63  u8 m_unk1D;
64  char m_unk1E;
65  char m_unk1F;
66  char m_l_count;
67  char m_unk21;
68  s8 m_next_sep;
69  s8 m_next_seq;
70  char m_rhythm_n;
71  char m_rhythm_d;
72  u8 m_vab_id;
73  char m_panpot[16];
74  char m_programs[16];
75  char m_unk47;
76  s16 m_unk48;
77  s16 m_unk4A;
78  s16 m_unk4C;
79  s16 m_unk4E;
80  s16 m_resolution_of_quarter_note;
81  s16 m_unk52;
82  s16 m_unk54;
83  s16 m_unk56;
84  s16 m_voll;
85  s16 m_volr;
86  s16 m_unk5C;
87  s16 m_unk5E;
88  s16 m_vol[16];
89  s16 m_channel_mute;
90  char m_unk82;
91  char m_unk83;
92  int m_unk84;
93  int m_unk88;
94  int m_tempo;
95  int m_delta_value;
96  int m_unk94;
97  unsigned int m_flags;
98  int m_unk9C;
99  int m_unkA0;
100  int m_unkA4;
101  int m_unkA8;
102  int m_unkAC;
104 
106 {
107  s16 m_vol_left;
108  s16 m_vol_right;
109  s16 m_pitch;
110  u16 m_adsr1;
111  u16 m_adsr2;
112  s16 m_unka;
113  s16 m_unkc;
114  u16 m_unke;
116 
117 typedef struct libsnd2_spu_voice_
118 {
119  s16 m_vag_idx;
120  s16 m_unk02;
121  s16 m_pitch;
122  s16 m_key_stat;
123  s16 m_voll1;
124  char m_pan;
125  char m_pad05;
126  s16 m_channel_idx;
127  s16 m_note;
128  s16 m_seq_sep_no;
129  s16 m_fake_program;
130  s16 m_prog;
131  s16 m_tone;
132  s16 m_vab_id;
133  s16 m_priority;
134  char m_pad08;
135  char m_unk1d;
136  s16 m_b_auto_vol;
137  s16 m_auto_vol_amount;
138  s16 m_auto_vol_dt1;
139  s16 m_auto_vol_dt2;
140  s16 m_auto_vol_start;
141  s16 m_auto_vol_end;
142  s16 m_b_auto_pan;
143  s16 m_auto_pan_amount;
144  s16 m_auto_pan_dt1;
145  s16 m_auto_pan_dt2;
146  s16 m_auto_pan_start;
147  s16 m_auto_pan_end;
148  s16 m_voll2;
150 
151 typedef struct libsnd2_svm_
152 {
153  char m_sep_sep_no_tonecount;
154  u8 m_vab_id;
155  char m_note;
156  char m_fine;
157  char m_voll;
158  char m_unk05;
159  char m_program;
160  char m_fake_program;
161  char m_unknown;
162  char m_pad09;
163  char m_mvol;
164  char m_mpan;
165  char m_tone;
166  char m_vol;
167  char m_pan;
168  char m_prior;
169  char m_centre;
170  u8 m_shift;
171  char m_mode;
172  char m_pad13;
173  s16 m_seq_sep_no;
174  s16 m_vag_idx2;
175  s16 m_voice_idx;
176  int m_unk1c;
177 } libsnd2_svm_t;
178 
179 typedef void (*libsnd2_auto_vol_pan_callback)(unsigned int voice);
180 
182 {
183  u16 m_unk0;
184  u16 m_unk2;
185  u16 m_unk4;
186  u16 m_unk6;
187  u16 m_vag_spu_addr;
188  u16 m_vab_spu_offset;
189  u16 m_unkc;
190  u16 m_unke;
192 
193 extern libsnd2_sequence_marker_t _SsMarkCallback[32];
194 extern int VBLANK_MINUS;
195 extern unsigned int _snd_openflag;
196 extern int _snd_ev_flag;
197 extern _SsFCALL SsFCALL;
198 extern libsnd2_sequence_struct_t *_ss_score[32];
199 extern s16 _snd_seq_s_max;
200 extern s16 _snd_seq_t_max;
201 
202 extern s16 _svm_stereo_mono;
203 extern int _svm_vab_not_send_size;
204 extern SpuReverbAttr _svm_rattr;
205 extern char _svm_vab_used[16];
206 extern char _SsVmMaxVoice;
207 extern s16 _svm_vab_count;
208 extern s16 kMaxPrograms;
209 extern libsnd2_svm_t _svm_cur;
210 extern s16 _svm_damper;
211 extern u8 _svm_auto_kof_mode;
212 extern VabHdr *_svm_vab_vh[16];
213 extern ProgAtr *_svm_vab_pg[16];
214 extern VagAtr *_svm_vab_tn[16];
215 extern int _svm_vab_start[16];
216 extern int _svm_vab_total[16];
217 extern VabHdr *_svm_vh;
218 extern ProgAtr *_svm_pg;
219 extern VagAtr *_svm_tn;
220 
221 extern u16 _svm_okon1;
222 // extern int _svm_envx_ptr;
223 extern unsigned int _svm_envx_hist[16];
224 extern libsnd2_spu_voice_t _svm_voice[24];
225 extern u16 _svm_okof1;
226 extern u16 _svm_okof2;
227 extern u16 _svm_okon2;
228 extern libsnd2_auto_vol_pan_callback _autovol;
229 extern libsnd2_auto_vol_pan_callback _autopan;
230 extern char _svm_sreg_dirty[24];
231 extern libsnd2_reg_buffer_struct_t _svm_sreg_buf[24];
232 extern libsnd2_reg_buffer_struct_2_t _svm_sreg_buf2[24];
233 extern u16 _svm_orev2;
234 extern u16 _svm_orev1;
235 extern u16 _svm_onos2;
236 extern u16 _svm_onos1;
237 
238 extern s16 gVabOffet[16];
239 
240 extern unsigned int _snd_vmask;
241 
242 // extern s16 gPitchCorrect;
243 
244 extern libsnd2_seq_tick_env_t _snd_seq_tick_env;
245 extern int _snd_seq_interval;
246 
247 extern void _SsUtResolveADSR(u16 adsr1, u16 adsr2, u16 *adsr_buf);
248 extern void _SsUtBuildADSR(const u16 *adsr_buf, u16 *adsr1, u16 *adsr2);
249 extern void _SsSndCrescendo(s16 sep_no, s16 seq_no);
250 extern void _SsSeqPlay(s16 sep_no, s16 seq_no);
251 extern void _SsSeqGetEof(s16 sep_no, s16 seq_no);
252 extern int _SsGetSeqData(s16 sep_no, s16 seq_no);
253 extern s32 _SsReadDeltaValue(s16 sep_no, s16 seq_no);
254 extern void _SsSndNextSep(s16 sep_no, s16 seq_no);
255 extern void _SsSndNextPause(s16 sep_no, s16 seq_no);
256 extern void _SsSndPause(s16 sep_no, s16 seq_no);
257 extern void _SsSndPlay(s16 sep_no, s16 seq_no);
258 extern void _SsSndReplay(s16 sep_no, s16 seq_no);
259 extern int _SsInitSoundSep(s16 sep_no, int seq_no, u8 vab_id, u8 *addr);
260 extern s16 _SsInitSoundSeq(s16 seq_no, s16 vab_id, u8 *addr);
261 extern void _SsSndSetAccele(s16 sep_no, s16 seq_no, int tempo, int v_time);
262 extern void _SsSndSetCres(s16 sep_no, s16 seq_no, s16 vol, int v_time);
263 extern void _SsSndSetDecres(s16 sep_no, s16 seq_no, s16 vol, int v_time);
264 extern void _SsInit(void);
265 extern void _SsSndSetPauseMode(s16 sep_no, s16 seq_no);
266 extern void _SsSndSetReplayMode(s16 sep_no, s16 seq_no);
267 extern void Snd_SetPlayMode(s16 sep_no, s16 seq_no, char play_mode, char l_count);
268 extern void _SsSndSetRit(s16 sep_no, s16 seq_no, int tempo, int v_time);
269 #ifdef LIB_1300
270 extern void _SsTrapIntrVSync(void);
271 #endif
272 #ifdef LIB_1300
273 extern void _SsSeqCalledTbyT_1per2(void);
274 #endif
275 extern int _SsTrapIntrProcIOP(void *userdata);
276 extern void _SsSndStop(s16 sep_no, s16 seq_no);
277 extern void _SsSndSetVol(s16 sep_no, s16 seq_no, u16 voll, u16 volr);
278 extern void _SsSndTempo(s16 sep_no, s16 seq_no);
279 extern void _SsSndSetVolData(s16 sep_no, s16 seq_no, s16 vol, int v_time);
280 extern s16 _SsVmAlloc(void);
281 extern void _SsVmDoAllocate(void);
282 extern void SeAutoPan(s16 vc, s16 start_pan, s16 end_pan, s16 delta_time);
283 extern void SetAutoPan(int vc);
284 extern void SeAutoVol(s16 vc, s16 start_vol, s16 end_vol, s16 delta_time);
285 extern void SetAutoVol(int vc);
286 extern void _SsVmDamperOff(void);
287 extern void _SsVmDamperOn(void);
288 extern void wait1fsa(void);
289 extern void DumpSpu(void);
290 extern void DumpVoice(void);
291 extern void DumpVoice2(void);
292 extern void _SsVmFlush(void);
293 extern void _SsVmInit(int voice_count);
294 extern int _SsVmKeyOn(int seq_sep_no, s16 vab_id, s16 prog, s16 note, s16 voll, s16 unknown27);
295 extern int _SsVmKeyOff(int seq_sep_no, s16 vab_id, s16 prog, s16 note);
296 extern int _SsVmSeKeyOn(s16 vab_id, s16 prog, u16 note, int pitch, u16 voll, u16 volr);
297 extern int _SsVmSeKeyOff(s16 vab_id, s16 prog, s16 note);
298 extern void KeyOnCheck(void);
299 extern s16 note2pitch(void);
300 extern s16 note2pitch2(s16 note, s16 fine);
301 extern void vmNoiseOn(u8 vc);
302 extern void vmNoiseOn2(u8 vc, u16 voll, u16 volr, u16 arg3, u16 arg4);
303 extern void vmNoiseOff(u8 vc);
304 extern void _SsVmNoiseOnWithAdsr(s32 voll, s32 volr, s32 arg2, s32 arg3);
305 extern void _SsVmNoiseOff(void);
306 extern void _SsVmNoiseOn(u16 voll, u16 volr);
307 extern void _SsVmKeyOffNow(void);
308 extern void _SsVmKeyOnNow(s16 vag_count, s16 pitch);
309 extern int _SsVmPBVoice(s16 vc, s16 seq_sep_num, s16 vab_id, s16 prog, s16 pitch);
310 extern int _SsVmPitchBend(s16 seq_sep_no, int vab_id, int prog, s16 pitch);
311 extern void _SsVmSetProgVol(s16 vab_id, s16 prog, u8 vol);
312 extern int _SsVmGetProgVol(s16 vab_id, s16 prog);
313 extern int _SsVmSetProgPan(s16 vab_id, s16 prog, char mpan);
314 extern int _SsVmGetProgPan(s16 vab_id, s16 prog);
315 extern void _SsVmSetSeqVol(s16 seq_sep_num, s16 voll, s16 volr);
316 extern void _SsVmGetSeqVol(s16 seq_sep_no, s16 *voll_ptr, s16 *volr_ptr);
317 extern int _SsVmGetSeqLVol(s16 seq_sep_no);
318 extern int _SsVmGetSeqRVol(s16 seq_sep_no);
319 extern void _SsVmSeqKeyOff(s16 seq_sep_no);
320 extern void SePitchBend(u8 vc, s16 arg1);
321 extern s16 _SsVmSelectToneAndVag(u8 *vag_attr_idx_ptr, u8 *vag_nums_ptr);
322 extern void SeVibOn(void);
323 extern void SetVib(void);
324 extern void SsUtVibrateOn(void);
325 extern void SsUtVibrateOff(void);
326 extern int _SsVmSetVol(s16 seq_sep_no, s16 vab_id, s16 prog, s16 voll, s16 volr);
327 extern int _SsVmVSetUp(s16 vab_id, s16 prog);
328 extern int _SsVabOpenHeadWithMode(u8 *addr, int vab_id, libsnd2_vab_allocate_callback alloc_fn, int mode);
329 
330 #endif
libsnd2_reg_buffer_struct_
Definition: libsnd2_internal.h:105
thbase.h
sysclib.h
libsnd2_spu_voice_
Definition: libsnd2_internal.h:117
timrman.h
libsnd2_sequence_struct_
Definition: libsnd2_internal.h:47
SpuReverbAttr_
Definition: libspu2.h:273
tamtypes.h
vblank.h
stdio.h
libsnd2_seq_tick_env_
Definition: libsnd2_internal.h:26
libsnd2_sequence_marker_
Definition: libsnd2_internal.h:42
VabHdr
Definition: libsnd2.h:141
_SsFCALL_
Definition: libsnd2.h:234
VagAtr
Definition: libsnd2.h:172
ProgAtr
Definition: libsnd2.h:158
intrman.h
libsnd2_reg_buffer_struct_2_
Definition: libsnd2_internal.h:181
libsnd2_svm_
Definition: libsnd2_internal.h:151