NW4F Snd
Loading...
Searching...
No Matches
snd_SoundArchiveLoader.h
Go to the documentation of this file.
1#ifndef NW_SND_SOUND_ARCHIVE_LOADER_H_
2#define NW_SND_SOUND_ARCHIVE_LOADER_H_
3
4#include <nw/snd/snd_Util.h>
5#include <nw/snd/snd_SoundArchive.h>
6
7namespace nw { namespace snd {
8
10
11namespace internal {
12
24static_assert(sizeof(LoadItemInfo) == 8);
25
27{
28public:
29 static const u32 SIGNATURE_INDIVIDUAL_WAVE = NW_UT_MAKE_SIGWORD('F', 'I', 'W', 'V');
30
31 static const u32 FILE_ALIGNMENT = 64;
32
47 static_assert(sizeof(IndividualWaveInfo) == FILE_ALIGNMENT);
48
50 {
51 LOAD_SEQ = 1 << 0,
52 LOAD_WSD = 1 << 1,
53 LOAD_BANK = 1 << 2,
54 LOAD_WARC = 1 << 3,
55
56 LOAD_ALL = 0xFFFFFFFF
57 };
58
61
62 bool IsAvailable() const;
63
66 SoundMemoryAllocatable* pAllocator,
67 u32 loadFlag = LOAD_ALL,
68 size_t loadBlockSize = 0
69 );
71 const char* pItemName,
72 SoundMemoryAllocatable* pAllocator,
73 u32 loadFlag = LOAD_ALL,
74 size_t loadBlockSize = 0
75 );
76
77 bool IsDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag = LOAD_ALL) const;
78 bool IsDataLoaded(const char* pItemName, u32 loadFlag = LOAD_ALL) const;
79
81
83
85 const void* bankFile,
86 SoundMemoryAllocatable* pAllocator
87 );
88
90 const void* wsdFile,
91 s32 waveSoundIndex,
92 SoundMemoryAllocatable* pAllocator
93 );
94
95protected:
96 void SetSoundArchive(const SoundArchive* arc);
97 const SoundArchive* GetSoundArchive() const { return m_pSoundArchive; }
98
100
101 virtual const void* SetFileAddressToTable(SoundArchive::FileId fileId, const void* address) = 0;
102 virtual const void* GetFileAddressFromTable(SoundArchive::FileId fileId) const = 0;
103 virtual const void* GetFileAddressImpl(SoundArchive::FileId fileId) const = 0;
104
105private:
107 SoundArchive::ItemId soundId,
108 SoundMemoryAllocatable* pAllocator,
109 u32 loadFlag,
110 size_t loadBlockSize
111 );
113 SoundArchive::ItemId soundId,
114 SoundMemoryAllocatable* pAllocator,
115 u32 loadFlag,
116 size_t loadBlockSize,
118 );
120 SoundArchive::ItemId bankId,
121 SoundMemoryAllocatable* pAllocator,
122 u32 loadFlag,
123 size_t loadBlockSize
124 );
126 SoundArchive::ItemId warcId,
127 SoundMemoryAllocatable* pAllocator,
128 u32 loadFlag,
129 size_t loadBlockSize
130 );
132 SoundArchive::ItemId warcId,
133 SoundMemoryAllocatable* pAllocator,
134 size_t loadBlockSize
135 );
137 SoundArchive::ItemId warcId,
138 u32 waveIndex,
139 SoundMemoryAllocatable* pAllocator,
140 size_t loadBlockSize
141 );
143 SoundArchive::ItemId groupId,
144 SoundMemoryAllocatable* pAllocator,
145 size_t loadBlockSize
146 );
148 SoundArchive::ItemId soundGroupId,
149 SoundMemoryAllocatable* pAllocator,
150 u32 loadFlag,
151 size_t loadBlockSize
152 );
153 const void* LoadImpl(
154 SoundArchive::FileId fileId,
155 SoundMemoryAllocatable* pAllocator,
156 size_t loadBlockSize,
157 bool needDeviceMemory = false
158 );
160 SoundArchive::ItemId warcId,
161 u32 waveIndex,
162 SoundMemoryAllocatable* pAllocator,
163 u32 loadFlag,
164 size_t loadBlockSize = 0
165 );
166
168 const void* pGroupFile,
169 SoundMemoryAllocatable* pAllocator = NULL,
170 size_t loadBlockSize = 0
171 );
172
173 bool IsSequenceSoundDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag) const;
174 bool IsWaveSoundDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag) const;
175 bool IsBankDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag) const;
176 bool IsWaveArchiveDataLoaded(SoundArchive::ItemId itemId, u32 waveIndex) const;
178 bool IsSoundGroupDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag) const;
179
180 void* LoadFile(
181 SoundArchive::FileId fileId,
182 SoundMemoryAllocatable* allocator,
183 size_t loadBlockSize,
184 bool needDeviceMemory
185 );
187 SoundArchive::FileId fileId,
188 void* buffer,
189 size_t size,
190 s32 offset,
191 size_t loadBlockSize
192 );
193
198
201
204};
205static_assert(sizeof(SoundArchiveLoader) == 0x20C);
206
207} } } // namespace nw::snd::internal
208
209#endif // NW_SND_SOUND_ARCHIVE_LOADER_H_
Definition snd_SoundArchive.h:11
ItemId FileId
Definition snd_SoundArchive.h:17
static const ItemId INVALID_ID
Definition snd_SoundArchive.h:15
u32 ItemId
Definition snd_SoundArchive.h:13
Definition snd_SoundMemoryAllocatable.h:9
Definition snd_SoundArchiveLoader.h:27
void SetWaveArchiveTableInEmbeddedGroupImpl(SoundArchive::ItemId warcId, SoundMemoryAllocatable *pAllocator)
void * LoadFile(SoundArchive::FileId fileId, SoundMemoryAllocatable *allocator, size_t loadBlockSize, bool needDeviceMemory)
bool IsGroupDataLoaded(SoundArchive::ItemId itemId) const
static const u32 FILE_ALIGNMENT
Definition snd_SoundArchiveLoader.h:31
u16 m_LoadDataCallCount
Definition snd_SoundArchiveLoader.h:202
bool m_IsCancelLoading
Definition snd_SoundArchiveLoader.h:203
const void * LoadImpl(SoundArchive::FileId fileId, SoundMemoryAllocatable *pAllocator, size_t loadBlockSize, bool needDeviceMemory=false)
bool IsSoundGroupDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag) const
bool LoadIndividualWave(SoundArchive::ItemId warcId, u32 waveIndex, SoundMemoryAllocatable *pAllocator, size_t loadBlockSize)
bool detail_LoadWaveArchiveByWaveSoundFile(const void *wsdFile, s32 waveSoundIndex, SoundMemoryAllocatable *pAllocator)
void SetSoundArchive(const SoundArchive *arc)
bool detail_LoadWaveArchiveByBankFile(const void *bankFile, SoundMemoryAllocatable *pAllocator)
const void * LoadWaveArchiveTable(SoundArchive::ItemId warcId, SoundMemoryAllocatable *pAllocator, size_t loadBlockSize)
bool LoadData(const char *pItemName, SoundMemoryAllocatable *pAllocator, u32 loadFlag=LOAD_ALL, size_t loadBlockSize=0)
bool IsDataLoaded(const char *pItemName, u32 loadFlag=LOAD_ALL) const
bool LoadBank(SoundArchive::ItemId bankId, SoundMemoryAllocatable *pAllocator, u32 loadFlag, size_t loadBlockSize)
bool LoadData(SoundArchive::ItemId id, SoundMemoryAllocatable *pAllocator, u32 loadFlag=LOAD_ALL, size_t loadBlockSize=0)
bool LoadWaveArchive(SoundArchive::ItemId warcId, SoundMemoryAllocatable *pAllocator, u32 loadFlag, size_t loadBlockSize)
bool IsDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag=LOAD_ALL) const
bool IsWaveArchiveDataLoaded(SoundArchive::ItemId itemId, u32 waveIndex) const
const void * detail_GetFileAddressByItemId(SoundArchive::ItemId itemId) const
LoadFlag
Definition snd_SoundArchiveLoader.h:50
@ LOAD_ALL
Definition snd_SoundArchiveLoader.h:56
@ LOAD_SEQ
Definition snd_SoundArchiveLoader.h:51
@ LOAD_WSD
Definition snd_SoundArchiveLoader.h:52
@ LOAD_BANK
Definition snd_SoundArchiveLoader.h:53
@ LOAD_WARC
Definition snd_SoundArchiveLoader.h:54
virtual const void * SetFileAddressToTable(SoundArchive::FileId fileId, const void *address)=0
bool IsSequenceSoundDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag) const
void SetWaveArchiveTableWithBankInEmbeddedGroup(SoundArchive::ItemId bankId, SoundMemoryAllocatable *pAllocator)
virtual const void * GetFileAddressFromTable(SoundArchive::FileId fileId) const =0
bool LoadGroup(SoundArchive::ItemId groupId, SoundMemoryAllocatable *pAllocator, size_t loadBlockSize)
const SoundArchive * m_pSoundArchive
Definition snd_SoundArchiveLoader.h:199
bool IsWaveSoundDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag) const
const void * GetFileAddressFromSoundArchive(SoundArchive::FileId fileId) const
const SoundArchive * GetSoundArchive() const
Definition snd_SoundArchiveLoader.h:97
bool LoadSequenceSound(SoundArchive::ItemId soundId, SoundMemoryAllocatable *pAllocator, u32 loadFlag, size_t loadBlockSize)
static const u32 SIGNATURE_INDIVIDUAL_WAVE
Definition snd_SoundArchiveLoader.h:29
u32 m_StreamArea[128]
Definition snd_SoundArchiveLoader.h:200
bool IsBankDataLoaded(SoundArchive::ItemId itemId, u32 loadFlag) const
bool LoadWaveSound(SoundArchive::ItemId soundId, SoundMemoryAllocatable *pAllocator, u32 loadFlag, size_t loadBlockSize, SoundArchive::ItemId waveSoundSetId=SoundArchive::INVALID_ID)
bool LoadWaveArchiveImpl(SoundArchive::ItemId warcId, u32 waveIndex, SoundMemoryAllocatable *pAllocator, u32 loadFlag, size_t loadBlockSize=0)
void SetWaveArchiveTableWithWsdInEmbeddedGroup(SoundArchive::ItemId wsdId, SoundMemoryAllocatable *pAllocator)
virtual const void * GetFileAddressImpl(SoundArchive::FileId fileId) const =0
bool LoadSoundGroup(SoundArchive::ItemId soundGroupId, SoundMemoryAllocatable *pAllocator, u32 loadFlag, size_t loadBlockSize)
s32 ReadFile(SoundArchive::FileId fileId, void *buffer, size_t size, s32 offset, size_t loadBlockSize)
void SetWaveArchiveTableWithSeqInEmbeddedGroup(SoundArchive::ItemId seqId, SoundMemoryAllocatable *pAllocator)
bool PostProcessForLoadedGroupFile(const void *pGroupFile, SoundMemoryAllocatable *pAllocator=NULL, size_t loadBlockSize=0)
Definition snd_BasicSound.cpp:3
Definition snd_BasicSound.cpp:3
Definition snd_SoundArchiveLoader.h:14
nw::snd::SoundArchive::ItemId itemId
Definition snd_SoundArchiveLoader.h:15
const void * address
Definition snd_SoundArchiveLoader.h:16
LoadItemInfo()
Definition snd_SoundArchiveLoader.h:18
Definition snd_SoundArchiveLoader.h:34
u32 signature
Definition snd_SoundArchiveLoader.h:35
u8 padding[SoundArchiveLoader::FILE_ALIGNMENT - sizeof(u32) *3]
Definition snd_SoundArchiveLoader.h:38
IndividualWaveInfo(u32 id, u32 index)
Definition snd_SoundArchiveLoader.h:40
u32 fileId
Definition snd_SoundArchiveLoader.h:36
u32 waveIndex
Definition snd_SoundArchiveLoader.h:37