Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Richard Ashbery Newsgroups: comp.sys.acorn.programmer Subject: Re: Instability in rectangular cursor Date: Sun, 15 Nov 2020 13:20:21 +0000 (GMT) Organization: None Lines: 30 Message-ID: <58cfce3e97basura@invalid.addr.uk> X-Trace: individual.net mBJsZwIN3IaLG/sP7AOP5A0R1k5UXikR9VKO5vN9ehiccMm67S X-Orig-Path: uwclub.net!richard.ashbery Cancel-Lock: sha1:srDXoqkl7W6S7OiBRiZDyn2uICE= User-Agent: Pluto/3.16 (RISC OS/5.27) NewsHound/v1.52-32 Xref: csiph.com comp.sys.acorn.programmer:6224 On 13 Nov in comp.sys.acorn.programmer, Steve Fryatt wrote: > > You make a fair point and although WAIT does work in this example > > it dramatically slows down the program that this code has been > > ripped from. > It will do, because it seems to rely on replotting the screen many > times a frame, which is what causes the tearing effect. > WAIT simply pauses the program until the start of the next video > frame, when there's a small window of time in which to update the > screen while the video flyback is happening. If the code is > expecting to execute the REPEAT loop many more per second than the > monitor refresh rate, then the game will slow down as a result. > Unfortunately, you can't change the video refresh rate because > that's set by your monitor, so to fix the tearing you will need to > decouple the game timing from the screen update. Thanks Steve for the explanation. It looks as though a complete rewrite is necessary. Steve D indicated that triple buffering may be required - I briefly had a look at this but understanding the process is challenging - maybe it's time for a revisit. My simplified version does away with the mouse cursor and relies on the wash colour to erase the verticals - it seems to work just as well but doesn't look so pretty. Richard