Stripped out the old screen dragging code (that used the new drawing functions), and replaced it with a much more complicated system involving the clipping system’s rectangle calculations and the DMA hardware. Screen dragging now runs at full speed, without flicker. Are there any problems that can’t be solved by throwing DMA_Copy() at it?
Actually, there is one. Having had such a success with screen dragging, I thought about using the DMA hardware to do solid window moving. The problem is, though, that horizontal movement will screw it all up. Screen dragging works because we’re always copying entire rows of pixels up or down. With window dragging, we could move left or right. If we tried to move a window right two pixels (for example), the first two pixels would be copied over the next two pixels, so we’d end up with the first two pixels repeated along the width of the window.
Anyway, here’s a new demo:
Forgot to mention in my last post that screens can now have backgrounds attached to them, via the use of the SuperBitmap class. Same goes for windows, too.