Skip to content

Commit ca03fb7

Browse files
committed
Improve preferred render mode selection
1 parent 3dc663e commit ca03fb7

1 file changed

Lines changed: 60 additions & 46 deletions

File tree

libogc/video.c

Lines changed: 60 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3522,73 +3522,87 @@ GXRModeObj * VIDEO_GetPreferredMode(GXRModeObj *mode)
35223522
static GXRModeObj *rmode = NULL;
35233523

35243524
if (rmode == NULL) {
3525+
u32 tvMode = VIDEO_GetCurrentTvMode();
3526+
u32 scanMode = VIDEO_GetScanMode();
3527+
35253528
#if defined(HW_RVL)
3526-
u32 tvmode = CONF_GetVideo();
3527-
if (CONF_GetProgressiveScan() > 0 && VIDEO_HaveComponentCable()) {
3528-
switch (tvmode) {
3529-
case CONF_VIDEO_PAL:
3530-
if (CONF_GetEuRGB60() > 0)
3531-
rmode = &TVEurgb60Hz480Prog;
3532-
else
3533-
rmode = &TVPal576ProgScale;
3534-
break;
3535-
default:
3536-
rmode = &TVNtsc480Prog;
3529+
if (CONF_GetProgressiveScan() > 0 && VIDEO_HaveComponentCable())
3530+
scanMode = VI_PROGRESSIVE;
3531+
3532+
switch (CONF_GetVideo()) {
3533+
case CONF_VIDEO_NTSC:
3534+
tvMode = VI_NTSC;
3535+
break;
3536+
case CONF_VIDEO_PAL:
3537+
if (CONF_GetEuRGB60() > 0)
3538+
tvMode = VI_EURGB60;
3539+
else
3540+
tvMode = VI_PAL;
3541+
break;
3542+
case CONF_VIDEO_MPAL:
3543+
if (VIDEO_HaveComponentCable())
3544+
tvMode = VI_NTSC;
3545+
else
3546+
tvMode = VI_MPAL;
3547+
break;
3548+
}
3549+
#else
3550+
if (SYS_GetProgressiveScan() && VIDEO_HaveComponentCable())
3551+
scanMode = VI_PROGRESSIVE;
3552+
3553+
if (tvMode == VI_NTSC) {
3554+
switch (SYS_GetVideoMode()) {
3555+
case SYS_VIDEO_NTSC:
3556+
tvMode = VI_NTSC;
35373557
break;
3538-
}
3539-
} else {
3540-
switch (tvmode) {
3541-
case CONF_VIDEO_PAL:
3542-
if (CONF_GetEuRGB60() > 0)
3543-
rmode = &TVEurgb60Hz480IntDf;
3558+
case SYS_VIDEO_PAL:
3559+
if (SYS_GetEuRGB60())
3560+
tvMode = VI_EURGB60;
35443561
else
3545-
rmode = &TVPal576IntDfScale;
3562+
tvMode = VI_PAL;
35463563
break;
3547-
case CONF_VIDEO_MPAL:
3564+
case SYS_VIDEO_MPAL:
35483565
if (VIDEO_HaveComponentCable())
3549-
rmode = &TVNtsc480IntDf;
3566+
tvMode = VI_NTSC;
35503567
else
3551-
rmode = &TVMpal480IntDf;
3552-
break;
3553-
default:
3554-
rmode = &TVNtsc480IntDf;
3568+
tvMode = VI_MPAL;
35553569
break;
35563570
}
3557-
}
3558-
#else
3559-
u32 tvmode = SYS_GetVideoMode();
3560-
if (SYS_GetProgressiveScan() && VIDEO_HaveComponentCable()) {
3561-
switch (tvmode) {
3562-
case SYS_VIDEO_PAL:
3563-
if (SYS_GetEuRGB60())
3564-
rmode = &TVEurgb60Hz480Prog;
3565-
else
3566-
rmode = &TVPal576ProgScale;
3571+
} else if (tvMode == VI_PAL && SYS_GetEuRGB60()) tvMode = VI_EURGB60;
3572+
#endif
3573+
if (scanMode == VI_PROGRESSIVE) {
3574+
switch (tvMode) {
3575+
case VI_PAL:
3576+
case VI_DEBUG_PAL:
3577+
rmode = &TVPal576ProgScale;
3578+
break;
3579+
case VI_EURGB60:
3580+
rmode = &TVEurgb60Hz480Prog;
3581+
break;
3582+
case VI_MPAL:
3583+
rmode = &TVMpal480Prog;
35673584
break;
35683585
default:
35693586
rmode = &TVNtsc480Prog;
35703587
break;
35713588
}
35723589
} else {
3573-
switch (tvmode) {
3574-
case SYS_VIDEO_PAL:
3575-
if (SYS_GetEuRGB60())
3576-
rmode = &TVEurgb60Hz480IntDf;
3577-
else
3578-
rmode = &TVPal576IntDfScale;
3590+
switch (tvMode) {
3591+
case VI_PAL:
3592+
case VI_DEBUG_PAL:
3593+
rmode = &TVPal576IntDfScale;
35793594
break;
3580-
case SYS_VIDEO_MPAL:
3581-
if (VIDEO_HaveComponentCable())
3582-
rmode = &TVNtsc480IntDf;
3583-
else
3584-
rmode = &TVMpal480IntDf;
3595+
case VI_EURGB60:
3596+
rmode = &TVEurgb60Hz480IntDf;
3597+
break;
3598+
case VI_MPAL:
3599+
rmode = &TVMpal480IntDf;
35853600
break;
35863601
default:
35873602
rmode = &TVNtsc480IntDf;
35883603
break;
35893604
}
35903605
}
3591-
#endif
35923606
}
35933607

35943608
if (mode != NULL) {

0 commit comments

Comments
 (0)