From 2f6945f27019542e165a926274442c641773ded2 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Mon, 21 Jul 2014 20:36:43 +0100 Subject: [PATCH] Decompiled first func underground_setup --- src/viewport.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/viewport.c b/src/viewport.c index 6152cec6d7..ddd243de16 100644 --- a/src/viewport.c +++ b/src/viewport.c @@ -253,6 +253,20 @@ void viewport_render(rct_drawpixelinfo *dpi, rct_viewport *viewport, int left, i viewport_paint(viewport, dpi, left, top, right, bottom); } +/** +* Readies the viewport for underground view/remove base land/remove vert faces +* rct2:0x00678A9F +* edi: dpi +* ebp: colour +*/ +void viewport_paint_underground_setup(rct_drawpixelinfo* dpi, uint8 colour){ + uint8* bits_pointer = dpi->bits; + for (int i = dpi->height >> dpi->zoom_level; i != 0; --i){ + memset(bits_pointer, colour, dpi->width >> dpi->zoom_level); + bits_pointer += (dpi->width >> dpi->zoom_level) + dpi->pitch; + } +} + /** * * rct2:0x00685CBF @@ -334,11 +348,11 @@ void viewport_paint(rct_viewport* viewport, rct_drawpixelinfo* dpi, int left, in dpi2->pitch = pitch; if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & 0x3001){ - int ebp = 0x0A0A0A0A; + uint8 colour = 0x0A; if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & 0x4000){ - ebp = 0; + colour = 0; } - RCT2_CALLPROC_X(0x00678A9F, 0, 0, 0, 0, 0, (int)dpi2, ebp); //Memory move loop + viewport_paint_underground_setup(dpi2, colour); } RCT2_GLOBAL(0xEE7880, uint32) = 0xF1A4CC; RCT2_GLOBAL(0x140E9A8, uint32) = (int)dpi2;