ijor wrote:Forget about the original clock mux implementation. Forget about the complicated logic of the pixel counter. Your old, simple, shifter model that you said you implemented before, should work. There is nothing special at all about (classic) overscan or sync scroll regarding Shifter. The only thing is that you need to be ready to accept more loads per line and more active scan lines, that's all. You can also ignore changes to the resolution register outside the active area.
In theory, yeah. But it doesn't work, so obviously there is still some critical difference. There are assumptions that I have yet to confirm, such as the distance between VSYNC and scanline clock cycle 0, which could be the problem. Easy enough - if I had time to work on it.
The problem seems to be that you started testing overscan with the Closure demo. As we are saying, that is a very special and unique case. Try other demos with your old, simple model.
I didn't start with Closure, but it seemed like a good test since it exercises the shifter. Before I ran out of time, I was focusing just on fixing a palette issue with Spectrum 512 actually.
The original simple model is fundamentally incompatible with any software that interferes with DE, which is why a new approach (with frames synchronised to VSYNC in this case) is needed.