Bonjour ! Voilà mon soucis :
Je charge un gif via la FAT dans un buffer, et je tente de le convertir en sprite.
En gros je charge l'image dans un buffer que je passe à au PA_GifToTiles, qui lui est censé me retourner un tableau de tiles et une palette que je m'empresse de charger. J'ai rien inventé, j'ai réutilisé des bouts qui trainent à droite à gauche.
Bref, c'est avec la palette que j'ai un soucis, elle reste toute noire... Du coup mon sprite n'apparait pas, sauf si je charge une "vraie" palette, ce qui m'arrange pas du tout, je voudrais la récupérer du fichier gif.
J'utilise un gif de 64x64 (l'escargot de légende) et le code suivant :
(c):
#include <PA9.h>
#include "gfx/all_gfx.c"
#include "gfx/all_gfx.h"
u8 GLOBAL_BUFFER[192*192];
bool init_FAT()
{
if (fatInitDefault()) return true;//PA_OutputSimpleText(0, 0, 0,"Fat ok")
else
{
PA_OutputSimpleText(0, 0, 0,"Fat not working. Have you DLDI patched the rom ?");
PA_WaitForVBL();
return false;
}
}
u8* SF_LoadGif(char* path, u16* palette)
{
FILE* imgFile = fopen (path, "rb"); //rb = read
if(imgFile)
{
PA_OutputSimpleText(0, 0, 0,"File found");
// obtain file size:
u32 imgSize;
fseek (imgFile, 0 , SEEK_END);
imgSize = ftell (imgFile);
rewind (imgFile);
//store the image file in the bufer
fread (GLOBAL_BUFFER, 1, imgSize, imgFile);
// close the file
fclose (imgFile);
return PA_GifToTiles((void*)GLOBAL_BUFFER, palette);//[color=red]Ajoué[/color]
}
else
{
PA_OutputSimpleText(0, 0, 0,"File not found ?");
}
return NULL;
}
int main(int argc, char ** argv)
{
PA_Init(); // Initializes PA_Lib
PA_InitVBL(); // Initializes a standard VBL
PA_InitText(0,0);
fatInitDefault(); //Initializes lib fat
u8 *data;
u16 palette[256];
u8 texture[64*64];
u16 id_gfx;
//on charge le gif qui est converti en tiles, data contient le résultat
data = SF_LoadGif("Mollusk.gif",palette);
PA_LoadSpritePal(1,0,palette);
/*
PA_LoadSpritePal(1, // Screen
0, // Palette number
(void*)sprite0_Pal); // Palette name
*/
id_gfx = PA_CreateGfx(1, (void*)data, OBJ_SIZE_64X64, 1);
PA_CreateSpriteFromGfx(1,0,id_gfx,OBJ_SIZE_64X64,1,0,0,0);
return 1;
}
Le sprite est tout noir, et si on décommente le LoadSprte sprite0_pal, là il a des couleurs (pas les bonnes bien sur, mais ça prouve tout marche sauf la palette.
Qu'est-ce que je loupe ?
Merci !