INNER CODE UNIT · C++
code
TheAssemblyArmada/Vanilla-Conquer · common/auduncmp.cpp:52
code = *src++;
sample += ZapTabFour[(code & 0x0F)]; // lower nibble
*dst++ = clamp(sample, 0, 255);
sample += ZapTabFour[(code >> 4)]; // higher nibble
*dst++ = clamp(sample, 0, 255);
remaining -= 2; // two bytes added to output
}
break;
case 0: // ADPCM 8-bit -> 2-bit
for (++count; count > 0; --count) { // decode (count+1) bytes
code = *src++;
sample += ZapTabTwo[(code & 0x03)]; // lower 2 bits
*dst++ = clamp(sample, 0, 255);
sample += ZapTabTwo[((code >> 2) & 0x03)]; // lower middle 2 bits
*dst++ = clamp(sample, 0, 255);
sample += ZapTabTwo[((code >> 4) & 0x03)]; // higher middle 2 bits
*dst++ = clamp(sample, 0, 255);