En unos ratillos que he conseguido burlando la pareza he estado cambiando un poco el orden de las operaciones para el scroll y he conseguido que el movimiento sea bastante más fluído que antes. La verdad es que en las pruebas previas había conseguido hacer que los sprites se quedaran o movieran por donde debían. Ahora, sólo probando con un sprite que controlo yo, el scroll es más agradable a la vista y no se nota tanto los saltos como antes.
Teniendo en cuenta que es un scroll brutote por software, con mapa de tiles, creo que no está mal y que puede dar juego. Todavía me quedan algunos detalles que pulir antes de dar por bueno y definitivo y publicar la librería pero por lo menos, estoy viendo luz al final del túnel.
Este es el churro de sentencias para hacer el scroll con sprites:
cpc_ResetTouchedTiles();
cpc_PutSpTileMap(sprite00); // Para actualizar los tiles q toca el sprite
cpc_UpdScr(); // restaura los tiles actualizados
cpc_PutTrSpTileMap2b(sprite00); // Ahora se dibuja el sprite
sprite00.cx=sprite00.cx+2; // sl sprite tb se scrollea
cpc_ResetTouchedTiles();
cpc_ScrollRight0();
drawColumnI();
cpc_UpdScr(); // restaura los tiles actualizados
cpc_ShowTileMap2();// tras el scroll se debe dibujar una vez sin scroll para limpiar bien!!
// ya se que es una caca, pero por ahora es así.
cpc_PutSpTileMap(sprite00);
cpc_UpdScr();
cpc_PutTrSpTileMap2b(sprite00);
cpc_ShowTouchedTiles2(); // solo muestra lo que se ve
De todo esto, el scroll en sí mismo es sólo esta parte:
cpc_ResetTouchedTiles();
cpc_ScrollRight0();
drawColumnI();
cpc_UpdScr(); // restaura los tiles actualizados
cpc_ShowTileMap2();
el resto es para actualizar el sprite y es la parte que menos me gusta y espero poder reducir un poco. Esta parte lo que hace es scrollear (mover bytes) de izquierda a derecha: mueve el mapa de tiles dejando vacía la columna (invisible) de la izquierda. Se rellenan los tiles del mapa con drawColumnI() y luego con cpc_UpdScr() se dibujan esos tiles antes de mostrar la pantalla scrolleada con cpc_ShowTileMap2(). Aquí dejo un Snapshot del scroll, para verlo en un emulador en vivo y en directo.
Seguiremos informando.
Interesante…
Pues sí, muy interesante. Además, ya he probado metiendo otros sprites grandecillos y da el pego
Estoy teniendo otra vez problemas a la hora de saber si un sprite está dentro del área visible o no… ¿cómo algo tan sencillo me da tanto dolor de cabeza?