aboutsummaryrefslogtreecommitdiff
path: root/utils/gen_adldata/file_formats/load_wopl.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/gen_adldata/file_formats/load_wopl.h')
-rw-r--r--utils/gen_adldata/file_formats/load_wopl.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/utils/gen_adldata/file_formats/load_wopl.h b/utils/gen_adldata/file_formats/load_wopl.h
index cd8765e..cef475f 100644
--- a/utils/gen_adldata/file_formats/load_wopl.h
+++ b/utils/gen_adldata/file_formats/load_wopl.h
@@ -18,7 +18,7 @@ enum class WOPL_Flags
WOPL_RhythmModeMask = 0x38,
};
-static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
+static bool LoadWopl(BanksDump &db, const char *fn, unsigned bank, const char *prefix)
{
FILE *fp = std::fopen(fn, "rb");
if(!fp)
@@ -27,6 +27,7 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
std::fflush(stderr);
return false;
}
+
std::fseek(fp, 0, SEEK_END);
std::vector<unsigned char> data(size_t(std::ftell(fp)));
std::rewind(fp);
@@ -63,6 +64,8 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
setup.volumeModel = (int)data[0x12];
setup.scaleModulators = false;
+ size_t bankDb = (unsigned)db.initBank(bank, static_cast<uint_fast16_t>((static_cast<unsigned>(data[0x11]) << 8) | static_cast<unsigned>(data[0x12])));
+
// Validate file format by size calculation
if(version == 1)
{
@@ -98,12 +101,14 @@ static bool LoadWopl(const char *fn, unsigned bank, const char *prefix)
percussion_offset = melodic_offset + (insSize * 128 * mbanks_count);
- uint32_t root_offsets[2] = {melodic_offset, percussion_offset};
+ //uint32_t root_sizes[2] = {mbanks_count, pbanks_count};
+ uint32_t root_sizes[2] = {1, 1};
+ uint32_t root_offsets[2] = {melodic_offset, percussion_offset};
for(size_t bset = 0; bset < 2; bset++)
{
bool is_percussion = (bset == 1);
- for(uint32_t bankno = 0; bankno < 1; bankno++) // only first melodic bank (Until multi-banks support will be implemented)
+ for(uint32_t bankno = 0; bankno < root_sizes[bset]; bankno++) // only first melodic bank (Until multi-banks support will be implemented)
{
uint32_t bank_offset = root_offsets[bset] + (bankno * insSize * 128);