From c1d532be01ac5ce27128f6394c3ad11a7052e59a Mon Sep 17 00:00:00 2001 From: Ted John Date: Sun, 8 Jan 2017 17:20:10 +0000 Subject: [PATCH] Fix colour conversion out of range --- src/openrct2/rct1/S4Importer.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index a7ac4bccb5..ed868b779f 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -931,8 +931,12 @@ private: // Guests (indexes converted later) for (int i = 0; i < 32; i++) { - dst->peep[i] = src->peep[i]; - dst->peep_tshirt_colours[i] = RCT1::GetColour(src->peep_tshirt_colours[i]); + uint16 spriteIndex = src->peep[i]; + dst->peep[i] = spriteIndex; + if (spriteIndex != SPRITE_INDEX_NULL) + { + dst->peep_tshirt_colours[i] = RCT1::GetColour(src->peep_tshirt_colours[i]); + } } dst->var_CD = src->var_CD; @@ -949,7 +953,15 @@ private: dst->update_flags = src->update_flags; dst->colours.body_colour = RCT1::GetColour(src->colours.body_colour); dst->colours.trim_colour = RCT1::GetColour(src->colours.trim_colour); - dst->colours_extended = RCT1::GetColour(src->colours_extended); + if (_gameVersion == FILE_VERSION_RCT1) + { + // TODO we might need to use a lookup table here for default colours + dst->colours_extended = 0; + } + else + { + dst->colours_extended = RCT1::GetColour(src->colours_extended); + } dst->mini_golf_current_animation = src->mini_golf_current_animation; dst->mini_golf_flags = src->mini_golf_flags;