summaryrefslogtreecommitdiff
path: root/include/JSystem/JAudio2/JASBasicWaveBank.h
blob: 68e722100a1d6ccadc02ba1cf66d6deb9d3992ec (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
90
91
92
93
94
95
96
97
#ifndef JASBASICWAVEBANK_H
#define JASBASICWAVEBANK_H

#include "JSystem/JAudio2/JASWaveArcLoader.h"
#include "JSystem/JAudio2/JASWaveInfo.h"

/**
 * @ingroup jsystem-jaudio
 * 
 */
class JASWaveHandle {
public:
    /* virtual */ ~JASWaveHandle() {};
    //virtual const JASWaveInfo* getWaveInfo() const = 0;
    //virtual int getWavePtr() const = 0;

    void* vtable;
};

/**
 * @ingroup jsystem-jaudio
 * 
 */
class JASWaveBank {
public:
    /* 80298B88 */ /* virtual */ ~JASWaveBank() {};
    //virtual JASWaveHandle* getWaveHandle(u32) const = 0;
    //virtual JASWaveArc* getWaveArc(u32) = 0;
    //virtual u32 getArcCount() const = 0;

    void* vtable;
};

/**
 * @ingroup jsystem-jaudio
 * 
 */
struct JASBasicWaveBank : public JASWaveBank {
    struct TWaveHandle : public JASWaveHandle {
        /* 802985E4 */ ~TWaveHandle();
        /* 80298B64 */ int getWavePtr() const;
        /* 80298C18 */ TWaveHandle() { mHeap = NULL; }
        /* 80298C64 */ const JASWaveInfo* getWaveInfo() const { return &field_0x4; }
        bool compareHeap(JASHeap* heap) const { return mHeap == heap;}

        /* 0x04 */ JASWaveInfo field_0x4;
        /* 0x28 */ JASHeap* mHeap;
    };

    struct TGroupWaveInfo {
        /* 80298C4C */ TGroupWaveInfo() {
            field_0x0 = 0xffff;
            field_0x4 = -1;
        }

        /* 0x00 */ u16 field_0x0;
        /* 0x04 */ int field_0x4;
    };

    struct TWaveGroup {
        /* 802989C0 */ TWaveGroup();
        /* 80298A0C */ ~TWaveGroup();
        /* 80298A84 */ void setWaveCount(u32, JKRHeap*);
        /* 80298B04 */ void onLoadDone();
        /* 80298B2C */ void onEraseDone();
        /* 80298B54 */ u32 getWaveID(int) const;

        /* 0x00 */ JASWaveArc base;
        /* 0x74 */ JASBasicWaveBank* mBank;
        /* 0x78 */ TGroupWaveInfo* mCtrlWaveArray;
        /* 0x7C */ u16 mWaveCount;

        u32 getWaveCount() const { return mWaveCount; }
    };

    /* 802984F8 */ JASBasicWaveBank();
    /* 80298558 */ ~JASBasicWaveBank();
    /* 80298640 */ TWaveGroup* getWaveGroup(u32);
    /* 80298664 */ void setGroupCount(u32, JKRHeap*);
    /* 80298710 */ void setWaveTableSize(u32, JKRHeap*);
    /* 80298790 */ void incWaveTable(JASBasicWaveBank::TWaveGroup const*);
    /* 8029883C */ void decWaveTable(JASBasicWaveBank::TWaveGroup const*);
    /* 802988DC */ JASWaveHandle* getWaveHandle(u32) const;
    /* 80298910 */ void setWaveInfo(JASBasicWaveBank::TWaveGroup*, int, u16, JASWaveInfo const&);
    /* 80298C6C */ JASWaveArc* getWaveArc(u32 param_0); // { return getWaveGroup(param_0); }
    /* 80298C8C */ u32 getArcCount() const { return mGroupCount; }

    /* 0x04 */ OSMutex field_0x4;
    /* 0x1C */ TWaveHandle* mWaveTable;
    /* 0x20 */ TWaveGroup* mWaveGroupArray;
    /* 0x24 */ u16 mHandleCount;
    /* 0x26 */ u16 mGroupCount;

    static u32 mNoLoad;
};

#endif /* JASBASICWAVEBANK_H */