diff options
-rw-r--r-- | fm_banks/adldata-cache.dat | bin | 250011 -> 250281 bytes | |||
-rw-r--r-- | src/inst_db.cpp | 12 | ||||
-rw-r--r-- | utils/gen_adldata/file_formats/load_op2.h | 39 |
3 files changed, 30 insertions, 21 deletions
diff --git a/fm_banks/adldata-cache.dat b/fm_banks/adldata-cache.dat Binary files differindex 92d043c..722dddb 100644 --- a/fm_banks/adldata-cache.dat +++ b/fm_banks/adldata-cache.dat diff --git a/src/inst_db.cpp b/src/inst_db.cpp index 396b666..dc9e30e 100644 --- a/src/inst_db.cpp +++ b/src/inst_db.cpp @@ -1780,7 +1780,7 @@ const BanksDump::InstrumentEntry g_embeddedBanksInstruments[] = {12,12,0,83,0,0,0x6,0xB4,0xA0,{2328,2329}}, {12,12,0,32,0,0,0xE,0xF6,0x140,{2330,2331}}, {12,12,0,60,0,0,0xF,0x9C40,0x56,{2332,2333}}, - {12,54,0,36,0,0,0xE,0x11E,0x6A,{2334,2335}}, + {12,12,0,36,0,0,0xE,0x11E,0x6A,{2334,2335}}, {0,0,0,27,0,0,0x7,0x23D,0xC8,{2336,2337}}, {12,12,0,88,0,0,0xF,0x154,0x196,{695,696}}, {0,0,0,31,0,0,0x7,0x2B5,0x154,{2338,2339}}, @@ -1807,12 +1807,12 @@ const BanksDump::InstrumentEntry g_embeddedBanksInstruments[] = {12,12,0,48,0,0,0,0x118,0x140,{2357,726}}, {12,12,0,77,0,0,0x8,0x154,0xAD,{729,730}}, {12,12,0,72,0,0,0x8,0x154,0xAD,{729,730}}, - {12,12,0,0,0,0,0xA,0x28,0x5D,{2358,2359}}, + {12,12,0,60,0x4,0,0xA,0x28,0x5D,{2358,2359}}, {12,12,0,49,0,0,0xA,0x28,0x5D,{2360,2361}}, {12,12,0,73,0,0,0x6,0xA6,0x64,{2362,2302}}, {12,12,0,68,0,0,0x6,0xA6,0x64,{2362,2302}}, {12,12,0,61,0,0,0x6,0xC8,0x6A,{2362,2302}}, - {12,12,0,0,0,0,0xA,0x28,0x5D,{2363,2359}}, + {12,12,0,60,0x4,0,0xA,0x28,0x5D,{2363,2359}}, {12,12,0,90,0,0,0x8,0xC1,0x5D,{743,744}}, {12,12,0,90,0,0,0x8,0x319,0x6A,{745,746}}, {12,12,0,0,0,0,0xA,0x9C40,0x161,{2364,2365}}, @@ -1821,9 +1821,9 @@ const BanksDump::InstrumentEntry g_embeddedBanksInstruments[] = {12,12,0,0,0,0,0x8,0x280D,0x1B1,{2370,2371}}, {0,12,0,0,0x3,0,0xD00,0x9C40,0xF6,{2372,2110,2373,2374} }, {12,12,0,0,0,0,0xC,0x9C40,0x201,{2375,2376}}, - {12,54,0,36,0x3,0,0xC00,0x140,0x189,{2377,2378,2379,2380} }, + {12,12,0,36,0x3,0,0xC00,0x175,0x190,{2377,2378,2379,2380} }, {12,12,0,69,0,0,0xE,0x4A2,0xE52,{2381,2353}}, - {12,12,0,0,0,0,0xB,0x9C40,0,{2382,2383}}, + {12,12,0,60,0,0,0xB,0x9C40,0,{2382,2383}}, {12,12,0,0,0,0,0x2,0x9C40,0x5D,{2384,2095}}, {0,12,0,0,0,0,0x2,0x9C40,0x140,{2385,63}}, {0,0,0,22,0,0,0xA,0x758,0x8C0,{2386,2387}}, @@ -4944,7 +4944,7 @@ const BanksDump::InstrumentEntry g_embeddedBanksInstruments[] = {12,12,0,0,0,0,0xA,0x9C40,0x8C,{6752,6753}}, {0,12,0,0,0,0,0,0x236,0x189,{6754,2306}}, {12,12,0,32,0,0,0x50F,0x92,0xBA,{6755,6756}}, - {12,54,0,36,0,0,0xC01,0x111,0x154,{6757,2378}}, + {12,12,0,36,0,0,0xC01,0x111,0x154,{6757,2378}}, {12,12,0,88,0,0,0x50F,0x15A,0x190,{6758,6759}}, {0,0,0,0,0,0,0x8,0x2314,0x564,{6760,6761}}, {0,0,0,0,0,0,0x8,0x23E2,0x585,{6762,6763}}, diff --git a/utils/gen_adldata/file_formats/load_op2.h b/utils/gen_adldata/file_formats/load_op2.h index e43f17f..7468544 100644 --- a/utils/gen_adldata/file_formats/load_op2.h +++ b/utils/gen_adldata/file_formats/load_op2.h @@ -79,17 +79,21 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s { const size_t offset1 = 0x18A4 + a * 32; const size_t offset2 = 8 + a * 36; - BanksDump::MidiBank &bnk = a < 128 ? bnkMelodique : bnkPercussion; + bool isDrum = a >= 128; + BanksDump::MidiBank &bnk = isDrum ? bnkPercussion : bnkMelodique; BanksDump::InstrumentEntry inst; BanksDump::Operator ops[5]; + std::string name; for(unsigned p = 0; p < 32; ++p) + { if(data[offset1] != '\0') name += char(data[offset1 + p]); + } //printf("%3d %3d %3d %8s: ", a,b,c, name.c_str()); int gmno = int(a < 128 ? a : ((a | 128) + 35)); - size_t patchId = a < 128 ? a : ((a - 128) + 35); + size_t patchId = isDrum ? ((a - 128) + 35) : a; char name2[512]; snprintf(name2, 512, "%s%c%u", prefix, (gmno < 128 ? 'M' : 'P'), gmno & 127); @@ -103,23 +107,28 @@ bool BankFormats::LoadDoom(BanksDump &db, const char *fn, unsigned bank, const s for(size_t index = 0; index < 2; ++index) { const Doom_OPL2instrument &src = ins.patchdata[index]; - tmp[index].data[0] = src.trem_vibr_1; - tmp[index].data[1] = src.trem_vibr_2; - tmp[index].data[2] = src.att_dec_1; - tmp[index].data[3] = src.att_dec_2; - tmp[index].data[4] = src.sust_rel_1; - tmp[index].data[5] = src.sust_rel_2; - tmp[index].data[6] = src.wave_1; - tmp[index].data[7] = src.wave_2; - tmp[index].data[8] = src.scale_1 | src.level_1; - tmp[index].data[9] = src.scale_2 | src.level_2; - tmp[index].data[10] = src.feedback; - noteOffset[index] = toSint16LE(src.basenote) + 12; + tmp[index].d.op1_amvib = src.trem_vibr_1; + tmp[index].d.op2_amvib = src.trem_vibr_2; + tmp[index].d.op1_atdec = src.att_dec_1; + tmp[index].d.op2_atdec = src.att_dec_2; + tmp[index].d.op1_susrel = src.sust_rel_1; + tmp[index].d.op2_susrel = src.sust_rel_2; + tmp[index].d.op1_wave = src.wave_1; + tmp[index].d.op2_wave = src.wave_2; + tmp[index].d.op1_ksltl = src.scale_1 | src.level_1; + tmp[index].d.op2_ksltl = src.scale_2 | src.level_2; + tmp[index].d.fbconn = src.feedback; + if(isDrum) + noteOffset[index] = 12; + else + noteOffset[index] = toSint16LE(src.basenote) + 12; inst.fbConn |= (uint_fast16_t(src.feedback) << (index == 1 ? 8 : 0)); db.toOps(tmp[index].d, ops, index * 2); } - uint8_t notenum = ins.note; + uint8_t notenum = ins.note; + if(isDrum) + notenum = (flags & FL_FIXED_PITCH) ? ins.note : 60; while(notenum && notenum < 20) { |