Skip to content

Commit 084176a

Browse files
committed
core: reasonably decode version
Let's use at least partly readable format. Signed-off-by: David Heidelberg <[email protected]>
1 parent afd83e5 commit 084176a

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

rwcore/loaders/LoaderDFF.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ GeometryPtr LoaderDFF::readGeometry(const RWBStream &stream) {
176176
std::vector<GeometryVertex> verts;
177177
verts.resize(numVerts);
178178

179-
if (geomStream.getChunkVersion() < 0x1003FFFF) {
179+
if (geomStream.getChunkVersion() < 0x34003) {
180180
headerPtr += sizeof(RW::BSGeometryColor);
181181
}
182182

rwcore/loaders/RWBinaryStream.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class RWBStream {
2424
std::ptrdiff_t _size;
2525
char* _dataCur;
2626
char* _nextChunk;
27-
std::uint32_t _chunkVersion;
27+
std::uint32_t _chunkStamp;
2828
size_t _currChunkSz;
2929

3030
public:
@@ -50,7 +50,7 @@ class RWBStream {
5050
_currChunkSz = bit_cast<std::uint32_t>(*_dataCur);
5151
_dataCur += sizeof(std::uint32_t);
5252

53-
_chunkVersion = bit_cast<std::uint32_t>(*_dataCur);
53+
_chunkStamp = bit_cast<std::uint32_t>(*_dataCur);
5454
_dataCur += sizeof(std::uint32_t);
5555

5656
_nextChunk = _dataCur + _currChunkSz;
@@ -67,7 +67,10 @@ class RWBStream {
6767
}
6868

6969
std::uint32_t getChunkVersion() const {
70-
return _chunkVersion;
70+
if (_chunkStamp & 0xFFFF0000)
71+
return ((_chunkStamp >> 14 & 0x3FF00) + 0x30000) |
72+
(_chunkStamp >> 16 & 0x3F);
73+
return _chunkStamp << 8;
7174
}
7275

7376
/**

0 commit comments

Comments
 (0)