11#include "libsnd2_internal.h"
13void _SsUtResolveADSR(u16 adsr1, u16 adsr2, u16 *adsr_buf)
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;
26void _SsUtBuildADSR(
const u16 *adsr_buf, u16 *adsr1, u16 *adsr2)
33 v5 = adsr_buf[6] != 0 ? 0xFFFF8000 : 0;
35 v7 = adsr_buf[5] != 0 ? 0xFFFF8000 : 0;
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);