summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JAudio2/JASSimpleWaveBank.cpp
blob: c599a0e8576610f89e2bf81cf10e088419032301 (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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include "JSystem/JSystem.h" // IWYU pragma: keep

#include "JSystem/JAudio2/JASSimpleWaveBank.h"
#include <stdint.h>

JASSimpleWaveBank::JASSimpleWaveBank() {
    mWaveTable = NULL;
    mWaveTableSize = 0;
}

JASSimpleWaveBank::~JASSimpleWaveBank() {
    delete[] mWaveTable;
}

void JASSimpleWaveBank::setWaveTableSize(u32 size, JKRHeap* heap) {
    delete[] mWaveTable;
    mWaveTable = new (heap, 0) TWaveHandle[size];
    JUT_ASSERT(29, mWaveTable != NULL);
    mWaveTableSize = size;
}

JASWaveHandle* JASSimpleWaveBank::getWaveHandle(u32 no) const {
    if (no >= mWaveTableSize) {
        return NULL;
    }
    return &mWaveTable[no];
}

void JASSimpleWaveBank::setWaveInfo(u32 no, JASWaveInfo const& waveInfo) {
    mWaveTable[no].mWaveInfo = waveInfo;
    mWaveTable[no].mWaveInfo.field_0x20 = &_48;
    mWaveTable[no].mHeap = &mHeap;
}

JASWaveArc* JASSimpleWaveBank::getWaveArc(u32 no) {
    if (no != 0) {
        return NULL;
    }
    return this;
}

int JASSimpleWaveBank::TWaveHandle::getWavePtr() const {
    void* base = mHeap->getBase();
    if (base == NULL) {
        return 0;
    }
    return (intptr_t)base + mWaveInfo.field_0x08;
}

JASSimpleWaveBank::TWaveHandle::TWaveHandle() {
    mHeap = NULL;
}

const JASWaveInfo* JASSimpleWaveBank::TWaveHandle::getWaveInfo() const {
    return &mWaveInfo;
}

u32 JASSimpleWaveBank::getArcCount() const {
    return 1;
}