yo hice lo siguiente... a ver si te sirve, pq la teoria la tenia, pero en la practica algo fallaba
Quizas soy mu bruto...yo tengo en ram una copia del buffer de los planos de sprites (de todos) 4 bytes por cada 1 (posY,posX,color,patron)(32*4 = 128 bytes). Y lo volco cada vez. Lo que cambio cada vez que volvo a VRAM es el orden,pero en RAM siempre tienen el mismo numero de sprite. Es decir...planteo ejemplo que se vera claro.
SPRITE en RAM
00-01-02-03-04-05 ... 30-31 (32 planos eran no?)
Marco que los 2 primeros son fijos
A cada interrupcion en VRAM se suben asi:
00-01-03-04-05...30-31-02
00-01-04-05...30-31-02-03
00-01-05...30-31-02-03-04
De esta manera la referencia RAM siempre es la misma, pero la rutina de subida es la que cambia el orden.
Para tu programa que escribe en RAM, le da igual en que plano se pinte el sprite, el numero que tu usas para el calculo de datos es siempre el mismo.
Esto tiene un problema...que no puedes tratar los sprites con profundidad Z, es decir, controlar quien va delante o quien va detras, pero en muchos juegos eso es irrelevante.
Esta rotacion la haria SIEMPRE, independientemente de que haya bit de 5o Sprite o no, porque aunque si no la hay se verán todos bien y si la hay, ya parpadeará to solito
Lo que me fallaba de esta teoria , era algo de punteros, que hacia un sprite de mas y tal, pero la rutina funcionaba bien y el parpadeo era soportable.
Creo recordar que esto me lo explicó viejo_archivero en un post por aquí.