FC loader: aaaaaaand more fixes

This commit is contained in:
tildearrow 2022-08-15 03:40:04 -05:00
parent bef8cf5f5f
commit 206b3af12a

View file

@ -2390,10 +2390,11 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) {
DivSong ds; DivSong ds;
ds.tuning=436.0; ds.tuning=436.0;
ds.version=DIV_VERSION_FC; ds.version=DIV_VERSION_FC;
ds.linearPitch=0; //ds.linearPitch=0;
ds.pitchMacroIsLinear=false; //ds.pitchMacroIsLinear=false;
//ds.noSlidesOnFirstTick=true; //ds.noSlidesOnFirstTick=true;
//ds.rowResetsArpPos=true; //ds.rowResetsArpPos=true;
ds.pitchSlideSpeed=8;
ds.ignoreJumpAtEnd=false; ds.ignoreJumpAtEnd=false;
// load here // load here
@ -2843,7 +2844,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) {
ins->std.waveMacro.val[ins->std.waveMacro.len]=wave-10; ins->std.waveMacro.val[ins->std.waveMacro.len]=wave-10;
ins->std.waveMacro.open=true; ins->std.waveMacro.open=true;
lastVal=wave; lastVal=wave;
if (++ins->std.arpMacro.len>=128) break; //if (++ins->std.arpMacro.len>=128) break;
} }
} else if (fm.val[j]==0xe0) { } else if (fm.val[j]==0xe0) {
if (++j>=64) break; if (++j>=64) break;
@ -2892,19 +2893,19 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) {
do { do {
vibPos+=vibSpeed; vibPos+=vibSpeed;
if (vibPos>vibDepth) vibPos=vibDepth; if (vibPos>vibDepth) vibPos=vibDepth;
ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32;
if (++ins->std.pitchMacro.len>=128) break; if (++ins->std.pitchMacro.len>=128) break;
} while (vibPos<vibDepth); } while (vibPos<vibDepth);
do { do {
vibPos-=vibSpeed; vibPos-=vibSpeed;
if (vibPos<-vibDepth) vibPos=-vibDepth; if (vibPos<-vibDepth) vibPos=-vibDepth;
ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32;
if (++ins->std.pitchMacro.len>=128) break; if (++ins->std.pitchMacro.len>=128) break;
} while (vibPos>-vibDepth); } while (vibPos>-vibDepth);
do { do {
vibPos+=vibSpeed; vibPos+=vibSpeed;
if (vibPos>0) vibPos=0; if (vibPos>0) vibPos=0;
ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*4; ins->std.pitchMacro.val[ins->std.pitchMacro.len]=vibPos*32;
if (++ins->std.pitchMacro.len>=128) break; if (++ins->std.pitchMacro.len>=128) break;
} while (vibPos<0); } while (vibPos<0);