diff --git a/Runtime/Audio/CAudioGroupSet.cpp b/Runtime/Audio/CAudioGroupSet.cpp index 64910da34..db20e67c8 100644 --- a/Runtime/Audio/CAudioGroupSet.cpp +++ b/Runtime/Audio/CAudioGroupSet.cpp @@ -1,23 +1,31 @@ #include "Runtime/Audio/CAudioGroupSet.hpp" +#include + namespace urde { amuse::AudioGroupData CAudioGroupSet::LoadData() { + const auto readU32 = [](const u8* ptr) { + uint32_t value; + std::memcpy(&value, ptr, sizeof(value)); + return hecl::SBig(value); + }; + athena::io::MemoryReader r(m_buffer.get(), INT32_MAX); x10_baseName = r.readString(); x20_name = r.readString(); u8* buf = m_buffer.get() + r.position(); - uint32_t poolLen = hecl::SBig(*reinterpret_cast(buf)); + const uint32_t poolLen = readU32(buf); unsigned char* pool = buf + 4; buf += poolLen + 4; - uint32_t projLen = hecl::SBig(*reinterpret_cast(buf)); + const uint32_t projLen = readU32(buf); unsigned char* proj = buf + 4; buf += projLen + 4; - uint32_t sampLen = hecl::SBig(*reinterpret_cast(buf)); + const uint32_t sampLen = readU32(buf); unsigned char* samp = buf + 4; buf += sampLen + 4; - uint32_t sdirLen = hecl::SBig(*reinterpret_cast(buf)); + const uint32_t sdirLen = readU32(buf); unsigned char* sdir = buf + 4; return {proj, projLen, pool, poolLen, sdir, sdirLen, samp, sampLen, amuse::GCNDataTag{}};