sdk-world
v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Toggle main menu visibility
Loading...
Searching...
No Matches
vm_aloc2.c
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
#include "
libsnd2_internal.h
"
12
13
void
_SsVmDoAllocate(
void
)
14
{
15
int
v0;
16
u16 vag_spu_addr;
17
const
VagAtr
*v6;
18
s16 damper;
19
libsnd2_spu_voice_t *voice_struct;
20
21
voice_struct = &_svm_voice[_svm_cur.m_voice_idx];
22
voice_struct->m_key_stat = 0x7FFF;
23
for
( v0 = 0; v0 < 16; v0 += 1 )
24
{
25
_svm_envx_hist[v0] &= ~(1 << (_svm_cur.m_voice_idx & 0xFF));
26
}
27
if
( (_svm_cur.m_vag_idx2 & 1) != 0 )
28
{
29
vag_spu_addr = _svm_pg[(_svm_cur.m_vag_idx2 - 1) / 2].m_vag_spu_addr_hi;
30
}
31
else
32
{
33
vag_spu_addr = _svm_pg[(_svm_cur.m_vag_idx2 - 1) / 2].m_vag_spu_addr_lo;
34
}
35
_svm_sreg_buf2[_svm_cur.m_voice_idx].m_vag_spu_addr = vag_spu_addr;
36
_svm_sreg_dirty[_svm_cur.m_voice_idx] |= 8u;
37
_svm_sreg_buf2[_svm_cur.m_voice_idx].m_vab_spu_offset = gVabOffet[_svm_cur.m_vab_id];
38
v6 = &_svm_tn[16 * _svm_cur.m_fake_program + _svm_cur.m_tone];
39
_svm_sreg_buf[_svm_cur.m_voice_idx].m_adsr1 = v6->adsr1;
40
damper = _svm_damper + (v6->adsr2 & 0x1F);
41
if
( damper >= 32 )
42
damper = 31;
43
_svm_sreg_buf[_svm_cur.m_voice_idx].m_adsr2 = damper | (v6->adsr2 & ~0x1F);
44
_svm_sreg_dirty[_svm_cur.m_voice_idx] |= 0x30u;
45
}
libsnd2_internal.h
VagAtr
Definition
libsnd2.h:177
libsnd2
src
vm
vm_aloc2.c
Generated by
1.18.0