aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fm_banks/adldata-cache.datbin250011 -> 250281 bytes
-rw-r--r--src/inst_db.cpp12
-rw-r--r--utils/gen_adldata/file_formats/load_op2.h39
3 files changed, 30 insertions, 21 deletions
diff --git a/fm_banks/adldata-cache.dat b/fm_banks/adldata-cache.dat
index 92d043c..722dddb 100644
--- a/fm_banks/adldata-cache.dat
+++ b/fm_banks/adldata-cache.dat
Binary files differ
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)
{