PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
s_svada.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 "libspu2_internal.h"
12
13static void __attribute__((optimize("no-unroll-loops"))) _spu_wait_SpuSetVoiceADSRAttr(void)
14{
15 int i;
16 int v1;
17
18 v1 = 1;
19 for ( i = 0; i < 2; i += 1 )
20 {
21 v1 *= 13;
22 __asm__ __volatile__("" : "+g"(v1) : :);
23 }
24}
25
26void SpuSetVoiceADSRAttr(int v_num, u16 ar, u16 dr, u16 sr, u16 rr, u16 sl, int ar_mode, int sr_mode, int rr_mode)
27{
28 s16 v9;
29 s16 v10;
30 int v11;
31 s16 v12;
32 u16 v13;
33
34 v9 = ((ar & 0x7F) << 8) | (16 * (dr & 0xF));
35 v10 = ((sr & 0x7F) << 6) | (rr & 0x1F);
36 v11 = 8 * v_num;
37 _spu_RXX[512 * _spu_core + 3 + 8 * v_num] = v9 | (sl & 0xF) | ((ar_mode == SPU_VOICE_EXPIncN) << 15);
38 switch ( sr_mode )
39 {
40 case SPU_VOICE_LINEARIncN:
41 v12 = 0;
42 break;
43 case SPU_VOICE_EXPIncN:
44 v12 = 0x8000;
45 break;
46 case SPU_VOICE_EXPDec:
47 v12 = 0xC000;
48 break;
49 default:
50 v12 = 0x4000;
51 break;
52 }
53 v13 = v10 | v12;
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();
58}
typedef __attribute__
Definition tlbfunc.c:60