summaryrefslogtreecommitdiff
path: root/src/factories/oot/OoTAudioTypes.cpp
blob: 32873315cbf0b9d80cce344359eaee142e8ba611 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "OoTAudioTypes.h"

namespace OoT {

SafeAudioBankReader::SafeAudioBankReader(std::vector<uint8_t> data)
    : mData(std::move(data)), mReader((char*)mData.data(), mData.size()) {
    mReader.SetEndianness(Torch::Endianness::Big);
}

uint8_t SafeAudioBankReader::ReadU8(uint32_t offset) {
    if (offset >= mData.size()) return 0;
    mReader.Seek(offset, LUS::SeekOffsetType::Start);
    return mReader.ReadUByte();
}

uint32_t SafeAudioBankReader::ReadU32(uint32_t offset) {
    if (offset + 4 > mData.size()) return 0;
    mReader.Seek(offset, LUS::SeekOffsetType::Start);
    return mReader.ReadUInt32();
}

int16_t SafeAudioBankReader::ReadS16(uint32_t offset) {
    if (offset + 2 > mData.size()) return 0;
    mReader.Seek(offset, LUS::SeekOffsetType::Start);
    return mReader.ReadInt16();
}

float SafeAudioBankReader::ReadFloat(uint32_t offset) {
    if (offset + 4 > mData.size()) return 0.0f;
    mReader.Seek(offset, LUS::SeekOffsetType::Start);
    return mReader.ReadFloat();
}

} // namespace OoT