old .dmf loading improvements
- YMU759 samples are now properly loaded - improvements to version 7 and 8 format handling
This commit is contained in:
parent
ce253230ce
commit
2fc637494f
|
@ -190,7 +190,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
|
||||||
|
|
||||||
ds.timeBase=reader.readC();
|
ds.timeBase=reader.readC();
|
||||||
ds.speed1=reader.readC();
|
ds.speed1=reader.readC();
|
||||||
if (ds.version>0x05) {
|
if (ds.version>0x07) {
|
||||||
ds.speed2=reader.readC();
|
ds.speed2=reader.readC();
|
||||||
ds.pal=reader.readC();
|
ds.pal=reader.readC();
|
||||||
ds.hz=(ds.pal)?60:50;
|
ds.hz=(ds.pal)?60:50;
|
||||||
|
@ -788,7 +788,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
|
||||||
pitch=reader.readC();
|
pitch=reader.readC();
|
||||||
vol=reader.readC();
|
vol=reader.readC();
|
||||||
}
|
}
|
||||||
if (ds.version<=0x05) {
|
if (ds.version<=0x08) {
|
||||||
sample->rate=ymuSampleRate*400;
|
sample->rate=ymuSampleRate*400;
|
||||||
}
|
}
|
||||||
if (ds.version>0x15) {
|
if (ds.version>0x15) {
|
||||||
|
@ -798,15 +798,15 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
|
||||||
sample->depth=16;
|
sample->depth=16;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (ds.version>0x05) {
|
if (ds.version>0x08) {
|
||||||
sample->depth=16;
|
sample->depth=16;
|
||||||
} else {
|
} else {
|
||||||
// it appears samples were stored as ADPCM back then
|
// it appears samples were stored as ADPCM back then
|
||||||
sample->depth=6;
|
sample->depth=3;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (length>0) {
|
if (length>0) {
|
||||||
if (ds.version>0x05) {
|
if (ds.version>0x08) {
|
||||||
if (ds.version<0x0b) {
|
if (ds.version<0x0b) {
|
||||||
data=new short[1+(length/2)];
|
data=new short[1+(length/2)];
|
||||||
reader.read(data,length);
|
reader.read(data,length);
|
||||||
|
@ -842,8 +842,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
|
||||||
|
|
||||||
delete[] data;
|
delete[] data;
|
||||||
} else {
|
} else {
|
||||||
// ADPCM?
|
// YMZ ADPCM
|
||||||
// it appears to be a slightly modified version of ADPCM-B!
|
|
||||||
adpcmData=new unsigned char[length];
|
adpcmData=new unsigned char[length];
|
||||||
logV("%x",reader.tell());
|
logV("%x",reader.tell());
|
||||||
reader.read(adpcmData,length);
|
reader.read(adpcmData,length);
|
||||||
|
@ -854,7 +853,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
|
||||||
logE("%d: error while initializing sample!",i);
|
logE("%d: error while initializing sample!",i);
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(sample->dataB,adpcmData,length);
|
memcpy(sample->dataZ,adpcmData,length);
|
||||||
delete[] adpcmData;
|
delete[] adpcmData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue