mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
add core sideloading option
This commit is contained in:
parent
c0ea6e7574
commit
bfd23150b5
@ -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,
|
||||
|
@ -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"
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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,
|
||||
|
@ -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:
|
||||
{
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user