# HG changeset patch # User Matti Hamalainen # Date 1350307197 -10800 # Node ID cd57ba1130eb7c9399e4658d475e208090758d80 # Parent b420025e5cd2b95c8f5dfd5f2f95f16ad4f3d43c Fixes and improvements in the JMOD saving and loading. diff -r b420025e5cd2 -r cd57ba1130eb jloadjss.c --- a/jloadjss.c Mon Oct 15 15:57:30 2012 +0300 +++ b/jloadjss.c Mon Oct 15 16:19:57 2012 +0300 @@ -270,22 +270,22 @@ JSFOREACHNOTE1 JSGETBYTE(&tmp); - note->instrument = tmp; + note->instrument = (tmp > 0) ? tmp - 1 : jsetNotSet; JSFOREACHNOTE2 JSFOREACHNOTE1 JSGETBYTE(&tmp); - note->volume = tmp; + note->volume = (tmp > 0) ? tmp - 1 : jsetNotSet; JSFOREACHNOTE2 JSFOREACHNOTE1 JSGETBYTE(&tmp); - note->effect = tmp; + note->effect = (tmp > 0) ? tmp - 1 : jsetNotSet; JSFOREACHNOTE2 JSFOREACHNOTE1 JSGETBYTE(&tmp); - note->param = tmp; + note->param = (tmp == 0 && note->effect == jsetNotSet) ? jsetNotSet : tmp; JSFOREACHNOTE2 return DMERR_OK; diff -r b420025e5cd2 -r cd57ba1130eb xm2jss.c --- a/xm2jss.c Mon Oct 15 15:57:30 2012 +0300 +++ b/xm2jss.c Mon Oct 15 16:19:57 2012 +0300 @@ -386,7 +386,8 @@ JSFOREACHNOTE2; JSFOREACHNOTE1; - JSCONVPUT(note->param, "Param"); + tmp = (note->param != jsetNotSet) ? note->param : 0; + JSPUTBYTE(tmp); JSFOREACHNOTE2; return DMERR_OK; @@ -704,7 +705,7 @@ { if (n->instrument != jsetNotSet) { - if (n->instrument >= 0 && n->instrument < m->nextInstruments) + if (optStripExtInstr || (n->instrument >= 0 && n->instrument < m->nextInstruments)) usedExtInstruments[n->instrument] = TRUE; else dmMsg(2, "Pattern 0x%x, row=0x%x, chn=%d has invalid instrument 0x%x\n", @@ -781,7 +782,7 @@ for (n8 = n16 = i = 0; i <= jsetMaxInstruments; i++) if (m->instruments[i] != NULL) { - if (!usedInstruments[i]) + if (!usedInstruments[i] && !optStripInstr) { dmPrint(2, "0x%x, ", i); } @@ -810,7 +811,7 @@ for (i = 0; i < jsetMaxInstruments; i++) if (usedExtInstruments[i]) { - if (i >= m->nextInstruments) + if (i >= m->nextInstruments && !optStripExtInstr) { dmError("Ext.instrument 0x%x >= 0x%x, but used!\n", i, m->nextInstruments); @@ -874,12 +875,15 @@ { char effect; - if (n->instrument >= 0 && n->instrument <= jsetMaxInstruments) - n->instrument = mapExtInstruments[n->instrument]; + if (!optStripExtInstr) + { + if (n->instrument >= 0 && n->instrument <= jsetMaxInstruments) + n->instrument = mapExtInstruments[n->instrument]; - if (n->instrument != jsetNotSet && r->extInstruments[n->instrument] == NULL) - dmError("Non-existing instrument used #%d.\n", n->instrument); - + if (n->instrument != jsetNotSet && r->extInstruments[n->instrument] == NULL) + dmError("Non-existing instrument used #%d.\n", n->instrument); + } + JMPGETEFFECT(effect, n->effect); switch (effect)