diff options
-rw-r--r-- | config.c | 1 | ||||
-rw-r--r-- | core.c | 26 | ||||
-rw-r--r-- | main.c | 1 | ||||
-rw-r--r-- | menu.c | 13 | ||||
-rw-r--r-- | options.c | 1 | ||||
-rw-r--r-- | options.h | 1 |
6 files changed, 40 insertions, 3 deletions
@@ -26,6 +26,7 @@ static const struct { CE_NUM(show_cpu), CE_NUM(limit_frames), CE_NUM(enable_drc), + CE_NUM(use_srm), CE_NUM(audio_buffer_size), CE_NUM(scale_size), CE_NUM(scale_filter), @@ -68,8 +68,12 @@ void sram_write(void) { if (!sram_size) { return; } - - content_based_name(content, filename, MAX_PATH, save_dir, NULL, ".sav"); + + if (use_srm == 1) { + content_based_name(content, filename, MAX_PATH, save_dir, NULL, ".srm"); + } else { + content_based_name(content, filename, MAX_PATH, save_dir, NULL, ".sav"); + } sram_file = fopen(filename, "w"); if (!sram_file) { @@ -98,7 +102,23 @@ void sram_read(void) { return; } - content_based_name(content, filename, MAX_PATH, save_dir, NULL, ".sav"); + if (use_srm == 1) { + content_based_name(content, filename, MAX_PATH, save_dir, NULL, ".srm"); + + sram_file = fopen(filename, "r"); + if (!sram_file) { + memset(filename, 0, sizeof(filename)); + content_based_name(content, filename, MAX_PATH, save_dir, NULL, ".sav"); + } + } else { + content_based_name(content, filename, MAX_PATH, save_dir, NULL, ".sav"); + + sram_file = fopen(filename, "r"); + if (!sram_file) { + memset(filename, 0, sizeof(filename)); + content_based_name(content, filename, MAX_PATH, save_dir, NULL, ".srm"); + } + } sram_file = fopen(filename, "r"); if (!sram_file) { @@ -210,6 +210,7 @@ void set_defaults(void) limit_frames = 1; enable_audio = 1; enable_drc = 1; + use_srm = 0; audio_buffer_size = 5; scale_size = SCALE_SIZE_NONE; scale_filter = SCALE_FILTER_NEAREST; @@ -538,6 +538,11 @@ static const char h_scale_filter[] = "When stretching, how missing pixels are filled.\n" "Nearest copies the last pixel. Sharp keeps pixels\n" "aligned where possible. Smooth adds a blur effect."; + +static const char h_use_srm[] = + "Use .srm files for SRAM saves, needed for\n" + "compatibility with mainline retroarch saves.\n" + "Save file compression needs to be off in retroarch."; static const char *men_scale_size[] = { "Native", "Aspect", "Full", NULL}; #else @@ -561,6 +566,12 @@ static const char h_scale_filter[] = "are filled. Nearest copies the last\n" "pixel. Sharp tries to keep pixels\n" "aligned. Smooth adds a blur effect."; + +static const char h_use_srm[] = + "Use .srm files for SRAM saves,\n" + "needed for compatibility with mainline\n" + "retroarch saves. Save file compression\n" + "needs to be off in retroarch."; static const char *men_scale_size[] = { "Native", "Aspect", "Full", "Crop", NULL}; #endif @@ -615,6 +626,8 @@ const char *config_label(int id, int *offs) { static menu_entry e_menu_config_options[] = { + mee_onoff_h ("Use .srm saves", 0, use_srm, 1, h_use_srm), + mee_label (""), mee_cust_nosave ("Save global config", MA_OPT_SAVECFG, mh_savecfg, mgn_saveloadcfg), mee_cust_nosave ("Save game config", MA_OPT_SAVECFG_GAME, mh_savecfg, mgn_saveloadcfg), mee_handler_id_h ("Delete game config", MA_OPT_RMCFG_GAME, mh_rmcfg, h_rm_config_game), @@ -13,6 +13,7 @@ int show_hud; int limit_frames; int enable_audio; int enable_drc; +int use_srm; unsigned audio_buffer_size; enum scale_size scale_size; enum scale_filter scale_filter; @@ -9,6 +9,7 @@ extern int show_hud; extern int limit_frames; extern int enable_audio; extern int enable_drc; +extern int use_srm; extern unsigned audio_buffer_size; extern enum scale_size scale_size; extern enum scale_filter scale_filter; |