From 1cbcf089252a9595a656722241c873b941f9f938 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Mon, 21 Jul 2014 18:55:28 +0100 Subject: [PATCH] Fix small bug in zooming. Another breaking bug still exists --- src/viewport.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/viewport.c b/src/viewport.c index 11830351f2..5adc32eb1d 100644 --- a/src/viewport.c +++ b/src/viewport.c @@ -264,13 +264,14 @@ void viewport_render(rct_drawpixelinfo *dpi, rct_viewport *viewport, int left, i * ebp: bottom */ void viewport_paint(rct_viewport* viewport, rct_drawpixelinfo* dpi, int left, int top, int right, int bottom){ - + //RCT2_CALLPROC_X(0x00685CBF, left, top, 0, right, (int)viewport, (int)dpi, bottom); + //return; RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) = viewport->flags; RCT2_GLOBAL(RCT2_ADDRESS_VIEWPORT_ZOOM, uint16) = viewport->zoom; int width = right - left; int height = bottom - top; - int bitmask = 0xFFFF << viewport->zoom; + int bitmask = 0xFFFF & (0xFFFF << viewport->zoom); width &= bitmask; height &= bitmask; @@ -286,11 +287,11 @@ void viewport_paint(rct_viewport* viewport, rct_drawpixelinfo* dpi, int left, in RCT2_GLOBAL(RCT2_ADDRESS_VIEWPORT_PAINT_PITCH, uint16) = (dpi->width + dpi->pitch) - width; - int x = left - viewport->view_x & bitmask; + int x = left - (viewport->view_x & bitmask); x >>= viewport->zoom; x += viewport->x; - int y = top - viewport->view_y & bitmask; + int y = top - (viewport->view_y & bitmask); y >>= viewport->zoom; y += viewport->y;