Un petit exemple de source(deplacement de sprite pour 92+, les 89 doivent changer quelque trucs...la routines quoi)
#include "sprite" /*inclu la gestion des sprites*/
#include "datagfx" /*inclu les sprites externes*/
typedef unsigned char LCD_BUFFER[3840];
main()
{
/*-------------------------DATA-------------------------*/
int x=88, y=32, keya=0;
char buffer[50];
char *str1 = "Nitro`s CC Sprite Demo Bye Iceman89";
LCD_BUFFER ecran;
/* static unsigned int spritedata[16] = {0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555, 0xaaaa, 0x5555};*/
/*-------------------------DATA-------------------------*/
/*-----Copie l`ecran-----*/
memcpy(ecran,(void*)0x4C00,(unsigned long)3840);
/*-----Accelere l`auto-repetition des touches-----*/
OSInitKeyInitDelay(200);
OSInitBetweenKeyDelay(20);
/*-----Efface, et affiche une chaine de carateres-----*/
clrscr();
sprintf(buffer, "%s", str1);
DrawStr(15,60, buffer,1);
ngetchx();
/*-----Efface, et affiche l`image de 64x64-----*/
clrscr();
Sprite32_XOR( x, y, 32, sprite1, (void*)0x4C00);
x+=32;
Sprite32_XOR( x, y, 32, sprite2, (void*)0x4C00);
y+=32;
Sprite32_XOR( x, y, 32, sprite3, (void*)0x4C00);
x-=32;
Sprite32_XOR( x, y, 32, sprite4, (void*)0x4C00);
y-=32;
/*-----Boucle de detection de touches-----*/
do
{keya=ngetchx();
switch(keya)
{ case 344: /*-----bas(pour 92+)-----*/
if(y<126)
y+=2;
break;
case 338: /*-----haut(pour92+)-----*/
if(y>1)
y-=2;
break;
case 337: /*-----gauche(pour92+)-----*/
if(x>1)
x-=2;
break;
case 340: /*-----droite(pour92+)-----*/
if(x<238)
x+=2;
break;
}
/*-----Efface, et affiche l`image de 64x64-----*/
clrscr();
Sprite32_XOR( x, y, 32, sprite1, (void*)0x4C00);
x+=32;
Sprite32_XOR( x, y, 32, sprite2, (void*)0x4C00);
y+=32;
Sprite32_XOR( x, y, 32, sprite3, (void*)0x4C00);
x-=32;
Sprite32_XOR( x, y, 32, sprite4, (void*)0x4C00);
y-=32;
}while(keya != 264); /*Si esc presse alors on quitte*/
/*-----Restaure les valeurs par defaut-----*/
OSInitKeyInitDelay(336);
OSInitBetweenKeyDelay(48);
/*-----Restaure l`ecran-----*/
memcpy((void*)0x4C00,ecran,(unsigned long)3840);
}
L'include 2 de ma source: datagfx
static unsigned long sprite1[32] = {0x00000000,0x0000000F,0x0000007F,0x000001FC,0x000003B8,0x00000791,0x00000FCC,0x00001FDF,0x00001FBF,0x00003FBF,0x00003FFF,0x01E07FFF,0x03F8FFFF,0x07FDFFFF,0x07FFFFFF,0x07FFFFFF,0x07FFFFFF,0x07FFFFFF,0x07FFFFFF,0x07FFFFFF,0x07FFFFFF,0x07FFFFFF,0x07FFFFFC,0x03FFFFF8,0x01FFFFF0,0x01FFFFE0,0x01FFFFC0,0x00FFFFC0,0x00FFFFC7,0x007FFFC8,0x007DFFC0,0x0039FFC0};
static unsigned long sprite2[32] = {0x00000000,0xFFC00000,0xFBE00000,0x707C0000,0x2F220000,0x8FCD0000,0xF3D98000,0xF83F8000,0xFFFFC000,0xFFFFC000,0xFFFFF800,0xDBFBFC00,0xA7FCFC00,0xCFFE7C00,0xDFFB3E00,0xFFFD1E00,0xFFFD1E00,0xFFBE4E00,0xF79F6D00,0xE78FFD00,0x4707FE00,0xE70FFE00,0x1713FE00,0x0601FE00,0x0601FE00,0x0400FC00,0x0400FC00,0x0000D800,0xC01C9000,0x2022C000,0x0000C000,0x0080E000};
static unsigned long sprite3[32] = {0x0040E000,0x0040F000,0x0001F000,0x0001F800,0x7183F800,0x4307FC00,0x220FFC00,0x101FFE00,0x003FFE00,0xC0FFFF00,0x3F7FFE00,0x087FF000,0x0F7F8000,0x8E8F0000,0xCF400000,0xE7A00000,0xF7A00000,0xFFD00000,0xFFD00000,0x7FA80000,0x3FA80000,0x1F940000,0x0F920000,0x8F920000,0x87D10000,0x83D08000,0x43F48000,0xC1F24000,0x60FD2000,0xA0F3F000,0x707C4800,0xF3E3B400};
static unsigned long sprite4[32] = {0x0003FFE0,0x0003FFE0,0x0003FFF0,0x0003FFFC,0x0007FFF8,0x0007FFE0,0x0007FFF0,0x0007FFF8,0x000FFFF6,0x000FFFF9,0x000FFFFC,0x000FFFFE,0x000FFC3F,0x000F880F,0x00001007,0x00001007,0x00002003,0x00002003,0x00002002,0x00002001,0x00001001,0x00001011,0x00001809,0x00001404,0x00001002,0x00001000,0x00001000,0x0000084F,0x0000083C,0x00000FFB,0x00000C8C,0x00000B77};