Add YMZ280B support
This commit is contained in:
parent
2faf1c1d23
commit
0ae0c6f703
14 changed files with 1523 additions and 45 deletions
|
|
@ -93,17 +93,12 @@ bool DivSample::initInternal(unsigned char d, int count) {
|
|||
dataDPCM=new unsigned char[lengthDPCM];
|
||||
memset(dataDPCM,0,lengthDPCM);
|
||||
break;
|
||||
case 2: // AICA ADPCM
|
||||
if (dataAICA!=NULL) delete[] dataAICA;
|
||||
lengthAICA=(count+1)/2;
|
||||
dataAICA=new unsigned char[(lengthAICA+255)&(~0xff)];
|
||||
memset(dataAICA,0,(lengthAICA+255)&(~0xff));
|
||||
break;
|
||||
case 3: // YMZ ADPCM
|
||||
case 2: // YMZ ADPCM
|
||||
if (dataZ!=NULL) delete[] dataZ;
|
||||
lengthZ=(count+1)/2;
|
||||
dataZ=new unsigned char[(lengthZ+255)&(~0xff)];
|
||||
memset(dataZ,0,(lengthZ+255)&(~0xff));
|
||||
// for padding AICA sample
|
||||
dataZ=new unsigned char[(lengthZ+3)&(~0x03)];
|
||||
memset(dataZ,0,(lengthZ+3)&(~0x03));
|
||||
break;
|
||||
case 4: // QSound ADPCM
|
||||
if (dataQSoundA!=NULL) delete[] dataQSoundA;
|
||||
|
|
@ -669,10 +664,7 @@ void DivSample::render() {
|
|||
}
|
||||
break;
|
||||
}
|
||||
case 2: // AICA ADPCM
|
||||
aica_decode(dataAICA,data16,samples);
|
||||
break;
|
||||
case 3: // YMZ ADPCM
|
||||
case 2: // YMZ ADPCM
|
||||
ymz_decode(dataZ,data16,samples);
|
||||
break;
|
||||
case 4: // QSound ADPCM
|
||||
|
|
@ -727,13 +719,9 @@ void DivSample::render() {
|
|||
if (accum>127) accum=127;
|
||||
}
|
||||
}
|
||||
if (depth!=2) { // AICA ADPCM
|
||||
if (depth!=2) { // YMZ ADPCM
|
||||
if (!initInternal(2,samples)) return;
|
||||
aica_encode(data16,dataAICA,(samples+511)&(~0x1ff));
|
||||
}
|
||||
if (depth!=3) { // YMZ ADPCM
|
||||
if (!initInternal(3,samples)) return;
|
||||
ymz_encode(data16,dataZ,(samples+511)&(~0x1ff));
|
||||
ymz_encode(data16,dataZ,(samples+7)&(~0x7));
|
||||
}
|
||||
if (depth!=4) { // QSound ADPCM
|
||||
if (!initInternal(4,samples)) return;
|
||||
|
|
@ -772,8 +760,6 @@ void* DivSample::getCurBuf() {
|
|||
case 1:
|
||||
return dataDPCM;
|
||||
case 2:
|
||||
return dataAICA;
|
||||
case 3:
|
||||
return dataZ;
|
||||
case 4:
|
||||
return dataQSoundA;
|
||||
|
|
@ -802,8 +788,6 @@ unsigned int DivSample::getCurBufLen() {
|
|||
case 1:
|
||||
return lengthDPCM;
|
||||
case 2:
|
||||
return lengthAICA;
|
||||
case 3:
|
||||
return lengthZ;
|
||||
case 4:
|
||||
return lengthQSoundA;
|
||||
|
|
@ -915,7 +899,6 @@ DivSample::~DivSample() {
|
|||
if (data16) delete[] data16;
|
||||
if (data1) delete[] data1;
|
||||
if (dataDPCM) delete[] dataDPCM;
|
||||
if (dataAICA) delete[] dataAICA;
|
||||
if (dataZ) delete[] dataZ;
|
||||
if (dataQSoundA) delete[] dataQSoundA;
|
||||
if (dataA) delete[] dataA;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue