Torch
Loading...
Searching...
No Matches
OoTAudioTypes.h
1#pragma once
2
3#include "factories/BaseFactory.h"
4#include <map>
5
6namespace OoT {
7
8// Safe big-endian random-access reader over audio bank data.
9// Bounds-checks each read and returns 0 on out-of-range (avoids raw pointer arithmetic).
10class SafeAudioBankReader {
11public:
12 SafeAudioBankReader(std::vector<uint8_t> data);
13 uint8_t ReadU8(uint32_t offset);
14 uint32_t ReadU32(uint32_t offset);
15 int16_t ReadS16(uint32_t offset);
16 float ReadFloat(uint32_t offset);
17 size_t Size() const { return mData.size(); }
18
19private:
20 std::vector<uint8_t> mData;
21 LUS::BinaryReader mReader;
22};
23
24// Audio table entry (16 bytes each in ROM)
26 uint32_t ptr;
27 uint32_t size;
28 uint8_t medium;
29 uint8_t cachePolicy;
30 int16_t data1;
31 int16_t data2;
32 int16_t data3;
33};
34
35struct SampleInfo {
36 uint8_t codec, medium, unk_bit26, unk_bit25;
37 uint32_t dataSize, dataOffset;
38 int32_t loopStart, loopEnd, loopCount;
39 std::vector<int16_t> loopStates;
40 int32_t bookOrder, bookNpredictors;
41 std::vector<int16_t> books;
42 std::string name;
43};
44
46 SafeAudioBankReader& audioBank;
47 const std::vector<AudioTableEntry>& sampleBankTable;
48 std::map<int, std::map<int, std::string>> sampleNames;
49 std::map<uint32_t, SampleInfo>& sampleMap;
50};
51
52} // namespace OoT
Definition OoTAudioTypes.h:10
Definition OoTAudioTypes.h:45
Definition OoTAudioTypes.h:25
Definition OoTAudioTypes.h:35