diff options
| author | Lywx <kiritodev01@gmail.com> | 2023-09-16 04:01:24 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-16 04:01:24 -0600 |
| commit | ae8487a4adc5d6d33c47d41e3a40d3c67ddb1e45 (patch) | |
| tree | e03627371fc7423c684631ed7eee68d697709e0f /src/Companion.cpp | |
| parent | f5cbd0056d601e4adaf5ed9006192dd510226ee3 (diff) | |
| parent | 98b6d598324fdcb499a2cc4d37a7a6fcd19e8ead (diff) | |
Merge pull request #1 from KiritoDv/feature/audio
Implemented full audio extraction
Diffstat (limited to 'src/Companion.cpp')
| -rw-r--r-- | src/Companion.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/Companion.cpp b/src/Companion.cpp index 16d6c11..df793be 100644 --- a/src/Companion.cpp +++ b/src/Companion.cpp @@ -2,8 +2,10 @@ #include "storm/SWrapper.h" #include "utils/MIODecoder.h" +#include "audio/AudioManager.h" #include "factories/RawFactory.h" #include "factories/BlobFactory.h" +#include "factories/AudioFactory.h" #include "factories/TextureFactory.h" #include "factories/AnimFactory.h" @@ -18,9 +20,12 @@ namespace fs = std::filesystem; static const std::unordered_map<std::string, RawFactory*> gFactories = { { ".png", new TextureFactory() }, { ".anim", new AnimFactory() }, + { ".aiff", new AudioFactory() }, + { ".bnk", new AudioFactory() }, + { ".bset", new AudioFactory() }, + { ".m64", new AudioFactory() }, { ".bin", new BlobFactory(LUS::ResourceType::Blob) }, { ".sbox", new BlobFactory(LUS::ResourceType::Blob, true) }, - { ".aud", new BlobFactory(LUS::ResourceType::Blob, false) }, }; void Companion::Start() { @@ -34,6 +39,9 @@ void Companion::Start() { std::cout << "Detected Rom Size: " << this->gRomData.size() << '\n'; + AudioManager::Instance = new AudioManager(); + AudioManager::Instance->initialize(this->gRomData); + this->ProcessAssets(); } @@ -45,7 +53,7 @@ void Companion::ProcessAssets() { for( auto& [asset, data] : assets.items() ) { std::string extension = fs::path(asset).extension().string(); if( gFactories.find(extension) == gFactories.end() ) { - std::cout << "No factory found for " << asset << '\n'; + std::cout << "No factory found for " << asset << '\n'; continue; } LUS::BinaryWriter write = LUS::BinaryWriter(); @@ -57,7 +65,7 @@ void Companion::ProcessAssets() { RawFactory* factory = gFactories.at(extension); if(!factory->process(&write, entry, this->gRomData)){ - std::cout << "Failed to process " << asset << '\n'; + std::cout << "Failed to process " << asset << '\n'; continue; } @@ -70,13 +78,15 @@ void Companion::ProcessAssets() { if(!isTexture) { // Write to file too std::string dpath = "debug/" + path; - fs::create_directories(fs::path(dpath).parent_path()); + if(!fs::exists(fs::path(dpath).parent_path())){ + fs::create_directories(fs::path(dpath).parent_path()); + } std::ofstream output(dpath, std::ios::binary); output.write((char*)buffer.data(), buffer.size()); output.close(); } - std::cout << "Processed " << path << std::endl; + std::cout << "Processed " << path << std::endl; write.Close(); } |
