diff --git a/config.def.h b/config.def.h index 16ea6a698e..223c83965f 100644 --- a/config.def.h +++ b/config.def.h @@ -168,6 +168,8 @@ #define DEFAULT_CRT_SWITCH_PORCH_ADJUST 0 +#define DEFAULT_CRT_SWITCH_VERTICAL_ADJUST 0 + #define DEFAULT_CRT_SWITCH_HIRES_MENU true #define DEFAULT_HISTORY_LIST_ENABLE true diff --git a/configuration.c b/configuration.c index 8b96508b90..492188ce99 100644 --- a/configuration.c +++ b/configuration.c @@ -2687,6 +2687,7 @@ static struct config_int_setting *populate_settings_int( SETTING_INT("crt_switch_center_adjust", &settings->ints.crt_switch_center_adjust, false, DEFAULT_CRT_SWITCH_CENTER_ADJUST, false); SETTING_INT("crt_switch_porch_adjust", &settings->ints.crt_switch_porch_adjust, false, DEFAULT_CRT_SWITCH_PORCH_ADJUST, false); + SETTING_INT("crt_switch_porch_adjust", &settings->ints.crt_switch_porch_adjust, false, DEFAULT_CRT_SWITCH_VERTICAL_ADJUST, false); #ifdef HAVE_WINDOW_OFFSET SETTING_INT("video_window_offset_x", &settings->ints.video_window_offset_x, true, DEFAULT_WINDOW_OFFSET_X, false); SETTING_INT("video_window_offset_y", &settings->ints.video_window_offset_y, true, DEFAULT_WINDOW_OFFSET_Y, false); diff --git a/configuration.h b/configuration.h index 053ea2a93a..5e5a58c8a7 100644 --- a/configuration.h +++ b/configuration.h @@ -114,6 +114,7 @@ typedef struct settings int replay_slot; int crt_switch_center_adjust; int crt_switch_porch_adjust; + int crt_switch_vertical_adjust; #ifdef HAVE_VULKAN int vulkan_gpu_index; #endif diff --git a/intl/msg_hash_en.h b/intl/msg_hash_en.h index 1651f83b1b..cb0b82b845 100644 --- a/intl/msg_hash_en.h +++ b/intl/msg_hash_en.h @@ -231,12 +231,16 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_X_AXIS_CENTERING, - "X-Axis Centring" + "Horizontal Centring" ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING, "Cycle through these options if the image is not centred properly on the display." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_VERTICAL_ADJUST, + "Vertical Centring" + ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_HIRES_MENU, "Switch to high resolution mode-line for use with high-resolution menus when no content is loaded." diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index a9da32453f..0e3b53ea52 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -4148,11 +4148,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_CRT_SWITCH_X_AXIS_CENTERING, - "crt_switch_center_adjust" + "crt_switch_horizontal_shift" ) MSG_HASH( MENU_ENUM_LABEL_CRT_SWITCH_PORCH_ADJUST, - "crt_switch_porch_adjust" + "crt_switch_horizontal_size" + ) +MSG_HASH( + MENU_ENUM_LABEL_CRT_SWITCH_VERTICAL_ADJUST, + "crt_switch_vertical_size" ) MSG_HASH( MENU_ENUM_LABEL_VIDEO_ASPECT_RATIO, diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 49449d9f65..60f86d2830 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -2171,7 +2171,7 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_X_AXIS_CENTERING, - "X-Axis Centering" + "Horizontal Centering" ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING, @@ -2179,11 +2179,15 @@ MSG_HASH( ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_PORCH_ADJUST, - "Porch Adjust" + "Horizontal Size" ) MSG_HASH( MENU_ENUM_SUBLABEL_CRT_SWITCH_PORCH_ADJUST, - "Cycle through these options to adjust the porch settings to change the image size." + "Cycle through these options to adjust the horizontal settings to change the image size." + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_VERTICAL_ADJUST, + "Vertical Size" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_CRT_SWITCH_HIRES_MENU, diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 771b645cd2..acbedc5fe7 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -251,6 +251,7 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_hdr_expand_gamut, MENU_ENUM_SUB DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_crt_switchres_super, MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_SUPER) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_crt_switchres_x_axis_centering, MENU_ENUM_SUBLABEL_CRT_SWITCH_X_AXIS_CENTERING) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_crt_switchres_porch_adjust, MENU_ENUM_SUBLABEL_CRT_SWITCH_PORCH_ADJUST) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_crt_switchres_vertical_adjust, MENU_ENUM_SUBLABEL_CRT_SWITCH_VERTICAL_ADJUST) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_crt_switchres_use_custom_refresh_rate, MENU_ENUM_SUBLABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_crt_switchres_hires_menu, MENU_ENUM_SUBLABEL_CRT_SWITCH_HIRES_MENU) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_driver_settings_list, MENU_ENUM_SUBLABEL_DRIVER_SETTINGS) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index c89b86cc9c..95415069d9 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -10088,6 +10088,7 @@ unsigned menu_displaylist_build_list( {MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_SUPER, PARSE_ONLY_UINT}, {MENU_ENUM_LABEL_CRT_SWITCH_X_AXIS_CENTERING, PARSE_ONLY_INT }, {MENU_ENUM_LABEL_CRT_SWITCH_PORCH_ADJUST, PARSE_ONLY_INT }, + {MENU_ENUM_LABEL_CRT_SWITCH_VERTICAL_ADJUST, PARSE_ONLY_INT }, {MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE, PARSE_ONLY_BOOL}, {MENU_ENUM_LABEL_CRT_SWITCH_HIRES_MENU, PARSE_ONLY_BOOL}, }; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 8758048ed1..738a22bbde 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -14094,7 +14094,7 @@ static bool setting_append_list( (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; (*list)[list_info->index - 1].offset_by = -3; SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ADVANCED); - menu_settings_list_current_add_range(list, list_info, -3, 4, 1.0, true, true); + menu_settings_list_current_add_range(list, list_info, -20, 20, 2.0, true, true); CONFIG_INT( list, list_info, @@ -14111,7 +14111,24 @@ static bool setting_append_list( (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; (*list)[list_info->index - 1].offset_by = 0; SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ADVANCED); - menu_settings_list_current_add_range(list, list_info, -20, 20, 1.0, true, true); + menu_settings_list_current_add_range(list, list_info, -50, 50, 2.0, true, true); + + CONFIG_INT( + list, list_info, + &settings->ints.crt_switch_vertical_adjust, + MENU_ENUM_LABEL_CRT_SWITCH_VERTICAL_ADJUST, + MENU_ENUM_LABEL_VALUE_CRT_SWITCH_VERTICAL_ADJUST, + DEFAULT_CRT_SWITCH_VERTICAL_ADJUST, + &group_info, + &subgroup_info, + parent_group, + general_write_handler, + general_read_handler); + (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_SPINBOX; + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + (*list)[list_info->index - 1].offset_by = 0; + SETTINGS_DATA_LIST_CURRENT_ADD_FLAGS(list, list_info, SD_FLAG_ADVANCED); + menu_settings_list_current_add_range(list, list_info, -10, 10, 2.0, true, true); CONFIG_BOOL( list, list_info, diff --git a/msg_hash.h b/msg_hash.h index 95b4b85a7a..db7e766ade 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -1394,6 +1394,7 @@ enum msg_hash_enums MENU_LABEL(CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE), MENU_LABEL(CRT_SWITCH_X_AXIS_CENTERING), MENU_LABEL(CRT_SWITCH_PORCH_ADJUST), + MENU_LABEL(CRT_SWITCH_VERTICAL_ADJUST), MENU_LABEL(VIDEO_FONT_ENABLE), MENU_LABEL(VIDEO_FONT_PATH), MENU_LABEL(VIDEO_FONT_SIZE), diff --git a/ui/drivers/qt/qt_options.cpp b/ui/drivers/qt/qt_options.cpp index 50f0754577..2c07dc730a 100644 --- a/ui/drivers/qt/qt_options.cpp +++ b/ui/drivers/qt/qt_options.cpp @@ -1574,6 +1574,7 @@ QWidget *CrtSwitchresPage::widget() layout->add(menu_setting_find_enum(MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION)); layout->addRow(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CRT_SWITCH_RESOLUTION_SUPER), m_crtSuperResolutionCombo); layout->add(menu_setting_find_enum(MENU_ENUM_LABEL_CRT_SWITCH_X_AXIS_CENTERING)); + layout->add(menu_setting_find_enum(MENU_ENUM_LABEL_CRT_SWITCH_VERTICAL_ADJUST)); layout->add(menu_setting_find_enum(MENU_ENUM_LABEL_CRT_SWITCH_RESOLUTION_USE_CUSTOM_REFRESH_RATE)); connect(m_crtSuperResolutionCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onCrtSuperResolutionComboIndexChanged(int)));