PAlib: Fichier source de PA_FS.h

Page principale | Modules | Liste des fichiers | Portée globale | Rechercher

# PA_FS.h

Aller à la documentation de ce fichier.

    00001 #ifndef _PA_FS
    00002 #define _PA_FS
    00003
    00004 #ifdef __cplusplus
    00005 extern "C" {
    00006 #endif
    00007
    00013 #include "PA_Text.h"
    00014
    00015 typedef struct{
    00016        char Name[20];
    00017        char Ext[6];
    00018        u32 Length;
    00019        u32 FilePos;
    00020 }PAFSFiles;
    00021
    00022 typedef struct{
    00023        char Name[20];
    00024        u32 FirstFile;  // Number of the first file...
    00025        u32 NFiles;    // Number of files
    00026        u32 FirstFolder;  // Number of the first folder...
    00027        u32 NFolders;    // Number of folders
    00028 }PAFSFolders;
    00029
    00030
    00031 typedef struct{
    00032        u32 Nfolders; // Nombre de fichiers
    00033        u32 Nfiles; // Nombre de dossiers
    00034 } PAFSSystems;
    00035
    00036 extern PAFSSystems *PA_FSSys;
    00037 extern PAFSFiles *PA_FSFile; // Pointeur sur les infos fichiers...
    00038 extern PAFSFolders *PA_FSFolder;
    00039
    00040 extern char *PAFSStart;
    00041
    00042 // PAFS Start if in Ram...
    00043 #define PA_FSRam(size) char PA_FileSystem[size] = "PAFS007";
    00044
    00045
    00046 void PA_FSAllInit(void);// Inits for all systems
    00047
    00048
    00049
    00060 extern inline u32 PA_FSInit(void)
    00061 {
    00062        PA_FSAllInit();
    00063        return (PA_FSSys->Nfiles);
    00064 }
    00065
    00066
    00067
    00073 extern inline u32 PA_FSRamInit(void)
    00074 {
    00075        PAFSStart-=8;
    00076
    00077        while (!((PAFSStart[0] == 'P') && (PAFSStart[1] == 'A') && (PAFSStart[2] == 'F') && (PAFSStart[3] == 'S') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
    00078
    00079        PAFSStart += 8;
    00080        PA_FSSys = (PAFSSystems*)PAFSStart;
    00081
    00082        while (!((PAFSStart[0] == 'D') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'R') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
    00083
    00084        PAFSStart += 8;
    00085        PA_FSFolder = (PAFSFolders*)PAFSStart;
    00086
    00087        while (!((PAFSStart[0] == 'F') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'L') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
    00088
    00089        PAFSStart+=8;
    00090        PA_FSFile = (PAFSFiles*)PAFSStart;
    00091
    00092        while (!((PAFSStart[0] == 'B') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'N') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
    00093
    00094        PAFSStart+=8;
    00095        return (PA_FSSys->Nfiles);
    00096 }
    00097
    00098
    00104 #define PA_PAFSFile(FileN) ((void*)(PAFSStart+PA_FSFile[FileN].FilePos))
    00105
    00106
    00107
    00108
    00123 extern inline s32 PA_FSGetFile(s16 start, char *name, char *extension){
    00124 u16 i;
    00125
    00126 for (i = start; i < PA_FSSys->Nfiles; i++){
    00127        if (PA_CompareText(PA_FSFile[i].Name, name)&& PA_CompareText(PA_FSFile[i].Ext, extension))
    00128               return i;
    00129 }
    00130
    00131 return -1;
    00132 }
    00133
    00134
    00146 s16 PA_FSSearchExt(s16 *array, char *extension);
    00147
    00148
    00149
    00161 extern inline void PA_Malloc(void **pointer, u32 size){
    00162        if (*pointer) {
    00163               free(*pointer);
    00164        }
    00165        *pointer = (void*)malloc(size);
    00166 }
    00167  // end of PAFS
    00169
    00170
    00171 #ifdef __cplusplus
    00172 }
    00173 #endif
    00174 #endif
    00175
    00176