Fix doku, Fix bcstm, Add default constructors to BCWAV

- Removed DSP_ADPCM throw error
- Only load ADPCM data if the file uses ADPCM
- Add BCWAV cleanup
This commit is contained in:
2025-12-04 21:17:51 +01:00
parent fb8f275ebb
commit 2d771a27be
6 changed files with 70 additions and 79 deletions

View File

@@ -61,9 +61,6 @@ CTRFF_API void BCSTM::ReadInfoBlock(InfoBlock& block) {
ReadReference(block.TrackInfoTabRef);
ReadReference(block.ChannelInfoTabRef);
pReader.Read(block.StreamInfo.Encoding);
if (block.StreamInfo.Encoding != DSP_ADPCM) {
throw std::runtime_error("Only DSP ADPCM is supported yet!");
}
pReader.Read(block.StreamInfo.Loop);
pReader.Read(block.StreamInfo.ChannelCount);
pReader.Read(block.StreamInfo.Padding);
@@ -99,16 +96,18 @@ CTRFF_API void BCSTM::ReadInfoBlock(InfoBlock& block) {
ReadReference(r);
block.ChannelInfoRefs.push_back(r);
}
for (size_t i = 0; i < block.ChannelInfoRefs.size(); i++) {
size_t off = pInfoBlockRef.Ref.Offset;
off += sizeof(BlockHeader);
off += block.ChannelInfoTabRef.Offset;
off += block.ChannelInfoTab.Refs[i].Offset;
off += block.ChannelInfoRefs[i].Offset;
pFile.seekg(off, std::ios::beg);
DSP_ADPCM_Info t; /** temp */
pReader.ReadEx(t); /** This Section gets read normally */
pDSP_ADPCM_Info.push_back(t);
if (block.StreamInfo.Encoding == DSP_ADPCM) {
for (size_t i = 0; i < block.ChannelInfoRefs.size(); i++) {
size_t off = pInfoBlockRef.Ref.Offset;
off += sizeof(BlockHeader);
off += block.ChannelInfoTabRef.Offset;
off += block.ChannelInfoTab.Refs[i].Offset;
off += block.ChannelInfoRefs[i].Offset;
pFile.seekg(off, std::ios::beg);
DSP_ADPCM_Info t; /** temp */
pReader.ReadEx(t); /** This Section gets read normally */
pDSP_ADPCM_Info.push_back(t);
}
}
}