blob: 02fe7bba4823ee97c5b1290b1d28fb05642332ad (
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 GUARD_SND_BANK_SHARED_H
#define GUARD_SND_BANK_SHARED_H
#include "nitro/types.h"
#include "nitro/SND_exChannel_shared.h"
#include "nitro/SND_main_shared.h"
#define SND_INST_MAX_KEYSPLIT 8
#define SND_INST_ILLEGAL 0
#define SND_INST_PCM 1
#define SND_INST_PSG 2
#define SND_INST_NOISE 3
#define SND_INST_DIRECTPCM 4
#define SND_INST_DUMMY 5
#define SND_INST_DRUM_TABLE 16
#define SND_INST_KEY_SPLIT 17
#define SND_BANK_MAX_WAVEARC 4
#define SND_INST_OFFSET_TYPE(off) ((u8)off)
#define SND_INST_OFFSET_NORMAL(bank, off) ((struct SNDInstParam *)((u8 *)bank + (u32)(off >> 8)))
#define SND_INST_OFFSET_DRUMS(bank, off) ((struct SNDDrumSet *)((u8 *)bank + (u32)(off >> 8)))
#define SND_INST_OFFSET_KEYSPL(bank, off) ((struct SNDKeySplit *)((u8 *)bank + (u32)(off >> 8)))
struct SNDInstParam
{
u16 wave[2]; // 0x0
u8 rootKey; // 0x4
u8 envAttack; // 0x5
u8 envDecay; // 0x6
u8 envSustain; // 0x7
u8 envRelease; // 0x8
u8 pan; // 0x9
}; // size = 0xA
struct SNDInstData
{
u8 type; // 0x0
u8 unk_1; // 0x1
struct SNDInstParam param; // 0x2
}; // size = 0xC
struct SNDKeySplit
{
u8 key[SND_INST_MAX_KEYSPLIT]; // 0x0
struct SNDInstData instruments[]; // 0x8
}; // size = 0x8
struct SNDDrumSet
{
u8 minKey;
u8 maxKey;
struct SNDInstData instruments[];
}; // size = 0x2
struct SNDWaveArc;
struct SNDWaveArcLink
{
struct SNDWaveArc *waveArc; // 0x0
struct SNDWaveArcLink *waveArcLLnext; // 0x4
}; // size = 0x8
struct SNDBankData
{
struct SNDBinaryFileHeader fileHeader; // 0x00
struct SNDBinaryBlockHeader blockHeader; // 0x10
struct SNDWaveArcLink waveArcLinks[SND_BANK_MAX_WAVEARC]; // 0x18
u32 instCount; // 0x38
u32 instOffsets[]; // 0x3C
}; // size = 0x40
struct SNDWaveArc
{
struct SNDBinaryFileHeader fileHeader; // 0x00
struct SNDBinaryBlockHeader blockHeader; // 0x10
struct SNDWaveArcLink *waveArcLLHead; // 0x18
u8 unk_1C[28]; // 0x1C
u32 waveCount; // 0x38
u32 waveOffsets[]; // 0x3C
}; // size = 0x3C
struct SNDInstPos
{
u32 program; // 0x0
u32 index; // 0x4
}; // size = 0x8
struct SNDWaveData
{
struct SNDWaveParam param; // 0x0
u8 sampleData[]; // 0xC
}; // size = 0xC
#endif // GUARD_SND_BANK_SHARED_H
|