summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/factories/ResourceType.h1
-rw-r--r--src/factories/naudio/v1/AudioTableFactory.cpp27
2 files changed, 23 insertions, 5 deletions
diff --git a/src/factories/ResourceType.h b/src/factories/ResourceType.h
index 4f00098..9c9a062 100644
--- a/src/factories/ResourceType.h
+++ b/src/factories/ResourceType.h
@@ -73,5 +73,6 @@ enum class ResourceType {
AdpcmLoop = 0x4150434C, // APCL
AdpcmBook = 0x41504342, // APCB
Envelope = 0x45564C50, // EVLP
+ AudioTable = 0x4154424C
};
} // namespace LUS
diff --git a/src/factories/naudio/v1/AudioTableFactory.cpp b/src/factories/naudio/v1/AudioTableFactory.cpp
index 2dcd665..b30c7c9 100644
--- a/src/factories/naudio/v1/AudioTableFactory.cpp
+++ b/src/factories/naudio/v1/AudioTableFactory.cpp
@@ -70,12 +70,29 @@ ExportResult AudioTableCodeExporter::Export(std::ostream &write, std::shared_ptr
ExportResult AudioTableBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
auto writer = LUS::BinaryWriter();
- // auto data = std::static_pointer_cast<AudioTableEntry>(raw)->mBuffer;
+ auto data = std::static_pointer_cast<AudioTableData>(raw);
- // WriteHeader(writer, Torch::ResourceType::Blob, 0);
- // writer.Write((uint32_t) data.size());
- // writer.Write((char*) data.data(), data.size());
- // writer.Finish(write);
+ WriteHeader(writer, Torch::ResourceType::AudioTable, 0);
+ writer.Write((uint8_t) data->type);
+ writer.Write(data->medium);
+ writer.Write(data->addr);
+ writer.Write((uint32_t) data->entries.size());
+
+ for(auto& entry : data->entries){
+ if(data->type != AudioTableType::SAMPLE_TABLE){
+ writer.Write(AudioContext::GetPathByAddr(entry.addr));
+ } else {
+ writer.Write((uint64_t) entry.addr);
+ }
+ writer.Write(entry.size);
+ writer.Write(entry.medium);
+ writer.Write(entry.cachePolicy);
+ writer.Write(entry.shortData1);
+ writer.Write(entry.shortData2);
+ writer.Write(entry.shortData3);
+ }
+
+ writer.Finish(write);
return std::nullopt;
}