From c3fab62714303627818a535ec2337f878d6adfaa Mon Sep 17 00:00:00 2001 From: pagefault <> Date: Wed, 29 Mar 2006 20:10:45 +0000 Subject: [PATCH] Fixed NTSC filter bugs --- zsnes/src/gui/guimouse.inc | 3 ++- zsnes/src/win/winlink.cpp | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) 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();