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 
00016 #define PA_DS_CART  0x02000000
00017 #define PA_GBA_CART 0x08000000
00018 
00019 typedef struct{
00020        char Name[64];
00021        char Ext[6];
00022        u32 Length;
00023        u32 FilePos;
00024 }PAFSFiles;
00025 
00026 typedef struct{
00027        char Name[64];
00028        u32 FirstFile;  // Number of the first file...
00029        u32 NFiles;    // Number of files
00030        u32 FirstFolder;  // Number of the first folder...
00031        u32 NFolders;    // Number of folders     
00032 }PAFSFolders;
00033 
00034 
00035 typedef struct{
00036        u32 Nfolders; // Nombre de fichiers
00037        u32 Nfiles; // Nombre de dossiers
00038 } PAFSSystems;
00039 
00040 extern PAFSSystems *PA_FSSys;
00041 extern PAFSFiles *PA_FSFile; // Pointeur sur les infos fichiers...
00042 extern PAFSFolders *PA_FSFolder; 
00043 
00044 extern char *PAFSStart;
00045 
00046 // PAFS Start if in Ram...
00047 #define PA_FSRam(size) char PA_FileSystem[size] = "PAFS007"; 
00048 
00049 
00050 void PA_FSAllInit(void);// Inits for all systems
00051 
00052 
00053 
00064 extern inline u32 PA_FSInit(void)
00065 {
00066        PA_FSAllInit();
00067        return (PA_FSSys->Nfiles);
00068 }
00069 
00070 
00071 
00077 extern inline u32 PA_FSRamInit(void)
00078 {
00079        PAFSStart-=8;
00080        
00081        while (!((PAFSStart[0] == 'P') && (PAFSStart[1] == 'A') && (PAFSStart[2] == 'F') && (PAFSStart[3] == 'S') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
00082        
00083        PAFSStart += 8;
00084        PA_FSSys = (PAFSSystems*)PAFSStart;
00085 
00086        while (!((PAFSStart[0] == 'D') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'R') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
00087        
00088        PAFSStart += 8;
00089        PA_FSFolder = (PAFSFolders*)PAFSStart;
00090        
00091        while (!((PAFSStart[0] == 'F') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'L') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
00092        
00093        PAFSStart+=8;
00094        PA_FSFile = (PAFSFiles*)PAFSStart;
00095        
00096        while (!((PAFSStart[0] == 'B') && (PAFSStart[1] == 'I') && (PAFSStart[2] == 'N') && (PAFSStart[3] == '0') && (PAFSStart[4] == '0') && (PAFSStart[5] == '0'))) PAFSStart++;
00097 
00098        PAFSStart+=8;
00099        return (PA_FSSys->Nfiles);
00100 }
00101 
00102 
00108 #define PA_PAFSFile(FileN) ((void*)(PAFSStart+PA_FSFile[FileN].FilePos))
00109 
00110 
00111 
00120 extern inline s32 PA_FSGetFolder(char *name){
00121 u16 i;
00122 
00123 for (i = 0; i < PA_FSSys->Nfolders; i++){
00124        if (PA_CompareText(PA_FSFolder[i].Name, name)) 
00125               return i;
00126 }
00127 
00128 return -1;
00129 }
00130 
00131 
00146 extern inline s32 PA_FSGetFile(s16 start, char *name, char *extension){
00147 u16 i;
00148 
00149 for (i = start; i < PA_FSSys->Nfiles; i++){
00150        if (PA_CompareText(PA_FSFile[i].Name, name)&& PA_CompareText(PA_FSFile[i].Ext, extension)) 
00151               return i;
00152 }
00153 
00154 return -1;
00155 }
00156 
00157 
00169 s16 PA_FSSearchExt(s16 *array, char *extension);
00170 
00171 
00172 
00184 extern inline void PA_Malloc(void **pointer, u32 size){
00185        if (*pointer) {
00186               free(*pointer);
00187        }
00188        *pointer = (void*)malloc(size);
00189 }
00190 
00191 
00192 
00207 extern inline void PA_FSBgLoad(u8 screen, u8 bg_number, u32 filenumber)  {  
00208        PA_EasyBgLoadEx(screen, bg_number, (u32*)PA_PAFSFile(filenumber), PA_PAFSFile(filenumber+3), PA_FSFile[filenumber+3].Length, PA_PAFSFile(filenumber+1), PA_FSFile[filenumber+1].Length, (void*)(PA_PAFSFile(filenumber+2)));
00209 }
00210 
00211 
00212 
00227 void PA_FSBgNameLoad(u8 screen, u8 bg_number, char* bg_name);
00228 
00229 
00230 
00231 
00232 
00233 
00234  // end of PAFS
00236 
00237 
00238 #ifdef __cplusplus
00239 }
00240 #endif
00241 #endif
00242 
00243 

Généré le Tue Jan 30 23:10:49 2007 pour PAlib par  doxygen 1.3.9.1