1
0
mirror of https://github.com/libretro/RetroArch synced 2024-06-28 22:44:21 +00:00

Add config values and menu items for viewport bias x/y

This commit is contained in:
Joseph C. Osborn 2024-06-21 10:07:17 -07:00 committed by LibretroAdmin
parent e7c6d1df84
commit 05faba73e3
9 changed files with 210 additions and 0 deletions

View File

@ -69,6 +69,14 @@
#define DEFAULT_ASPECT_RATIO 1.3333f
#endif
#define DEFAULT_VIEWPORT_BIAS_X 0.5
#define DEFAULT_VIEWPORT_BIAS_Y 0.5
#if defined(RARCH_MOBILE)
#define DEFAULT_VIEWPORT_BIAS_PORTRAIT_X 0.5
#define DEFAULT_VIEWPORT_BIAS_PORTRAIT_Y 0.0
#endif
#if defined(GEKKO)
#define DEFAULT_MOUSE_SCALE 1
#endif

View File

@ -2255,6 +2255,12 @@ static struct config_float_setting *populate_settings_float(
#endif
SETTING_FLOAT("video_aspect_ratio", &settings->floats.video_aspect_ratio, true, DEFAULT_ASPECT_RATIO, false);
SETTING_FLOAT("video_viewport_bias_x", &settings->floats.video_viewport_bias_x, true, DEFAULT_VIEWPORT_BIAS_X, false);
SETTING_FLOAT("video_viewport_bias_y", &settings->floats.video_viewport_bias_y, true, DEFAULT_VIEWPORT_BIAS_Y, false);
#if defined(RARCH_MOBILE)
SETTING_FLOAT("video_viewport_bias_portrait_x", &settings->floats.video_viewport_bias_portrait_x, true, DEFAULT_VIEWPORT_BIAS_PORTRAIT_X, false);
SETTING_FLOAT("video_viewport_bias_portrait_y", &settings->floats.video_viewport_bias_portrait_y, true, DEFAULT_VIEWPORT_BIAS_PORTRAIT_Y, false);
#endif
SETTING_FLOAT("video_refresh_rate", &settings->floats.video_refresh_rate, true, DEFAULT_REFRESH_RATE, false);
SETTING_FLOAT("video_autoswitch_pal_threshold", &settings->floats.video_autoswitch_pal_threshold, true, DEFAULT_AUTOSWITCH_PAL_THRESHOLD, false);
SETTING_FLOAT("crt_video_refresh_rate", &settings->floats.crt_video_refresh_rate, true, DEFAULT_CRT_REFRESH_RATE, false);

View File

@ -375,6 +375,12 @@ typedef struct settings
{
float placeholder;
float video_aspect_ratio;
float video_viewport_bias_x;
float video_viewport_bias_y;
#if defined(RARCH_MOBILE)
float video_viewport_bias_portrait_x;
float video_viewport_bias_portrait_y;
#endif
float video_refresh_rate;
float video_autoswitch_pal_threshold;
float crt_video_refresh_rate;

View File

@ -4126,6 +4126,24 @@ MSG_HASH(
MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX,
"aspect_ratio_index"
)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
"video_viewport_bias_x"
)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
"video_viewport_bias_y"
)
#if defined(RARCH_MOBILE)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
"video_viewport_bias_portrait_x"
)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
"video_viewport_bias_portrait_y"
)
#endif
#if defined(DINGUX)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_DINGUX_IPU_KEEP_ASPECT,

View File

@ -2599,6 +2599,56 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y,
"Custom viewport offset used for defining the Y-axis position of the viewport.\nThese are ignored if 'Integer Scale' is enabled."
)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
"Viewport Anchor Bias X"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_X,
"Viewport Anchor Bias X"
)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
"Viewport Anchor Bias Y"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_Y,
"Viewport Anchor Bias Y"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_X,
"Custom viewport bias used to offset the viewport horizontally (if wider than content height). 0.0 means far left and 1.0 means far right."
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_Y,
"Custom viewport bias used to offset the viewport vertically (if taller than content height). 0.0 means top and 1.0 means bottom."
)
#if defined(RARCH_MOBILE)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
"Viewport Anchor Bias X (Portrait Orientation)"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
"Viewport Anchor Bias X (Portrait Orientation)"
)
MSG_HASH(
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
"Viewport Anchor Bias Y (Portrait Orientation)"
)
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
"Viewport Anchor Bias Y (Portrait Orientation)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
"Custom viewport bias used to offset the viewport horizontally (if wider than content height). 0.0 means far left and 1.0 means far right. (Portrait Orientation)"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
"Custom viewport bias used to offset the viewport vertically (if taller than content height). 0.0 means top and 1.0 means bottom. (Portrait Orientation)"
)
#endif
MSG_HASH(
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_CUSTOM_WIDTH,
"Custom Aspect Ratio (Width)"

View File

@ -1251,6 +1251,12 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_height,
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_width, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_WIDTH)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_x, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_X)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_custom_y, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_CUSTOM_Y)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_bias_x, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_X)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_bias_y, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_Y)
#if defined(RARCH_MOBILE)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_bias_portrait_x, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_video_viewport_bias_portrait_y, MENU_ENUM_SUBLABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y)
#endif
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_use_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_USE_MITM_SERVER)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_MITM_SERVER)
DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_netplay_custom_mitm_server, MENU_ENUM_SUBLABEL_NETPLAY_CUSTOM_MITM_SERVER)
@ -2570,6 +2576,20 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_aspect_ratio);
break;
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_bias_x);
break;
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_bias_y);
break;
#if defined(RARCH_MOBILE)
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_bias_portrait_x);
break;
case MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_viewport_bias_portrait_y);
break;
#endif
case MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_video_aspect_ratio_index);
break;

View File

@ -9801,6 +9801,24 @@ unsigned menu_displaylist_build_list(
MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER_OVERSCALE,
PARSE_ONLY_BOOL, false) == 0)
count++;
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
PARSE_ONLY_FLOAT, false) == 0)
count++;
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
PARSE_ONLY_FLOAT, false) == 0)
count++;
#if defined(RARCH_MOBILE)
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
PARSE_ONLY_FLOAT, false) == 0)
count++;
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
PARSE_ONLY_FLOAT, false) == 0)
count++;
#endif
if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list,
MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO_INDEX,
PARSE_ONLY_UINT, false) == 0)

View File

@ -12929,6 +12929,84 @@ static bool setting_append_list(
END_SUB_GROUP(list, list_info, parent_group);
START_SUB_GROUP(list, list_info, "Aspect", &group_info, &subgroup_info, parent_group);
CONFIG_FLOAT(
list, list_info,
&settings->floats.video_viewport_bias_x,
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_X,
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_X,
DEFAULT_VIEWPORT_BIAS_X,
"%.2f",
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.05, true, true);
(*list)[list_info->index - 1].offset_by = 0;
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info,
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED);
CONFIG_FLOAT(
list, list_info,
&settings->floats.video_viewport_bias_y,
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_Y,
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_Y,
DEFAULT_VIEWPORT_BIAS_Y,
"%.2f",
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.05, true, true);
(*list)[list_info->index - 1].offset_by = 0;
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info,
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED);
#if defined(RARCH_MOBILE)
CONFIG_FLOAT(
list, list_info,
&settings->floats.video_viewport_bias_portrait_x,
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_X,
DEFAULT_VIEWPORT_BIAS_PORTRAIT_X,
"%.2f",
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.05, true, true);
(*list)[list_info->index - 1].offset_by = 0;
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info,
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED);
CONFIG_FLOAT(
list, list_info,
&settings->floats.video_viewport_bias_portrait_y,
MENU_ENUM_LABEL_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
MENU_ENUM_LABEL_VALUE_VIDEO_VIEWPORT_BIAS_PORTRAIT_Y,
DEFAULT_VIEWPORT_BIAS_PORTRAIT_Y,
"%.2f",
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
menu_settings_list_current_add_range(list, list_info, 0.0, 1.0, 0.05, true, true);
(*list)[list_info->index - 1].offset_by = 0;
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ALLOW_INPUT);
MENU_SETTINGS_LIST_CURRENT_ADD_CMD(list, list_info,
CMD_EVENT_VIDEO_APPLY_STATE_CHANGES);
SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_LAKKA_ADVANCED);
#endif
CONFIG_UINT(
list, list_info,
&settings->uints.video_aspect_ratio_idx,

View File

@ -3385,6 +3385,12 @@ enum msg_hash_enums
MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_TOP),
MENU_LABEL(VIDEO_OVERSCAN_CORRECTION_BOTTOM),
MENU_LABEL(VIDEO_ASPECT_RATIO),
MENU_LABEL(VIDEO_VIEWPORT_BIAS_X),
MENU_LABEL(VIDEO_VIEWPORT_BIAS_Y),
#if defined(RARCH_MOBILE)
MENU_LABEL(VIDEO_VIEWPORT_BIAS_PORTRAIT_X),
MENU_LABEL(VIDEO_VIEWPORT_BIAS_PORTRAIT_Y),
#endif
MENU_LABEL(VIDEO_FORCE_ASPECT),
MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO),
MENU_LABEL(VIDEO_ASPECT_RATIO_INDEX),