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