diff --git a/source/sw/src/draw.cpp b/source/sw/src/draw.cpp index ba5e04ef0..fb48f8950 100644 --- a/source/sw/src/draw.cpp +++ b/source/sw/src/draw.cpp @@ -1035,6 +1035,8 @@ post_analyzesprites(void) } #endif +static ClockTicks mapzoomclock; + void ResizeView(PLAYERp pp) { @@ -1043,15 +1045,13 @@ ResizeView(PLAYERp pp) if (dimensionmode == 2 || dimensionmode == 5 || dimensionmode == 6) { - if (inputState.GetKeyStatus(KEYSC_DASH)||inputState.GetKeyStatus(KEYSC_GMINUS)) - { - if ((zoom -= (zoom >> 4)) < 48) zoom = 48; - } + int32_t timepassed = (int32_t)(totalclock - mapzoomclock); + mapzoomclock += timepassed; + if (inputState.GetKeyStatus(KEYSC_DASH)||inputState.GetKeyStatus(KEYSC_GMINUS)) + zoom = max(zoom - mulscale7(timepassed * synctics, zoom), 48); if (inputState.GetKeyStatus(KEYSC_EQUAL)||inputState.GetKeyStatus(KEYSC_GPLUS)) - { - if ((zoom += (zoom >> 4)) > 4096) zoom = 4096; - } + zoom = min(zoom + mulscale7(timepassed * synctics, zoom), 4096); if (inputState.GetKeyStatus(KEYSC_ESC)) {