diff options
Diffstat (limited to 'utils/gen_adldata/file_formats')
-rw-r--r-- | utils/gen_adldata/file_formats/load_ail.h | 8 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_bisqwit.h | 3 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_bnk.h | 2 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_bnk2.h | 3 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_ea.h | 10 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_ibk.h | 2 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_jv.h | 4 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_op2.h | 2 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_tmb.h | 2 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_wopl.h | 37 |
10 files changed, 43 insertions, 30 deletions
diff --git a/utils/gen_adldata/file_formats/load_ail.h b/utils/gen_adldata/file_formats/load_ail.h index 4c6c482..af2d3b4 100644 --- a/utils/gen_adldata/file_formats/load_ail.h +++ b/utils/gen_adldata/file_formats/load_ail.h @@ -57,11 +57,13 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix) insdata tmp[200]; const unsigned inscount = (length - 3) / 11; + bool twoOp = (inscount == 1); + for(unsigned i = 0; i < inscount; ++i) { unsigned o = offset + 3 + i * 11; tmp[i].finetune = (gmno < 128 && i == 0) ? notenum : 0; - tmp[i].diff = false; + tmp[i].diff = (i == 1); tmp[i].data[0] = data[o + 0]; // 20 tmp[i].data[8] = data[o + 1]; // 40 (vol) tmp[i].data[2] = data[o + 2]; // 60 @@ -81,8 +83,6 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix) tmp[1].data[10] = uint8_t((fb_c & 0x0E) | (fb_c >> 7)); } } - if(inscount == 1) - tmp[1] = tmp[0]; if(inscount <= 2) { @@ -92,7 +92,7 @@ static bool LoadMiles(const char *fn, unsigned bank, const char *prefix) tmp2.voice2_fine_tune = 0.0; std::string name; if(midi_index >= 0) name = std::string(1, '\377') + MidiInsName[midi_index]; - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); + size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, twoOp); SetBank(bank, (unsigned int)gmno, resno); } } diff --git a/utils/gen_adldata/file_formats/load_bisqwit.h b/utils/gen_adldata/file_formats/load_bisqwit.h index 4928efa..0ba4524 100644 --- a/utils/gen_adldata/file_formats/load_bisqwit.h +++ b/utils/gen_adldata/file_formats/load_bisqwit.h @@ -43,7 +43,8 @@ static bool LoadBisqwit(const char *fn, unsigned bank, const char *prefix) sprintf(name2, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); - size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2); + tmp[1].diff = (tmp[0] != tmp[1]); + size_t resno = InsertIns(tmp[0], tmp[1], tmp2, name, name2, (tmp[0] == tmp[1])); SetBank(bank, gmno, resno); } std::fclose(fp); diff --git a/utils/gen_adldata/file_formats/load_bnk.h b/utils/gen_adldata/file_formats/load_bnk.h index 79ce5f5..984855c 100644 --- a/utils/gen_adldata/file_formats/load_bnk.h +++ b/utils/gen_adldata/file_formats/load_bnk.h @@ -111,7 +111,7 @@ static bool LoadBNK(const char *fn, unsigned bank, const char *prefix, bool is_f if(is_fat) tmp.data[10] ^= 1; - size_t resno = InsertIns(tmp, tmp, tmp2, std::string(1, '\377') + name, name2); + size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); if(!is_fat) { diff --git a/utils/gen_adldata/file_formats/load_bnk2.h b/utils/gen_adldata/file_formats/load_bnk2.h index 202402c..c52af5d 100644 --- a/utils/gen_adldata/file_formats/load_bnk2.h +++ b/utils/gen_adldata/file_formats/load_bnk2.h @@ -86,13 +86,14 @@ static bool LoadBNK2(const char *fn, unsigned bank, const char *prefix, if(xxP24NNN & 8) { // dual-op + tmp[1].diff = true; size_t resno = InsertIns(tmp[0], tmp[1], tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); } else { // single-op - size_t resno = InsertIns(tmp[0], tmp[0], tmp2, std::string(1, '\377') + name, name2); + size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); } } diff --git a/utils/gen_adldata/file_formats/load_ea.h b/utils/gen_adldata/file_formats/load_ea.h index 38de9bb..8653e2a 100644 --- a/utils/gen_adldata/file_formats/load_ea.h +++ b/utils/gen_adldata/file_formats/load_ea.h @@ -96,31 +96,31 @@ static bool LoadEA(const char *fn, unsigned bank, const char *prefix) { std::snprintf(name2, 512, "%sunk%04X", prefix, offset); } - size_t resno = InsertIns(tmp, tmp, tmp2, std::string(1, '\377') + name, name2); + size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); SetBank(bank, gmno, resno); if(gmno == 10) { /*tmp.finetune=0;*/ tmp2.notenum = 0x49; - SetBank(bank, 0x80 + 0x36, InsertIns(tmp, tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x36 - 35], std::string(1, '\377') + prefix + "P54")); + SetBank(bank, 0x80 + 0x36, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x36 - 35], std::string(1, '\377') + prefix + "P54")); } if(gmno == 18) { /*tmp.finetune=0;*/ tmp2.notenum = 0x17; - SetBank(bank, 0x80 + 0x2A, InsertIns(tmp, tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x2A - 35], std::string(1, '\377') + prefix + "P42")); + SetBank(bank, 0x80 + 0x2A, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x2A - 35], std::string(1, '\377') + prefix + "P42")); } if(gmno == 16) { /*tmp.finetune=0;*/ tmp2.notenum = 0x0C; - SetBank(bank, 0x80 + 0x24, InsertIns(tmp, tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x24 - 35], std::string(1, '\377') + prefix + "P36")); + SetBank(bank, 0x80 + 0x24, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x24 - 35], std::string(1, '\377') + prefix + "P36")); } if(gmno == 17) { /*tmp.finetune=0;*/ tmp2.notenum = 0x01; - SetBank(bank, 0x80 + 0x26, InsertIns(tmp, tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x26 - 35], std::string(1, '\377') + prefix + "P38")); + SetBank(bank, 0x80 + 0x26, InsertIns(tmp, tmp2, std::string(1, '\377') + MidiInsName[0x80 + 0x26 - 35], std::string(1, '\377') + prefix + "P38")); } } diff --git a/utils/gen_adldata/file_formats/load_ibk.h b/utils/gen_adldata/file_formats/load_ibk.h index 6370ad0..d5909f3 100644 --- a/utils/gen_adldata/file_formats/load_ibk.h +++ b/utils/gen_adldata/file_formats/load_ibk.h @@ -63,7 +63,7 @@ static bool LoadIBK(const char *fn, unsigned bank, const char *prefix, bool perc tmp2.pseudo4op = false; tmp2.voice2_fine_tune = 0.0; - size_t resno = InsertIns(tmp, tmp, tmp2, std::string(1, '\377') + name, name2); + size_t resno = InsertIns(tmp, tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); } return true; diff --git a/utils/gen_adldata/file_formats/load_jv.h b/utils/gen_adldata/file_formats/load_jv.h index f35de03..f0bcbea 100644 --- a/utils/gen_adldata/file_formats/load_jv.h +++ b/utils/gen_adldata/file_formats/load_jv.h @@ -66,7 +66,7 @@ static bool LoadJunglevision(const char *fn, unsigned bank, const char *prefix) tmp[1].data[9] = data[offset + 9 + 11]; tmp[1].data[10] = data[offset + 7 + 11] & 0x0F;//~0x30; tmp[1].finetune = 0; - tmp[1].diff = false; + tmp[1].diff = data[offset]; struct ins tmp2; tmp2.notenum = data[offset + 1]; @@ -89,7 +89,7 @@ static bool LoadJunglevision(const char *fn, unsigned bank, const char *prefix) if(!data[offset]) { - size_t resno = InsertIns(tmp[0], tmp[0], tmp2, name, name2); + size_t resno = InsertIns(tmp[0], tmp2, name, name2); SetBank(bank, gmno, resno); } else // Double instrument diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index 1dde4ae..9b5b452 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -118,7 +118,7 @@ static bool LoadDoom(const char *fn, unsigned bank, const char *prefix) if(!(ins.flags & FL_DOUBLE_VOICE)) { - size_t resno = InsertIns(tmp[0], tmp[0], tmp2, std::string(1, '\377') + name, name2); + size_t resno = InsertIns(tmp[0], tmp2, std::string(1, '\377') + name, name2); SetBank(bank, (unsigned int)gmno, resno); } else // Double instrument diff --git a/utils/gen_adldata/file_formats/load_tmb.h b/utils/gen_adldata/file_formats/load_tmb.h index c5a3f60..cd9087a 100644 --- a/utils/gen_adldata/file_formats/load_tmb.h +++ b/utils/gen_adldata/file_formats/load_tmb.h @@ -59,7 +59,7 @@ static bool LoadTMB(const char *fn, unsigned bank, const char *prefix) sprintf(name2, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); - size_t resno = InsertIns(tmp, tmp, tmp2, name, name2); + size_t resno = InsertIns(tmp, tmp2, name, name2); SetBank(bank, gmno, resno); } return true; diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h index 08efecb..1b6f579 100644 --- a/utils/gen_adldata/file_formats/load_wopl.h +++ b/utils/gen_adldata/file_formats/load_wopl.h @@ -5,7 +5,14 @@ #include "../midi_inst_list.h" #include "common.h" -static uint8_t wopl_latest_version = 2; +static const uint8_t wopl_latest_version = 2; + +enum class WOPL_Flags +{ + Mode_2op = 0x00, + Mode_4op = 0x01, + Mode_DoubleVoice = 0x02, +}; static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) { @@ -81,7 +88,7 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) { uint32_t bank_offset = melodic_offset + (mbank * 62 * 128); - for(unsigned i = 0; i < 128; i++) + for(uint32_t i = 0; i < 128; i++) { uint32_t offset = bank_offset + uint32_t(i * 62); std::string name; @@ -117,15 +124,15 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) tmp[0].finetune = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 32)); tmp[1].finetune = int8_t(toSint16BE((const uint8_t *)data.data() + offset + 34)); - uint8_t flags = data[offset + 39]; struct ins tmp2; tmp2.notenum = 0; - tmp2.pseudo4op = (flags & 0x02) != 0; + bool real4op = (flags & (uint8_t)WOPL_Flags::Mode_4op) != 0; + tmp2.pseudo4op = (flags & (uint8_t)WOPL_Flags::Mode_DoubleVoice) != 0; tmp2.voice2_fine_tune = 0; tmp[0].diff = false; - tmp[1].diff = false;//tmp2.pseudo4op; + tmp[1].diff = real4op && !tmp2.pseudo4op; int8_t fine_tune = (int8_t)data[offset + 37]; if(fine_tune != 0) @@ -144,11 +151,12 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) name.insert(0, 1, '\377'); char name2[512]; - sprintf(name2, "%sM%u", prefix, i); + std::memset(name2, 0, 512); + std::snprintf(name2, 512, "%sM%u", prefix, i); - if((flags & 0x03) == 0) + if(!real4op && !tmp2.pseudo4op) { - size_t resno = InsertIns(tmp[0], tmp[0], tmp2, name, name2); + size_t resno = InsertIns(tmp[0], tmp2, name, name2); SetBank(bank, i, resno); } else @@ -217,10 +225,11 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) struct ins tmp2; tmp2.notenum = data[offset + 38]; - tmp2.pseudo4op = (flags & 0x02) != 0; + bool real4op = (flags & (uint8_t)WOPL_Flags::Mode_4op) != 0; + tmp2.pseudo4op = (flags & (uint8_t)WOPL_Flags::Mode_DoubleVoice) != 0; tmp2.voice2_fine_tune = 0; tmp[0].diff = false; - tmp[1].diff = false;//tmp2.pseudo4op; + tmp[1].diff = real4op && !tmp2.pseudo4op; int8_t fine_tune = (int8_t)data[offset + 37]; if(fine_tune != 0) @@ -244,11 +253,12 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) name.insert(0, 1, '\377'); char name2[512]; - sprintf(name2, "%sP%u", prefix, gmno & 127); + std::memset(name2, 0, 512); + std::snprintf(name2, 512, "%sP%u", prefix, gmno & 127); - if((flags & 0x03) == 0) + if(!real4op && !tmp2.pseudo4op) { - size_t resno = InsertIns(tmp[0], tmp[0], tmp2, name, name2); + size_t resno = InsertIns(tmp[0], tmp2, name, name2); SetBank(bank, gmno, resno); } else @@ -258,6 +268,7 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix) } } } + return true; } |