mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-24 15:00:55 -04:00
84 lines
1.7 KiB
C++
84 lines
1.7 KiB
C++
#include "Z2AudioCS/SpkWave.h"
|
|
|
|
#include "JSystem/JAudio2/JASCriticalSection.h"
|
|
#include "JSystem/JUtility/JUTAssert.h"
|
|
#include <revolution/os.h>
|
|
#include <revolution/types.h>
|
|
|
|
SpkWave::SpkWave(void) {
|
|
mWaveData = NULL;
|
|
}
|
|
|
|
void SpkWave::setResource(void* res) {
|
|
JUT_ASSERT(30, res);
|
|
|
|
JASCriticalSection cs;
|
|
|
|
mWaveData = res;
|
|
}
|
|
|
|
s32 SpkWave::getNumOfWaves(void) const {
|
|
if (mWaveData == NULL) {
|
|
return 0;
|
|
}
|
|
|
|
return ((s32*)mWaveData)[1];
|
|
}
|
|
|
|
s32 SpkWave::getWaveSize(s32 num) const {
|
|
JUT_ASSERT(57, num >= 0);
|
|
if (!mWaveData) {
|
|
return 0;
|
|
}
|
|
JUT_ASSERT(60, num < getNumOfWaves());
|
|
|
|
WaveData* data = getWaveData(num);
|
|
JUT_ASSERT(63, data);
|
|
return data->size;
|
|
}
|
|
|
|
u32 SpkWave::getLoopStartPos(s32 num) const {
|
|
JUT_ASSERT(76, num >= 0);
|
|
if (!mWaveData) {
|
|
return 0;
|
|
}
|
|
JUT_ASSERT(79, num < getNumOfWaves());
|
|
|
|
WaveData* data = getWaveData(num);
|
|
JUT_ASSERT(82, data);
|
|
return data->loopStartPos;
|
|
}
|
|
|
|
u32 SpkWave::getLoopEndPos(s32 num) const {
|
|
JUT_ASSERT(95, num >= 0);
|
|
if (!mWaveData) {
|
|
return 0;
|
|
}
|
|
JUT_ASSERT(98, num < getNumOfWaves());
|
|
|
|
WaveData* data = getWaveData(num);
|
|
JUT_ASSERT(101, data);
|
|
return data->loopEndPos;
|
|
}
|
|
|
|
s16* SpkWave::getWave(s32 num) const {
|
|
JUT_ASSERT(114, num >= 0);
|
|
if (!mWaveData) {
|
|
return 0;
|
|
}
|
|
JUT_ASSERT(117, num < getNumOfWaves());
|
|
|
|
WaveData* data = getWaveData(num);
|
|
JUT_ASSERT(120, data);
|
|
return data->wave;
|
|
}
|
|
|
|
WaveData* SpkWave::getWaveData(s32 num) const {
|
|
JUT_ASSERT(138, num >= 0);
|
|
JUT_ASSERT(139, mWaveData);
|
|
JUT_ASSERT(140, num < getNumOfWaves());
|
|
|
|
WaveData* data = (WaveData*)((u32)mWaveData + *(u32*)((u32)mWaveData + num * 4 + 8));
|
|
return data;
|
|
}
|