Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
BankFile.h
Go to the documentation of this file.
1#ifndef NW4HBM_SND_BANK_FILE_H
2#define NW4HBM_SND_BANK_FILE_H
3
4#include <revolution/types.h>
5
6#include "Util.h"
7#include "WaveFile.h"
8
10
11#include <revolution/hbm.h>
12
13namespace nw4hbm {
14 namespace snd {
15 namespace detail {
16
17 inline u8 ReadByte(const void* address) {
18 return *static_cast<const u8*>(address);
19 }
20
21 namespace BankFile {
22
23 static const u32 SIGNATURE_FILE = 'RBNK';
24 static const u32 SIGNATURE_DATA_BLOCK = 'DATA';
25 static const u32 SIGNATURE_WAVE_BLOCK = 'WAVE';
26
27 typedef struct InstParam {
28 /* 0x00 */ s32 waveIndex;
29 /* 0x04 */ u8 attack;
30 /* 0x05 */ u8 decay;
31 /* 0x06 */ u8 sustain;
32 /* 0x07 */ u8 release;
33 /* 0x08 */ u16 hold;
34 /* 0x0A */ u16 padding;
35 /* 0x0C */ u8 originalKey;
36 /* 0x0D */ u8 volume;
37 /* 0x0E */ u8 pan;
38 /* 0x0F */ u8 padding2;
39 /* 0x10 */ f32 tune;
43 /* 0x2C */ u32 reserved;
45
46 typedef struct RangeTable {
47 /* 0x00 */ u8 tableSize;
48 /* 0x01 */ u8 key[];
50
51 typedef struct IndexTable IndexTable;
52
55
56 struct IndexTable {
57 /* 0x00 */ u8 min;
58 /* 0x01 */ u8 max;
59 /* 0x02 */ u16 reserved;
60 /* 0x04 */ DataRegion ref[];
61 };
62
63 typedef struct Header {
65 /* 0x10 */ u32 dataBlockOffset;
66 /* 0x14 */ u32 dataBlockSize;
67 /* 0x18 */ u32 waveBlockOffset;
68 /* 0x1C */ u32 waveBlockSize;
70
75
80
81 } // namespace BankFile
82
83 typedef struct InstInfo {
84 /* 0x00 */ s32 waveIndex;
85 /* 0x04 */ u8 attack;
86 /* 0x05 */ u8 decay;
87 /* 0x06 */ u8 sustain;
88 /* 0x07 */ u8 release;
89 /* 0x08 */ u8 originalKey;
90 /* 0x09 */ u8 pan;
91 /* 0x0A */ u8 volume;
92 /* 0x0C */ f32 tune;
94
96 public:
97 static const int FILE_VERSION = NW4HBM_VERSION(1, 1);
98
99 public:
100 explicit BankFileReader(const void* bankData);
101
102 bool IsValidFileHeader(const void* bankData);
103
104 bool ReadInstInfo(InstInfo* instInfo, int prgNo, int key, int velocity) const;
105 bool ReadWaveParam(WaveData* waveParam, int waveIndex,
106 const void* waveDataAddress) const;
107
108 private:
110 int splitKey) const;
111
112 private:
113 /* 0x00 */ const BankFile::Header* mHeader;
116 };
117
118 } // namespace detail
119 } // namespace snd
120} // namespace nw4hbm
121
122#endif
Definition BankFile.h:95
const BankFile::Header * mHeader
Definition BankFile.h:113
bool ReadWaveParam(WaveData *waveParam, int waveIndex, const void *waveDataAddress) const
static const int FILE_VERSION
Definition BankFile.h:97
const BankFile::WaveBlock * mWaveBlock
Definition BankFile.h:115
bool IsValidFileHeader(const void *bankData)
bool ReadInstInfo(InstInfo *instInfo, int prgNo, int key, int velocity) const
const BankFile::DataBlock * mDataBlock
Definition BankFile.h:114
BankFileReader(const void *bankData)
const BankFile::DataRegion * GetReferenceToSubRegion(const BankFile::DataRegion *ref, int splitKey) const
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
struct nw4hbm::snd::detail::BankFile::RangeTable RangeTable
static const u32 SIGNATURE_WAVE_BLOCK
Definition BankFile.h:25
struct nw4hbm::snd::detail::BankFile::WaveBlock WaveBlock
Util::DataRef< WaveFile::WaveInfo > WaveRegion
Definition BankFile.h:54
struct nw4hbm::snd::detail::BankFile::InstParam InstParam
static const u32 SIGNATURE_DATA_BLOCK
Definition BankFile.h:24
struct nw4hbm::snd::detail::BankFile::Header Header
static const u32 SIGNATURE_FILE
Definition BankFile.h:23
struct nw4hbm::snd::detail::BankFile::DataBlock DataBlock
Util::DataRef< void, InstParam, RangeTable, IndexTable > DataRegion
Definition BankFile.h:53
u8 ReadByte(const void *address)
Definition BankFile.h:17
struct nw4hbm::snd::detail::InstInfo InstInfo
Definition HBMAnmController.h:6
Util::Table< DataRegion > instTable
Definition BankFile.h:73
ut::BinaryBlockHeader blockHeader
Definition BankFile.h:72
u32 dataBlockSize
Definition BankFile.h:66
u32 dataBlockOffset
Definition BankFile.h:65
ut::BinaryFileHeader fileHeader
Definition BankFile.h:64
u32 waveBlockSize
Definition BankFile.h:68
u32 waveBlockOffset
Definition BankFile.h:67
u16 reserved
Definition BankFile.h:59
DataRegion ref[]
Definition BankFile.h:60
u32 reserved
Definition BankFile.h:43
u16 padding
Definition BankFile.h:34
u8 sustain
Definition BankFile.h:31
s32 waveIndex
Definition BankFile.h:28
u8 release
Definition BankFile.h:32
f32 tune
Definition BankFile.h:39
u16 hold
Definition BankFile.h:33
u8 pan
Definition BankFile.h:37
Util::DataRef< void > graphEnvTablevRef
Definition BankFile.h:41
Util::DataRef< void > randomizerTableRef
Definition BankFile.h:42
u8 padding2
Definition BankFile.h:38
u8 originalKey
Definition BankFile.h:35
u8 volume
Definition BankFile.h:36
u8 attack
Definition BankFile.h:29
Util::DataRef< void > lfoTableRef
Definition BankFile.h:40
u8 decay
Definition BankFile.h:30
u8 key[]
Definition BankFile.h:48
u8 tableSize
Definition BankFile.h:47
ut::BinaryBlockHeader blockHeader
Definition BankFile.h:77
Util::Table< WaveRegion > waveInfoTable
Definition BankFile.h:78
Definition BankFile.h:83
u8 pan
Definition BankFile.h:90
u8 volume
Definition BankFile.h:91
u8 originalKey
Definition BankFile.h:89
u8 sustain
Definition BankFile.h:87
u8 decay
Definition BankFile.h:86
u8 release
Definition BankFile.h:88
f32 tune
Definition BankFile.h:92
u8 attack
Definition BankFile.h:85
s32 waveIndex
Definition BankFile.h:84
Definition WaveFile.h:47
Definition binaryFileFormat.h:18
Definition binaryFileFormat.h:9