mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-31 00:45:24 -04:00
45 lines
1.0 KiB
C++
45 lines
1.0 KiB
C++
#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;
|
|
}
|