DSPHLE/Zelda: simplify AFC decoding

This commit is contained in:
Tillmann Karras 2024-04-06 18:50:01 +01:00
parent 116da3ab95
commit 8533b5649e

View File

@ -1735,6 +1735,7 @@ void ZeldaAudioRenderer::DecodeAFC(VPB* vpb, s16* dst, size_t block_count)
if (vpb->samples_source_type == VPB::SRC_AFC_HQ_FROM_ARAM) if (vpb->samples_source_type == VPB::SRC_AFC_HQ_FROM_ARAM)
{ {
// 4-bit samples
for (size_t i = 0; i < 16; i += 2) for (size_t i = 0; i < 16; i += 2)
{ {
nibbles[i + 0] = *src >> 4; nibbles[i + 0] = *src >> 4;
@ -1742,14 +1743,11 @@ void ZeldaAudioRenderer::DecodeAFC(VPB* vpb, s16* dst, size_t block_count)
src++; src++;
} }
for (auto& nibble : nibbles) for (auto& nibble : nibbles)
{ nibble = s16(nibble << 12) >> 1;
if (nibble >= 8)
nibble -= 16;
nibble <<= 11;
}
} }
else else
{ {
// 2-bit samples
for (size_t i = 0; i < 16; i += 4) for (size_t i = 0; i < 16; i += 4)
{ {
nibbles[i + 0] = (*src >> 6) & 3; nibbles[i + 0] = (*src >> 6) & 3;
@ -1759,11 +1757,7 @@ void ZeldaAudioRenderer::DecodeAFC(VPB* vpb, s16* dst, size_t block_count)
src++; src++;
} }
for (auto& nibble : nibbles) for (auto& nibble : nibbles)
{ nibble = s16(nibble << 14) >> 1;
if (nibble >= 2)
nibble -= 4;
nibble <<= 13;
}
} }
s32 yn1 = *vpb->AFCYN1(), yn2 = *vpb->AFCYN2(); s32 yn1 = *vpb->AFCYN1(), yn2 = *vpb->AFCYN2();