diff --git a/src/engine/fileOps/it.cpp b/src/engine/fileOps/it.cpp index 6424a8f41..f5a624243 100644 --- a/src/engine/fileOps/it.cpp +++ b/src/engine/fileOps/it.cpp @@ -1619,12 +1619,6 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) { logV("maxChan: %d",maxChan); - // set channel visibility - for (int i=maxChan; i<((maxChan+32)&(~31)); i++) { - ds.subsong[0]->chanShow[i]=false; - ds.subsong[0]->chanShowChanOsc[i]=false; - } - // copy patterns to the rest of subsongs int copiesMade=0; for (size_t i=1; i>5; i++) { ds.system[i]=DIV_SYSTEM_ES5506; + ds.systemChans[i]=MIN(32,chansToCount); + chansToCount-=ds.systemChans[i]; ds.systemFlags[i].set("amigaVol",true); if (!ds.compatFlags.linearPitch) { ds.systemFlags[i].set("amigaPitch",true); @@ -1675,7 +1672,6 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) { ds.systemName="PC"; // find subsongs - ds.initDefaultSystemChans(); ds.recalcChans(); ds.findSubSongs(); diff --git a/src/engine/fileOps/s3m.cpp b/src/engine/fileOps/s3m.cpp index 4537b3f66..9b82077c7 100644 --- a/src/engine/fileOps/s3m.cpp +++ b/src/engine/fileOps/s3m.cpp @@ -345,6 +345,7 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) { ds.systemName="PC"; if (hasPCM) { ds.system[ds.systemLen]=DIV_SYSTEM_ES5506; + ds.systemChans[ds.systemLen]=32; // for now ds.systemVol[ds.systemLen]=(float)globalVol/64.0; ds.systemPan[ds.systemLen]=0; ds.systemFlags[ds.systemLen].set("volScale",3900); @@ -354,6 +355,7 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) { } if (hasFM) { ds.system[ds.systemLen]=opl2 ? DIV_SYSTEM_OPL2 : DIV_SYSTEM_OPL3; + ds.systemChans[ds.systemLen]=opl2?9:18; // for now ds.systemVol[ds.systemLen]=1.0f; ds.systemPan[ds.systemLen]=0; ds.systemLen++; @@ -1179,7 +1181,6 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) { } // find subsongs - ds.initDefaultSystemChans(); ds.recalcChans(); ds.findSubSongs(); diff --git a/src/engine/fileOps/xm.cpp b/src/engine/fileOps/xm.cpp index 73c9a1697..e448879da 100644 --- a/src/engine/fileOps/xm.cpp +++ b/src/engine/fileOps/xm.cpp @@ -301,8 +301,11 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) { } } + int chansToCount=totalChans; for (int i=0; i<(totalChans+31)>>5; i++) { ds.system[i]=DIV_SYSTEM_ES5506; + ds.systemChans[i]=MIN(32,chansToCount); + chansToCount-=ds.systemChans[i]; ds.systemFlags[i].set("amigaVol",true); ds.systemFlags[i].set("amigaPitch",(ds.compatFlags.linearPitch==0)); ds.systemFlags[i].set("volScale",3900); @@ -1370,14 +1373,7 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) { return false; } - // set channel visibility - for (int i=totalChans; i<((totalChans+32)&(~31)); i++) { - ds.subsong[0]->chanShow[i]=false; - ds.subsong[0]->chanShowChanOsc[i]=false; - } - // find subsongs - ds.initDefaultSystemChans(); ds.recalcChans(); ds.findSubSongs();