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 

Généré le Sat Feb 4 17:33:05 2006 pour PAlib par  doxygen 1.3.9.1