summaryrefslogtreecommitdiff
path: root/src/JSystem/JAudio/JASWaveBankMgr.cpp
blob: 6908d6c98b9c1cb2444802075ad958320509183f (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//
// Generated by dtk
// Translation Unit: JASWaveBankMgr.cpp
//

#include "JSystem/JSystem.h" // IWYU pragma: keep

#include "JSystem/JAudio/JASWaveBankMgr.h"
#include "JSystem/JAudio/JASBasicWaveBank.h"
#include "JSystem/JAudio/JASCalc.h"
#include "JSystem/JAudio/JASSimpleWaveBank.h"
#include "JSystem/JAudio/JASSystemHeap.h"
#include "JSystem/JAudio/JASWSParser.h"
#include "JSystem/JAudio/JASWaveArcLoader.h"
#include "JSystem/JAudio/JASWaveBank.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JUtility/JUTAssert.h"

int JASystem::WaveBankMgr::sTableSize;
JASystem::TWaveBank** JASystem::WaveBankMgr::sWaveBank;

/* 802882CC-8028835C       .text init__Q28JASystem11WaveBankMgrFi */
void JASystem::WaveBankMgr::init(int param_1) {
    u32 size = param_1 * 4;
    sWaveBank = (TWaveBank**) new (JASDram, 0) u8[size];
    JUT_ASSERT(39, sWaveBank != NULL);
    Calc::bzero(sWaveBank, size);
    sTableSize = param_1;
}

/* 8028835C-80288390       .text getWaveBank__Q28JASystem11WaveBankMgrFi */
JASystem::TWaveBank* JASystem::WaveBankMgr::getWaveBank(int banknum) {
    if (banknum < 0) {
        return NULL;
    }
    if (banknum >= sTableSize) {
        return NULL;
    }
    return sWaveBank[banknum];
}

/* 80288390-80288444       .text registWaveBank__Q28JASystem11WaveBankMgrFiPQ28JASystem9TWaveBank */
bool JASystem::WaveBankMgr::registWaveBank(int banknum, TWaveBank* param_2) {
    JUT_ASSERT(57, banknum >= 0);
    JUT_ASSERT(58, banknum < sTableSize);
    sWaveBank[banknum] = param_2;
    return true;
}

/* 80288444-802884BC       .text registWaveBankWS__Q28JASystem11WaveBankMgrFiPv */
bool JASystem::WaveBankMgr::registWaveBankWS(int param_1, void* param_2) {
    TWaveBank* bank;
    if (WSParser::getGroupCount(param_2) == 1) {
        bank = WSParser::createSimpleWaveBank(param_2);
    } else {
        bank = WSParser::createBasicWaveBank(param_2);
    }
    if (!bank) {
        return false;
    }
    return registWaveBank(param_1, bank);
}

/* 802884BC-8028850C       .text getWaveArc__Q28JASystem11WaveBankMgrFii */
JASystem::TWaveArc* JASystem::WaveBankMgr::getWaveArc(int banknum, int param_2) {
    TWaveBank* bank = getWaveBank(banknum);
    if (bank == NULL) {
        return NULL;
    }
    return bank->getWaveArc(param_2);
}

/* 8028850C-80288550       .text loadWave__Q28JASystem11WaveBankMgrFiiPQ38JASystem6Kernel5THeap */
bool JASystem::WaveBankMgr::loadWave(int banknum, int param_2, Kernel::THeap* param_3) {
    TWaveArc* arc = getWaveArc(banknum, param_2);
    if (arc == NULL) {
        return false;
    }
    return arc->load(param_3);
}

/* 80288550-80288594       .text eraseWave__Q28JASystem11WaveBankMgrFii */
bool JASystem::WaveBankMgr::eraseWave(int banknum, int param_2) {
    TWaveArc* arc = getWaveArc(banknum, param_2);
    if (arc == NULL) {
        return false;
    }
    return !!arc->erase();
}