summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JAudio2/JAUStreamFileTable.cpp
blob: f30c5c4a01de20c0255f434d96cea4b9f03471ec (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
35
36
37
38
39
40
#include "JSystem/JSystem.h" // IWYU pragma: keep

#include "JSystem/JAudio2/JAUStreamFileTable.h"

JAUStreamFileTable::JAUStreamFileTable() {
    mData = NULL;
}

void JAUStreamFileTable::init(void const* data) {
    const BinaryStreamFileTable* binaryTable = (const BinaryStreamFileTable*)data;
    if (binaryTable == NULL) {
        mData = NULL;
        return;
    }
    if (binaryTable->mIdentifier[0] == 'b' && binaryTable->mIdentifier[1] == 's' && binaryTable->mIdentifier[2] == 'f' && binaryTable->mIdentifier[3] == 't') {
        mData = binaryTable;
    }
}

u32 JAUStreamFileTable::getNumFiles() const {
    return mData->mNumFiles;
}

const char* JAUStreamFileTable::getFilePath(int index) const {
    if (mData == NULL) {
        return 0;
    }
    JUT_ASSERT(52, index >= 0);
    JUT_ASSERT(53, index < getNumFiles());
    char* data = (char*)mData;
    return (char*)(data + *(int*)(data + 8 + (index * sizeof(s32))));
}

s32 JAUStreamDataMgr_StreamFileTable::getStreamFileEntry(JAISoundID soundId) {
    const char* filePath = getFilePath(soundId.id_.info.waveID);
    if (filePath == NULL) {
        return -1;
    }
    return DVDConvertPathToEntrynum(filePath);
}