diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index 264e329c..3537dfe5 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -20,6 +20,7 @@ %ifdef __WIN32__ EXTSYM MinimizeWindow +EXTSYM initwinvideo %endif SECTION .bss @@ -2541,7 +2542,7 @@ DisplayGUIVideoClick: cmp byte[GUINTVID+ebx],0 je near .nontscfilter FilterExcl 115,173,En2xSaI,hqFilter,scanlines,cfgscanline,antienab,cfginterp,BilinearFilter - GUIClickCButton5 115,173,byte[NTSCFilter],1 + GUIClickCButtonf 115,173,byte[NTSCFilter],initwinvideo .nontscfilter %ifdef __UNIXSDL__ xor ebx,ebx ; bilinear diff --git a/zsnes/src/win/winlink.cpp b/zsnes/src/win/winlink.cpp index 763d3feb..84a029ca 100644 --- a/zsnes/src/win/winlink.cpp +++ b/zsnes/src/win/winlink.cpp @@ -1401,6 +1401,7 @@ DWORD SMode=0; DWORD DSMode=0; DWORD NTSCMode=0; DWORD prevHQMode=~0; +DWORD prevNTSCMode=0; DWORD prevScanlines=~0; WORD Refresh = 0; extern "C" BYTE GUIWFVID[]; @@ -1866,10 +1867,11 @@ void initwinvideo(void) if ( GUIHQ4X[cvidmode] != 0 ) HQMode=4; } - if ((CurMode!=cvidmode) || (prevHQMode!=HQMode)) + if ((CurMode!=cvidmode) || (prevHQMode!=HQMode) || (prevNTSCMode!=NTSCFilter)) { CurMode=cvidmode; prevHQMode=HQMode; + prevNTSCMode=NTSCFilter; newmode=1; SurfaceX=256; SurfaceY=240; @@ -1969,8 +1971,10 @@ void initwinvideo(void) SurfaceX = 512; else SurfaceX = 640; + SurfaceY=480; - if (NTSCMode) + + if (NTSCMode && NTSCFilter) { if (!FullScreen) { @@ -2510,6 +2514,8 @@ void drawscreenwin(void) if (prevHQMode!=HQMode) initwinvideo(); + if (prevNTSCMode != NTSCFilter) initwinvideo(); + if (prevScanlines != scanlines) { initwinvideo();