summaryrefslogtreecommitdiff
path: root/src/factories/AudioFactory.cpp
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2023-09-16 03:10:56 -0600
committerKiritoDv <kiritodev01@gmail.com>2023-09-16 03:10:56 -0600
commit98b6d598324fdcb499a2cc4d37a7a6fcd19e8ead (patch)
treee03627371fc7423c684631ed7eee68d697709e0f /src/factories/AudioFactory.cpp
parentfc7bf4c6ec1a637bb9eb240220533af856dc5a66 (diff)
Added support to extract banks on each sequence
Diffstat (limited to 'src/factories/AudioFactory.cpp')
-rw-r--r--src/factories/AudioFactory.cpp34
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);