diff --git a/src/openrct2/drawing/Sprite.cpp b/src/openrct2/drawing/Sprite.cpp index 28cf83e38d..01a5c96078 100644 --- a/src/openrct2/drawing/Sprite.cpp +++ b/src/openrct2/drawing/Sprite.cpp @@ -379,7 +379,10 @@ bool gfx_load_csg() { _csg.elements[i].offset += (uintptr_t)_csg.data; // RCT1 used zoomed offsets that counted from the beginning of the file, rather than from the current sprite. - _csg.elements[i].zoomed_offset = i - (SPR_CSG_BEGIN + _csg.elements[i].zoomed_offset); + if (_csg.elements[i].zoomed_offset != 0) + { + _csg.elements[i].zoomed_offset = i - (SPR_CSG_BEGIN + _csg.elements[i].zoomed_offset); + } } _csgLoaded = true; return true; diff --git a/src/openrct2/object/ImageTable.cpp b/src/openrct2/object/ImageTable.cpp index 17a25ff01c..065cc643a0 100644 --- a/src/openrct2/object/ImageTable.cpp +++ b/src/openrct2/object/ImageTable.cpp @@ -98,8 +98,9 @@ void ImageTable::Read(IReadObjectContext * context, IStream * stream) } } -void ImageTable::AddImage(const rct_g1_element * g1, size_t length) +void ImageTable::AddImage(const rct_g1_element * g1) { + auto length = g1_calculate_data_size(g1); auto dstOffset = _dataSize; _dataSize += length; _data = Memory::Reallocate(_data, _dataSize); diff --git a/src/openrct2/object/ImageTable.h b/src/openrct2/object/ImageTable.h index 080533d91b..a30107ac97 100644 --- a/src/openrct2/object/ImageTable.h +++ b/src/openrct2/object/ImageTable.h @@ -37,5 +37,5 @@ public: void Read(IReadObjectContext * context, IStream * stream); const rct_g1_element * GetImages() const { return _entries.data(); } uint32 GetCount() const { return (uint32)_entries.size(); } - void AddImage(const rct_g1_element * g1, size_t length); + void AddImage(const rct_g1_element * g1); }; diff --git a/src/openrct2/object/RideObject.cpp b/src/openrct2/object/RideObject.cpp index b11419e840..d2f881fc0c 100644 --- a/src/openrct2/object/RideObject.cpp +++ b/src/openrct2/object/RideObject.cpp @@ -587,12 +587,12 @@ void RideObject::ReadJson(IReadObjectContext * context, const json_t * root) for (size_t i = 0; i < MAX_RIDE_TYPES_PER_RIDE_ENTRY; i++) { auto g1 = gfx_get_g1_element(previewImg); - imageTable->AddImage(g1, g1_calculate_data_size(g1)); + imageTable->AddImage(g1); } for (int i = 0; i < 6; i++) { auto g1 = gfx_get_g1_element(imageStart + i); - imageTable->AddImage(g1, g1_calculate_data_size(g1)); + imageTable->AddImage(g1); } rct_ride_entry_vehicle * vehicle0 = &_legacyType.vehicles[0]; vehicle0->sprite_flags |= VEHICLE_SPRITE_FLAG_FLAT;