summaryrefslogtreecommitdiff
path: root/src/Z2AudioCS/SpkWave.cpp
diff options
context:
space:
mode:
authorMax Roncace <me@caseif.net>2026-02-20 05:53:27 -0500
committerGitHub <noreply@github.com>2026-02-20 02:53:27 -0800
commit803bc041c7e228e2b7c88afd1121550e51db3f82 (patch)
tree5462e8061bc8a8084db8ea2fc677a0fef5bb16d1 /src/Z2AudioCS/SpkWave.cpp
parent0558bde1e61374f5a1b54453f07fe6cc15525bc1 (diff)
Implement Z2AudioCS (#3103)
Diffstat (limited to 'src/Z2AudioCS/SpkWave.cpp')
-rw-r--r--src/Z2AudioCS/SpkWave.cpp83
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;
+}