PA_FS.h

Go to the documentation of this file.
00001 #ifndef _PA_FS
00002 #define _PA_FS
00003 
00004 
00010 #include "PA_Text.h"
00011 
00012 typedef struct{
00013        char Name[20];
00014        char Ext[6];
00015        u32 Length;
00016        u32 FilePos;
00017 }PAFSFiles;
00018 
00019 typedef struct{
00020        char Name[20];
00021        u32 FirstFile;  // Number of the first file...
00022        u32 NFiles;    // Number of files
00023        u32 FirstFolder;  // Number of the first folder...
00024        u32 NFolders;    // Number of folders     
00025 }PAFSFolders;
00026 
00027 
00028 typedef struct{
00029        u32 Nfolders; // Nombre de fichiers
00030        u32 Nfiles; // Nombre de dossiers
00031 } PAFSSystems;
00032 
00033 extern PAFSSystems *PA_FSSys;
00034 extern PAFSFiles *PA_FSFile; // Pointeur sur les infos fichiers...
00035 extern PAFSFolders *PA_FSFolder; 
00036 
00037 extern char *PAFSStart;
00038 
00039 // PAFS Start if in Ram...
00040 #define PA_FSRam(size) char PA_FileSystem[size] = "PAFS007"; 
00041 
00042 
00043 void PA_FSAllInit(void);// Inits for all systems
00044 
00045 
00046 
00057 extern inline u32 PA_FSInit(void)
00058 {
00059        PA_FSAllInit();
00060        return (PA_FSSys->Nfiles);
00061 }
00062 
00063 
00064 
00070 extern inline u32 PA_FSRamInit(void)
00071 {
00072        PAFSStart-=8;
00073        
00074        while (!((PAFSStart[0] == 'P') && (PAFSStart[1] == 'A') && (PAFSStart[2] == 'F') && (PAFSStart[3] == 'S') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
00075        
00076        PAFSStart += 8;
00077        PA_FSSys = (PAFSSystems*)PAFSStart;
00078 
00079        while (!((PAFSStart[0] == 'D') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'R') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
00080        
00081        PAFSStart += 8;
00082        PA_FSFolder = (PAFSFolders*)PAFSStart;
00083        
00084        while (!((PAFSStart[0] == 'F') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'L') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
00085        
00086        PAFSStart+=8;
00087        PA_FSFile = (PAFSFiles*)PAFSStart;
00088        
00089        while (!((PAFSStart[0] == 'B') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'N') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
00090 
00091        PAFSStart+=4;
00092        return (PA_FSSys->Nfiles);
00093 }
00094 
00095 
00101 #define PA_PAFSFile(FileN) ((void*)(PAFSStart+PA_FSFile[FileN].FilePos))
00102 
00103 
00104 
00105 
00120 extern inline s32 PA_FSGetFile(s16 start, char *name, char *extension){
00121 u16 i;
00122 
00123 for (i = start; i < PA_FSSys->Nfiles; i++){
00124        if (PA_CompareText(PA_FSFile[i].Name, name)&& PA_CompareText(PA_FSFile[i].Ext, extension)) 
00125               return i;
00126 }
00127 
00128 return -1;
00129 }
00130 
00131 
00143 s16 PA_FSSearchExt(s16 *array, char *extension);
00144 
00145  // end of PAFS
00147 
00148 
00149 
00150 #endif
00151 
00152 

Generated on Wed Dec 21 17:41:56 2005 for PAlib by  doxygen 1.3.9.1