IT/S3M/XM import: use systemChans

This commit is contained in:
tildearrow 2025-11-19 19:00:39 -05:00
parent f1a3295a78
commit 5f2c309abd
3 changed files with 8 additions and 15 deletions

View file

@ -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<ds.subsong.size(); i++) {
@ -1664,8 +1658,11 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
}
// set systems
int chansToCount=maxChan;
for (int i=0; i<(maxChan+32)>>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();

View file

@ -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();

View file

@ -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();