summaryrefslogtreecommitdiff
path: root/src/Companion.cpp
diff options
context:
space:
mode:
authorLywx <kiritodev01@gmail.com>2023-09-16 04:01:24 -0600
committerGitHub <noreply@github.com>2023-09-16 04:01:24 -0600
commitae8487a4adc5d6d33c47d41e3a40d3c67ddb1e45 (patch)
treee03627371fc7423c684631ed7eee68d697709e0f /src/Companion.cpp
parentf5cbd0056d601e4adaf5ed9006192dd510226ee3 (diff)
parent98b6d598324fdcb499a2cc4d37a7a6fcd19e8ead (diff)
Merge pull request #1 from KiritoDv/feature/audio
Implemented full audio extraction
Diffstat (limited to 'src/Companion.cpp')
-rw-r--r--src/Companion.cpp20
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();
}