From 1a2dd787f36ff8d9d678e99ea496a0d2e6705c7b Mon Sep 17 00:00:00 2001 From: Misa Date: Sat, 7 Nov 2020 16:21:30 -0800 Subject: [PATCH] Interpolate scrolling in Analogue Mode filter I can't really make the filter update only every timestep, because it's per-pixel and operates on deltaframes too, so it TECHNICALLY runs faster in over-30-FPS mode than not. That said, it's not really noticeable, the filter doesn't look bad for updating more often or anything. However, I can at least interpolate the scrolling, so it's smooth in over-30-FPS mode. --- desktop_version/src/GraphicsUtil.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/desktop_version/src/GraphicsUtil.cpp b/desktop_version/src/GraphicsUtil.cpp index 30397f3f..221fe2c0 100644 --- a/desktop_version/src/GraphicsUtil.cpp +++ b/desktop_version/src/GraphicsUtil.cpp @@ -316,6 +316,7 @@ void BlitSurfaceTinted( } +int oldscrollamount = 0; int scrollamount = 0; bool isscrolling = 0; @@ -326,12 +327,14 @@ void UpdateFilter() isscrolling = true; } + oldscrollamount = scrollamount; if(isscrolling == true) { scrollamount += 20; if(scrollamount > 240) { scrollamount = 0; + oldscrollamount = 0; isscrolling = false; } } @@ -348,7 +351,7 @@ SDL_Surface* ApplyFilter( SDL_Surface* _src ) { for(int y = 0; y < _src->h; y++) { - int sampley = (y + scrollamount )% 240; + int sampley = (y + (int) graphics.lerp(oldscrollamount, scrollamount) )% 240; Uint32 pixel = ReadPixel(_src, x,sampley);