1
0
mirror of https://github.com/libretro/RetroArch synced 2025-03-26 02:37:23 +00:00

Add Run-Ahead Toggle hotkey with notifications

This commit is contained in:
Ryunam 2020-11-06 21:39:11 +01:00
parent f37d38bcd4
commit f3aaf24219
8 changed files with 95 additions and 3 deletions

@ -196,6 +196,7 @@ enum event_command
CMD_EVENT_OSK_TOGGLE,
CMD_EVENT_RECORDING_TOGGLE,
CMD_EVENT_STREAMING_TOGGLE,
CMD_EVENT_RUNAHEAD_TOGGLE,
CMD_EVENT_AI_SERVICE_TOGGLE,
CMD_EVENT_BSV_RECORDING_TOGGLE,
CMD_EVENT_SHADER_NEXT,

@ -563,6 +563,13 @@ static const struct retro_keybind retro_keybinds_1[] = {
RARCH_STREAMING_TOGGLE, NO_BTN, NO_BTN, 0,
true
},
{
NULL, NULL,
AXIS_NONE, AXIS_NONE, AXIS_NONE,
MENU_ENUM_LABEL_VALUE_INPUT_META_RUNAHEAD_TOGGLE, RETROK_UNKNOWN,
RARCH_RUNAHEAD_TOGGLE, NO_BTN, NO_BTN, 0,
true
},
{
NULL, NULL,
AXIS_NONE, AXIS_NONE, AXIS_NONE,
@ -1110,6 +1117,13 @@ static const struct retro_keybind retro_keybinds_1[] = {
RARCH_STREAMING_TOGGLE, NO_BTN, NO_BTN, 0,
true
},
{
NULL, NULL,
AXIS_NONE, AXIS_NONE, AXIS_NONE,
MENU_ENUM_LABEL_VALUE_INPUT_META_RUNAHEAD_TOGGLE, RETROK_UNKNOWN,
RARCH_RUNAHEAD_TOGGLE, NO_BTN, NO_BTN, 0,
true
},
{
NULL, NULL,
AXIS_NONE, AXIS_NONE, AXIS_NONE,
@ -1667,6 +1681,13 @@ static const struct retro_keybind retro_keybinds_1[] = {
RARCH_STREAMING_TOGGLE, NO_BTN, NO_BTN, 0,
true
},
{
NULL, NULL,
AXIS_NONE, AXIS_NONE, AXIS_NONE,
MENU_ENUM_LABEL_VALUE_INPUT_META_RUNAHEAD_TOGGLE, RETROK_UNKNOWN,
RARCH_RUNAHEAD_TOGGLE, NO_BTN, NO_BTN, 0,
true
},
{
NULL, NULL,
AXIS_NONE, AXIS_NONE, AXIS_NONE,

@ -117,6 +117,7 @@ enum
RARCH_RECORDING_TOGGLE,
RARCH_STREAMING_TOGGLE,
RARCH_RUNAHEAD_TOGGLE,
RARCH_AI_SERVICE,

@ -225,6 +225,10 @@ int msg_hash_get_help_us_enum(enum msg_hash_enums msg, char *s, size_t len)
snprintf(s, len,
"Toggle between recording and not.");
break;
case RARCH_RUNAHEAD_TOGGLE:
snprintf(s, len,
"Toggles Run-Ahead mode on/off.");
break;
default:
if (string_is_empty(s))
strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NO_INFORMATION_AVAILABLE), len);

@ -2555,6 +2555,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_STREAMING_TOGGLE,
"Starts/stops streaming of the current session to an online video platform."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_RUNAHEAD_TOGGLE,
"Run-Ahead (Toggle)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_INPUT_META_RUNAHEAD_TOGGLE,
"Switches Run-Ahead on/off."
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_INPUT_META_AI_SERVICE,
"AI Service"
@ -11266,6 +11274,18 @@ MSG_HASH(
MSG_CORE_REMAP_FILE_LOADED,
"Core remap file loaded."
)
MSG_HASH(
MSG_RUNAHEAD_ENABLED,
"Run-Ahead enabled. Latency frames removed: %u."
)
MSG_HASH(
MSG_RUNAHEAD_ENABLED_WITH_SECOND_INSTANCE,
"Run-Ahead enabled with Secondary Instance. Latency frames removed: %u."
)
MSG_HASH(
MSG_RUNAHEAD_DISABLED,
"Run-Ahead disabled."
)
MSG_HASH(
MSG_RUNAHEAD_CORE_DOES_NOT_SUPPORT_SAVESTATES,
"Run-Ahead has been disabled because this core does not support save states."

@ -269,6 +269,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_meta_game_focus_toggle, ME
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_meta_ui_companion_toggle, MENU_ENUM_SUBLABEL_INPUT_META_UI_COMPANION_TOGGLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_meta_recording_toggle, MENU_ENUM_SUBLABEL_INPUT_META_RECORDING_TOGGLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_meta_streaming_toggle, MENU_ENUM_SUBLABEL_INPUT_META_STREAMING_TOGGLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_meta_runahead_toggle, MENU_ENUM_SUBLABEL_INPUT_META_RUNAHEAD_TOGGLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_meta_ai_service, MENU_ENUM_SUBLABEL_INPUT_META_AI_SERVICE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_meta_menu_toggle, MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_hotkey_block_delay, MENU_ENUM_SUBLABEL_INPUT_HOTKEY_BLOCK_DELAY)
@ -1693,6 +1694,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case RARCH_STREAMING_TOGGLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_meta_streaming_toggle);
return 0;
case RARCH_RUNAHEAD_TOGGLE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_meta_runahead_toggle);
return 0;
case RARCH_AI_SERVICE:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_meta_ai_service);
return 0;

@ -459,6 +459,9 @@ enum msg_hash_enums
MSG_GAME_REMAP_FILE_LOADED,
MSG_DIRECTORY_REMAP_FILE_LOADED,
MSG_CORE_REMAP_FILE_LOADED,
MSG_RUNAHEAD_ENABLED,
MSG_RUNAHEAD_ENABLED_WITH_SECOND_INSTANCE,
MSG_RUNAHEAD_DISABLED,
MSG_RUNAHEAD_CORE_DOES_NOT_SUPPORT_SAVESTATES,
MSG_RUNAHEAD_FAILED_TO_SAVE_STATE,
MSG_RUNAHEAD_FAILED_TO_LOAD_STATE,
@ -851,6 +854,7 @@ enum msg_hash_enums
MENU_ENUM_LABEL_VALUE_INPUT_META_UI_COMPANION_TOGGLE,
MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE,
MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE,
MENU_ENUM_LABEL_VALUE_INPUT_META_RUNAHEAD_TOGGLE,
MENU_ENUM_LABEL_VALUE_INPUT_META_AI_SERVICE,
MENU_ENUM_LABEL_VALUE_INPUT_META_MENU_TOGGLE,
@ -903,6 +907,7 @@ enum msg_hash_enums
MENU_ENUM_SUBLABEL_INPUT_META_UI_COMPANION_TOGGLE,
MENU_ENUM_SUBLABEL_INPUT_META_RECORDING_TOGGLE,
MENU_ENUM_SUBLABEL_INPUT_META_STREAMING_TOGGLE,
MENU_ENUM_SUBLABEL_INPUT_META_RUNAHEAD_TOGGLE,
MENU_ENUM_SUBLABEL_INPUT_META_AI_SERVICE,
MENU_ENUM_SUBLABEL_INPUT_META_MENU_TOGGLE,

@ -2730,6 +2730,7 @@ static const struct input_bind_map input_config_bind_map[RARCH_BIND_LIST_END_NUL
#endif
DECLARE_META_BIND(2, recording_toggle, RARCH_RECORDING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_RECORDING_TOGGLE),
DECLARE_META_BIND(2, streaming_toggle, RARCH_STREAMING_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_STREAMING_TOGGLE),
DECLARE_META_BIND(2, runahead_toggle, RARCH_RUNAHEAD_TOGGLE, MENU_ENUM_LABEL_VALUE_INPUT_META_RUNAHEAD_TOGGLE),
DECLARE_META_BIND(2, ai_service, RARCH_AI_SERVICE, MENU_ENUM_LABEL_VALUE_INPUT_META_AI_SERVICE),
};
@ -12978,6 +12979,7 @@ static const struct cmd_map map[] = {
{ "MENU_TOGGLE", RARCH_MENU_TOGGLE },
{ "RECORDING_TOGGLE", RARCH_RECORDING_TOGGLE },
{ "STREAMING_TOGGLE", RARCH_STREAMING_TOGGLE },
{ "RUNAHEAD_TOGGLE", RARCH_RUNAHEAD_TOGGLE },
{ "MENU_UP", RETRO_DEVICE_ID_JOYPAD_UP },
{ "MENU_DOWN", RETRO_DEVICE_ID_JOYPAD_DOWN },
{ "MENU_LEFT", RETRO_DEVICE_ID_JOYPAD_LEFT },
@ -15989,6 +15991,37 @@ bool command_event(enum event_command cmd, void *data)
command_event(CMD_EVENT_RECORD_INIT, NULL);
}
break;
case CMD_EVENT_RUNAHEAD_TOGGLE:
settings->bools.run_ahead_enabled = !(settings->bools.run_ahead_enabled);
char msg[256];
msg[0] = '\0';
if (!settings->bools.run_ahead_enabled)
{
runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_DISABLED),
1, 100, false,
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
}
else if (!settings->bools.run_ahead_secondary_instance)
{
snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_RUNAHEAD_ENABLED),
settings->uints.run_ahead_frames);
runloop_msg_queue_push(
msg, 1, 100, false,
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
}
else
{
snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_RUNAHEAD_ENABLED_WITH_SECOND_INSTANCE),
settings->uints.run_ahead_frames);
runloop_msg_queue_push(
msg, 1, 100, false,
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
}
break;
case CMD_EVENT_RECORDING_TOGGLE:
if (recording_is_enabled())
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
@ -39691,12 +39724,15 @@ static enum runloop_state runloop_check_state(
/* Check if we have pressed the recording toggle button */
HOTKEY_CHECK(RARCH_RECORDING_TOGGLE, CMD_EVENT_RECORDING_TOGGLE, true, NULL);
/* Check if we have pressed the AI Service toggle button */
HOTKEY_CHECK(RARCH_AI_SERVICE, CMD_EVENT_AI_SERVICE_TOGGLE, true, NULL);
/* Check if we have pressed the streaming toggle button */
HOTKEY_CHECK(RARCH_STREAMING_TOGGLE, CMD_EVENT_STREAMING_TOGGLE, true, NULL);
/* Check if we have pressed the Run-Ahead toggle button */
HOTKEY_CHECK(RARCH_RUNAHEAD_TOGGLE, CMD_EVENT_RUNAHEAD_TOGGLE, true, NULL);
/* Check if we have pressed the AI Service toggle button */
HOTKEY_CHECK(RARCH_AI_SERVICE, CMD_EVENT_AI_SERVICE_TOGGLE, true, NULL);
if (BIT256_GET(current_bits, RARCH_VOLUME_UP))
command_event(CMD_EVENT_VOLUME_UP, NULL);
else if (BIT256_GET(current_bits, RARCH_VOLUME_DOWN))