diff --git a/source/gcvideo.cpp b/source/gcvideo.cpp index 2b6f948..a935d3a 100644 --- a/source/gcvideo.cpp +++ b/source/gcvideo.cpp @@ -190,8 +190,6 @@ static GXRModeObj NTSC_240p = } }; -static GXRModeObj TV_Custom; - /* TV Modes table */ static GXRModeObj *tvmodes[2] = { &NTSC_240p, &PAL_240p @@ -607,6 +605,21 @@ InitGCVideo () GX_SetCullMode (GX_CULL_NONE); } +void ResetFbWidth(int width, GXRModeObj *rmode) +{ + if(rmode->fbWidth == width) + return; + + rmode->fbWidth = width; + + if(rmode != vmode) + return; + + GX_InvVtxCache(); + VIDEO_Configure(rmode); + VIDEO_Flush(); +} + /**************************************************************************** * ResetVideo_Emu * @@ -630,12 +643,10 @@ ResetVideo_Emu () { rmode = FindVideoMode(); - if (!GCSettings.widescreen) - { - memcpy(&TV_Custom, rmode, sizeof(TV_Custom)); - rmode = &TV_Custom; - rmode->fbWidth = 512; - } + if (GCSettings.widescreen) + ResetFbWidth(640, rmode); + else + ResetFbWidth(512, rmode); UpdateSampleRate(48130); SetSampleRate(); diff --git a/source/menu.cpp b/source/menu.cpp index 8b23526..fd45e2a 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -3810,12 +3810,7 @@ MainMenu (int menu) gameScreenImg = new GuiImage(gameScreen); gameScreenImg->SetAlpha(192); gameScreenImg->ColorStripe(30); - - if (GCSettings.render > 0 && !GCSettings.widescreen) - gameScreenImg->SetScaleX(screenwidth/(vmode->fbWidth*0.8)); - else - gameScreenImg->SetScaleX(screenwidth/(float)vmode->fbWidth); - + gameScreenImg->SetScaleX(screenwidth/(float)vmode->fbWidth); gameScreenImg->SetScaleY(screenheight/(float)vmode->efbHeight); } else