giga-refactor, part 2

This commit is contained in:
tildearrow 2025-11-12 05:06:51 -05:00
parent a654d33df2
commit db419dc6c8
27 changed files with 282 additions and 237 deletions

View file

@ -1168,6 +1168,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
}
ds.systemName=getSongSystemLegacyName(ds,!getConfInt("noMultiSystem",0));
ds.initDefaultSystemChans();
ds.recalcChans();
if (active) quitDispatch();
@ -1175,6 +1176,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
// always convert to normal sample mode (I have no idea how will I do export)
convertLegacySampleMode();

View file

@ -664,6 +664,7 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) {
ds.subsong[0]->optimizePatterns();
ds.subsong[0]->rearrangePatterns();
ds.initDefaultSystemChans();
ds.recalcChans();
if (active) quitDispatch();
@ -671,8 +672,8 @@ bool DivEngine::loadFC(unsigned char* file, size_t len) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
recalcChans();
saveLock.unlock();
BUSY_END;
if (active) {

View file

@ -2802,6 +2802,7 @@ bool DivEngine::loadFTM(unsigned char* file, size_t len, bool dnft, bool dnft_si
}
}
ds.initDefaultSystemChans();
ds.recalcChans();
if (active) quitDispatch();
@ -2809,6 +2810,7 @@ bool DivEngine::loadFTM(unsigned char* file, size_t len, bool dnft, bool dnft_si
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
saveLock.unlock();
BUSY_END;

View file

@ -2136,6 +2136,7 @@ bool DivEngine::loadFur(unsigned char* file, size_t len, int variantID) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
// removal of legacy sample mode
if (song.version<239) {

View file

@ -1675,6 +1675,7 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
ds.systemName="PC";
// find subsongs
ds.initDefaultSystemChans();
ds.recalcChans();
ds.findSubSongs();
@ -1708,6 +1709,7 @@ bool DivEngine::loadIT(unsigned char* file, size_t len) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
saveLock.unlock();
BUSY_END;

View file

@ -431,6 +431,7 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) {
ds.insLen=ds.ins.size();
// find subsongs
ds.initDefaultSystemChans();
ds.recalcChans();
ds.findSubSongs();
@ -439,6 +440,7 @@ bool DivEngine::loadMod(unsigned char* file, size_t len) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
saveLock.unlock();
BUSY_END;

View file

@ -1179,6 +1179,7 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) {
}
// find subsongs
ds.initDefaultSystemChans();
ds.recalcChans();
ds.findSubSongs();
@ -1215,6 +1216,7 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
saveLock.unlock();
BUSY_END;

View file

@ -302,7 +302,7 @@ SafeWriter* DivEngine::saveText(bool separatePatterns) {
for (int j=0; j<s->ordersLen; j++) {
w->writeText(fmt::sprintf("%.2X |",j));
for (int k=0; k<chans; k++) {
for (int k=0; k<song.chans; k++) {
w->writeText(fmt::sprintf(" %.2X",s->orders.ord[k][j]));
}
w->writeText("\n");
@ -318,7 +318,7 @@ SafeWriter* DivEngine::saveText(bool separatePatterns) {
for (int k=0; k<s->patLen; k++) {
w->writeText(fmt::sprintf("%.2X ",k));
for (int l=0; l<chans; l++) {
for (int l=0; l<song.chans; l++) {
DivPattern* p=s->pat[l].getPattern(s->orders.ord[l][j],false);
short note, octave;
noteToSplitNote(p->newData[k][DIV_PAT_NOTE],note,octave);

View file

@ -711,6 +711,7 @@ bool DivEngine::loadTFMv1(unsigned char* file, size_t len) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
saveLock.unlock();
BUSY_END;
@ -905,6 +906,7 @@ bool DivEngine::loadTFMv2(unsigned char* file, size_t len) {
info.loopPos=loopPos;
TFMParsePattern(info);
ds.initDefaultSystemChans();
ds.recalcChans();
if (active) quitDispatch();
@ -912,6 +914,7 @@ bool DivEngine::loadTFMv2(unsigned char* file, size_t len) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
saveLock.unlock();
BUSY_END;

View file

@ -1377,6 +1377,7 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) {
}
// find subsongs
ds.initDefaultSystemChans();
ds.recalcChans();
ds.findSubSongs();
@ -1385,6 +1386,7 @@ bool DivEngine::loadXM(unsigned char* file, size_t len) {
saveLock.lock();
song.unload();
song=ds;
hasLoadedSomething=true;
changeSong(0);
saveLock.unlock();
BUSY_END;