From a59ecddb639a019558ca97f61783fd229dce077e Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Fri, 23 Mar 2018 21:19:12 +0100 Subject: [PATCH] fixed bug with extremely slow envelopes when using "request.step_delay: 0" Using a step delay of zero for envelope style requests (and also in-game envelopes) resulted in extremely slow envelope animations (instead of very fast animations, as could be expected), because "SkipUntilDelayReached()" won't skip any frames in this case (which should probably be corrected, too). This is fixed by never using a step delay value less than "1". --- src/tools.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools.c b/src/tools.c index 8718bbe1..21f062b4 100644 --- a/src/tools.c +++ b/src/tools.c @@ -2511,7 +2511,7 @@ void AnimateEnvelope(int envelope_nr, int anim_mode, int action) boolean no_delay = (tape.warp_forward); unsigned int anim_delay = 0; int frame_delay_value = (ffwd_delay ? FfwdFrameDelay : GameFrameDelay); - int anim_delay_value = (no_delay ? 0 : frame_delay_value) / 2; + int anim_delay_value = MAX(1, (no_delay ? 0 : frame_delay_value) / 2); int font_nr = FONT_ENVELOPE_1 + envelope_nr; int font_width = getFontWidth(font_nr); int font_height = getFontHeight(font_nr); @@ -2768,7 +2768,7 @@ void AnimateEnvelopeRequest(int anim_mode, int action) boolean ffwd_delay = (tape.playing && tape.fast_forward); boolean no_delay = (tape.warp_forward); int delay_value = (ffwd_delay ? delay_value_fast : delay_value_normal); - int anim_delay_value = (no_delay ? 0 : delay_value + 500 * 0) / 2; + int anim_delay_value = MAX(1, (no_delay ? 0 : delay_value + 500 * 0) / 2); unsigned int anim_delay = 0; int tile_size = MAX(request.step_offset, 1); -- 2.34.1