XM import: improve envelope conversion again

issue #2026
This commit is contained in:
tildearrow 2025-03-16 16:28:36 -05:00
parent 3fae6a4ba8
commit 1dcb9e809b

View file

@ -76,12 +76,16 @@ void readEnvelope(DivInstrument* ins, int env, unsigned char flags, unsigned cha
if (flags&4) { // loop if (flags&4) { // loop
if (loopStart!=loopEnd && loopStart<numPoints) { if (loopStart!=loopEnd && loopStart<numPoints) {
target->loop=CLAMP(pointTime[loopStart],0,254); target->loop=CLAMP(pointTime[loopStart],0,254);
target->len=MIN(pointTime[numPoints-1],255);
} else {
target->len=MIN(pointTime[numPoints-1]+1,255);
} }
} else {
target->len=MIN(pointTime[numPoints-1]+1,255);
} }
if (flags&2 && susPoint<numPoints) { // sustain if (flags&2 && susPoint<numPoints) { // sustain
target->rel=CLAMP(pointTime[susPoint]-1,0,254); target->rel=CLAMP(pointTime[susPoint]-1,0,254);
} }
target->len=MIN(pointTime[numPoints-1]+1,255);
if (((flags&4) && (!(flags&2))) || ((flags&6)==0)) { if (((flags&4) && (!(flags&2))) || ((flags&6)==0)) {
target->rel=target->len-1; target->rel=target->len-1;
} }
@ -565,6 +569,7 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) {
if (volType&1) { if (volType&1) {
// add fade-out // add fade-out
logV("volFade: %d",volFade);
if (volFade!=0) { if (volFade!=0) {
int cur=64; int cur=64;
int macroLen=ins->std.volMacro.len; int macroLen=ins->std.volMacro.len;