Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
WsdFile.h
Go to the documentation of this file.
1#ifndef NW4HBM_SND_WSD_FILE_H
2#define NW4HBM_SND_WSD_FILE_H
3
4#include <revolution/types.h>
5
6#include "Util.h"
7#include "WaveFile.h"
8#include "snd_types.h"
9
11
12#include <revolution/hbm.h>
13
14namespace nw4hbm {
15 namespace snd {
16 namespace detail {
17 namespace WsdFile {
18
19 static const u32 SIGNATURE_FILE = 'RWSD';
20 static const u32 SIGNATURE_DATA_BLOCK = 'DATA';
21 static const u32 SIGNATURE_WAVE_BLOCK = 'WAVE';
22 static const int FILE_VERSION = NW4HBM_VERSION(1, 2);
23
24 typedef struct WsdInfo {
25 /* 0x00 */ f32 pitch;
26 /* 0x04 */ u8 pan;
27 /* 0x05 */ u8 surroundPan;
28 /* 0x06 */ u8 fxSendA;
29 /* 0x07 */ u8 fxSendB;
30 /* 0x08 */ u8 fxSendC;
31 /* 0x09 */ u8 mainSend;
32 /* 0x0A */ u8 padding[2];
35 /* 0x1C */ u32 reserved;
37
38 typedef struct TrackInfo {
39 // Nothing
41
42 typedef struct NoteInfo {
43 /* 0x00 */ s32 waveIndex;
44 /* 0x04 */ u8 attack;
45 /* 0x05 */ u8 decay;
46 /* 0x06 */ u8 sustain;
47 /* 0x07 */ u8 release;
48 /* 0x08 */ u16 hold;
49 /* 0x0A */ u16 padding;
50 /* 0x0C */ u8 originalKey;
51 /* 0x0D */ u8 volume;
52 /* 0x0E */ u8 pan;
53 /* 0x0F */ u8 surroundPan;
54 /* 0x10 */ f32 pitch;
58 /* 0x2C */ u32 reserved;
60
63
66
72
73 typedef struct Header {
75 /* 0x10 */ u32 dataBlockOffset;
76 /* 0x14 */ u32 dataBlockSize;
77 /* 0x18 */ u32 waveBlockOffset;
78 /* 0x1C */ u32 waveBlockSize;
80
81 typedef struct DataBlock {
83 /* 0x08 */ u32 wsdCount;
86
87 typedef struct WaveBlock {
89 /* 0x08 */ u32 waveCount;
90 /* 0x0C */ u32 offsetTable[];
92
93 // <= NW4HBM_VERSION(1, 0)
98 } // namespace WsdFile
99
100 typedef struct WaveSoundInfo {
101 /* 0x00 */ f32 pitch;
102 /* 0x04 */ u8 pan;
103 /* 0x05 */ u8 surroundPan;
104 /* 0x06 */ u8 fxSendA;
105 /* 0x07 */ u8 fxSendB;
106 /* 0x08 */ u8 fxSendC;
107 /* 0x09 */ u8 mainSend;
109
110 typedef struct WaveSoundNoteInfo {
111 /* 0x00 */ s32 waveIndex;
112 /* 0x04 */ u8 attack;
113 /* 0x06 */ u8 decay;
114 /* 0x07 */ u8 sustain;
115 /* 0x08 */ u8 release;
116 /* 0x09 */ u8 originalKey;
117 /* 0x0A */ u8 pan;
118 /* 0x0B */ u8 surroundPan;
119 /* 0x0C */ u8 volume;
120 /* 0x10 */ f32 pitch;
122
124 public:
125 explicit WsdFileReader(const void* waveData);
126
127 bool IsValidFileHeader(const void* waveData);
128
129 bool ReadWaveSoundInfo(WaveSoundInfo* soundInfo, int id) const;
130 bool ReadWaveSoundNoteInfo(WaveSoundNoteInfo* soundNoteInfo, int id,
131 int note) const;
132 bool ReadWaveParam(int id, WaveData* waveData, const void* waveAddr) const;
133
134 private:
135 /* 0x00 */ const WsdFile::Header* mHeader;
138 };
139 } // namespace detail
140 } // namespace snd
141} // namespace nw4hbm
142
143#endif
Definition WsdFile.h:123
bool ReadWaveSoundNoteInfo(WaveSoundNoteInfo *soundNoteInfo, int id, int note) const
const WsdFile::DataBlock * mDataBlock
Definition WsdFile.h:136
const WsdFile::Header * mHeader
Definition WsdFile.h:135
bool IsValidFileHeader(const void *waveData)
WsdFileReader(const void *waveData)
bool ReadWaveSoundInfo(WaveSoundInfo *soundInfo, int id) const
bool ReadWaveParam(int id, WaveData *waveData, const void *waveAddr) const
const WsdFile::WaveBlock * mWaveBlock
Definition WsdFile.h:137
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::WsdFile::Header Header
static const u32 SIGNATURE_FILE
Definition WsdFile.h:19
Util::DataRef< TrackInfo > TrackInfoRef
Definition WsdFile.h:61
Util::DataRef< NoteInfo > NoteInfoRef
Definition WsdFile.h:64
Util::Table< TrackInfoRef > TrackTable
Definition WsdFile.h:62
static const u32 SIGNATURE_WAVE_BLOCK
Definition WsdFile.h:21
struct nw4hbm::snd::detail::WsdFile::WaveBlockOld WaveBlockOld
Util::Table< NoteInfoRef > NoteTable
Definition WsdFile.h:65
struct nw4hbm::snd::detail::WsdFile::TrackInfo TrackInfo
struct nw4hbm::snd::detail::WsdFile::DataBlock DataBlock
static const u32 SIGNATURE_DATA_BLOCK
Definition WsdFile.h:20
struct nw4hbm::snd::detail::WsdFile::Wsd Wsd
struct nw4hbm::snd::detail::WsdFile::NoteInfo NoteInfo
struct nw4hbm::snd::detail::WsdFile::WsdInfo WsdInfo
static const int FILE_VERSION
Definition WsdFile.h:22
struct nw4hbm::snd::detail::WsdFile::WaveBlock WaveBlock
struct nw4hbm::snd::detail::WaveSoundInfo WaveSoundInfo
struct nw4hbm::snd::detail::WaveSoundNoteInfo WaveSoundNoteInfo
Definition HBMAnmController.h:6
Definition WaveFile.h:47
Definition WsdFile.h:100
u8 fxSendA
Definition WsdFile.h:104
u8 fxSendC
Definition WsdFile.h:106
u8 surroundPan
Definition WsdFile.h:103
u8 pan
Definition WsdFile.h:102
f32 pitch
Definition WsdFile.h:101
u8 mainSend
Definition WsdFile.h:107
u8 fxSendB
Definition WsdFile.h:105
u8 attack
Definition WsdFile.h:112
u8 pan
Definition WsdFile.h:117
u8 release
Definition WsdFile.h:115
u8 decay
Definition WsdFile.h:113
u8 surroundPan
Definition WsdFile.h:118
f32 pitch
Definition WsdFile.h:120
u8 sustain
Definition WsdFile.h:114
s32 waveIndex
Definition WsdFile.h:111
u8 originalKey
Definition WsdFile.h:116
u8 volume
Definition WsdFile.h:119
ut::BinaryBlockHeader blockHeader
Definition WsdFile.h:82
u32 wsdCount
Definition WsdFile.h:83
Util::DataRef< Wsd > refWsd[]
Definition WsdFile.h:84
u32 waveBlockOffset
Definition WsdFile.h:77
ut::BinaryFileHeader fileHeader
Definition WsdFile.h:74
u32 waveBlockSize
Definition WsdFile.h:78
u32 dataBlockOffset
Definition WsdFile.h:75
u32 dataBlockSize
Definition WsdFile.h:76
u32 reserved
Definition WsdFile.h:58
u8 sustain
Definition WsdFile.h:46
u8 decay
Definition WsdFile.h:45
u8 surroundPan
Definition WsdFile.h:53
u8 originalKey
Definition WsdFile.h:50
Util::DataRef< void > randomizerTableRef
Definition WsdFile.h:57
u16 padding
Definition WsdFile.h:49
u8 attack
Definition WsdFile.h:44
u8 pan
Definition WsdFile.h:52
s32 waveIndex
Definition WsdFile.h:43
Util::DataRef< void > lfoTableRef
Definition WsdFile.h:55
Util::DataRef< void > graphEnvTablevRef
Definition WsdFile.h:56
u8 release
Definition WsdFile.h:47
u8 volume
Definition WsdFile.h:51
u16 hold
Definition WsdFile.h:48
f32 pitch
Definition WsdFile.h:54
u32 offsetTable[]
Definition WsdFile.h:96
ut::BinaryBlockHeader blockHeader
Definition WsdFile.h:95
u32 offsetTable[]
Definition WsdFile.h:90
ut::BinaryBlockHeader blockHeader
Definition WsdFile.h:88
u32 waveCount
Definition WsdFile.h:89
u8 pan
Definition WsdFile.h:26
Util::DataRef< void > graphEnvTablevRef
Definition WsdFile.h:33
u8 padding[2]
Definition WsdFile.h:32
u8 fxSendA
Definition WsdFile.h:28
Util::DataRef< void > randomizerTableRef
Definition WsdFile.h:34
u8 fxSendC
Definition WsdFile.h:30
u8 surroundPan
Definition WsdFile.h:27
f32 pitch
Definition WsdFile.h:25
u32 reserved
Definition WsdFile.h:35
u8 mainSend
Definition WsdFile.h:31
u8 fxSendB
Definition WsdFile.h:29
Definition WsdFile.h:67
Util::DataRef< TrackTable > refTrackTable
Definition WsdFile.h:69
Util::DataRef< WsdInfo > refWsdInfo
Definition WsdFile.h:68
Util::DataRef< NoteTable > refNoteTable
Definition WsdFile.h:70
Definition binaryFileFormat.h:18
Definition binaryFileFormat.h:9