diff --git a/components/esm4/loadsndr.cpp b/components/esm4/loadsndr.cpp index ce1b9d6d52..830cdfdc54 100644 --- a/components/esm4/loadsndr.cpp +++ b/components/esm4/loadsndr.cpp @@ -68,10 +68,25 @@ void ESM4::SoundReference::load(ESM4::Reader& reader) reader.get(mLoopInfo); break; case ESM4::SUB_BNAM: - reader.get(mData); + { + if (subHdr.dataSize == 6) + reader.get(mData); + else if (subHdr.dataSize == 4) + reader.getFormId(mBaseDescriptor); + else + reader.skipSubRecordData(); break; + } + case ESM4::SUB_CIS1: + case ESM4::SUB_CIS2: case ESM4::SUB_CNAM: // CRC32 hash + case ESM4::SUB_DNAM: // FO4 case ESM4::SUB_FNAM: // unknown + case ESM4::SUB_INTV: // FO4 + case ESM4::SUB_ITMC: // FO4 + case ESM4::SUB_ITME: // FO4 + case ESM4::SUB_ITMS: // FO4 + case ESM4::SUB_NNAM: // FO4 reader.skipSubRecordData(); break; default: diff --git a/components/esm4/loadsndr.hpp b/components/esm4/loadsndr.hpp index 5e52499f12..8110f3154a 100644 --- a/components/esm4/loadsndr.hpp +++ b/components/esm4/loadsndr.hpp @@ -67,6 +67,7 @@ namespace ESM4 ESM::FormId mSoundCategory; // SNCT ESM::FormId mSoundId; // another SNDR ESM::FormId mOutputModel; // SOPM + ESM::FormId mBaseDescriptor; // BNAM std::string mSoundFile; LoopInfo mLoopInfo;