static bool zarch_menu_init_list(void *data) { int ret; menu_displaylist_info_t info = {0}; file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0); file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); strlcpy(info.label, menu_hash_to_str(MENU_VALUE_HISTORY_TAB), sizeof(info.label)); menu_entries_push(menu_stack, info.path, info.label, info.type, info.flags, 0); #if 0 menu_entries_increment_menu_stack(); strlcpy(info.label, menu_hash_to_str(MENU_VALUE_MAIN_MENU), sizeof(info.label)); menu_stack = menu_entries_get_menu_stack_ptr(1); menu_entries_push(menu_stack, info.path, info.label, info.type, info.flags, 0); #endif event_command(EVENT_CMD_HISTORY_INIT); info.list = selection_buf; menu_displaylist_push_list(&info, DISPLAYLIST_HISTORY); info.need_push = true; (void)ret; menu_displaylist_push_list_process(&info); return true; }
static int frontend_gx_parse_drive_list(void *data) { #ifndef IS_SALAMANDER file_list_t *list = (file_list_t*)data; #ifdef HW_RVL menu_entries_push(list, "sd:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "usb:/", "", MENU_FILE_DIRECTORY, 0, 0); #endif menu_entries_push(list, "carda:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "cardb:/", "", MENU_FILE_DIRECTORY, 0, 0); #endif return 0; }
static int frontend_psp_parse_drive_list(void *data) { #ifndef IS_SALAMANDER file_list_t *list = (file_list_t*)data; #ifdef VITA menu_entries_push(list, "cache0:/", "", MENU_FILE_DIRECTORY, 0, 0); #else menu_entries_push(list, "ms0:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "ef0:/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "host0:/", "", MENU_FILE_DIRECTORY, 0, 0); #endif #endif return 0; }
static int frontend_ctr_parse_drive_list(void *data) { file_list_t *list = (file_list_t*)data; #ifndef IS_SALAMANDER if (!list) return -1; menu_entries_push(list, "sdmc:/", "", MENU_FILE_DIRECTORY, 0, 0); #endif return 0; }
bool generic_menu_init_list(void *data) { menu_displaylist_info_t info = {0}; file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(); file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(); info.list = selection_buf; info.type = MENU_SETTINGS; info.flags = SL_FLAG_MAIN_MENU | SL_FLAG_SETTINGS; strlcpy(info.label, menu_hash_to_str(MENU_VALUE_MAIN_MENU), sizeof(info.label)); menu_entries_push(menu_stack, info.path, info.label, info.type, info.flags, 0); menu_displaylist_push_list(&info, DISPLAYLIST_MAIN_MENU); return true; }
static bool zarch_menu_init_list(void *data) { menu_displaylist_info_t info = {0}; file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0); file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0); strlcpy(info.label, menu_hash_to_str(MENU_VALUE_HISTORY_TAB), sizeof(info.label)); menu_entries_push(menu_stack, info.path, info.label, info.type, info.flags, 0); event_cmd_ctl(EVENT_CMD_HISTORY_INIT, NULL); info.list = selection_buf; if (menu_displaylist_ctl(DISPLAYLIST_HISTORY, &info)) { info.need_push = true; return menu_displaylist_ctl(DISPLAYLIST_PROCESS, &info); } return false; }
static int frontend_xdk_parse_drive_list(void *data) { #ifndef IS_SALAMANDER file_list_t *list = (file_list_t*)data; #if defined(_XBOX1) menu_entries_push(list, "C:", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "D:", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "E:", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "F:", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "G:", "", MENU_FILE_DIRECTORY, 0, 0); #elif defined(_XBOX360) menu_entries_push(list, "game:", "", MENU_FILE_DIRECTORY, 0, 0); #endif #endif return 0; }
static int mui_list_push(void *data, void *userdata, menu_displaylist_info_t *info, unsigned type) { int ret = -1; core_info_list_t *list = NULL; menu_handle_t *menu = (menu_handle_t*)data; (void)userdata; switch (type) { case DISPLAYLIST_LOAD_CONTENT_LIST: menu_entries_clear(info->list); menu_entries_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_LOAD_CONTENT), menu_hash_to_str(MENU_LABEL_LOAD_CONTENT), MENU_SETTING_ACTION, 0, 0); runloop_ctl(RUNLOOP_CTL_CURRENT_CORE_LIST_GET, &list); if (core_info_list_num_info_files(list)) { menu_entries_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DETECT_CORE_LIST), menu_hash_to_str(MENU_LABEL_DETECT_CORE_LIST), MENU_SETTING_ACTION, 0, 0); menu_entries_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DOWNLOADED_FILE_DETECT_CORE_LIST), menu_hash_to_str(MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST), MENU_SETTING_ACTION, 0, 0); } info->need_push = true; info->need_refresh = true; ret = 0; break; case DISPLAYLIST_MAIN_MENU: menu_entries_clear(info->list); if (!rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL)) { menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_CONTENT_SETTINGS), PARSE_ACTION, false); } menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_START_CORE), PARSE_ACTION, false); #if defined(HAVE_DYNAMIC) || defined(HAVE_LIBRETRO_MANAGEMENT) menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_CORE_LIST), PARSE_ACTION, false); #endif menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_LIST), PARSE_ACTION, false); menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_LOAD_CONTENT_HISTORY), PARSE_ACTION, false); #if defined(HAVE_NETWORKING) #if defined(HAVE_LIBRETRODB) menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_ADD_CONTENT_LIST), PARSE_ACTION, false); #endif menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_ONLINE_UPDATER), PARSE_ACTION, false); #endif menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_INFORMATION_LIST), PARSE_ACTION, false); #ifndef HAVE_DYNAMIC menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_RESTART_RETROARCH), PARSE_ACTION, false); #endif menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_CONFIGURATIONS), PARSE_ACTION, false); menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_SAVE_CURRENT_CONFIG), PARSE_ACTION, false); menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_SAVE_NEW_CONFIG), PARSE_ACTION, false); menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_HELP_LIST), PARSE_ACTION, false); #if !defined(IOS) menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_QUIT_RETROARCH), PARSE_ACTION, false); #endif #if defined(HAVE_LAKKA) menu_displaylist_parse_settings(menu, info, menu_hash_to_str(MENU_LABEL_SHUTDOWN), PARSE_ACTION, false); #endif info->need_push = true; ret = 0; break; } return ret; }
static int frontend_ps3_parse_drive_list(void *data) { #ifndef IS_SALAMANDER file_list_t *list = (file_list_t*)data; menu_entries_push(list, "/app_home/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_hdd0/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_hdd1/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/host_root/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_usb000/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_usb001/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_usb002/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_usb003/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_usb004/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_usb005/", "", MENU_FILE_DIRECTORY, 0, 0); menu_entries_push(list, "/dev_usb006/", "", MENU_FILE_DIRECTORY, 0, 0); #endif return 0; }
int menu_shader_manager_setting_toggle( unsigned id, const char *label, unsigned action) { if (!driver.menu) { RARCH_ERR("Cannot toggle shader setting, menu handle is not initialized.\n"); return 0; } #if 0 RARCH_LOG("shader label: %s\n", label); #endif rarch_setting_t *current_setting = NULL; rarch_setting_t *setting_data = (rarch_setting_t *)setting_data_get_list(); if (!strcmp(label, "video_shader_default_filter")) { if ((current_setting = setting_data_find_setting( setting_data, "video_smooth"))) menu_action_setting_boolean(current_setting, action); } else if (id >= MENU_SETTINGS_SHADER_PARAMETER_0 && id <= MENU_SETTINGS_SHADER_PARAMETER_LAST) { bool apply_changes = false; struct gfx_shader *shader = NULL; struct gfx_shader_parameter *param = NULL; if (!(shader = (struct gfx_shader*)driver.menu->parameter_shader)) return 0; if (!(param = &shader->parameters[id - MENU_SETTINGS_SHADER_PARAMETER_0])) return 0; switch (action) { case MENU_ACTION_START: param->current = param->initial; apply_changes = true; break; case MENU_ACTION_LEFT: param->current -= param->step; apply_changes = true; break; case MENU_ACTION_RIGHT: param->current += param->step; apply_changes = true; break; default: break; } param->current = min(max(param->minimum, param->current), param->maximum); if (apply_changes && !strcmp(label, "video_shader_parameters")) rarch_main_command(RARCH_CMD_SHADERS_APPLY_CHANGES); } else if ((!strcmp(label, "video_shader_parameters") || !strcmp(label, "video_shader_preset_parameters")) && action == MENU_ACTION_OK) menu_entries_push(driver.menu->menu_stack, "", "video_shader_parameters", MENU_FILE_SWITCH, driver.menu->selection_ptr); else if (!strcmp(label, "shader_apply_changes") || !strcmp(label, "video_shader_num_passes")) { if (!strcmp(label, "video_shader_num_passes")) return handle_shader_pass_setting(driver.menu->shader, action); menu_action_setting_set(id, label, action); } else if (!strcmp(label, "video_shader_preset")) { switch (action) { case MENU_ACTION_OK: menu_entries_push(driver.menu->menu_stack, g_settings.video.shader_dir, "video_shader_preset", id, driver.menu->selection_ptr); break; case MENU_ACTION_START: break; default: break; } } else if (!strcmp(label, "video_shader_pass")) { hack_shader_pass = id - MENU_SETTINGS_SHADER_PASS_0; struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader; struct gfx_shader_pass *shader_pass = NULL; if (shader) shader_pass = (struct gfx_shader_pass*)&shader->pass[hack_shader_pass]; switch (action) { case MENU_ACTION_OK: menu_entries_push(driver.menu->menu_stack, g_settings.video.shader_dir, "video_shader_pass", id, driver.menu->selection_ptr); break; case MENU_ACTION_START: if (shader_pass) *shader_pass->source.path = '\0'; break; default: break; } } else if (!strcmp(label, "video_shader_filter_pass")) { unsigned pass = id - MENU_SETTINGS_SHADER_PASS_FILTER_0; struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader; struct gfx_shader_pass *shader_pass = (struct gfx_shader_pass*) &shader->pass[pass]; switch (action) { case MENU_ACTION_START: if (shader) shader->pass[pass].filter = RARCH_FILTER_UNSPEC; break; case MENU_ACTION_LEFT: case MENU_ACTION_RIGHT: case MENU_ACTION_OK: { unsigned delta = (action == MENU_ACTION_LEFT) ? 2 : 1; if (shader_pass) shader_pass->filter = ((shader_pass->filter + delta) % 3); break; } default: break; } } else if (!strcmp(label, "video_shader_scale_pass")) { unsigned pass = id - MENU_SETTINGS_SHADER_PASS_SCALE_0; struct gfx_shader *shader = (struct gfx_shader*)driver.menu->shader; struct gfx_shader_pass *shader_pass = (struct gfx_shader_pass*) &shader->pass[pass]; switch (action) { case MENU_ACTION_START: if (shader) { shader_pass->fbo.scale_x = shader_pass->fbo.scale_y = 0; shader_pass->fbo.valid = false; } break; case MENU_ACTION_LEFT: case MENU_ACTION_RIGHT: case MENU_ACTION_OK: { unsigned current_scale = shader_pass->fbo.scale_x; unsigned delta = action == MENU_ACTION_LEFT ? 5 : 1; current_scale = (current_scale + delta) % 6; if (shader_pass) { shader_pass->fbo.valid = current_scale; shader_pass->fbo.scale_x = shader_pass->fbo.scale_y = current_scale; } break; } default: break; } } return 0; }
static int menu_action_ok(const char *menu_path, const char *menu_label, unsigned menu_type) { const char *label = NULL; const char *path = NULL; unsigned type = 0; rarch_setting_t *setting_data = (rarch_setting_t *)driver.menu->list_settings; rarch_setting_t *setting = (rarch_setting_t*) setting_data_find_setting(setting_data, menu_label); (void)hack_shader_pass; if (file_list_get_size(driver.menu->selection_buf) == 0) return 0; file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &label, &type); #if 0 RARCH_LOG("menu label: %s\n", menu_label); RARCH_LOG("type : %d\n", type == MENU_FILE_USE_DIRECTORY); RARCH_LOG("type id : %d\n", type); #endif while (true) { switch (type) { case MENU_FILE_PLAYLIST_ENTRY: rarch_playlist_load_content(g_defaults.history, driver.menu->selection_ptr); menu_flush_stack_type(driver.menu->menu_stack, MENU_SETTINGS); return -1; #ifdef HAVE_COMPRESSION case MENU_FILE_IN_CARCHIVE: #endif case MENU_FILE_PLAIN: if (!strcmp(menu_label, "detect_core_list")) { int ret = rarch_defer_core(g_extern.core_info, menu_path, path, driver.menu->deferred_path, sizeof(driver.menu->deferred_path)); if (ret == -1) { rarch_main_command(RARCH_CMD_LOAD_CORE); menu_common_load_content(); return -1; } else if (ret == 0) menu_entries_push(driver.menu->menu_stack, g_settings.libretro_directory, "deferred_core_list", 0, driver.menu->selection_ptr); } else if ((setting && setting->type == ST_PATH)) { menu_action_setting_set_current_string_path(setting, menu_path, path); menu_entries_pop_stack(driver.menu->menu_stack, setting->name); } else if (!strcmp(menu_label, "disk_image_append")) { char image[PATH_MAX]; fill_pathname_join(image, menu_path, path, sizeof(image)); rarch_disk_control_append_image(image); rarch_main_command(RARCH_CMD_RESUME); menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS); return -1; } else { if (type == MENU_FILE_IN_CARCHIVE) { fill_pathname_join_delim(g_extern.fullpath, menu_path, path, '#',sizeof(g_extern.fullpath)); } else { fill_pathname_join(g_extern.fullpath, menu_path, path, sizeof(g_extern.fullpath)); } menu_common_load_content(); rarch_main_command(RARCH_CMD_LOAD_CONTENT_PERSIST); menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS); driver.menu->msg_force = true; return -1; } return 0; case MENU_FILE_CONFIG: { char config[PATH_MAX]; fill_pathname_join(config, menu_path, path, sizeof(config)); menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS); driver.menu->msg_force = true; if (rarch_replace_config(config)) { menu_clear_navigation(driver.menu); return -1; } } return 0; case MENU_FILE_FONT: case MENU_FILE_OVERLAY: case MENU_FILE_AUDIOFILTER: case MENU_FILE_VIDEOFILTER: menu_action_setting_set_current_string_path(setting, menu_path, path); menu_entries_pop_stack(driver.menu->menu_stack, setting->name); return 0; case MENU_FILE_SHADER_PRESET: #ifdef HAVE_SHADER_MANAGER { char shader_path[PATH_MAX]; fill_pathname_join(shader_path, menu_path, path, sizeof(shader_path)); menu_shader_manager_set_preset(driver.menu->shader, gfx_shader_parse_type(shader_path, RARCH_SHADER_NONE), shader_path); menu_flush_stack_label(driver.menu->menu_stack, "Shader Options"); } #endif return 0; case MENU_FILE_SHADER: #ifdef HAVE_SHADER_MANAGER fill_pathname_join(driver.menu->shader->pass[hack_shader_pass].source.path, menu_path, path, sizeof(driver.menu->shader->pass[hack_shader_pass].source.path)); /* This will reset any changed parameters. */ gfx_shader_resolve_parameters(NULL, driver.menu->shader); menu_flush_stack_label(driver.menu->menu_stack, "Shader Options"); #endif return 0; case MENU_FILE_CORE: if (!strcmp(menu_label, "deferred_core_list")) { strlcpy(g_settings.libretro, path, sizeof(g_settings.libretro)); strlcpy(g_extern.fullpath, driver.menu->deferred_path, sizeof(g_extern.fullpath)); menu_common_load_content(); return -1; } else if (!strcmp(menu_label, "core_list")) { fill_pathname_join(g_settings.libretro, menu_path, path, sizeof(g_settings.libretro)); rarch_main_command(RARCH_CMD_LOAD_CORE); menu_flush_stack_type(driver.menu->menu_stack,MENU_SETTINGS); #if defined(HAVE_DYNAMIC) /* No content needed for this core, load core immediately. */ if (driver.menu->load_no_content) { *g_extern.fullpath = '\0'; menu_common_load_content(); return -1; } /* Core selection on non-console just updates directory listing. * Will take effect on new content load. */ #elif defined(RARCH_CONSOLE) rarch_main_command(RARCH_CMD_RESTART_RETROARCH); return -1; #endif } return 0; case MENU_FILE_USE_DIRECTORY: if (setting && setting->type == ST_DIR) { menu_action_setting_set_current_string(setting, menu_path); menu_entries_pop_stack(driver.menu->menu_stack, setting->name); } return 0; case MENU_FILE_DIRECTORY: case MENU_FILE_CARCHIVE: { char cat_path[PATH_MAX]; if (type == MENU_FILE_CARCHIVE && !strcmp(menu_label, "detect_core_list")) { file_list_push(driver.menu->menu_stack, path, "load_open_zip", 0, driver.menu->selection_ptr); return 0; } fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); menu_entries_push(driver.menu->menu_stack, cat_path, menu_label, type, driver.menu->selection_ptr); } return 0; } break; } if (menu_parse_check(label, type) == 0) { char cat_path[PATH_MAX]; fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); menu_entries_push(driver.menu->menu_stack, cat_path, menu_label, type, driver.menu->selection_ptr); } return 0; }
static int menu_load_or_open_zip_iterate(unsigned action) { char msg[PATH_MAX]; snprintf(msg, sizeof(msg), "Opening compressed file\n" " \n" " - OK to open as Folder\n" " - Cancel/Back to Load \n"); if (driver.video_data && driver.menu_ctx && driver.menu_ctx->render_messagebox) { if (*msg && msg[0] != '\0') driver.menu_ctx->render_messagebox(msg); } if (action == MENU_ACTION_OK) { char cat_path[PATH_MAX]; const char *menu_path = NULL; const char *menu_label = NULL; const char* path = NULL; const char* label = NULL; unsigned int menu_type = 0, type = 0; menu_entries_pop(driver.menu->menu_stack); file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, &menu_type); if (file_list_get_size(driver.menu->selection_buf) == 0) return 0; file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &label, &type); fill_pathname_join(cat_path, menu_path, path, sizeof(cat_path)); menu_entries_push(driver.menu->menu_stack, cat_path, menu_label, type, driver.menu->selection_ptr); } else if (action == MENU_ACTION_CANCEL) { const char *menu_path = NULL; const char *menu_label = NULL; const char* path = NULL; const char* label = NULL; unsigned int menu_type = 0, type = 0; menu_entries_pop(driver.menu->menu_stack); file_list_get_last(driver.menu->menu_stack, &menu_path, &menu_label, &menu_type); if (file_list_get_size(driver.menu->selection_buf) == 0) return 0; file_list_get_at_offset(driver.menu->selection_buf, driver.menu->selection_ptr, &path, &label, &type); int ret = rarch_defer_core(g_extern.core_info, menu_path, path, driver.menu->deferred_path, sizeof(driver.menu->deferred_path)); if (ret == -1) { rarch_main_command(RARCH_CMD_LOAD_CORE); menu_common_load_content(); return -1; } else if (ret == 0) menu_entries_push(driver.menu->menu_stack, g_settings.libretro_directory, "deferred_core_list", 0, driver.menu->selection_ptr); } return 0; }
static int menu_setting_ok_toggle(unsigned type, const char *dir, const char *label, unsigned action) { if (type == MENU_SETTINGS_CUSTOM_BIND_ALL) { driver.menu->binds.target = &g_settings.input.binds [driver.menu->current_pad][0]; driver.menu->binds.begin = MENU_SETTINGS_BIND_BEGIN; driver.menu->binds.last = MENU_SETTINGS_BIND_LAST; file_list_push(driver.menu->menu_stack, "", "", driver.menu->bind_mode_keyboard ? MENU_SETTINGS_CUSTOM_BIND_KEYBOARD : MENU_SETTINGS_CUSTOM_BIND, driver.menu->selection_ptr); if (driver.menu->bind_mode_keyboard) { driver.menu->binds.timeout_end = rarch_get_time_usec() + MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000; input_keyboard_wait_keys(driver.menu, menu_custom_bind_keyboard_cb); } else { menu_poll_bind_get_rested_axes(&driver.menu->binds); menu_poll_bind_state(&driver.menu->binds); } return 0; } #ifdef HAVE_SHADER_MANAGER else if (!strcmp(label, "video_shader_preset_save_as")) { if (action == MENU_ACTION_OK) menu_key_start_line(driver.menu, "Preset Filename", label, st_string_callback); } else if (!strcmp(label, "shader_apply_changes")) { rarch_main_command(RARCH_CMD_SHADERS_APPLY_CHANGES); return 0; } #endif else if (type == MENU_SETTINGS_CUSTOM_BIND_DEFAULT_ALL) { unsigned i; struct retro_keybind *target = (struct retro_keybind*) &g_settings.input.binds[driver.menu->current_pad][0]; const struct retro_keybind *def_binds = driver.menu->current_pad ? retro_keybinds_rest : retro_keybinds_1; driver.menu->binds.begin = MENU_SETTINGS_BIND_BEGIN; driver.menu->binds.last = MENU_SETTINGS_BIND_LAST; for (i = MENU_SETTINGS_BIND_BEGIN; i <= MENU_SETTINGS_BIND_LAST; i++, target++) { if (driver.menu->bind_mode_keyboard) target->key = def_binds[i - MENU_SETTINGS_BIND_BEGIN].key; else { target->joykey = NO_BTN; target->joyaxis = AXIS_NONE; } } return 0; } else if (type >= MENU_SETTINGS_BIND_BEGIN && type <= MENU_SETTINGS_BIND_ALL_LAST) { struct retro_keybind *bind = (struct retro_keybind*) &g_settings.input.binds[driver.menu->current_pad] [type - MENU_SETTINGS_BIND_BEGIN]; driver.menu->binds.begin = type; driver.menu->binds.last = type; driver.menu->binds.target = bind; driver.menu->binds.player = driver.menu->current_pad; file_list_push(driver.menu->menu_stack, "", "", driver.menu->bind_mode_keyboard ? MENU_SETTINGS_CUSTOM_BIND_KEYBOARD : MENU_SETTINGS_CUSTOM_BIND, driver.menu->selection_ptr); if (driver.menu->bind_mode_keyboard) { driver.menu->binds.timeout_end = rarch_get_time_usec() + MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000; input_keyboard_wait_keys(driver.menu, menu_custom_bind_keyboard_cb); } else { menu_poll_bind_get_rested_axes(&driver.menu->binds); menu_poll_bind_state(&driver.menu->binds); } return 0; } else if ( !strcmp(label, "load_content") || !strcmp(label, "detect_core_list") ) { menu_entries_push(driver.menu->menu_stack, g_settings.menu_content_directory, label, MENU_FILE_DIRECTORY, driver.menu->selection_ptr); return 0; } else if (!strcmp(label, "history_list") || menu_common_type_is(label, type) == MENU_FILE_DIRECTORY ) { menu_entries_push(driver.menu->menu_stack, "", label, type, driver.menu->selection_ptr); return 0; } else if ( menu_common_type_is(label, type) == MENU_SETTINGS || !strcmp(label, "core_list") || !strcmp(label, "configurations") || !strcmp(label, "disk_image_append") ) { menu_entries_push(driver.menu->menu_stack, dir ? dir : label, label, type, driver.menu->selection_ptr); return 0; } else if (type == MENU_SETTINGS_CUSTOM_VIEWPORT) { file_list_push(driver.menu->menu_stack, "", "", MENU_SETTINGS_CUSTOM_VIEWPORT, driver.menu->selection_ptr); /* Start with something sane. */ rarch_viewport_t *custom = (rarch_viewport_t*) &g_extern.console.screen.viewports.custom_vp; if (driver.video_data && driver.video && driver.video->viewport_info) driver.video->viewport_info(driver.video_data, custom); aspectratio_lut[ASPECT_RATIO_CUSTOM].value = (float)custom->width / custom->height; g_settings.video.aspect_ratio_idx = ASPECT_RATIO_CUSTOM; rarch_main_command(RARCH_CMD_VIDEO_SET_ASPECT_RATIO); return 0; } return -1; }