#include "commun.h"

const char test_format[]=" Game boy advance filesystem by Brünni ****";

#define ALIGNEMENT 1024
#define LIMITE_RECHERCHE ((const u32 *)0x0a000000)

TAF *gblTaf;
void *gblData;
FICHIER *gblCurFile;


void InitFS()           {
    const u32 *ici=(u32*)((u32)InitFS&(-ALIGNEMENT));

    while(ici<LIMITE_RECHERCHE)         {
        if (*ici==0x2a2a2a2a)       {             //Les étoiles
            if (!memcmp(ici+1,test_format,44))          {
                ici+=48/4;
                break;
            }
        }
        ici+=ALIGNEMENT/4;
    }

    gblTaf=(TAF*)ici;
    gblData=(void*)ici+gblTaf->nbFichiers*sizeof(FICHIER)+sizeof(int);
}

void *SymFind(const char *symbole, FICHIER **f)         {
    int i;
    
    for (i=0;i<gblTaf->nbFichiers;i++)          {
        if (!strcmp(symbole,gblTaf->f[i].nom))      {
            if (f!=NULL)
                *f=&gblTaf->f[i];
            return (void*)gblData+gblTaf->f[i].offset;
        }
    }
    return NULL;
}



