//NitroSpritesLib by Foxi4 & YoshiInAVoid
unsigned char* SpriteCustom[128] _GFX_ALIGN;
unsigned short PaletteCustom[256] _GFX_ALIGN;
FILE* File;
u32 Size;
u16 Gfx[128];
u8 SpritesCreated=0;
void FAT_LoadSprite(u8 ID, char* SpriteName){
File = fopen (SpriteName, "rb");
fseek (File, 0 , SEEK_END);
Size = ftell (File);
rewind (File);
SpriteCustom[ID] = malloc(Size);
fread (SpriteCustom[ID], 1, Size, File);
fclose (File);
}
void FAT_LoadPal(u8 ID, bool Screen, char* PalName){
File = fopen (PalName, "rb");
fread (PaletteCustom, 1, sizeof(PaletteCustom), File);
fclose (File);
PA_LoadSpritePal(Screen, ID, PaletteCustom);
}
void FAT_CreateSprite(bool Screen, u8 ID, u8 Palette, u8 Shape, u8 Size, s16 X, s16 Y){
if(SpriteCustom[ID]!=NULL){
Gfx[ID] = PA_CreateGfx(Screen, SpriteCustom[ID], Shape, Size, 1);
PA_CreateSpriteFromGfx(Screen, ID, Gfx[ID], Shape, Size, 1, Palette, X, Y);
SpritesCreated++;
}
}
void FAT_CreateSpriteFromGFX(bool Screen, u8 ID, u8 GfxID, u8 Palette, u8 Shape, u8 Size, s16 X, s16 Y){
if(SpritesCreated>0){
PA_CreateSpriteFromGfx(Screen, ID, Gfx[GfxID], Shape, Size, 1, Palette, X, Y);
SpritesCreated++;
}
}
void FAT_DeleteSprite(u8 Screen, u8 SpriteNum) {
PA_DeleteSprite(Screen, SpriteNum);
PA_DeleteGfx(Screen, SpriteNum);
SpritesCreated--;
}
void FAT_DeleteAllSprites(u8 Screen) {
u8 FreeLoop = 0;
for (FreeLoop = 0; FreeLoop <= 128; FreeLoop++) {
FAT_DeleteSprite(Screen, FreeLoop);
SpritesCreated=0;
}
}
void FAT_UnloadSprite(u8 ID){
free(SpriteCustom[ID]);
SpriteCustom[ID]=NULL;
}
char _Sprite[50];
char _Pal[50];
void FAT_BasicCreateSprite(u8 Screen, u8 SpriteNum, u8 PaletteNum, char FileName[39], u8 Shape, u8 Size, s16 X, s16 Y) {
strcpy(_Sprite, FileName);
strcat(_Sprite, "_Sprite.bin");
strcpy(_Pal, FileName);
strcat(_Pal, "_Pal.bin");
FAT_LoadPal(PaletteNum, Screen, _Pal);
FAT_UnloadSprite(SpriteNum);
while(SpriteCustom[SpriteNum] != NULL) { // I LOVE the word NULL!
PA_WaitForVBL();
}
FAT_LoadSprite(SpriteNum, _Sprite);
FAT_CreateSprite(Screen, SpriteNum, PaletteNum, Shape, Size, X, Y);
}FAT_BasicCreateSprite(0, 3, 3, "YourSprite", OBJ_SIZE_32X32, 100, 100)Return to Tutorials & Examples
Users browsing this forum: No registered users and 0 guests