The problem is you are tackling the 2D subject with a 3D mindset.
Sprites are really very fast so moving them all, cycling textures, shrinking them, rotating them - it's all very fast. You arn't drawing that 40000 polygon obsenity your modeller sent you - it's just a texture.
Personally I create a display function that redraws everything every cycle, here's a simplified version to give you an idea...
function display(x,y)
`* Draw Buffy the Vampire Layer
sprite 1,buffX-x,buffyY-y,buffyCell
`* Draw Xander
sprite 2,xanderX-x,xanderY-y,xanderCell
`* Draw Xanders wayward fingers
for finger=1 to 10
sprite 2+finger,fingerX(finger)-x,fingerY(finger),fingerCell(finger)
next finger
sync
endfunction
Pneumatic Dryll, Outrageous epic cleric of EQ/Xev
God made the world in 7 days, but we're still waiting for the patch.