11#include "libspu2_internal.h"
13static void __attribute__((optimize(
"no-unroll-loops"))) _spu_wait_SpuSetVoiceADSRAttr(
void)
19 for ( i = 0; i < 2; i += 1 )
22 __asm__ __volatile__(
"" :
"+g"(v1) : :);
26void SpuSetVoiceADSRAttr(
int v_num, u16 ar, u16 dr, u16 sr, u16 rr, u16 sl,
int ar_mode,
int sr_mode,
int rr_mode)
34 v9 = ((ar & 0x7F) << 8) | (16 * (dr & 0xF));
35 v10 = ((sr & 0x7F) << 6) | (rr & 0x1F);
37 _spu_RXX[512 * _spu_core + 3 + 8 * v_num] = v9 | (sl & 0xF) | ((ar_mode == SPU_VOICE_EXPIncN) << 15);
40 case SPU_VOICE_LINEARIncN:
43 case SPU_VOICE_EXPIncN:
46 case SPU_VOICE_EXPDec:
54 if ( rr_mode == SPU_VOICE_EXPDec )
55 v13 = v10 | v12 | 0x20;
56 _spu_RXX[512 * _spu_core + 4 + v11] = v13;
57 _spu_wait_SpuSetVoiceADSRAttr();