#pragma once #include "OoTAudioTypes.h" namespace OoT { class OoTAudioData : public IParsedData { public: std::vector mMainEntry; }; class OoTAudioBinaryExporter : public BaseExporter { ExportResult Export(std::ostream& write, std::shared_ptr data, std::string& entryName, YAML::Node& node, std::string* replacement) override; }; class OoTAudioFactory : public BaseFactory { public: std::optional> parse(std::vector& buffer, YAML::Node& data) override; std::unordered_map> GetExporters() override { return { REGISTER(Binary, OoTAudioBinaryExporter) }; } private: std::vector BuildMainAudioHeader(); std::optional LoadAudioBank(std::vector& buffer); std::vector ParseAudioTable(const uint8_t* codeData, size_t segmentSize, uint32_t tableOffset); std::vector> ParseSequenceFontTable(const uint8_t* codeData, size_t segmentSize, uint32_t tableOffset, uint32_t numSequences); }; } // namespace OoT