blob: 51e40413940398ea79ed7ae215252d7bad60c83e (
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
41
42
43
44
|
#include "Z2AudioCS/SpkTable.h"
SpkTable::SpkTable(void) {
mIsInitialized = false;
mNumOfSound = 0;
mEntryOffset = 0;
mDataOffsets = 0;
}
struct SpkTableHeader {
s32 resourceCount;
s32 entryOff;
s32 dataOffsetsStartOff;
BOOL isDataOffsetsInitialized;
};
void SpkTable::setResource(void* res) {
mIsInitialized = false;
s32* cursor = (s32*)res;
s32 resourceCount = *cursor++;
s32 entryOff = *cursor++;
s32 dataOffsetsStartOff = *cursor++;
s32* pIsDataOffsetsInitialized = cursor;
BOOL isDataOffsetsInitialized = *cursor++;
mNumOfSound = resourceCount;
s32 entryOffset = (s32)res + entryOff;
mEntryOffset = entryOffset;
s32* dataOffsets = (s32*)((s32)res + dataOffsetsStartOff);
if (!isDataOffsetsInitialized) {
for (s32 i = 0; i < mNumOfSound; i++) {
dataOffsets[i] += (s32)res;
}
}
s32* dataOffsetsCopy = dataOffsets;
mDataOffsets = dataOffsetsCopy;
*pIsDataOffsetsInitialized = TRUE;
mIsInitialized = true;
}
|