Still a long way to go, but imagine it with the each row running at a slightly different speed, and the xPos of each row undulating

It's using a heatmap(?) of sorts to draw the colours.. a single row of pixels is defined in memory, with the first three bits of each pixels data available for me to specify brightness, and the last one reserved to toggle between purple and blue...
So darkest blue in palette idx 0000, and the darkest purple is in 1000, the second darkest blue is in 0001, and the next purple in 1001, and so on. It worked pretty well in terms of making it easy to calculate what colour I should be drawing the squares, but I'm not yet sure how I can draw pixel A and B in different colours to each other, I've got some ideas though!
This has been immense fun so far
The code if anyone is interested. It's hugely wasteful, but my next task is to stream line as much as a I can
https://github.com/CurlyPaul/cpc-z80-twisting-tower