summaryrefslogtreecommitdiff
path: root/src
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
parentfc7bf4c6ec1a637bb9eb240220533af856dc5a66 (diff)
Added support to extract banks on each sequence
Diffstat (limited to 'src')
-rw-r--r--src/Companion.cpp2
-rw-r--r--src/audio/AudioManager.cpp4
-rw-r--r--src/factories/AudioFactory.cpp34
-rw-r--r--src/factories/ResourceType.h3
4 files changed, 29 insertions, 14 deletions
diff --git a/src/Companion.cpp b/src/Companion.cpp
index 05a100c..df793be 100644
--- a/src/Companion.cpp
+++ b/src/Companion.cpp
@@ -23,8 +23,8 @@ static const std::unordered_map<std::string, RawFactory*> gFactories = {
{ ".aiff", new AudioFactory() },
{ ".bnk", new AudioFactory() },
{ ".bset", new AudioFactory() },
+ { ".m64", new AudioFactory() },
{ ".bin", new BlobFactory(LUS::ResourceType::Blob) },
- { ".m64", new BlobFactory(LUS::ResourceType::Blob) },
{ ".sbox", new BlobFactory(LUS::ResourceType::Blob, true) },
};
diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp
index d72bda6..2316141 100644
--- a/src/audio/AudioManager.cpp
+++ b/src/audio/AudioManager.cpp
@@ -335,7 +335,6 @@ AdpcmLoop AudioManager::parse_loop(uint32_t addr, std::vector<uint8_t>& bankData
int32_t count = reader.ReadInt32();
uint32_t pad = reader.ReadUInt32();
- std::cout << "Loop End: " << end << '\n';
if(count != 0){
state = std::vector<int16_t>();
for (size_t i = 0; i < 16; ++i) {
@@ -433,6 +432,7 @@ TBLFile AudioManager::parse_tbl(std::vector<uint8_t>& data, std::vector<Entry>&
void AudioManager::initialize(std::vector<uint8_t>& buffer) {
auto assets = nlohmann::json::parse(std::ifstream( "assets.json" ));
auto sound_data = assets["@sound_data"]["us"];
+
auto sound_tbl = sound_data["sound_tbl"];
auto sound_ctl = sound_data["sound_ctl"];
@@ -661,4 +661,4 @@ uint32_t AudioManager::get_index(AudioBankSample* entry) {
std::map<uint32_t, Bank> AudioManager::get_banks() {
return this->banks;
-}
+} \ No newline at end of file
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);
diff --git a/src/factories/ResourceType.h b/src/factories/ResourceType.h
index ee8a9f6..7dfac06 100644
--- a/src/factories/ResourceType.h
+++ b/src/factories/ResourceType.h
@@ -20,6 +20,7 @@ enum class ResourceType {
Skybox = 0x534B5942, // SKYB
Anim = 0x414E494D, // ANIM
Bank = 0x42414E4B, // BANK
- Audio = 0x41554643, // AIFC
+ Sample = 0x41554643, // AIFC
+ Sequence = 0x53455143, // SEQC
};
} // namespace LUS