PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
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
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
38typedef int (*libsnd2_vab_allocate_callback)(unsigned int size_in_bytes, int mode, s16 vab_id);
39
40typedef 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
117typedef 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
151typedef 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;
178
179typedef 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
193extern libsnd2_sequence_marker_t _SsMarkCallback[32];
194extern int VBLANK_MINUS;
195extern unsigned int _snd_openflag;
196extern int _snd_ev_flag;
197extern _SsFCALL SsFCALL;
198extern libsnd2_sequence_struct_t *_ss_score[32];
199extern s16 _snd_seq_s_max;
200extern s16 _snd_seq_t_max;
201
202extern s16 _svm_stereo_mono;
203extern int _svm_vab_not_send_size;
204extern SpuReverbAttr _svm_rattr;
205extern char _svm_vab_used[16];
206extern char _SsVmMaxVoice;
207extern s16 _svm_vab_count;
208extern s16 kMaxPrograms;
209extern libsnd2_svm_t _svm_cur;
210extern s16 _svm_damper;
211extern u8 _svm_auto_kof_mode;
212extern VabHdr *_svm_vab_vh[16];
213extern ProgAtr *_svm_vab_pg[16];
214extern VagAtr *_svm_vab_tn[16];
215extern int _svm_vab_start[16];
216extern int _svm_vab_total[16];
217extern VabHdr *_svm_vh;
218extern ProgAtr *_svm_pg;
219extern VagAtr *_svm_tn;
220
221extern u16 _svm_okon1;
222// extern int _svm_envx_ptr;
223extern unsigned int _svm_envx_hist[16];
224extern libsnd2_spu_voice_t _svm_voice[24];
225extern u16 _svm_okof1;
226extern u16 _svm_okof2;
227extern u16 _svm_okon2;
228extern libsnd2_auto_vol_pan_callback _autovol;
229extern libsnd2_auto_vol_pan_callback _autopan;
230extern char _svm_sreg_dirty[24];
231extern libsnd2_reg_buffer_struct_t _svm_sreg_buf[24];
232extern libsnd2_reg_buffer_struct_2_t _svm_sreg_buf2[24];
233extern u16 _svm_orev2;
234extern u16 _svm_orev1;
235extern u16 _svm_onos2;
236extern u16 _svm_onos1;
237
238extern s16 gVabOffet[16];
239
240extern unsigned int _snd_vmask;
241
242// extern s16 gPitchCorrect;
243
244extern libsnd2_seq_tick_env_t _snd_seq_tick_env;
245extern int _snd_seq_interval;
246
247extern void _SsUtResolveADSR(u16 adsr1, u16 adsr2, u16 *adsr_buf);
248extern void _SsUtBuildADSR(const u16 *adsr_buf, u16 *adsr1, u16 *adsr2);
249extern void _SsSndCrescendo(s16 sep_no, s16 seq_no);
250extern void _SsSeqPlay(s16 sep_no, s16 seq_no);
251extern void _SsSeqGetEof(s16 sep_no, s16 seq_no);
252extern int _SsGetSeqData(s16 sep_no, s16 seq_no);
253extern s32 _SsReadDeltaValue(s16 sep_no, s16 seq_no);
254extern void _SsSndNextSep(s16 sep_no, s16 seq_no);
255extern void _SsSndNextPause(s16 sep_no, s16 seq_no);
256extern void _SsSndPause(s16 sep_no, s16 seq_no);
257extern void _SsSndPlay(s16 sep_no, s16 seq_no);
258extern void _SsSndReplay(s16 sep_no, s16 seq_no);
259extern int _SsInitSoundSep(s16 sep_no, int seq_no, u8 vab_id, u8 *addr);
260extern s16 _SsInitSoundSeq(s16 seq_no, s16 vab_id, u8 *addr);
261extern void _SsSndSetAccele(s16 sep_no, s16 seq_no, int tempo, int v_time);
262extern void _SsSndSetCres(s16 sep_no, s16 seq_no, s16 vol, int v_time);
263extern void _SsSndSetDecres(s16 sep_no, s16 seq_no, s16 vol, int v_time);
264extern void _SsInit(void);
265extern void _SsSndSetPauseMode(s16 sep_no, s16 seq_no);
266extern void _SsSndSetReplayMode(s16 sep_no, s16 seq_no);
267extern void Snd_SetPlayMode(s16 sep_no, s16 seq_no, char play_mode, char l_count);
268extern void _SsSndSetRit(s16 sep_no, s16 seq_no, int tempo, int v_time);
269#ifdef LIB_1300
270extern void _SsTrapIntrVSync(void);
271#endif
272#ifdef LIB_1300
273extern void _SsSeqCalledTbyT_1per2(void);
274#endif
275extern int _SsTrapIntrProcIOP(void *userdata);
276extern void _SsSndStop(s16 sep_no, s16 seq_no);
277extern void _SsSndSetVol(s16 sep_no, s16 seq_no, u16 voll, u16 volr);
278extern void _SsSndTempo(s16 sep_no, s16 seq_no);
279extern void _SsSndSetVolData(s16 sep_no, s16 seq_no, s16 vol, int v_time);
280extern s16 _SsVmAlloc(void);
281extern void _SsVmDoAllocate(void);
282extern void SeAutoPan(s16 vc, s16 start_pan, s16 end_pan, s16 delta_time);
283extern void SetAutoPan(int vc);
284extern void SeAutoVol(s16 vc, s16 start_vol, s16 end_vol, s16 delta_time);
285extern void SetAutoVol(int vc);
286extern void _SsVmDamperOff(void);
287extern void _SsVmDamperOn(void);
288extern void wait1fsa(void);
289extern void DumpSpu(void);
290extern void DumpVoice(void);
291extern void DumpVoice2(void);
292extern void _SsVmFlush(void);
293extern void _SsVmInit(int voice_count);
294extern int _SsVmKeyOn(int seq_sep_no, s16 vab_id, s16 prog, s16 note, s16 voll, s16 unknown27);
295extern int _SsVmKeyOff(int seq_sep_no, s16 vab_id, s16 prog, s16 note);
296extern int _SsVmSeKeyOn(s16 vab_id, s16 prog, u16 note, int pitch, u16 voll, u16 volr);
297extern int _SsVmSeKeyOff(s16 vab_id, s16 prog, s16 note);
298extern void KeyOnCheck(void);
299extern s16 note2pitch(void);
300extern s16 note2pitch2(s16 note, s16 fine);
301extern void vmNoiseOn(u8 vc);
302extern void vmNoiseOn2(u8 vc, u16 voll, u16 volr, u16 arg3, u16 arg4);
303extern void vmNoiseOff(u8 vc);
304extern void _SsVmNoiseOnWithAdsr(s32 voll, s32 volr, s32 arg2, s32 arg3);
305extern void _SsVmNoiseOff(void);
306extern void _SsVmNoiseOn(u16 voll, u16 volr);
307extern void _SsVmKeyOffNow(void);
308extern void _SsVmKeyOnNow(s16 vag_count, s16 pitch);
309extern int _SsVmPBVoice(s16 vc, s16 seq_sep_num, s16 vab_id, s16 prog, s16 pitch);
310extern int _SsVmPitchBend(s16 seq_sep_no, int vab_id, int prog, s16 pitch);
311extern void _SsVmSetProgVol(s16 vab_id, s16 prog, u8 vol);
312extern int _SsVmGetProgVol(s16 vab_id, s16 prog);
313extern int _SsVmSetProgPan(s16 vab_id, s16 prog, char mpan);
314extern int _SsVmGetProgPan(s16 vab_id, s16 prog);
315extern void _SsVmSetSeqVol(s16 seq_sep_num, s16 voll, s16 volr);
316extern void _SsVmGetSeqVol(s16 seq_sep_no, s16 *voll_ptr, s16 *volr_ptr);
317extern int _SsVmGetSeqLVol(s16 seq_sep_no);
318extern int _SsVmGetSeqRVol(s16 seq_sep_no);
319extern void _SsVmSeqKeyOff(s16 seq_sep_no);
320extern void SePitchBend(u8 vc, s16 arg1);
321extern s16 _SsVmSelectToneAndVag(u8 *vag_attr_idx_ptr, u8 *vag_nums_ptr);
322extern void SeVibOn(void);
323extern void SetVib(void);
324extern void SsUtVibrateOn(void);
325extern void SsUtVibrateOff(void);
326extern int _SsVmSetVol(s16 seq_sep_no, s16 vab_id, s16 prog, s16 voll, s16 volr);
327extern int _SsVmVSetUp(s16 vab_id, s16 prog);
328extern int _SsVabOpenHeadWithMode(u8 *addr, int vab_id, libsnd2_vab_allocate_callback alloc_fn, int mode);
329
330#endif