mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-27 15:03:01 +00:00
better compatibility with old GB modules
This commit is contained in:
parent
4c8ff2edb3
commit
943e4e374f
1 changed files with 23 additions and 0 deletions
|
@ -819,6 +819,17 @@ bool DivEngine::load(unsigned char* f, size_t slen) {
|
|||
ins->gb.soundLen=reader.readC();
|
||||
|
||||
logD("GB data: vol %d dir %d len %d sl %d\n",ins->gb.envVol,ins->gb.envDir,ins->gb.envLen,ins->gb.soundLen);
|
||||
} else if (ds.system==DIV_SYSTEM_GB) {
|
||||
// try to convert macro to envelope
|
||||
if (ins->std.volMacroLen>0) {
|
||||
ins->gb.envVol=ins->std.volMacro[0];
|
||||
if (ins->std.volMacro[0]<ins->std.volMacro[1]) {
|
||||
ins->gb.envDir=true;
|
||||
}
|
||||
if (ins->std.volMacro[ins->std.volMacroLen-1]==0) {
|
||||
ins->gb.soundLen=ins->std.volMacroLen*2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -878,6 +889,12 @@ bool DivEngine::load(unsigned char* f, size_t slen) {
|
|||
// ditto
|
||||
pat->data[k][1]--;
|
||||
}
|
||||
if (ds.version<0x12) {
|
||||
if (ds.system==DIV_SYSTEM_GB && i==3 && pat->data[k][1]>0) {
|
||||
// back then noise was 2 octaves lower
|
||||
pat->data[k][1]-=2;
|
||||
}
|
||||
}
|
||||
// volume
|
||||
pat->data[k][3]=reader.readS();
|
||||
if (ds.version<0x0a) {
|
||||
|
@ -888,6 +905,12 @@ bool DivEngine::load(unsigned char* f, size_t slen) {
|
|||
pat->data[k][3]>>=1;
|
||||
}
|
||||
}
|
||||
if (ds.version<0x12) {
|
||||
if (ds.system==DIV_SYSTEM_GB && i==2 && pat->data[k][3]>0) {
|
||||
// volume range of GB wave channel was 0-3 rather than 0-F
|
||||
pat->data[k][3]=(pat->data[k][3]&3)*5;
|
||||
}
|
||||
}
|
||||
for (int l=0; l<chan.effectRows; l++) {
|
||||
// effect
|
||||
pat->data[k][4+(l<<1)]=reader.readS();
|
||||
|
|
Loading…
Reference in a new issue