Add copyright message to gles_video
[gpsp.git] / memory.c
index e902af3..db05001 100644 (file)
--- a/memory.c
+++ b/memory.c
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#define IN_MEMORY_C
 #include "common.h"
 
-u32 load_file_zip(u8 *filename);
-
 // This table is configured for sequential access on system defaults
 
 u32 waitstate_cycles_sequential[16][3] =
@@ -172,7 +171,7 @@ flash_size_type flash_size = FLASH_SIZE_64KB;
 
 u8 read_backup(u32 address)
 {
-  u8 value;
+  u8 value = 0;
 
   if(backup_type == BACKUP_NONE)
     backup_type = BACKUP_SRAM;
@@ -330,6 +329,9 @@ void function_cc write_eeprom(u32 address, u32 value)
         eeprom_mode = EEPROM_BASE_MODE;
       }
       break;
+
+    default:
+      break;
   }
 }
 
@@ -1638,6 +1640,9 @@ void function_cc write_rtc(u32 address, u32 value)
                       case RTC_WRITE_STATUS:
                         rtc_status = rtc_data[0];
                         break;
+
+                      default:
+                        break;
                     }
                   }
                 }
@@ -1673,6 +1678,9 @@ void function_cc write_rtc(u32 address, u32 value)
                 }
               }
               break;
+
+            default:
+              break;
           }
         }
       }
@@ -1899,7 +1907,7 @@ u32 save_backup(char *name)
 
     if(file_check_valid(backup_file))
     {
-      u32 backup_size;
+      u32 backup_size = 0;
 
       switch(backup_type)
       {
@@ -1923,6 +1931,9 @@ u32 save_backup(char *name)
           else
             backup_size = 0x2000;
           break;
+
+        default:
+          break;
       }
 
       file_write(backup_file, gamepak_backup, backup_size);
@@ -1954,7 +1965,7 @@ void update_backup_force()
 
 #define CONFIG_FILENAME "game_config.txt"
 
-u8 *skip_spaces(u8 *line_ptr)
+char *skip_spaces(char *line_ptr)
 {
   while(*line_ptr == ' ')
     line_ptr++;
@@ -1962,10 +1973,10 @@ u8 *skip_spaces(u8 *line_ptr)
   return line_ptr;
 }
 
-s32 parse_config_line(u8 *current_line, u8 *current_variable, u8 *current_value)
+s32 parse_config_line(char *current_line, char *current_variable, char *current_value)
 {
-  u8 *line_ptr = current_line;
-  u8 *line_ptr_new;
+  char *line_ptr = current_line;
+  char *line_ptr_new;
 
   if((current_line[0] == 0) || (current_line[0] == '#'))
     return -1;
@@ -1996,14 +2007,12 @@ s32 parse_config_line(u8 *current_line, u8 *current_variable, u8 *current_value)
   return 0;
 }
 
-s32 load_game_config(u8 *gamepak_title, u8 *gamepak_code, u8 *gamepak_maker)
+s32 load_game_config(char *gamepak_title, char *gamepak_code, char *gamepak_maker)
 {
-  u8 current_line[256];
-  u8 current_variable[256];
-  u8 current_value[256];
-  u8 config_path[512];
-  u8 *line_ptr;
-  u32 fgets_value;
+  char current_line[256];
+  char current_variable[256];
+  char current_value[256];
+  char config_path[512];
   FILE *config_file;
 
   idle_loop_target_pc = 0xFFFFFFFF;
@@ -2013,11 +2022,7 @@ s32 load_game_config(u8 *gamepak_title, u8 *gamepak_code, u8 *gamepak_maker)
   translation_gate_targets = 0;
   flash_device_id = FLASH_DEVICE_MACRONIX_64KB;
 
-#if (defined(PSP_BUILD) || defined(ARM_ARCH)) && !defined(_WIN32_WCE)
-  sprintf(config_path, "%s/%s", main_path, CONFIG_FILENAME);
-#else
-  sprintf(config_path, "%s\\%s", main_path, CONFIG_FILENAME);
-#endif
+  sprintf(config_path, "%s" PATH_SEPARATOR "%s", main_path, CONFIG_FILENAME);
 
   config_file = fopen(config_path, "rb");
 
@@ -2071,7 +2076,7 @@ s32 load_game_config(u8 *gamepak_title, u8 *gamepak_code, u8 *gamepak_maker)
             }
 
             if(!strcmp(current_variable, "iwram_stack_optimize") &&
-              !strcmp(current_value, "no"))
+              !strcmp(current_value, "no\0")) /* \0 for broken toolchain workaround */
             {
                 iwram_stack_optimize = 0;
             }
@@ -2104,6 +2109,9 @@ s32 load_game_config(u8 *gamepak_title, u8 *gamepak_code, u8 *gamepak_maker)
     fclose(config_file);
   }
 
+#ifndef PSP_BUILD
+  printf("game config missing\n");
+#endif
   return -1;
 }
 
@@ -2147,21 +2155,25 @@ s32 load_gamepak_raw(char *name)
   return -1;
 }
 
-u8 gamepak_title[13];
-u8 gamepak_code[5];
-u8 gamepak_maker[3];
-u8 gamepak_filename[512];
+char gamepak_title[13];
+char gamepak_code[5];
+char gamepak_maker[3];
+char gamepak_filename[512];
 
 u32 load_gamepak(char *name)
 {
   char *dot_position = strrchr(name, '.');
   s32 file_size;
-  u8 cheats_filename[256];
+  char cheats_filename[256];
 
+#ifdef WIZ_BUILD
+  file_size = wiz_load_gamepak(name);
+#else
   if(!strcmp(dot_position, ".zip"))
     file_size = load_file_zip(name);
   else
     file_size = load_gamepak_raw(name);
+#endif
 
   // A dumb April fool's joke was here once :o
 
@@ -2169,11 +2181,17 @@ u32 load_gamepak(char *name)
   {
     gamepak_size = (file_size + 0x7FFF) & ~0x7FFF;
 
-    strcpy(backup_filename, name);
-    strncpy(gamepak_filename, name, 512);
-    change_ext(gamepak_filename, backup_filename, ".sav");
+    strncpy(gamepak_filename, name, sizeof(gamepak_filename));
+    gamepak_filename[sizeof(gamepak_filename) - 1] = 0;
 
-    load_backup(backup_filename);
+    make_rpath(backup_filename, sizeof(backup_filename), ".sav");
+    if (!load_backup(backup_filename))
+    {
+      // try path used by older versions
+      strcpy(backup_filename, name);
+      change_ext(gamepak_filename, backup_filename, ".sav");
+      load_backup(backup_filename);
+    }
 
     memcpy(gamepak_title, gamepak_rom + 0xA0, 12);
     memcpy(gamepak_code, gamepak_rom + 0xAC, 4);
@@ -2992,7 +3010,6 @@ void init_gamepak_buffer()
 
 void init_memory()
 {
-  u32 i;
   u32 map_offset = 0;
 
   memory_regions[0x00] = (u8 *)bios_rom;
@@ -3113,9 +3130,7 @@ void bios_region_read_allow()
 
 void bios_region_read_protect()
 {
-#ifdef GP2X_BUILD
   memory_map_read[0] = NULL;
-#endif
 }
 
 
@@ -3133,7 +3148,6 @@ void load_state(char *savestate_filename)
   if(file_check_valid(savestate_file))
   {
     char current_gamepak_filename[512];
-    char savestate_gamepak_filename[512];
     u32 i;
     u32 current_color;