Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
SoundArchive.h
Go to the documentation of this file.
1#ifndef NW4HBM_SND_SOUND_ARCHIVE_H
2#define NW4HBM_SND_SOUND_ARCHIVE_H
3
4#include <revolution/types.h>
5#include "../ut/FileStream.h"
6#include "snd_global.h"
7#include "snd_types.h"
8
9
10namespace nw4hbm {
11 namespace snd {
12 namespace detail {
13 class SoundArchiveFileReader;
14 }
15
22
24 public:
25 typedef struct SoundInfo {
26 /* 0x00 */ u32 fileId;
27 /* 0x04 */ u32 playerId;
28 /* 0x08 */ int playerPriority;
29 /* 0x0C */ int volume;
31
32 typedef struct SeqSoundInfo {
33 /* 0x00 */ u32 dataOffset;
34 /* 0x04 */ u32 bankId;
35 /* 0x08 */ u32 allocTrack;
36 /* 0x0C */ int channelPriority;
38
39 typedef struct StrmSoundInfo {
40 /* Nothing here to see */
42
43 typedef struct WaveSoundInfo {
44 /* 0x00 */ int subNo;
45 /* 0x04 */ int channelPriority;
47
48 typedef struct Sound3DParam {
49 /* 0x00 */ u32 flags;
50 /* 0x04 */ u8 decayCurve;
51 /* 0x05 */ u8 decayRatio;
53
54 typedef struct BankInfo {
55 /* 0x0 */ u32 fileId;
57
58 typedef struct PlayerInfo {
59 /* 0x00 */ int playableSoundCount;
60 /* 0x04 */ u32 heapSize;
62
63 typedef struct GroupInfo {
64 /* 0x00 */ u32 itemCount;
65 /* 0x04 */ const char* extFilePath;
66 /* 0x08 */ u32 offset;
67 /* 0x0C */ u32 size;
68 /* 0x10 */ u32 waveDataOffset;
69 /* 0x14 */ u32 waveDataSize;
71
72 typedef struct GroupItemInfo {
73 /* 0x00 */ u32 fileId;
74 /* 0x04 */ u32 offset;
75 /* 0x08 */ u32 size;
76 /* 0x0C */ u32 waveDataOffset;
77 /* 0x10 */ u32 waveDataSize;
79
80 typedef struct FileInfo {
81 /* 0x00 */ u32 fileSize;
83 /* 0x08 */ const char* extFilePath;
84 /* 0x0C */ u32 filePosCount;
86
87 typedef struct FilePos {
88 /* 0x00 */ u32 groupId;
89 /* 0x04 */ u32 index;
91
92 typedef struct SoundArchivePlayerInfo {
93 /* 0x00 */ int seqSoundCount;
94 /* 0x04 */ int seqTrackCount;
95 /* 0x08 */ int strmSoundCount;
96 /* 0x0C */ int strmTrackCount;
97 /* 0x10 */ int strmChannelCount;
98 /* 0x14 */ int waveSoundCount;
99 /* 0x18 */ int waveTrackCount;
101
102 static const u32 INVALID_ID = 0xFFFFFFFF;
103
104 public:
106 /* 0x08 */ virtual ~SoundArchive();
107 /* 0x0C */ virtual const void* detail_GetFileAddress(u32 id) const = 0;
108 /* 0x10 */ virtual const void* detail_GetWaveDataFileAddress(u32 id) const = 0;
109 /* 0x14 */ virtual int detail_GetRequiredStreamBufferSize() const = 0;
110 /* 0x18 */ virtual ut::FileStream* OpenStream(void* buffer, int bufferSize, u32 offset,
111 u32 length) const = 0;
112 /* 0x1C */ virtual ut::FileStream* OpenExtStream(void* buffer, int bufferSize,
113 const char* extPath, u32 offset,
114 u32 length) const = 0;
115
116 bool IsAvailable() const;
117
119 void Shutdown();
120
123
124 const char* GetSoundLabelString(u32 id) const;
125 u32 ConvertLabelStringToSoundId(const char* label) const;
126 u32 ConvertLabelStringToPlayerId(const char* label) const;
127 u32 ConvertLabelStringToGroupId(const char* label) const;
128
131
132 bool ReadSoundInfo(u32 id, SoundInfo* info) const;
136
137 bool ReadPlayerInfo(u32 id, PlayerInfo* info) const;
139
140 bool detail_ReadBankInfo(u32 id, BankInfo* info) const;
141 bool detail_ReadGroupInfo(u32 id, GroupInfo* info) const;
142 bool detail_ReadGroupItemInfo(u32 groupId, u32 itemId, GroupItemInfo* info) const;
143
144 bool detail_ReadFileInfo(u32 id, FileInfo* info) const;
145 bool detail_ReadFilePos(u32 fileId, u32 posId, FilePos* pos) const;
146
147 ut::FileStream* detail_OpenFileStream(u32 id, void* buffer, int bufferSize) const;
148 ut::FileStream* detail_OpenGroupStream(u32 id, void* buffer, int bufferSize) const;
150 int bufferSize) const;
151
152 void SetExternalFileRoot(const char* extFileRoot);
153
154 protected:
155 static const int FILE_PATH_MAX = 256;
156
157 private:
158 ut::FileStream* OpenExtStreamImpl(void* buffer, int bufferSize, const char* extPath,
159 u32 offset, u32 size) const;
160
161 private:
163 /* 0x08 */ char mExtFileRoot[FILE_PATH_MAX];
164 };
165
166 } // namespace snd
167} // namespace nw4hbm
168
169#endif
static s32 offset
Definition WUD.c:1669
Definition SoundArchive.h:23
struct nw4hbm::snd::SoundArchive::SoundArchivePlayerInfo SoundArchivePlayerInfo
virtual const void * detail_GetWaveDataFileAddress(u32 id) const =0
static const u32 INVALID_ID
Definition SoundArchive.h:102
bool detail_ReadGroupItemInfo(u32 groupId, u32 itemId, GroupItemInfo *info) const
u32 ConvertLabelStringToPlayerId(const char *label) const
ut::FileStream * detail_OpenGroupWaveDataStream(u32 id, void *buffer, int bufferSize) const
u32 ConvertLabelStringToSoundId(const char *label) const
bool ReadSoundInfo(u32 id, SoundInfo *info) const
struct nw4hbm::snd::SoundArchive::FileInfo FileInfo
bool ReadPlayerInfo(u32 id, PlayerInfo *info) const
struct nw4hbm::snd::SoundArchive::GroupItemInfo GroupItemInfo
struct nw4hbm::snd::SoundArchive::BankInfo BankInfo
struct nw4hbm::snd::SoundArchive::GroupInfo GroupInfo
virtual ut::FileStream * OpenExtStream(void *buffer, int bufferSize, const char *extPath, u32 offset, u32 length) const =0
struct nw4hbm::snd::SoundArchive::FilePos FilePos
virtual int detail_GetRequiredStreamBufferSize() const =0
bool detail_ReadGroupInfo(u32 id, GroupInfo *info) const
SoundType GetSoundType(u32 id) const
struct nw4hbm::snd::SoundArchive::PlayerInfo PlayerInfo
bool detail_ReadSeqSoundInfo(u32 id, SeqSoundInfo *info) const
bool detail_ReadBankInfo(u32 id, BankInfo *info) const
struct nw4hbm::snd::SoundArchive::Sound3DParam Sound3DParam
bool ReadSoundArchivePlayerInfo(SoundArchivePlayerInfo *info) const
bool detail_ReadWaveSoundInfo(u32 id, WaveSoundInfo *info) const
u32 GetSoundUserParam(u32 id) const
char mExtFileRoot[FILE_PATH_MAX]
Definition SoundArchive.h:163
const char * GetSoundLabelString(u32 id) const
detail::SoundArchiveFileReader * mFileReader
Definition SoundArchive.h:162
bool detail_ReadStrmSoundInfo(u32 id, StrmSoundInfo *info) const
static const int FILE_PATH_MAX
Definition SoundArchive.h:155
bool detail_ReadFileInfo(u32 id, FileInfo *info) const
ut::FileStream * detail_OpenFileStream(u32 id, void *buffer, int bufferSize) const
struct nw4hbm::snd::SoundArchive::WaveSoundInfo WaveSoundInfo
u32 ConvertLabelStringToGroupId(const char *label) const
ut::FileStream * OpenExtStreamImpl(void *buffer, int bufferSize, const char *extPath, u32 offset, u32 size) const
void SetExternalFileRoot(const char *extFileRoot)
struct nw4hbm::snd::SoundArchive::StrmSoundInfo StrmSoundInfo
void Setup(detail::SoundArchiveFileReader *fileReader)
bool detail_ReadFilePos(u32 fileId, u32 posId, FilePos *pos) const
virtual ut::FileStream * OpenStream(void *buffer, int bufferSize, u32 offset, u32 length) const =0
struct nw4hbm::snd::SoundArchive::SoundInfo SoundInfo
virtual const void * detail_GetFileAddress(u32 id) const =0
ut::FileStream * detail_OpenGroupStream(u32 id, void *buffer, int bufferSize) const
struct nw4hbm::snd::SoundArchive::SeqSoundInfo SeqSoundInfo
Definition SoundArchiveFile.h:199
Definition FileStream.h:9
static OSTime buffer
Definition ai.c:24
unsigned int size
Definition __os.h:106
unsigned long u32
Definition types.h:12
unsigned char u8
Definition types.h:8
SoundType
Definition SoundArchive.h:16
@ SOUND_TYPE_WAVE
Definition SoundArchive.h:20
@ SOUND_TYPE_INVALID
Definition SoundArchive.h:17
@ SOUND_TYPE_STRM
Definition SoundArchive.h:19
@ SOUND_TYPE_SEQ
Definition SoundArchive.h:18
Definition HBMAnmController.h:6
Definition SoundArchive.h:54
u32 fileId
Definition SoundArchive.h:55
Definition SoundArchive.h:80
u32 filePosCount
Definition SoundArchive.h:84
const char * extFilePath
Definition SoundArchive.h:83
u32 fileSize
Definition SoundArchive.h:81
u32 waveDataFileSize
Definition SoundArchive.h:82
Definition SoundArchive.h:87
u32 index
Definition SoundArchive.h:89
u32 groupId
Definition SoundArchive.h:88
Definition SoundArchive.h:63
u32 size
Definition SoundArchive.h:67
u32 waveDataOffset
Definition SoundArchive.h:68
u32 waveDataSize
Definition SoundArchive.h:69
u32 offset
Definition SoundArchive.h:66
u32 itemCount
Definition SoundArchive.h:64
const char * extFilePath
Definition SoundArchive.h:65
Definition SoundArchive.h:72
u32 offset
Definition SoundArchive.h:74
u32 waveDataSize
Definition SoundArchive.h:77
u32 size
Definition SoundArchive.h:75
u32 waveDataOffset
Definition SoundArchive.h:76
u32 fileId
Definition SoundArchive.h:73
Definition SoundArchive.h:58
int playableSoundCount
Definition SoundArchive.h:59
u32 heapSize
Definition SoundArchive.h:60
Definition SoundArchive.h:32
u32 dataOffset
Definition SoundArchive.h:33
u32 bankId
Definition SoundArchive.h:34
int channelPriority
Definition SoundArchive.h:36
u32 allocTrack
Definition SoundArchive.h:35
Definition SoundArchive.h:48
u32 flags
Definition SoundArchive.h:49
u8 decayCurve
Definition SoundArchive.h:50
u8 decayRatio
Definition SoundArchive.h:51
int seqSoundCount
Definition SoundArchive.h:93
int strmChannelCount
Definition SoundArchive.h:97
int seqTrackCount
Definition SoundArchive.h:94
int waveSoundCount
Definition SoundArchive.h:98
int waveTrackCount
Definition SoundArchive.h:99
int strmTrackCount
Definition SoundArchive.h:96
int strmSoundCount
Definition SoundArchive.h:95
Definition SoundArchive.h:25
int volume
Definition SoundArchive.h:29
u32 playerId
Definition SoundArchive.h:27
u32 fileId
Definition SoundArchive.h:26
int playerPriority
Definition SoundArchive.h:28
Definition SoundArchive.h:39
Definition SoundArchive.h:43
int subNo
Definition SoundArchive.h:44
int channelPriority
Definition SoundArchive.h:45