support multi-file zips, skipping irrelevant files
[gpsp.git] / main.c
diff --git a/main.c b/main.c
index 0d88b37..340b0be 100644 (file)
--- a/main.c
+++ b/main.c
@@ -82,7 +82,7 @@ u32 clock_speed = 200;
 #else
 u32 clock_speed = 333;
 #endif
-u8 main_path[512];
+char main_path[512];
 
 void trigger_ext_event();
 
@@ -131,7 +131,7 @@ void trigger_ext_event();
     }                                                                         \
   }                                                                           \
 
-u8 *file_ext[] = { ".gba", ".bin", ".zip", NULL };
+static const char *file_ext[] = { ".gba", ".bin", ".zip", NULL };
 
 #ifdef ARM_ARCH
 void ChangeWorkingDirectory(char *exe)
@@ -178,21 +178,12 @@ void init_main()
 
 int main(int argc, char *argv[])
 {
-  u32 i;
-  u32 vcount = 0;
-  u32 ticks;
-  u32 dispstat;
-  u8 load_filename[512];
-  u8 bios_filename[512];
-
 #ifdef PSP_BUILD
   sceKernelRegisterSubIntrHandler(PSP_VBLANK_INT, 0,
    vblank_interrupt_handler, NULL);
   sceKernelEnableSubIntr(PSP_VBLANK_INT, 0);
 #endif
 
-  extern char *cpu_mode_names[];
-
   init_gamepak_buffer();
 
   // Copy the directory path of the executable into main_path
@@ -203,9 +194,6 @@ int main(int argc, char *argv[])
 #endif
 
   getcwd(main_path, 512);
-  load_config_file();
-
-  gamepak_filename[0] = 0;
 
 #ifdef PSP_BUILD
   delay_us(2500000);
@@ -214,10 +202,14 @@ int main(int argc, char *argv[])
 #ifndef PC_BUILD
   gpsp_plat_init();
 #endif
+  load_config_file();
+
+  gamepak_filename[0] = 0;
 
   init_video();
 
 #ifdef GP2X_BUILD
+  char bios_filename[512];
   sprintf(bios_filename, "%s/%s", main_path, "gba_bios.bin");
   if(load_bios(bios_filename) == -1)
 #else
@@ -235,7 +227,11 @@ int main(int argc, char *argv[])
     debug_screen_printl("a860e8c0b6d573d191e4ec7db1b1e4f6                  ");
     debug_screen_printl("                                                  ");
     debug_screen_printl("When you do get it name it gba_bios.bin and put it");
+#ifdef PND_BUILD
+    debug_screen_printl("in <CD card>/pandora/appdata/gpsp/ .              ");
+#else
     debug_screen_printl("in the same directory as gpSP.                    ");
+#endif
     debug_screen_printl("                                                  ");
     debug_screen_printl("Press any button to exit.                         ");
 
@@ -288,7 +284,7 @@ int main(int argc, char *argv[])
     if(load_gamepak(argv[1]) == -1)
     {
 #ifndef PSP_BUILD
-      printf("Failed to load gamepak %s, exiting.\n", load_filename);
+      printf("Failed to load gamepak %s, exiting.\n", argv[1]);
 #endif
       exit(-1);
     }
@@ -301,6 +297,7 @@ int main(int argc, char *argv[])
   }
   else
   {
+    char load_filename[512];
     if(load_file(file_ext, load_filename) == -1)
     {
       menu(copy_screen());
@@ -388,7 +385,7 @@ void trigger_ext_event()
   static u32 event_number = 0;
   static u64 benchmark_ticks[16];
   u64 new_ticks;
-  u8 current_savestate_filename[512];
+  char current_savestate_filename[512];
 
   return;
 
@@ -870,7 +867,7 @@ void reset_gba()
 
 #ifdef PSP_BUILD
 
-u32 file_length(u8 *filename, s32 dummy)
+u32 file_length(char *filename, s32 dummy)
 {
   SceIoStat stats;
   sceIoGetstat(filename, &stats);
@@ -892,7 +889,7 @@ void get_ticks_us(u64 *tick_return)
 
 #else
 
-u32 file_length(u8 *dummy, FILE *fp)
+u32 file_length(char *dummy, FILE *fp)
 {
   u32 length;
 
@@ -936,9 +933,9 @@ void get_ticks_us(u64 *ticks_return)
 
 #endif
 
-void change_ext(u8 *src, u8 *buffer, u8 *extension)
+void change_ext(const char *src, char *buffer, const char *extension)
 {
-  u8 *dot_position;
+  char *dot_position;
   strcpy(buffer, src);
   dot_position = strrchr(buffer, '.');