@@ -3025,79 +3025,86 @@ f32 VIDEO_GetAspectRatio(void)
30253025
30263026GXRModeObj * VIDEO_GetPreferredMode (GXRModeObj * mode )
30273027{
3028+ static GXRModeObj * rmode = NULL ;
30283029
3029- GXRModeObj * rmode = NULL ;
3030-
3030+ if (rmode == NULL ) {
30313031#if defined(HW_RVL )
3032- u32 tvmode = CONF_GetVideo ();
3033- if (CONF_GetProgressiveScan () > 0 && VIDEO_HaveComponentCable ()) {
3034- switch (tvmode ) {
3035- case CONF_VIDEO_PAL :
3036- if (CONF_GetEuRGB60 () > 0 )
3037- rmode = & TVEurgb60Hz480Prog ;
3038- else rmode = & TVPal576ProgScale ;
3039- break ;
3040- default :
3041- rmode = & TVNtsc480Prog ;
3042- break ;
3043- }
3044- } else {
3045- switch (tvmode ) {
3046- case CONF_VIDEO_PAL :
3047- if (CONF_GetEuRGB60 () > 0 )
3048- rmode = & TVEurgb60Hz480IntDf ;
3049- else rmode = & TVPal576IntDfScale ;
3050- break ;
3051- case CONF_VIDEO_MPAL :
3052- if (VIDEO_HaveComponentCable ())
3032+ u32 tvmode = CONF_GetVideo ();
3033+ if (CONF_GetProgressiveScan () > 0 && VIDEO_HaveComponentCable ()) {
3034+ switch (tvmode ) {
3035+ case CONF_VIDEO_PAL :
3036+ if (CONF_GetEuRGB60 () > 0 )
3037+ rmode = & TVEurgb60Hz480Prog ;
3038+ else
3039+ rmode = & TVPal576ProgScale ;
3040+ break ;
3041+ default :
3042+ rmode = & TVNtsc480Prog ;
3043+ break ;
3044+ }
3045+ } else {
3046+ switch (tvmode ) {
3047+ case CONF_VIDEO_PAL :
3048+ if (CONF_GetEuRGB60 () > 0 )
3049+ rmode = & TVEurgb60Hz480IntDf ;
3050+ else
3051+ rmode = & TVPal576IntDfScale ;
3052+ break ;
3053+ case CONF_VIDEO_MPAL :
3054+ if (VIDEO_HaveComponentCable ())
3055+ rmode = & TVNtsc480IntDf ;
3056+ else
3057+ rmode = & TVMpal480IntDf ;
3058+ break ;
3059+ default :
30533060 rmode = & TVNtsc480IntDf ;
3054- else rmode = & TVMpal480IntDf ;
3055- break ;
3056- default :
3057- rmode = & TVNtsc480IntDf ;
3058- break ;
3061+ break ;
3062+ }
30593063 }
3060- }
30613064#else
3062- u32 tvmode = SYS_GetVideoMode ();
3063- if (SYS_GetProgressiveScan () && VIDEO_HaveComponentCable ()) {
3064- switch (tvmode ) {
3065- case SYS_VIDEO_PAL :
3066- if (SYS_GetEuRGB60 ())
3067- rmode = & TVEurgb60Hz480Prog ;
3068- else rmode = & TVPal576ProgScale ;
3069- break ;
3070- default :
3071- rmode = & TVNtsc480Prog ;
3072- break ;
3073- }
3074- } else {
3075- switch (tvmode ) {
3076- case SYS_VIDEO_PAL :
3077- if (SYS_GetEuRGB60 ())
3078- rmode = & TVEurgb60Hz480IntDf ;
3079- else rmode = & TVPal576IntDfScale ;
3080- break ;
3081- case SYS_VIDEO_MPAL :
3082- if (VIDEO_HaveComponentCable ())
3065+ u32 tvmode = SYS_GetVideoMode ();
3066+ if (SYS_GetProgressiveScan () && VIDEO_HaveComponentCable ()) {
3067+ switch (tvmode ) {
3068+ case SYS_VIDEO_PAL :
3069+ if (SYS_GetEuRGB60 ())
3070+ rmode = & TVEurgb60Hz480Prog ;
3071+ else
3072+ rmode = & TVPal576ProgScale ;
3073+ break ;
3074+ default :
3075+ rmode = & TVNtsc480Prog ;
3076+ break ;
3077+ }
3078+ } else {
3079+ switch (tvmode ) {
3080+ case SYS_VIDEO_PAL :
3081+ if (SYS_GetEuRGB60 ())
3082+ rmode = & TVEurgb60Hz480IntDf ;
3083+ else
3084+ rmode = & TVPal576IntDfScale ;
3085+ break ;
3086+ case SYS_VIDEO_MPAL :
3087+ if (VIDEO_HaveComponentCable ())
3088+ rmode = & TVNtsc480IntDf ;
3089+ else
3090+ rmode = & TVMpal480IntDf ;
3091+ break ;
3092+ default :
30833093 rmode = & TVNtsc480IntDf ;
3084- else rmode = & TVMpal480IntDf ;
3085- break ;
3086- default :
3087- rmode = & TVNtsc480IntDf ;
3088- break ;
3094+ break ;
3095+ }
30893096 }
3090- }
30913097#endif
3098+ }
30923099
30933100 if (mode != NULL ) {
3094- rmode = memcpy (mode , rmode , sizeof (GXRModeObj ));
3095- rmode -> viWidth = 704 ;
3096- rmode -> viXOrigin = 8 ;
3101+ mode = memcpy (mode , rmode , sizeof (GXRModeObj ));
3102+ mode -> viWidth = 704 ;
3103+ mode -> viXOrigin = 8 ;
3104+ return mode ;
30973105 }
30983106
30993107 return rmode ;
3100-
31013108}
31023109
31033110VIRetraceCallback VIDEO_SetPreRetraceCallback (VIRetraceCallback callback )
0 commit comments