That would be my take on it too. You absolutely must be synchronised to the vertical screen refresh, otherwise flicker, tearing and jerky movement appear very quickly.
I've looked at Tiger Heli hardware and that only allows CPU access to the tilemap memory during the vertical blank period, so only a couple of hundred microseconds to do your stuff. This would not be apparent from looking at MAME either, as it doesn't accurately reproduce how the hardware works. Other game hardware may be different.
It doesn't mean that you have to do ALL your updates in that vertical blank period though, just be synchronised to it. I believe that Williams Defender hardware had a 4mS interrupt driven from vertical blank, so you get 4 interrupts per screen refresh. So now your software can know which part of the screen is being drawn to the screen and make sure it is updating the other areas.
The key to smoother flicker free graphics is this type of synchronised memory access, and I think that is a very important thing to remember when trying to program these boards.
cmonkey said:
I've no idea how vector based games work in this respect, you and Mitchell Gant know those way better than me!
With vector games there is no equivalent vertical flyback/VBLANK/VBI period. You simply tell the vector generator to start, it takes however long it takes to draw every vector then halts. You have to poll the HALT flag in software then tell it to go again. More vectors mean longer to draw, so more potential for flicker. Empire Strikes Back AT-AT level shows some flicker for example.
When I did that Inspector Vector of UKVAC screen the redraw rate was something like 180Hz as there was so little to draw. It looked ace at that rate on a real monitor!
You do still have memory writing sync problems though, your software can't be changing vector instructions that the hardware is currently reading. From what I have seen in Atari vector games they use a simple double buffer type technique by setting the first vector instruction as a jump to one of two vector memory chunks. While the vector generator is drawing from chunk 1, let's say that's address block 0x4100-0x43FF, then your software is writing/updating the instructions in chunk 2, say 0x4400-0x47FF.
Also I'd say it's not a crap demo either. It's an important milestone as it's the **first** demo on arcade hardware. I doubt the first Amiga demos were that good either, but they evolved as the limits of the hardware were tested. It's all a limit of time that can be spent hacking at it, and as a hobby that's the difficult part to find!