Otra forma de hacerlo es:
-Tener dos páginas con el mismo fondo inicial.
-Con Sprite, me refiero a "Sprite Software", o "COPY"
Repetir
-página visible 0, activa 1
-Para cada sprite, recuperar el fondo que se copió de la página 1 (si no hay nada, por ser el primer frame en esta página, no hacemos nada)
*En este momento, el fondo estará totalmente limpio, sin sprites, solo el fondo
-Para cada sprite, hacer una copia del lugar donde va a ir colocado en página 1
-Dibujar cada sprite usando una operacion logica, para que solo dibuje los pixeles que no sean cero, en página 1
-cambio página visible 1, activa 0
-Repetimos, pero cambiando páginas:
-Para cada sprite, recuperar el fondo que se copió de la página 0 (si no hay nada, por ser el primer frame en esta página, no hacemos nada)
*En este momento, el fondo estará totalmente limpio, sin sprites, solo el fondo
-Para cada "Sprite" software, hacer una copia del lugar donde va a ir colocado en página 0
-Dibujar cada sprite usando una operacion logica, para que solo dibuje los pixeles que no sean cero, en página 0
-cambio página visible 0, activa 1
mientras sea necesario
En screen 5 hay hueco para 2 páginas visibles alternas, y otras dos para mantener los gráficos y zona de trabajo (dos por cada sprite en pantalla).
Eso limita bastante las posibilidades, sobre todo con sprites gigantes como Cody.
Ejemplo probado en BASIC:
10 SCREEN 5
20 SET PAGE 2,2
30 CLS
35 REM INICIALIZAMOS EL SPRITE, ASEGURANDO QUE LO QUE NO ES SPRITE, TIENE COLOR 0
40 LINE (0,0)-(15,15),0,BF
50 FOR A=0 TO 7
60 CIRCLE(7,7),A,A
70 NEXT
75 REM CREAMOS UN FONDO TO GUAPO
80 SET PAGE 0,0
90 FOR A=1 TO 100
100 LINE-(RND(1)*255,RND(1)*212),RND(1)*8+7
110 NEXT
115 REM Y LO COPIAMOS EN LA PAGINA 1
120 COPY (0,0)-(255,212),0 TO (0,0),1
130 REM INICIALIZAMOS LAS VARIABLES
140 P=0
150 XB(0)=-1:YB(0)=-1
160 XB(1)=-1:YB(1)=-1
165 REM EMPIEZA LO BUENO
170 SET PAGE 1-P,P
175 REM EN EL PRIMER FRAME DE CADA PAGINA, NO RESTAURAMOS EL FONDO
180 IF XB(P)<>-1 THEN COPY(16+16*P,0)-(31+16*P,15),2 TO (XB(P),YB(P)),P
185 REM LEEMOS EL CURSOR Y ACTUALIZAMOS X E Y EN CONSECUENCIA
190 D=STICK(0)
200 X=X-(D=2)-(D=3)-(D=4)+(D=6)+(D=7)+(D=8)
210 Y=Y-(D=4)-(D=5)-(D=6)+(D=8)+(D=1)+(D=2)
215 REM HACEMOS COPIA DEL FONDO
220 COPY (X,Y)-(X+15,Y+15),P TO (16+16*P,0),2
225 REM DIBUJAMOS EL SPRITE
230 COPY (0,0)-(15,15),2 TO (X,Y),P,TPSET
235 REM ACTUALIZAMOS LA X E Y DE COPIA DEL FONDO
240 XB(P)=X
250 YB(P)=Y
255 REM CAMBIAMOS LA PAGINA ACTIVA POR LA VISIBLE
260 P=1-P
265 REM PARA VER EL ESTADO DE LA PAGINA DE TRABAJO, CON ESPACIO
270 IF STRIG(0)=-1 THEN GOSUB 290
280 GOTO 170
290 SET PAGE 2
300 IF STRIG(0)=-1 GOTO 300
310 SET PAGE 1-P,P
320 RETURN