summaryrefslogtreecommitdiff
path: root/include/JSystem/JAudio/JASBNKParser.h
blob: bba4561ed365fa77c58faa6517ca5e20e0b253d3 (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
#ifndef JASBNKPARSER_H
#define JASBNKPARSER_H

#include "JSystem/JAudio/JASOscillator.h"

namespace JASystem {
    class TBasicBank;
    namespace BNKParser {
        struct THeader {
            /* 0x000 */ u8 field_0x0[0x24];
            /* 0x024 */ u32 mInstOffsets[0x80];
            /* 0x224 */ u8 field_0x224[0x190];
            /* 0x3B4 */ u32 mPercOffsets[12];
        };
        struct TInst {
            /* 0x00 */ u8 field_0x0[8];
            /* 0x08 */ f32 field_0x8;
            /* 0x0C */ f32 field_0xC;
            /* 0x10 */ u32 mOscOffsets[2];
            /* 0x18 */ u32 mRandOffsets[2];
            /* 0x20 */ u32 mSenseOffsets[2];
            /* 0x28 */ u32 mKeyRegionCount;
            /* 0x2C */ u32 mKeymapOffsets[2];
        };
        struct TKeymap {
            /* 0x00 */ u8 field_0x0;
            /* 0x04 */ u32 field_0x4;
            /* 0x08 */ u32 mVmapOffsets[1];
        };
        struct TOsc {
            /* 0x00 */ u8 field_0x0;
            /* 0x04 */ f32 field_0x4;
            /* 0x08 */ u32 field_0x8;
            /* 0x0C */ u32 field_0xC;
            /* 0x10 */ f32 field_0x10;
            /* 0x14 */ f32 field_0x14;
        };
        struct TPerc {
            /* 0x000 */ u32 mMagic;
            /* 0x004 */ u8 field_0x4[0x84];
            /* 0x088 */ u32 mPmapOffsets[0x80];
            /* 0x288 */ s8 field_0x288[0x80];
            /* 0x308 */ u16 field_0x308[0x80];
        };
        struct TPmap {
            /* 0x00 */ f32 field_0x0;
            /* 0x04 */ f32 field_0x4;
            /* 0x08 */ u32 mRandOffsets[2];
            /* 0x10 */ u32 mVeloRegionCount;
            /* 0x14 */ u32 mVeloRegionOffsets[1];
        };
        struct TRand {
            /* 0x00 */ u8 field_0x0;
            /* 0x04 */ f32 field_0x4;
            /* 0x08 */ f32 field_0x8;
        };
        struct TSense {
            /* 0x00 */ u8 field_0x0;
            /* 0x01 */ u8 field_0x1;
            /* 0x02 */ u8 field_0x2;
            /* 0x04 */ f32 field_0x4;
            /* 0x08 */ f32 field_0x8;
        };
        struct TVmap {
            /* 0x00 */ u8 field_0x0;
            /* 0x04 */ u32 field_0x4;
            /* 0x08 */ f32 field_0x8;
            /* 0x0C */ f32 field_0xC;
        };

        TBasicBank* createBasicBank(void*);
        TOscillator::Osc_* findOscPtr(JASystem::TBasicBank*, JASystem::BNKParser::THeader*, JASystem::BNKParser::TOsc*);
        s16* getOscTableEndPtr(s16*);

        extern u32 sUsedHeapSize;
    };
}

#endif /* JASBNKPARSER_H */