diff options
| author | KiritoDv <kiritodev01@gmail.com> | 2023-09-16 03:10:56 -0600 |
|---|---|---|
| committer | KiritoDv <kiritodev01@gmail.com> | 2023-09-16 03:10:56 -0600 |
| commit | 98b6d598324fdcb499a2cc4d37a7a6fcd19e8ead (patch) | |
| tree | e03627371fc7423c684631ed7eee68d697709e0f /src/factories/AudioFactory.cpp | |
| parent | fc7bf4c6ec1a637bb9eb240220533af856dc5a66 (diff) | |
Added support to extract banks on each sequence
Diffstat (limited to 'src/factories/AudioFactory.cpp')
| -rw-r--r-- | src/factories/AudioFactory.cpp | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/src/factories/AudioFactory.cpp b/src/factories/AudioFactory.cpp index a6c5364..bd91a20 100644 --- a/src/factories/AudioFactory.cpp +++ b/src/factories/AudioFactory.cpp @@ -33,10 +33,6 @@ bool AudioFactory::process(LUS::BinaryWriter* writer, nlohmann::json& data, std: WRITE_HEADER(LUS::ResourceType::Bank, 0); - if(path.find("sound/banks/us/20_bank") != std::string::npos){ - int bp = 0; - } - WRITE_U32(bank.insts.size()); for(auto &instrument : bank.insts){ WRITE_U8(instrument.valid); @@ -119,7 +115,29 @@ bool AudioFactory::process(LUS::BinaryWriter* writer, nlohmann::json& data, std: return true; } - if(metadata.size() < 2 || !metadata[1].contains("us")){ + if(path.find("sound/sequences") != std::string::npos){ + + if(!metadata[1].contains("us")){ + return false; + } + + WRITE_HEADER(LUS::ResourceType::Sequence, 0); + + size_t size = metadata[0]; + auto offsets = metadata[1]["us"]; + + std::vector<uint8_t> bank = metadata[1]["banks"]; + + WRITE_U32(bank.size()); + WRITE_ARRAY(bank.data(), bank.size()); + + WRITE_U32(size); + WRITE_ARRAY(buffer.data() + (size_t)offsets[0], size); + + return true; + } + + if(path.find("sound/samples") == std::string::npos || metadata.size() < 2 || !metadata[1].contains("us")){ return false; } @@ -132,14 +150,10 @@ bool AudioFactory::process(LUS::BinaryWriter* writer, nlohmann::json& data, std: write_aiff(aifcData, *writer); */ - WRITE_HEADER(LUS::ResourceType::Audio, 0); + WRITE_HEADER(LUS::ResourceType::Sample, 0); AudioBankSample entry = AudioManager::Instance->get_aifc(metadata[1]["us"][1]); - if(path.find("00_mario_waaaooow") != std::string::npos){ - int bp = 0; - } - // Write AdpcmLoop WRITE_U32(entry.loop.start); WRITE_U32(entry.loop.end); |
