Por cierto, ¿lo que se comenta de que se permite el uso de sprites en la imagen final para qué es? ¿Se usan para parchear esas 'deficiencias' del chip de video? y, ¿cómo se incluyen en el propio archivo de la imagen?
Por otra parte, ¿cómo se hace para salvar la pantalla en SC2 en un MSX1? Que yo recuerde no existe el comando bsave"cas:xxx",s
Por partes: sí, se pueden usar para tener más de dos colores por franja de 8 pixels, cosa que sin ellas sería imposible.
En cuanto a como incluir los sprites en el archivo de imagen y como grabar SC2 en un MSX1 si no tienes disco... A ver si me sale de memoria el código en ensamblador (y su equivalente en hexadecimal):
ld hl,0 ; 21 00 00
ld de,$A000 ; 11 00 A0
ld bc,$4000 ; 01 00 40
jp LDIRMV ; C3 59 00
Por lo que habría que hacer el siguiente código en BASIC que copiaría la VRAM a RAM. Debe ejecutarse CUANDO TENGAMOS LA IMAGEN VISIBLE EN PANTALLA. Por lo que si se genera en BASIC, habría que añadir estas líneas a nuestro programa (renumerándolas si es preciso):
10 FOR A=&H9FF4 TO &H9FFF: READ D : POKE A,D : NEXT
20 DEFUSR=&H9FF4 : A=USR(0)
30 POKE &H9FF4,&H11 : POKE &H9FF7,&H21 : POKE &H9FFE,&H5C
40 BSAVE "CAS:IMAGEN",&H9FF4,&HDFFF,&H9FF4
50 DATA &H21,0,0,&H11,0,&HA0,1,0,&H40,&H53,&H59,0
Con este código (y si no me he equivocado, que todo puede ser), se copia la imagen de VRAM a RAM, se cambia el programa para hacer la transferencia inversa y se graba a cinta un binario ejecutable. Para cargar la imagen bastaría hacer:
10 SCREEN 2,X
20 BLOAD "CAS:IMAGEN",R
30 GOTO 30
Siendo X el tamaño de los sprites (ampliados, sin ampliar, de 8x8, de 16x16). Vamos, el mismo que usárais al hacer la imagen.
Espero que con esto os baste para ir haciendo pruebecillas