PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
ccadsr.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
13void _SsUtResolveADSR(u16 adsr1, u16 adsr2, u16 *adsr_buf)
14{
15 adsr_buf[5] = adsr1 & 0x8000;
16 adsr_buf[6] = adsr2 & 0x8000;
17 adsr_buf[8] = adsr2 & 0x4000;
18 adsr_buf[7] = adsr2 & 0x20;
19 *adsr_buf = (adsr1 >> 8) & 0x7F;
20 adsr_buf[1] = (u8)adsr1 >> 4;
21 adsr_buf[2] = adsr1 & 0xF;
22 adsr_buf[3] = (adsr2 >> 6) & 0x7F;
23 adsr_buf[4] = adsr2 & 0x1F;
24}
25
26void _SsUtBuildADSR(const u16 *adsr_buf, u16 *adsr1, u16 *adsr2)
27{
28 unsigned int v5;
29 s16 v6;
30 unsigned int v7;
31 u16 v8;
32
33 v5 = adsr_buf[6] != 0 ? 0xFFFF8000 : 0;
34 v6 = v5;
35 v7 = adsr_buf[5] != 0 ? 0xFFFF8000 : 0;
36 if ( adsr_buf[8] )
37 v6 = v5 | 0x4000;
38 if ( adsr_buf[7] )
39 v6 |= 0x20u;
40 v8 = v6 | ((adsr_buf[3] << 6) & 0x1FC0) | (adsr_buf[4] & 0x1F);
41 *adsr1 = v7 | ((*adsr_buf << 8) & 0x7F00) | ((16 * adsr_buf[1]) & 0xF0) | (adsr_buf[2] & 0xF);
42 *adsr2 = v8;
43}