From e6e2a3305ee141815ee263298234c9bc5a9daa7a Mon Sep 17 00:00:00 2001 From: marqs Date: Fri, 5 Jun 2026 00:27:21 +0300 Subject: [PATCH] better support for GBI Line3x generic --- software/sys_controller/src/video_modes.c | 7 ++++++- software/sys_controller/src/video_modes_list.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/software/sys_controller/src/video_modes.c b/software/sys_controller/src/video_modes.c index 81c83d2..63c3567 100644 --- a/software/sys_controller/src/video_modes.c +++ b/software/sys_controller/src/video_modes.c @@ -154,7 +154,7 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm switch (mode_preset->group) { case GROUP_384P: //fixed Line2x/3x mode for 240x360p/400p - valid_lm[2] = MODE_L3_GEN_16_9; + valid_lm[2] = MODE_L3_GEN_16_9 | MODE_L3_GEN_4_3; valid_lm[3] = MODE_L2_240x360; valid_lm[4] = MODE_L3_240x360; if ((!vm_in->timings.h_total) && (mode_preset->timings.v_total == 449)) { @@ -316,6 +316,11 @@ int get_pure_lm_mode(avconfig_t *cc, mode_data_t *vm_in, mode_data_t *vm_out, vm } break; case MODE_L3_GEN_4_3: + // Upsample by 3x on GBI Line3x generic + if (mode_preset->group == GROUP_384P) { + vmode_hv_mult(vm_in, 3, 1); + vmode_hv_mult(vm_out, 3, 1); + } vm_conf->x_size = vm_out->timings.h_active-2*vm_in->mask.h; vm_out->timings.h_synclen /= 3; vm_out->timings.h_backporch /= 3; diff --git a/software/sys_controller/src/video_modes_list.c b/software/sys_controller/src/video_modes_list.c index ebb5f86..a8cc91e 100644 --- a/software/sys_controller/src/video_modes_list.c +++ b/software/sys_controller/src/video_modes_list.c @@ -40,7 +40,7 @@ const mode_data_t video_modes_plm_default[] = { { "256x240LB", HDMI_Unknown, { 256, 240, 5000, 341, 0, 312, 39, 41, 25, 3, 0}, DEF_PHASE, {{ 0, 0}}, VIDEO_SDTV, GROUP_288P, (MODE_L2_256_COL | MODE_L3_256_COL | MODE_L4_256_COL | MODE_L5_256_COL | MODE_L6_256_COL), }, { "288p", HDMI_288p50, { 720, 288, 5008, 864, 0, 312, 69, 19, 63, 3, 0}, DEF_PHASE, {{ 0, 0}}, VIDEO_SDTV, GROUP_288P, (MODE_PT | MODE_L2), }, /* 360p: GBI */ - { "480x360", HDMI_Unknown, { 480, 360, 6000, 600, 0, 375, 63, 10, 38, 3, 0}, DEF_PHASE, {{ 0, 0}}, VIDEO_EDTV, GROUP_384P, (MODE_PT | MODE_L2), }, + { "480x360", HDMI_Unknown, { 480, 360, 6000, 600, 0, 375, 63, 10, 38, 3, 0}, DEF_PHASE, {{ 0, 0}}, VIDEO_EDTV, GROUP_384P, (MODE_PT | MODE_L2 | MODE_L3_GEN_4_3), }, { "240x360", HDMI_Unknown, { 240, 360, 6000, 300, 0, 375, 32, 10, 18, 3, 0}, DEF_PHASE, {{ 0, 0}}, VIDEO_EDTV, GROUP_384P, (MODE_L2_240x360 | MODE_L3_240x360), }, /* 384p: Sega Model 2 */ { "384p", HDMI_Unknown, { 496, 384, 5500, 640, 0, 423, 50, 29, 62, 3, 0}, DEF_PHASE, {{ 0, 0}}, VIDEO_EDTV, GROUP_384P, (MODE_PT | MODE_L2), },