add core sideloading option

This commit is contained in:
radius 2018-12-06 15:54:25 -05:00
parent c0ea6e7574
commit bfd23150b5
12 changed files with 100 additions and 0 deletions

View File

@ -223,6 +223,8 @@ MSG_HASH(MENU_ENUM_LABEL_INPUT_SPLIT_JOYCON,
"input_split_joycon")
MSG_HASH(MENU_ENUM_LABEL_CORE_LIST,
"load_core")
MSG_HASH(MENU_ENUM_LABEL_SIDELOAD_CORE_LIST,
"sideload_core")
MSG_HASH(MENU_ENUM_LABEL_CORE_OPTIONS,
"core_options")
MSG_HASH(MENU_ENUM_LABEL_CORE_OPTION_ENTRY,

View File

@ -673,6 +673,10 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_LIST,
"Load Core"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_LIST,
"Sideload Core"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_CORE_OPTIONS,
"Options"

View File

@ -87,6 +87,7 @@ enum
ACTION_OK_SUBSYSTEM_ADD,
ACTION_OK_LOAD_CONFIG_FILE,
ACTION_OK_LOAD_CORE,
ACTION_OK_SIDELOAD_CORE,
ACTION_OK_LOAD_WALLPAPER,
ACTION_OK_SET_PATH,
ACTION_OK_SET_PATH_AUDIO_FILTER,
@ -585,6 +586,14 @@ int generic_action_ok_displaylist_push(const char *path,
info_label = label;
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_CORE;
break;
case ACTION_OK_DL_SIDELOAD_CORE_LIST:
filebrowser_clear_type();
info.type = type;
info.directory_ptr = idx;
info_path = settings->paths.directory_core_assets;
info_label = label;
dl_type = DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE;
break;
case ACTION_OK_DL_CONTENT_COLLECTION_LIST:
info.type = type;
info.directory_ptr = idx;
@ -1297,6 +1306,45 @@ static int generic_action_ok(const char *path,
}
}
break;
case ACTION_OK_SIDELOAD_CORE:
{
settings_t *settings = config_get_ptr();
char destination_path[PATH_MAX_LENGTH];
FILE *src, *dst;
char buffer[100];
int numr, numw;
fill_pathname_join(destination_path, settings->paths.directory_libretro, path_basename(action_path), sizeof(destination_path));
src = fopen(action_path, "rb");
if (!src)
RARCH_LOG("Unable to open source file\n");
dst = fopen(destination_path, "wb");
if (!dst)
RARCH_LOG("Unable to open destination file\n");
while (!feof(src))
{
memset(buffer, 0, sizeof(buffer));
numr = fread(buffer, 1, 100, src);
if (ferror(dst) != 0)
{
RARCH_LOG("File read error\n");
break;
}
numw = fwrite(buffer, sizeof(char), numr, dst);
if (numw != numr)
{
RARCH_LOG("File write error\n");
break;
}
}
fclose(src);
fclose(dst);
}
break;
case ACTION_OK_LOAD_CONFIG_FILE:
{
settings_t *settings = config_get_ptr();
@ -1467,6 +1515,7 @@ default_action_ok_set(action_ok_set_path_videofilter, ACTION_OK_SET_PATH_AUDIO_F
default_action_ok_set(action_ok_set_path_overlay, ACTION_OK_SET_PATH_OVERLAY, MSG_UNKNOWN)
default_action_ok_set(action_ok_set_path, ACTION_OK_SET_PATH, MSG_UNKNOWN)
default_action_ok_set(action_ok_load_core, ACTION_OK_LOAD_CORE, MSG_UNKNOWN)
default_action_ok_set(action_ok_sideload_core, ACTION_OK_SIDELOAD_CORE, MSG_UNKNOWN)
default_action_ok_set(action_ok_config_load, ACTION_OK_LOAD_CONFIG_FILE, MSG_UNKNOWN)
default_action_ok_set(action_ok_disk_image_append, ACTION_OK_APPEND_DISK_IMAGE, MSG_UNKNOWN)
default_action_ok_set(action_ok_subsystem_add, ACTION_OK_SUBSYSTEM_ADD, MSG_UNKNOWN)
@ -3829,6 +3878,7 @@ default_action_ok_func(action_ok_rdb_entry, ACTION_OK_DL_RDB_ENTRY)
default_action_ok_func(action_ok_mixer_stream_actions, ACTION_OK_DL_MIXER_STREAM_SETTINGS_LIST)
default_action_ok_func(action_ok_browse_url_list, ACTION_OK_DL_BROWSE_URL_LIST)
default_action_ok_func(action_ok_core_list, ACTION_OK_DL_CORE_LIST)
default_action_ok_func(action_ok_sideload_core_list, ACTION_OK_DL_SIDELOAD_CORE_LIST)
default_action_ok_func(action_ok_cheat_file, ACTION_OK_DL_CHEAT_FILE)
default_action_ok_func(action_ok_cheat_file_append, ACTION_OK_DL_CHEAT_FILE_APPEND)
default_action_ok_func(action_ok_playlist_collection, ACTION_OK_DL_PLAYLIST_COLLECTION)
@ -4987,6 +5037,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_FILE_BROWSER_CORE:
BIND_ACTION_OK(cbs, action_ok_load_core);
break;
case MENU_ENUM_LABEL_FILE_BROWSER_SIDELOAD_CORE:
BIND_ACTION_OK(cbs, action_ok_sideload_core);
break;
case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION:
case MENU_ENUM_LABEL_FILE_BROWSER_CORE_SELECT_FROM_COLLECTION_CURRENT_CORE:
BIND_ACTION_OK(cbs, action_ok_core_deferred_set);
@ -5296,6 +5349,9 @@ static int menu_cbs_init_bind_ok_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_CORE_LIST:
BIND_ACTION_OK(cbs, action_ok_core_list);
break;
case MENU_ENUM_LABEL_SIDELOAD_CORE_LIST:
BIND_ACTION_OK(cbs, action_ok_sideload_core_list);
break;
case MENU_ENUM_LABEL_DISK_IMAGE_APPEND:
BIND_ACTION_OK(cbs, action_ok_disk_image_append_list);
break;
@ -5772,6 +5828,9 @@ static int menu_cbs_init_bind_ok_compare_type(menu_file_list_cbs_t *cbs,
case MENU_LABEL_CORE_LIST:
BIND_ACTION_OK(cbs, action_ok_load_core);
break;
case MENU_LABEL_SIDELOAD_CORE_LIST:
BIND_ACTION_OK(cbs, action_ok_sideload_core);
break;
}
}
break;

View File

@ -99,6 +99,7 @@ default_title_macro(action_get_download_core_content_list, MENU_ENUM_LABEL_
default_title_macro(action_get_user_accounts_list, MENU_ENUM_LABEL_VALUE_ACCOUNTS_LIST)
default_title_macro(action_get_core_information_list, MENU_ENUM_LABEL_VALUE_CORE_INFORMATION)
default_title_macro(action_get_core_list, MENU_ENUM_LABEL_VALUE_CORE_LIST)
default_title_macro(action_get_sideload_core_list, MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_LIST)
default_title_macro(action_get_online_updater_list, MENU_ENUM_LABEL_VALUE_ONLINE_UPDATER)
default_title_macro(action_get_netplay_list, MENU_ENUM_LABEL_VALUE_NETPLAY)
default_title_macro(action_get_online_thumbnails_updater_list, MENU_ENUM_LABEL_VALUE_THUMBNAILS_UPDATER_LIST)
@ -718,6 +719,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_CORE_LIST:
BIND_ACTION_GET_TITLE(cbs, action_get_core_list);
break;
case MENU_ENUM_LABEL_SIDELOAD_CORE_LIST:
BIND_ACTION_GET_TITLE(cbs, action_get_sideload_core_list);
break;
case MENU_ENUM_LABEL_LOAD_CONTENT_SPECIAL:
BIND_ACTION_GET_TITLE(cbs, action_get_load_content_special);
break;
@ -1047,6 +1051,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
case MENU_LABEL_CORE_LIST:
BIND_ACTION_GET_TITLE(cbs, action_get_core_list);
break;
case MENU_LABEL_SIDELOAD_CORE_LIST:
BIND_ACTION_GET_TITLE(cbs, action_get_core_list);
break;
case MENU_ENUM_LABEL_LOAD_CONTENT_SPECIAL:
BIND_ACTION_GET_TITLE(cbs, action_get_load_content_special);
break;

View File

@ -589,6 +589,10 @@ static int ozone_list_push(void *data, void *userdata,
{
entry.enum_idx = MENU_ENUM_LABEL_CORE_LIST;
menu_displaylist_setting(&entry);
entry.enum_idx = MENU_ENUM_LABEL_SIDELOAD_CORE_LIST;
menu_displaylist_setting(&entry);
}
}

View File

@ -103,6 +103,7 @@ menu_texture_item ozone_entries_icon_get_texture(ozone_handle_t *ozone,
case MENU_ENUM_LABEL_CHEAT_START_OR_CONT:
return ozone->icons_textures[OZONE_ENTRIES_ICONS_TEXTURE_RUN];
case MENU_ENUM_LABEL_CORE_LIST:
case MENU_ENUM_LABEL_SIDELOAD_CORE_LIST:
case MENU_ENUM_LABEL_CORE_SETTINGS:
case MENU_ENUM_LABEL_CORE_UPDATER_LIST:
case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_CORE:

View File

@ -2347,6 +2347,7 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
case MENU_ENUM_LABEL_CHEAT_START_OR_CONT:
return xmb->textures.list[XMB_TEXTURE_RUN];
case MENU_ENUM_LABEL_CORE_LIST:
case MENU_ENUM_LABEL_SIDELOAD_CORE_LIST:
case MENU_ENUM_LABEL_CORE_SETTINGS:
case MENU_ENUM_LABEL_CORE_UPDATER_LIST:
case MENU_ENUM_LABEL_VIDEO_SHADER_PRESET_SAVE_CORE:

View File

@ -102,6 +102,7 @@ enum
ACTION_OK_DL_CHEAT_FILE,
ACTION_OK_DL_CHEAT_FILE_APPEND,
ACTION_OK_DL_CORE_LIST,
ACTION_OK_DL_SIDELOAD_CORE_LIST,
ACTION_OK_DL_LAKKA_LIST,
ACTION_OK_DL_CONFIGURATIONS_LIST,
ACTION_OK_DL_COMPRESSED_ARCHIVE_PUSH,

View File

@ -3703,6 +3703,11 @@ static unsigned menu_displaylist_parse_cores(
file_type = FILE_TYPE_DIRECTORY;
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_DIRECTORY;
}
else if(string_is_equal(info->path, settings->paths.directory_core_assets))
{
file_type = FILE_TYPE_CORE;
enum_idx = MENU_ENUM_LABEL_FILE_BROWSER_SIDELOAD_CORE;
}
else
{
file_type = FILE_TYPE_CORE;
@ -7402,6 +7407,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
if (settings->bools.menu_show_load_core)
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_CORE_LIST, PARSE_ACTION, false);
if (settings->bools.menu_show_load_core)
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SIDELOAD_CORE_LIST, PARSE_ACTION, false);
}
if (settings->bools.menu_show_load_content)
@ -7648,6 +7656,7 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
case DISPLAYLIST_FILE_BROWSER_SELECT_DIR:
case DISPLAYLIST_FILE_BROWSER_SELECT_FILE:
case DISPLAYLIST_FILE_BROWSER_SELECT_CORE:
case DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE:
case DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION:
case DISPLAYLIST_GENERIC:
{

View File

@ -78,6 +78,7 @@ enum menu_displaylist_ctl_state
DISPLAYLIST_FILE_BROWSER_SCAN_DIR,
DISPLAYLIST_FILE_BROWSER_SELECT_FILE,
DISPLAYLIST_FILE_BROWSER_SELECT_CORE,
DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE,
DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION,
DISPLAYLIST_CORES,
DISPLAYLIST_CORES_SUPPORTED,

View File

@ -3567,6 +3567,14 @@ static bool setting_append_list(
}
}
CONFIG_ACTION(
list, list_info,
MENU_ENUM_LABEL_SIDELOAD_CORE_LIST,
MENU_ENUM_LABEL_VALUE_SIDELOAD_CORE_LIST,
&group_info,
&subgroup_info,
parent_group);
CONFIG_ACTION(
list, list_info,
MENU_ENUM_LABEL_LOAD_CONTENT_LIST,

View File

@ -894,6 +894,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_FILE_BROWSER_SHADER,
MENU_ENUM_LABEL_FILE_BROWSER_REMAP,
MENU_ENUM_LABEL_FILE_BROWSER_CORE,
MENU_ENUM_LABEL_FILE_BROWSER_SIDELOAD_CORE,
MENU_ENUM_LABEL_FILE_BROWSER_OVERLAY,
MENU_ENUM_LABEL_FILE_BROWSER_CHEAT,
MENU_ENUM_LABEL_FILE_BROWSER_FONT,
@ -1570,6 +1571,7 @@ enum msg_hash_enums
MENU_LABEL(SUBSYSTEM_ADD),
MENU_LABEL(SUBSYSTEM_LOAD),
MENU_LABEL(CORE_LIST),
MENU_LABEL(SIDELOAD_CORE_LIST),
MENU_LABEL(MANAGEMENT),
MENU_LABEL(ONLINE),
MENU_LABEL(ONLINE_UPDATER),
@ -2358,6 +2360,7 @@ enum msg_hash_enums
#define MENU_LABEL_DETECT_CORE_LIST 0xaa07c341U
#define MENU_LABEL_DETECT_CORE_LIST_OK 0xabba2a7aU
#define MENU_LABEL_CORE_LIST 0xa22bb14dU
#define MENU_LABEL_SIDELOAD_CORE_LIST 0x88ef1cf2U
#define MENU_LABEL_MANAGEMENT 0x2516c88aU
#define MENU_LABEL_FRONTEND_COUNTERS 0xe5696877U
#define MENU_LABEL_CORE_COUNTERS 0x64cc83e0U