diff options
| author | Max Roncace <me@caseif.net> | 2026-02-20 05:53:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-20 02:53:27 -0800 |
| commit | 803bc041c7e228e2b7c88afd1121550e51db3f82 (patch) | |
| tree | 5462e8061bc8a8084db8ea2fc677a0fef5bb16d1 /src/Z2AudioCS/SpkWave.cpp | |
| parent | 0558bde1e61374f5a1b54453f07fe6cc15525bc1 (diff) | |
Implement Z2AudioCS (#3103)
Diffstat (limited to 'src/Z2AudioCS/SpkWave.cpp')
| -rw-r--r-- | src/Z2AudioCS/SpkWave.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/Z2AudioCS/SpkWave.cpp b/src/Z2AudioCS/SpkWave.cpp new file mode 100644 index 0000000000..98c8e81a81 --- /dev/null +++ b/src/Z2AudioCS/SpkWave.cpp @@ -0,0 +1,83 @@ +#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; +} |
