diff --git a/rwcore/loaders/LoaderDFF.cpp b/rwcore/loaders/LoaderDFF.cpp index c0bb48fd0..85473dc0f 100644 --- a/rwcore/loaders/LoaderDFF.cpp +++ b/rwcore/loaders/LoaderDFF.cpp @@ -176,7 +176,7 @@ GeometryPtr LoaderDFF::readGeometry(const RWBStream &stream) { std::vector verts; verts.resize(numVerts); - if (geomStream.getChunkVersion() < 0x1003FFFF) { + if (geomStream.getChunkVersion() < 0x34003) { headerPtr += sizeof(RW::BSGeometryColor); } diff --git a/rwcore/loaders/RWBinaryStream.hpp b/rwcore/loaders/RWBinaryStream.hpp index f3ca8c10a..6fd6c9c0f 100644 --- a/rwcore/loaders/RWBinaryStream.hpp +++ b/rwcore/loaders/RWBinaryStream.hpp @@ -24,7 +24,7 @@ class RWBStream { std::ptrdiff_t _size; char* _dataCur; char* _nextChunk; - std::uint32_t _chunkVersion; + std::uint32_t _chunkStamp; size_t _currChunkSz; public: @@ -50,7 +50,7 @@ class RWBStream { _currChunkSz = bit_cast(*_dataCur); _dataCur += sizeof(std::uint32_t); - _chunkVersion = bit_cast(*_dataCur); + _chunkStamp = bit_cast(*_dataCur); _dataCur += sizeof(std::uint32_t); _nextChunk = _dataCur + _currChunkSz; @@ -67,7 +67,10 @@ class RWBStream { } std::uint32_t getChunkVersion() const { - return _chunkVersion; + if (_chunkStamp & 0xFFFF0000) + return ((_chunkStamp >> 14 & 0x3FF00) + 0x30000) | + (_chunkStamp >> 16 & 0x3F); + return _chunkStamp << 8; } /**