00001 #ifndef _PA_GBFS
00002 #define _PA_GBFS
00003
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007
00013 #include "PA_Text.h"
00014 #include "gbfs.h"
00015
00016
00017
00018
00019 typedef struct{
00020 void *File;
00021 char Name[30];
00022 char Ext[6];
00023 u32 Length;
00024 } PA_GBFS_infos;
00025 extern PA_GBFS_infos PA_GBFSfile[200];
00026 extern s16 PA_GBFS_nfiles;
00027 extern GBFS_FILE const* PA_GBFS_FILE;
00028
00039 extern inline u32 PA_InitGBFS(void){
00040 s16 dot = 0;
00041 s16 i = 0;
00042
00043 WAIT_CR &= ~0x80;
00044
00045 PA_GBFS_FILE = find_first_gbfs_file((void*)0x08000000);
00046 PA_GBFS_nfiles = 0;
00047 PA_GBFSfile[PA_GBFS_nfiles].File = (void*)gbfs_get_nth_obj(PA_GBFS_FILE, PA_GBFS_nfiles, (char*)PA_GBFSfile[PA_GBFS_nfiles].Name, &PA_GBFSfile[PA_GBFS_nfiles].Length);
00048
00049 while(PA_GBFSfile[PA_GBFS_nfiles].File != NULL){
00050
00051
00052 while(PA_GBFSfile[PA_GBFS_nfiles].Name[i]) i++;
00053
00054 while(PA_GBFSfile[PA_GBFS_nfiles].Name[i] != '.') i--;
00055 dot = i+1;
00056
00057 for (i = 0; PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot] ; i++){
00058 PA_GBFSfile[PA_GBFS_nfiles].Ext[i] = PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot];
00059 if (('A' <= PA_GBFSfile[PA_GBFS_nfiles].Ext[i])&&(PA_GBFSfile[PA_GBFS_nfiles].Ext[i] <= 'Z')) PA_GBFSfile[PA_GBFS_nfiles].Ext[i] += 'a' - 'A';
00060 PA_GBFSfile[PA_GBFS_nfiles].Ext[i+1] = 0;
00061 PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot-1] = 0;
00062 if (PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot-2] == '.') PA_GBFSfile[PA_GBFS_nfiles].Name[i+dot-2] = 0;
00063 }
00064 PA_GBFSfile[PA_GBFS_nfiles].Name[dot] = 0;
00065 PA_GBFSfile[PA_GBFS_nfiles].Ext[dot] = 0;
00066
00067 ++PA_GBFS_nfiles;
00068 PA_GBFSfile[PA_GBFS_nfiles].File = (void*)gbfs_get_nth_obj(PA_GBFS_FILE, PA_GBFS_nfiles, (char*)PA_GBFSfile[PA_GBFS_nfiles].Name, &PA_GBFSfile[PA_GBFS_nfiles].Length);
00069 }
00070
00071 return PA_GBFS_nfiles;
00072 }
00073
00074
00075
00090 extern inline s32 PA_GetGBFSFile(s16 start, char *name, char *extension){
00091 s16 i;
00092
00093 for (i = start; i < PA_GBFS_nfiles; i++){
00094 if (PA_CompareText(PA_GBFSfile[i].Name, name)&& PA_CompareText(PA_GBFSfile[i].Ext, extension))
00095 return i;
00096 }
00097
00098 return -1;
00099 }
00100
00101
00113 s16 PA_GBFSSearchExt(s16 *array, char *extension);
00114
00115
00117
00118
00119 #ifdef __cplusplus
00120 }
00121 #endif
00122
00123 #endif
00124
00125