Torch
Loading...
Searching...
No Matches
AudioContext.h
1#pragma once
2
3#include "AudioTableFactory.h"
4#include "factories/naudio/v0/AudioHeaderFactory.h"
5#include "factories/BaseFactory.h"
6#include <unordered_map>
7#include <string>
8
9struct TunedSample {
10 uint32_t sample;
11 uint32_t sampleBankId;
12 float tuning;
13};
14
15struct TableEntry {
16 std::shared_ptr<AudioTableData> info;
17 std::unordered_map<uint32_t, AudioTableEntry> entries;
18 std::vector<uint8_t> buffer;
19 uint32_t offset;
20};
21
22enum class NAudioDrivers {
23 SF64, FZEROX, UNKNOWN
24};
25
27public:
28 static std::unordered_map<AudioTableType, TableEntry> tables;
29 static NAudioDrivers driver;
30 // Key: (sampleBankId << 32) | sampleAddr → canonical archive path.
31 // Populated during parse so all dedup decisions are made before any export runs.
32 static std::unordered_map<uint64_t, std::string> sampleDedup;
33 // Key: ROM offset of a duplicate SampleData struct → canonical archive path.
34 // Used by GetPathByAddr() so instrument/drum export writes the canonical hash
35 // instead of the duplicate's hash, making redirect entries permanently unreferenced.
36 static std::unordered_map<uint32_t, std::string> sampleAddrRemap;
37
38 static LUS::BinaryReader MakeReader(AudioTableType type, uint32_t offset);
39 static TunedSample LoadTunedSample(LUS::BinaryReader& reader, uint32_t parent, uint32_t sampleBankId);
40 static uint64_t GetPathByAddr(uint32_t addr);
41
42 static const char* GetMediumStr(uint8_t medium);
43 static const char* GetCachePolicyStr(uint8_t policy);
44 static const char* GetCodecStr(uint8_t codec);
45};
46
48public:
49 std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
50
51 inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
52 return {
53 REGISTER(Header, AudioDummyExporter)
54 REGISTER(Binary, AudioDummyExporter)
55 REGISTER(Code, AudioDummyExporter)
56 };
57 }
58
59 bool HasModdedDependencies() override { return true; }
60};
Definition AudioContext.h:47
Definition AudioContext.h:26
Definition AudioHeaderFactory.h:12
Definition BaseFactory.h:94
Definition AudioContext.h:15
Definition AudioContext.h:9