diff --git a/source/exhumed/src/sound.cpp b/source/exhumed/src/sound.cpp index 480690e3d..ce7d35893 100644 --- a/source/exhumed/src/sound.cpp +++ b/source/exhumed/src/sound.cpp @@ -191,17 +191,22 @@ int LoadSound(const char* name) auto lump = S_LookupSound(filename); if (lump > 0) { + auto &S_sfx = soundEngine->GetSounds(); + S_sfx.Reserve(1); + int retval = S_sfx.Size() - 2; auto check = fileSystem.GetFileData(lump); - bool loops = false; if (check.Size() > 26 && check[26] == 6 && !memcmp("Creative Voice File", check.Data(), 19)) { // This game uses the actual loop point information in the sound data as its only means to check if a sound is looped. - loops = true; + looped[retval] = true; } - int retval = soundEngine->AddSoundLump(nname, lump, -1, 6); - soundEngine->CacheSound(retval); - looped[retval-1] = loops; - return retval - 1; + auto& newsfx = S_sfx.Last(); + newsfx.name = nname; + newsfx.lumpnum = lump; + newsfx.NearLimit = 6; + newsfx.bTentative = false; + soundEngine->CacheSound(retval + 1); + return retval; } else if (!ISDEMOVER) // demo tries to load sound files it doesn't have {