From 30fd2160d7586ad7d3ba535b91e990bef4ebcaab Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 13 Aug 2016 11:43:19 +0200 Subject: [PATCH] Integrate data at 0x0097FEFC --- src/drawing/engines/SoftwareDrawingEngine.cpp | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/drawing/engines/SoftwareDrawingEngine.cpp b/src/drawing/engines/SoftwareDrawingEngine.cpp index cad2dfca96..792fd3690e 100644 --- a/src/drawing/engines/SoftwareDrawingEngine.cpp +++ b/src/drawing/engines/SoftwareDrawingEngine.cpp @@ -818,6 +818,52 @@ void SoftwareDrawingContext::Clear(uint32 colour) } } +/** rct2: 0x0097FF04 */ +static const uint16 Pattern[] = { + 0b0111111110000000, + 0b0011111111000000, + 0b0001111111100000, + 0b0000111111110000, + 0b0000011111111000, + 0b0000001111111100, + 0b0000000111111110, + 0b0000000011111111, + 0b1000000001111111, + 0b1100000000111111, + 0b1110000000011111, + 0b1111000000001111, + 0b1111100000000111, + 0b1111110000000011, + 0b1111111000000001, + 0b1111111100000000, +}; + +/** rct2: 0x0097FF14 */ +static const uint16 PatternInverse[] = { + 0b1000000001111111, + 0b1100000000111111, + 0b1110000000011111, + 0b1111000000001111, + 0b1111100000000111, + 0b1111110000000011, + 0b1111111000000001, + 0b1111111100000000, + 0b0111111110000000, + 0b0011111111000000, + 0b0001111111100000, + 0b0000111111110000, + 0b0000011111111000, + 0b0000001111111100, + 0b0000000111111110, + 0b0000000011111111 +}; + +/** rct2: 0x0097FEFC */ +static const uint16 * Patterns[] = { + Pattern, + PatternInverse +}; + void SoftwareDrawingContext::FillRect(uint32 colour, sint32 left, sint32 top, sint32 right, sint32 bottom) { rct_drawpixelinfo * dpi = _dpi; @@ -923,7 +969,7 @@ void SoftwareDrawingContext::FillRect(uint32 colour, sint32 left, sint32 top, si int startPatternX = (startX + dpi->x) % 16; int patternX = startPatternX; - uint16 * patternsrc = RCT2_ADDRESS(0x0097FEFC, uint16*)[colour >> 28]; // or possibly uint8)[esi*4] ? + const uint16 * patternsrc = Patterns[colour >> 28]; // or possibly uint8)[esi*4] ? for (int numLines = height; numLines > 0; numLines--) {