typedef struct
{
char Height; // In pixel
char Weight; // In pixel /16 (in word)
short Data[1]; // Should be []
} BGS;
section ".data" xdef face xdef cote xdef haut ... face: dc.b 48,2 dc.w $0000,$0001,$0000,$E000 dc.w $0663,$0663,$3198,$F198 dc.w $0597,$07F7,$3A68,$FBF8 ...
extern BGS face, cote, haut;
BGS *BGS_Liste[3] = {&face, &cote, &haut};
void _main(void)
{
int Compteur;
FILE *fp = fopen ("metgfx", "wb");
if (fp == NULL) return;
fputc (3, fp);//Nombre de BGS
for (Compteur = 0; Compteur < 3; Compteur++)
{
fwrite (BGS_Liste[Compteur], sizeof(char), 48 * 2 * 2 * 2 + 2,fp);
}
fputc (0, fp);
fputs ("GFX", fp);
fputc (0, fp);
fputc (OTH_TAG, fp);
fclose (fp);
}
BGS face, cote, haut;
BGS *BGS_Liste[3] = {&face, &cote, &haut};
int Lecture_BGS(void)
{
int Nombre, Hauteur, Largeur, Compteur;
FILE *fp = fopen ("metgfx", "rb");
if (fp == NULL) return 0;//Impossible de lire le fichier
Nombre = fgetc (fp);
for (Compteur = 0; Compteur < Nombre; Compteur++)
{
fread (BGS_Liste[Compteur], sizeof(char), 48 * 2 * 2 * 2 + 2, fp);
}
fclose (fp);
return 1;//Aucun problème
}
IroS a écrit :
short Data[1]; // Should be []
BGS *face, *cote, *haut;
int Init_BGS_Samus(void)
{
BGS *BGS_Liste[3] = {face, cote, haut};
short Nombre, Compteur;
FILE *fp = fopen ("metgfx", "rb");
SYM_ENTRY *Adresse = DerefSym(SymFind($("metgfx")));
//Retourne si le fichier n'est pas trouvé
if (fp == NULL) return 0;
//Récupère le nombre de BGS
Nombre = fgetc (fp)*256;
Nombre = Nombre + fgetc (fp);
//Assigne les pointeurs vers le fichier externe
for (Compteur = 0; Compteur < Nombre; Compteur++)
{
BGS_Liste[Compteur] = HeapDeref(Adresse->handle) + 2 + 2 + Compteur*(48*2*2*2+2);
48*2*2*2+2, fp);
}
fclose (fp);
return 1;
}
BGS *BGS_Liste[3];
int Init_BGS_Samus(void)
{
short Nombre, Compteur;
SYM_ENTRY *Adresse = SymFindPtr($("metgfx"),NULL);
//Retourne si le fichier n'est pas trouvé
if (Adresse == NULL) return 0;
unsigned char *Fileptr = HeapDeref(Adresse->handle);
if(Fileptr == NULL) return 0;
Fileptr+=2; // On saute les deux octets de taille
//Récupère le nombre de BGS
Nombre = *(unsigned short *)Fileptr;
Fileptr+=2;
//Assigne les pointeurs vers le fichier externe
for (Compteur = 0; Compteur < Nombre; Compteur++)
{
BGS_Liste[Compteur] = Fileptr;
Fileptr += 48*2*2*2+2;
}
return 1;
}

