He metido unas cuantas rutinas ya en la librería:
cpc_GetScrAddress (x,y)
cpc_GetSp (buffer,alto,ancho,origen)
cpc_PutSp (sprite,alto,ancho,destino)
cpc_PutSprite (sprite,destino)
cpc_PutMaskSp (sprite,alto,ancho,destino)
cpc_PutMaskSprite (sprite,destino)
cpc_PutSpXOR (sprite,alto,ancho,destino)
cpc_PutSpriteXOR (sprite,destino)
cpc_PutTile2x8 (tile,x,y)
cpc_PutTile4x16 (tile,x,y)
cpc_PrintStr(cadena)
y un pequeño programa de ejemplo que las usa todas:
Código: Seleccionar todo
include "cpcrslib.ccz80";
byte x;
byte y;
x=0;
y=0;
cpc_PrintStr("hola mundo");
cpc_PutSprite(sprite2x8,#c000); //dibuja un sprite en la parte superior izquierda de la pantalla
repeat (100) {
cpc_GetSp(buffer,16,4,cpc_GetScrAddress(x,y)); //captura el fondo
cpc_PutSp(buffer,16,4,cpc_GetScrAddress(x,30)); //y lo dibuja más abajo
x++;
}
x=0;
repeat (20) {
cpc_PutSpriteXOR(sprite2x8,cpc_GetScrAddress(x,90));
x=x+2;
}
x=x-2;
repeat (20) {
cpc_PutSpXOR(sprite2x8d,8,2,cpc_GetScrAddress(x,90));
x=x-2;
}
cpc_PutMaskSp(sprite,16,4,cpc_GetScrAddress(20,30)); //dimensiones en parámetros
cpc_PutMaskSprite(sprite0,cpc_GetScrAddress(10,10)); //dimensiones dentro del sprite
return;
array byte buffer = {
#C0,#C8,#C4,#C0,
#C4,#CC,#CC,#C8,
#C0,#0C,#0C,#C0,
#C0,#0C,#0C,#C0,
#C0,#0C,#0C,#C0,
#C0,#C0,#C0,#C0,
#C0,#48,#84,#C0,
#C0,#48,#84,#C0,
#C0,#00,#00,#C0,
#84,#0C,#0C,#48,
#C0,#04,#08,#C0,
#C0,#00,#00,#C0,
#C4,#88,#44,#C8,
#C4,#00,#00,#C8,
#C4,#CC,#CC,#C8,
#C0,#C0,#C0,#C0
};
array byte sprite0 = {
4, 16, //dimensiones del sprite
#88,#70,#11,#E0,#88,#70,#11,#E0, //MASCARA,SPRITE,MASCARA,SPRITE...
#11,#E0,#88,#70,#11,#E0,#88,#70, //MASK, SPRITE, MASK, SPRITE...
#00,#96,#00,#96,#00,#96,#00,#96,
#00,#F0,#00,#F0,#00,#F0,#00,#F0,
#00,#F7,#00,#FE,#00,#F7,#00,#FE,
#00,#C7,#00,#3E,#00,#C7,#00,#3E,
#00,#F3,#00,#FC,#00,#F3,#00,#FC,
#88,#70,#11,#E0,#88,#70,#11,#E0,
#88,#70,#11,#E0,#88,#70,#11,#E0,
#11,#E0,#88,#70,#11,#E0,#88,#70,
#00,#96,#00,#96,#00,#96,#00,#96,
#00,#F0,#00,#F0,#00,#F0,#00,#F0,
#00,#F7,#00,#FE,#00,#F7,#00,#FE,
#00,#C7,#00,#3E,#00,#C7,#00,#3E,
#00,#F3,#00,#FC,#00,#F3,#00,#FC,
#88,#70,#11,#E0,#88,#70,#11,#E0,
};
array byte sprite = {
#88,#70,#11,#E0,#88,#70,#11,#E0, //MASCARA,SPRITE,MASCARA,SPRITE...
#11,#E0,#88,#70,#11,#E0,#88,#70, //MASK, SPRITE, MASK, SPRITE...
#00,#96,#00,#96,#00,#96,#00,#96,
#00,#F0,#00,#F0,#00,#F0,#00,#F0,
#00,#F7,#00,#FE,#00,#F7,#00,#FE,
#00,#C7,#00,#3E,#00,#C7,#00,#3E,
#00,#F3,#00,#FC,#00,#F3,#00,#FC,
#88,#70,#11,#E0,#88,#70,#11,#E0,
#88,#70,#11,#E0,#88,#70,#11,#E0,
#11,#E0,#88,#70,#11,#E0,#88,#70,
#00,#96,#00,#96,#00,#96,#00,#96,
#00,#F0,#00,#F0,#00,#F0,#00,#F0,
#00,#F7,#00,#FE,#00,#F7,#00,#FE,
#00,#C7,#00,#3E,#00,#C7,#00,#3E,
#00,#F3,#00,#FC,#00,#F3,#00,#FC,
#88,#70,#11,#E0,#88,#70,#11,#E0,
};
array byte sprite2x8 = {
2,8, //dimensiones del sprite
#07,#0E,
#2D,#C3,
#0F,#2D,
#0F,#2D,
#0F,#0F,
#0F,#2D,
#0F,#0F,
#07,#0E
};
array byte sprite2x8d = {
#07,#0E,
#2D,#C3,
#0F,#2D,
#0F,#2D,
#0F,#0F,
#0F,#2D,
#0F,#0F,
#07,#0E
};
Y cuelgo la librería tal como va hasta ahora, por si queréis ir probando.
EDITO, que he añadido dos funciones más (las dos de tiles)