chanOsc visibility checklist

This commit is contained in:
Eknous-P 2023-11-15 18:21:01 +04:00
parent bb1cbbc403
commit 225cdead96
5 changed files with 37 additions and 11 deletions

View file

@ -54,8 +54,8 @@ class DivWorkPool;
#define DIV_UNSTABLE
#define DIV_VERSION "dev187"
#define DIV_ENGINE_VERSION 187
#define DIV_VERSION "dev189"
#define DIV_ENGINE_VERSION 189
// for imports
#define DIV_VERSION_MOD 0xff01
#define DIV_VERSION_FC 0xff02

View file

@ -2182,7 +2182,13 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
if (ds.version>=39) {
for (int i=0; i<tchans; i++) {
subSong->chanShow[i]=reader.readC();
if (ds.version<189) {
subSong->chanShow[i]=reader.readC();
} else { // stores 2 bools in a single char for better compat?
unsigned char tempchar=reader.readC();
subSong->chanShow[i]=tempchar&0xf;
subSong->chanShowChanOsc[i]=(tempchar>>4);
}
}
for (int i=0; i<tchans; i++) {
@ -2580,7 +2586,13 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
}
for (int i=0; i<tchans; i++) {
subSong->chanShow[i]=reader.readC();
if (ds.version<189) {
subSong->chanShow[i]=reader.readC();
} else {
unsigned char tempchar=reader.readC();
subSong->chanShow[i]=tempchar&0xf;
subSong->chanShowChanOsc[i]=(tempchar>>4);
}
}
for (int i=0; i<tchans; i++) {
@ -3449,12 +3461,14 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) {
}
for(int i=0; i<chCount; i++) {
ds.subsong[0]->chanShow[i]=true;
ds.subsong[0]->chanShowChanOsc[i]=true;
ds.subsong[0]->chanName[i]=fmt::sprintf("Channel %d",i+1);
ds.subsong[0]->chanShortName[i]=fmt::sprintf("C%d",i+1);
}
for(int i=chCount; i<ds.systemLen*4; i++) {
ds.subsong[0]->pat[i].effectCols=1;
ds.subsong[0]->chanShow[i]=false;
ds.subsong[0]->chanShowChanOsc[i]=false;
}
// instrument creation
@ -5402,7 +5416,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary, bool newPatternFormat) {
}
for (int i=0; i<chans; i++) {
w->writeC(subSong->chanShow[i]);
w->writeC(subSong->chanShow[i]+(subSong->chanShowChanOsc[i]<<4));
}
for (int i=0; i<chans; i++) {
@ -5559,7 +5573,7 @@ SafeWriter* DivEngine::saveFur(bool notPrimary, bool newPatternFormat) {
}
for (int i=0; i<chans; i++) {
w->writeC(subSong->chanShow[i]);
w->writeC(subSong->chanShow[i]+(subSong->chanShowChanOsc[i]<<4));
}
for (int i=0; i<chans; i++) {

View file

@ -164,6 +164,7 @@ struct DivSubSong {
DivChannelData pat[DIV_MAX_CHANS];
bool chanShow[DIV_MAX_CHANS];
bool chanShowChanOsc[DIV_MAX_CHANS];
unsigned char chanCollapse[DIV_MAX_CHANS];
String chanName[DIV_MAX_CHANS];
String chanShortName[DIV_MAX_CHANS];
@ -183,6 +184,7 @@ struct DivSubSong {
patLen(64),
ordersLen(1) {
for (int i=0; i<DIV_MAX_CHANS; i++) {
chanShowChanOsc[i]=true;
chanShow[i]=true;
chanCollapse[i]=0;
}