Luca found another little bug, this time coins were wobbling if you got them in a specific place. After a quick hunt, I discovered that while the screen scrolls 2 pixels at a time, I do in fact scroll it at 1. The hardware then drops a bit for displaying, but the sprite system was adding it to the coordinate before masking off the bottom bit. This means if the sprite was on an odd pixel, it could wobble as the screen scrolls.
Anyway... I now store a masked version of the scroll counter and the sprites use that - so all fixed.