* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define IN_MEMORY_C
#include "common.h"
// This table is configured for sequential access on system defaults
u8 read_backup(u32 address)
{
- u8 value;
+ u8 value = 0;
if(backup_type == BACKUP_NONE)
backup_type = BACKUP_SRAM;
eeprom_mode = EEPROM_BASE_MODE;
}
break;
+
+ default:
+ break;
}
}
case RTC_WRITE_STATUS:
rtc_status = rtc_data[0];
break;
+
+ default:
+ break;
}
}
}
}
}
break;
+
+ default:
+ break;
}
}
}
if(file_check_valid(backup_file))
{
- u32 backup_size;
+ u32 backup_size = 0;
switch(backup_type)
{
else
backup_size = 0x2000;
break;
+
+ default:
+ break;
}
file_write(backup_file, gamepak_backup, backup_size);
#define CONFIG_FILENAME "game_config.txt"
-u8 *skip_spaces(u8 *line_ptr)
+char *skip_spaces(char *line_ptr)
{
while(*line_ptr == ' ')
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;
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;
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");
}
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;
}
fclose(config_file);
}
+#ifndef PSP_BUILD
+ printf("game config missing\n");
+#endif
return -1;
}
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);
{
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);
void init_memory()
{
- u32 i;
u32 map_offset = 0;
memory_regions[0x00] = (u8 *)bios_rom;
void bios_region_read_protect()
{
-#ifdef GP2X_BUILD
memory_map_read[0] = NULL;
-#endif
}
if(file_check_valid(savestate_file))
{
char current_gamepak_filename[512];
- char savestate_gamepak_filename[512];
u32 i;
u32 current_color;