From 3bbe626f6841c9a58eb1b5671c11037f29d04b58 Mon Sep 17 00:00:00 2001 From: grinvader <> Date: Thu, 23 Mar 2006 11:58:16 +0000 Subject: [PATCH] Forgot to fix the hq soft screen refresh when using the hotkey, done. You can now switch from any filter to any other without restriction using either mouse or keyb. Fixed a case where switching modes with alt-enter could cause a crash. NTSC filter option limited to video modes likely to support it first. Set minimum rewind interval to 200ms - dividing by zero blows, man. Some comments and cleanup. --- zsnes/src/dos/dosintrf.asm | 42 +++--- zsnes/src/gui/gui.asm | 23 ++- zsnes/src/gui/guikeys.inc | 136 ++++++++--------- zsnes/src/gui/guimouse.inc | 274 ++++++++++++++++++----------------- zsnes/src/gui/guiwindp.inc | 122 +++++++--------- zsnes/src/linux/sdlintrf.asm | 51 ++++--- zsnes/src/linux/sw_draw.c | 4 +- zsnes/src/win/winintrf.asm | 50 +++---- 8 files changed, 340 insertions(+), 362 deletions(-) diff --git a/zsnes/src/dos/dosintrf.asm b/zsnes/src/dos/dosintrf.asm index d5db2939..a763926a 100644 --- a/zsnes/src/dos/dosintrf.asm +++ b/zsnes/src/dos/dosintrf.asm @@ -949,27 +949,27 @@ db ' ',0 ; Video Mode Feature Availability (1 = Available, 0 = Not Available) ; Left side starts with Video Mode 0 ; 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 -NEWSYM GUI16VID, db 0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 ; 16-bit mode -NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0 ; New Graphics Mode Available -NEWSYM GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0 ; Scanlines -NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0 ; Interpolation -NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 ; Eagle -NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,1,0 ; (Interp | Eagle) -NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0 ; Full Screen -NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0 ; (Full Scr. | Wide Scr.) -NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0 ; Small Screen -NEWSYM GUITBVID, db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0 ; Triple Buffering -NEWSYM GUIHSVID, db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0 ; Half/Quarter Scanlines -NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ; 2xSaI/Super Eagle Engines -NEWSYM GUIWFVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; If Windows Full Screen -NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Super 2xSAI Engine -NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ; Hi-Resolution Mode 7 -NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Bilinear Filtering -NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win) -NEWSYM GUIHQ2X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; HQ2X Filter -NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; HQ3X Filter -NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; HQ4X Filter -NEWSYM GUINTSC, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; NTSC Filter +NEWSYM GUI16VID, db 0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 ; 16-bit mode +NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0 ; New Graphics Engine +NEWSYM GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,0,0,1,1,1,1,0 ; Scanlines +NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0 ; DOS Interpolation +NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 ; DOS Eagle +NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,1,0,1,0 ; DOS Eagle+Int +NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0 ; DOS Fullscreen +NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0 ; DOS Widescreen +NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0 ; DOS Smallscreen +NEWSYM GUITBVID, db 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0 ; DOS Triple Buffer +NEWSYM GUIHSVID, db 0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0 ; Half/Quarter Scanlines +NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ; 2xSaI/Super Engines +NEWSYM GUIWFVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Fullscreen) +NEWSYM GUII2VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Interpolation) +NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 ; Hires Mode 7 +NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (SDL Bilinear Filter) +NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Win Triple Buffer) +NEWSYM GUIHQ2X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (hq2x Filter) +NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (hq3x Filter) +NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (hq4x Filter) +NEWSYM GUINTVID, db 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0 ; NTSC Filter SECTION .text ; **************************** diff --git a/zsnes/src/gui/gui.asm b/zsnes/src/gui/gui.asm index 2bb3842c..40140bb2 100644 --- a/zsnes/src/gui/gui.asm +++ b/zsnes/src/gui/gui.asm @@ -88,13 +88,13 @@ EXTSYM NextLineCache,ResetTripleBuf,GUINGVID,ScanCodeListing EXTSYM AdjustFrequency,GUISaveVars,Init_Mouse,Get_MouseData,Set_MouseXMax EXTSYM Set_MouseYMax,Set_MousePosition,Get_MousePositionDisplacement,GUIInit EXTSYM GUIDeInit,SpecialLine,DrawWater,DrawBurn,SA1Enable,SA1RAMArea -EXTSYM MMXCheck,SaveCombFile,showinfogui +EXTSYM MMXCheck,SaveCombFile,showinfogui,GetDate,horizon_get EXTSYM ErrorPointer,MessageOn,GetTime,sndrot,regsbackup,GetScreen -EXTSYM GUITBWVID,Clear2xSaIBuffer,MouseWindow,cfgcvidmode +EXTSYM GUITBWVID,Clear2xSaIBuffer,MouseWindow,cfgcvidmode,cfgsoundon EXTSYM ExitFromGUI,GUIWFVID,cfgvsync,newgfx16b,cfgscanline,cfginterp EXTSYM NumVideoModes,cfgvolume,MusicVol,DSPMem,NumInputDevices,GUIInputNames EXTSYM GUIVideoModeNames,GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID,GUIWSVID -EXTSYM GUISSVID,GUITBVID,GUIHSVID,GUI2xVID,GUII2VID,GUIM7VID,cfgsoundon +EXTSYM GUISSVID,GUITBVID,GUIHSVID,GUI2xVID,GUII2VID,GUIM7VID,GUINTVID EXTSYM cfgSoundQuality,cfgStereoSound,cfgforce8b,convertnum,converthex,snesmouse EXTSYM pl1upk,pl1downk,pl1leftk,pl1rightk,pl1Lk,pl1Rk,pl1Ak,pl1Bk,outofmemfix EXTSYM yesoutofmemory,JoyX,JoyY,JoyMinX,JoyMinY,JoyMaxX,JoyMaxY,JoyMinX209 @@ -102,9 +102,9 @@ EXTSYM JoyMaxX209,JoyMinY209,JoyMaxY209,GetCoords,GetCoords3,MultiTap,SFXEnable EXTSYM RestoreSystemVars,GUIBIFIL,GUIHQ2X,GUIHQ3X,GUIHQ4X,firstsaveinc,nssdip1 EXTSYM nssdip2,nssdip3,nssdip4,nssdip5,nssdip6,SkipMovie,MovieStop,MoviePlay EXTSYM MovieRecord,MovieInsertChapter,MovieSeekAhead,MovieSeekBehind -EXTSYM ResetDuringMovie,MovieDumpRaw +EXTSYM ResetDuringMovie,MovieDumpRaw,AutoLoadCht -EXTSYM GUIwinposx,GUIwinposy,maxskip,GUIEffect,hqFilter,En2xSaI,AutoLoadCht +EXTSYM GUIwinposx,GUIwinposy,maxskip,GUIEffect,hqFilter,En2xSaI,NTSCFilter EXTSYM LowPassFilterType,MovieStartMethod,MovieDisplayFrame,resetposn EXTSYM SnapPath,SPCPath,BSXPath,SGPath,STPath,GNextPath,FEOEZPath,SJNSPath EXTSYM MDHPath,SPL4Path,CheatSrcByteSize,prevloadfnamel,prevloaddname @@ -139,8 +139,7 @@ EXTSYM GUIwinposy2,GUIwinposx2,AllowMultipleInst,Surround,SoundBufEn,SPCDisable EXTSYM GUIEnableTransp,FilteredGUI,MouseWheel,TrapMouseCursor,AlwaysOnTop EXTSYM pl1p209,pl1p209b,SaveMainWindowPos,FastFwdToggle,SidewinderFix,RaisePitch EXTSYM KeyDisplayBatt,PauseFocusChange,KeyIncreaseGamma,KeyDecreaseGamma -EXTSYM MovieVideoMode, MovieAudio, MovieVideoAudio, MovieAudioCompress -EXTSYM NTSCFilter,GUINTSC,GetDate, horizon_get +EXTSYM MovieVideoMode, MovieAudio,MovieVideoAudio,MovieAudioCompress %ifdef __UNIXSDL__ EXTSYM numlockptr @@ -998,22 +997,20 @@ NEWSYM StartGUI mov byte[En2xSaI],0 mov byte[hqFilter],0 .no2xSaIdis - cmp byte[En2xSaI],0 - je .no2xsaidis - mov byte[Triplebufen],0 -.no2xsaidis cmp byte[En2xSaI],0 je .no2xsaien + mov byte[Triplebufen],0 mov byte[hqFilter],0 mov byte[scanlines],0 mov byte[antienab],0 .no2xsaien cmp byte[hqFilter],0 - je .nohq + je .nohqen mov byte[En2xSaI],0 mov byte[scanlines],0 mov byte[antienab],0 -.nohq +.nohqen + mov ecx,64 mov eax,SpecialLine .slloop diff --git a/zsnes/src/gui/guikeys.inc b/zsnes/src/gui/guikeys.inc index 487a299b..ef362e05 100644 --- a/zsnes/src/gui/guikeys.inc +++ b/zsnes/src/gui/guikeys.inc @@ -119,7 +119,6 @@ mov %1,%2 %%clear ret -%%noclick %endmacro %macro GUIKeyCheckbox 2 @@ -1111,15 +1110,15 @@ GUIVideoKeys: cmp dword[GUIVideoTabs],2 jne near .notfilterstab + xor eax,eax mov al,[cvidmode] cmp byte[GUISLVID+eax],0 je .nofullscanlines cmp dh,'F' jne .nofullscanlines - cmp byte[En2xSaI],0 - jne .nofullscanlines - cmp byte[hqFilter],0 - jne .nofullscanlines + mov byte[En2xSaI],0 + mov byte[hqFilter],0 + mov byte[NTSCFilter],0 call ClearScreen GUIkeystoggleoptn byte[scanlines],1 %ifdef __MSDOS__ @@ -1142,37 +1141,19 @@ GUIVideoKeys: je near .noquarterscanlines cmp dh,'5' jne .nohalfscanlines - cmp byte[En2xSaI],0 - jne .nohalfscanlines - cmp byte[hqFilter],0 - jne .nohalfscanlines + mov byte[En2xSaI],0 + mov byte[hqFilter],0 + mov byte[NTSCFilter],0 call ClearScreen GUIkeystoggleoptn byte[scanlines],3 -%ifdef __MSDOS__ - ;cmp byte[cvidmode],2 - ;jne .nohalfscanlines - ;mov byte[cbitmode],1 - ;call initvideo2 - ;mov byte[cbitmode],0 - ;call GUISetPal -%endif .nohalfscanlines cmp dh,'2' jne .noquarterscanlines - cmp byte[En2xSaI],0 - jne .noquarterscanlines - cmp byte[hqFilter],0 - jne .noquarterscanlines + mov byte[En2xSaI],0 + mov byte[hqFilter],0 + mov byte[NTSCFilter],0 call ClearScreen GUIkeystoggleoptn byte[scanlines],2 -%ifdef __MSDOS__ - ;cmp byte[cvidmode],2 - ;jne .noquarterscanlines - ;mov byte[cbitmode],1 - ;call initvideo2 - ;mov byte[cbitmode],0 - ;call GUISetPal -%endif .noquarterscanlines cmp dh,'Q' jne .nohqfilter @@ -1186,6 +1167,9 @@ GUIVideoKeys: jne .hqfilter jmp .nohqfilter .hqfilter + pushad + call Clear2xSaIBuffer + popad xor byte[hqFilter],1 jz .nohqfilter mov byte[scanlines],0 @@ -1193,60 +1177,53 @@ GUIVideoKeys: mov byte[En2xSaI],0 mov byte[antienab],0 mov byte[cfginterp],0 + mov byte[NTSCFilter],0 .nohqfilter - cmp dh,'X' - jne .no2xsai - xor ebx,ebx - mov bl,[cvidmode] - cmp byte[GUI2xVID+ebx],0 - je near .no2xsai - pushad - call Clear2xSaIBuffer - popad - GUIkeystoggleoptn byte[En2xSaI],1 -.no2xsai - cmp dh,'E' - jne .nosupereagle - xor ebx,ebx - mov bl,[cvidmode] - cmp byte[GUI2xVID+ebx],0 - je near .nosupereagle - pushad - call Clear2xSaIBuffer - popad - GUIkeystoggleoptn byte[En2xSaI],2 -.nosupereagle - cmp dh,'S' - jne .nosuper2xsai xor ebx,ebx mov bl,[cvidmode] cmp byte[GUI2xVID+ebx],0 je near .nosuper2xsai + cmp dh,'X' + jne .no2xsai + GUIkeystoggleoptn byte[En2xSaI],1 + jmp .yesfilter +.no2xsai + cmp dh,'E' + jne .nosupereagle + GUIkeystoggleoptn byte[En2xSaI],2 + jmp .yesfilter +.nosupereagle + cmp dh,'S' + jne .nosuper2xsai + GUIkeystoggleoptn byte[En2xSaI],3 +.yesfilter + mov byte[hqFilter],0 + mov byte[scanlines],0 + mov byte[cfgscanline],0 + mov byte[antienab],0 + mov byte[cfginterp],0 + mov byte[NTSCFilter],0 pushad call Clear2xSaIBuffer popad - GUIkeystoggleoptn byte[En2xSaI],3 .nosuper2xsai - cmp dh,'I' - jne .nointerpolationwin - xor eax,eax - mov al,[cvidmode] - cmp byte[GUII2VID+eax],0 - je .nointerpolationwin - xor byte[antienab],1 - mov al,[antienab] - mov [cfginterp],al -.nointerpolationwin cmp dh,'I' jne .nointerpolation xor eax,eax mov al,[cvidmode] + cmp byte[GUII2VID+eax],0 + jne .interpolation cmp byte[GUIIEVID+eax],0 je .nointerpolation +.interpolation xor byte[antienab],1 mov al,[antienab] mov [cfginterp],al + mov byte[En2xSaI],0 + mov byte[hqFilter],0 + mov byte[NTSCFilter],0 .nointerpolation +%ifdef __MSDOS__ cmp dh,'C' jne .nofullscreen xor eax,eax @@ -1291,6 +1268,7 @@ GUIVideoKeys: pop ecx pop eax .nosmallscreen +%endif cmp dh,'H' jne .nohiresmode7 xor ebx,ebx @@ -1300,13 +1278,22 @@ GUIVideoKeys: xor byte[Mode7HiRes16b],1 .nohiresmode7 cmp dh,'N' - jne .nontscfilters + jne .nontscfilter xor ebx,ebx mov bl,[cvidmode] - cmp byte[GUINTSC+ebx],0 - je .nohiresmode7 + cmp byte[GUINTVID+ebx],0 + je .nontscfilter xor byte[NTSCFilter],1 -.nontscfilters + jz .nontscfilter + mov byte[En2xSaI],0 + mov byte[hqFilter],0 + mov byte[scanlines],0 + mov byte[cfgscanline],0 + mov byte[antienab],0 + mov byte[cfginterp],0 + mov byte[BilinearFilter],0 +.nontscfilter +%ifdef __UNIXSDL__ cmp dh,'B' jne .nobilinearfilter xor ebx,ebx @@ -1314,7 +1301,9 @@ GUIVideoKeys: cmp byte[GUIBIFIL+ebx],0 je .nobilinearfilter xor byte[BilinearFilter],1 + mov byte[NTSCFilter],0 .nobilinearfilter +%endif %ifdef __WIN32__ cmp dh,'T' jne .notriplebufferwin @@ -1342,10 +1331,6 @@ GUIVideoKeys: ; mov byte[cfgvsync],0 .notriplebuffer %endif - cmp dh,'G' - jne .nograyscale - xor byte[GrayscaleMode],1 -.nograyscale %ifndef __UNIXSDL__ cmp dh,'V' jne .novsync @@ -1357,12 +1342,15 @@ GUIVideoKeys: pushad call Clear2xSaIBuffer popad -%endif -%ifdef __MSDOS__ +%else ; mov byte[Triplebufen],0 %endif .novsync %endif + cmp dh,'G' + jne .nograyscale + xor byte[GrayscaleMode],1 +.nograyscale .notfilterstab cmp dword[GUIVideoTabs],3 diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index 6e28a9eb..5fab84a0 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -893,14 +893,6 @@ SECTION .text NEWSYM SwitchFullScreen pushad -; mov ecx,255*296 -; mov eax,[vidbufferofsb] -;.loop -; mov dword[eax],0FEFEFEFEh -; add eax,4 -; dec ecx -; jnz .loop - xor eax,eax mov al,[cvidmode] cmp byte[GUIWFVID+eax],0 @@ -1243,58 +1235,6 @@ GUIWinClicked: %%noclick %endmacro -%macro GUIClickCButton5 4 - cmp eax,%1+1 - jl %%noclick - cmp edx,%2+3 - jl %%noclick - cmp eax,%1+6 - jg %%noclick - cmp edx,%2+8 - jg %%noclick - cmp %3,%4 - jne %%set - xor %3,%4 - jmp %%clear -%%set - mov %3,%4 -%%clear - ret -%%noclick -%endmacro - -%macro GUIClickCButton6 4 - cmp eax,%1+1 - jl %%noclick - cmp edx,%2+3 - jl %%noclick - cmp eax,%1+6 - jg %%noclick - cmp edx,%2+8 - jg %%noclick - cmp %3,%4 - jne %%set - xor %3,%4 - jmp %%clear -%%set - mov %3,%4 - push eax - push ecx - mov eax,[vidbufferofsb] - mov ecx,288*128 -%%loop - mov dword[eax],0 - add eax,4 -; loop %%loop - dec ecx - jnz %%loop - pop ecx - pop eax -%%clear - ret -%%noclick -%endmacro - %macro GUIClickCButton4 5 cmp eax,%1+1 jl near %%noclick @@ -1334,6 +1274,57 @@ GUIWinClicked: %%noclick %endmacro +%macro GUIClickCButton5 4 + cmp eax,%1+1 + jl %%noclick + cmp edx,%2+3 + jl %%noclick + cmp eax,%1+6 + jg %%noclick + cmp edx,%2+8 + jg %%noclick + cmp %3,%4 + jne %%set + xor %3,%4 + jmp %%clear +%%set + mov %3,%4 +%%clear + ret +%%noclick +%endmacro + +%macro GUIClickCButton6 4 + cmp eax,%1+1 + jl %%noclick + cmp edx,%2+3 + jl %%noclick + cmp eax,%1+6 + jg %%noclick + cmp edx,%2+8 + jg %%noclick + cmp %3,%4 + jne %%set + xor %3,%4 + jmp %%clear +%%set + mov %3,%4 + push eax + push ecx + mov eax,[vidbufferofsb] + mov ecx,288*128 +%%loop + mov dword[eax],0 + add eax,4 + dec ecx + jnz %%loop + pop ecx + pop eax +%%clear + ret +%%noclick +%endmacro + %macro GUIClickCButtonfr 3 cmp eax,%1+1 jl %%noclick @@ -1400,21 +1391,6 @@ GUIWinClicked: %%noclick %endmacro -%macro GUIClickCButtonHQ 3 - cmp eax,%1+1 - jl %%noclick - cmp edx,%2+3 - jl %%noclick - cmp eax,%1+6 - jg %%noclick - cmp edx,%2+8 - jg %%noclick - xor %3,1 - jz %%noclick - mov byte[En2xSaI],0 -%%noclick -%endmacro - %macro GUIClickCButtonT 4 cmp eax,%1+1 jl %%noclick @@ -2186,6 +2162,23 @@ DisplayGUIMovieClick: %%skip %endmacro +%macro FilterExcl 3-* ; minX, minY, bytes to zero + cmp eax,%1+1 + jl near %%noclick + cmp edx,%2+3 + jl near %%noclick + cmp eax,%1+6 + jg %%noclick + cmp edx,%2+8 + jg %%noclick +%rotate 1 +%rep (%0-2) + %rotate 1 + mov byte[%1],0 +%endrep +%%noclick +%endmacro + %macro GUIPTabClick 4 ; minX, maxX, var, value cmp eax,%1+1 jl %%noclick @@ -2385,8 +2378,9 @@ DisplayGUIOptionClick: %endif ret + DisplayGUIVideoClick2: - cmp dword[GUIVideoTabs],1 ; modes + cmp dword[GUIVideoTabs],1 ; modes jne near .notmodestab2 push eax mov eax,[NumVideoModes] @@ -2418,67 +2412,39 @@ DisplayGUIVideoClick: cmp dword[GUIVideoTabs],2 ; filters jne near .notfilterstab - xor ebx,ebx + pushad + call Clear2xSaIBuffer + popad + call ClearScreen + xor ebx,ebx ; scanlines mov bl,[cvidmode] cmp byte[GUISLVID+ebx],0 je near .nocheckboxb %ifdef __UNIXSDL__ + FilterExcl 21,119,En2xSaI,hqFilter,NTSCFilter GUIClickCButton4 21,119,byte[scanlines],byte[cfgscanline],1 %else + FilterExcl 21,114,En2xSaI,hqFilter,NTSCFilter GUIClickCButton4 21,114,byte[scanlines],byte[cfgscanline],1 %endif .nocheckboxb - xor ebx,ebx - mov bl,[cvidmode] - cmp byte[GUITBVID+ebx],0 - je .nocheckboxttb - GUIClickCButtonT 11,163,byte[Triplebufen],byte[vsyncon] -.nocheckboxttb - GUIClickCButton 11,183,byte[GrayscaleMode] -%ifdef __WIN32__ - GUIClickCButtonf 115,183,byte[vsyncon],initDirectDraw - pushad - call Clear2xSaIBuffer - popad -%elifdef __MSDOS__ - GUIClickCButtonT 115,183,byte[vsyncon],byte[Triplebufen] -%endif - xor ebx,ebx - mov bl,[cvidmode] - cmp byte[GUIM7VID+ebx],0 - je .nocheckboxtm7 - GUIClickCButton5 11,173,byte[Mode7HiRes16b],1 -.nocheckboxtm7 - xor ebx,ebx - mov bl,[cvidmode] - cmp byte[GUIM7VID+ebx],0 - je .nontscfilter - GUIClickCButton5 115,173,byte[NTSCFilter],1 -.nontscfilter xor ebx,ebx mov bl,[cvidmode] cmp byte[GUIHSVID+ebx],0 je near .nohsline %ifdef __UNIXSDL__ + FilterExcl 61,119,En2xSaI,hqFilter,NTSCFilter + FilterExcl 101,119,En2xSaI,hqFilter,NTSCFilter GUIClickCButton4 61,119,byte[scanlines],byte[cfgscanline],3 GUIClickCButton4 101,119,byte[scanlines],byte[cfgscanline],2 %else + FilterExcl 61,114,En2xSaI,hqFilter,NTSCFilter + FilterExcl 101,114,En2xSaI,hqFilter,NTSCFilter GUIClickCButton4 61,114,byte[scanlines],byte[cfgscanline],3 GUIClickCButton4 101,114,byte[scanlines],byte[cfgscanline],2 %endif .nohsline -%ifdef __WIN32__ - xor ebx,ebx - mov bl,[cvidmode] - cmp byte[GUITBWVID+ebx],0 - je near .notriplebufferwin - GUIClickCButtonf 11,123,byte[TripleBufferWin],initDirectDraw - pushad - call Clear2xSaIBuffer - popad -.notriplebufferwin -%endif - xor ebx,ebx + xor ebx,ebx ; hq filters mov bl,[cvidmode] cmp byte[GUIHQ2X+ebx],0 jne .checkboxhq @@ -2488,32 +2454,39 @@ DisplayGUIVideoClick: jne .checkboxhq jmp .nocheckboxhq .checkboxhq - GUIClickCButtonHQ 115,163,byte[hqFilter] - pushad - call Clear2xSaIBuffer - popad + FilterExcl 115,163,En2xSaI,scanlines,cfgscanline,antienab,cfginterp,NTSCFilter + GUIClickCButton 115,163,byte[hqFilter] .nocheckboxhq - xor ebx,ebx + xor ebx,ebx ; 2xsai and supers mov bl,[cvidmode] cmp byte[GUI2xVID+ebx],0 je near .no2xSaI + FilterExcl 11,133,hqFilter,scanlines,cfgscanline,antienab,cfginterp,NTSCFilter + FilterExcl 11,143,hqFilter,scanlines,cfgscanline,antienab,cfginterp,NTSCFilter + FilterExcl 11,153,hqFilter,scanlines,cfgscanline,antienab,cfginterp,NTSCFilter GUIClickCButton6 11,133,byte[En2xSaI],1 GUIClickCButton6 11,143,byte[En2xSaI],2 GUIClickCButton6 11,153,byte[En2xSaI],3 .no2xSaI - xor ebx,ebx + xor ebx,ebx ; interpolations mov bl,[cvidmode] cmp byte[GUIIEVID+ebx],0 - je .nocheckbox1b + je near .nocheckbox1b + mov byte[En2xSaI],0 + mov byte[hqFilter],0 + mov byte[NTSCFilter],0 + FilterExcl 11,78,hqFilter,NTSCFilter,En2xSaI GUIClickCButton3 11,78,byte[antienab],byte[cfginterp],1 .nocheckbox1b xor ebx,ebx mov bl,[cvidmode] - cmp byte[GUIBIFIL+ebx],0 - je .nocheckbox1bf - GUIClickCButton 11,163,byte[BilinearFilter] -.nocheckbox1bf - xor ebx,ebx + cmp byte[GUII2VID+ebx],0 + je near .nocheckboxi2 + FilterExcl 11,163,hqFilter,NTSCFilter,En2xSaI + GUIClickCButton3 11,163,byte[antienab],byte[cfginterp],1 +.nocheckboxi2 +%ifdef __MSDOS__ + xor ebx,ebx ; small/fullscreen mov bl,[cvidmode] cmp byte[GUIFSVID+ebx],0 je .nocheckbox2b @@ -2525,12 +2498,47 @@ DisplayGUIVideoClick: je .nocheckbox3b GUIClickCButton3 11,98,byte[smallscreenon],byte[GUIsmallscreenon],1 .nocheckbox3b +%endif + xor ebx,ebx ; hires m7 + mov bl,[cvidmode] + cmp byte[GUIM7VID+ebx],0 + je .nocheckboxtm7 + GUIClickCButton5 11,173,byte[Mode7HiRes16b],1 +.nocheckboxtm7 + xor ebx,ebx ; ntsc effect + mov bl,[cvidmode] + cmp byte[GUINTVID+ebx],0 + je near .nontscfilter + FilterExcl 115,173,En2xSaI,hqFilter,scanlines,cfgscanline,antienab,cfginterp,BilinearFilter + GUIClickCButton5 115,173,byte[NTSCFilter],1 +.nontscfilter +%ifdef __UNIXSDL__ + xor ebx,ebx ; bilinear + mov bl,[cvidmode] + cmp byte[GUIBIFIL+ebx],0 + je .nocheckbox1bf + FilterExcl 11,163,NTSCFilter + GUIClickCButton 11,163,byte[BilinearFilter] +.nocheckbox1bf +%endif + xor ebx,ebx ; triple buffs + mov bl,[cvidmode] + cmp byte[GUITBVID+ebx],0 + je .nocheckboxttb + GUIClickCButtonT 11,163,byte[Triplebufen],byte[vsyncon] +.nocheckboxttb +%ifdef __WIN32__ xor ebx,ebx mov bl,[cvidmode] - cmp byte[GUII2VID+ebx],0 - je .nocheckboxi2 - GUIClickCButton3 11,163,byte[antienab],byte[cfginterp],1 -.nocheckboxi2 + cmp byte[GUITBWVID+ebx],0 + je near .notriplebufferwin + GUIClickCButtonf 11,123,byte[TripleBufferWin],initDirectDraw +.notriplebufferwin + GUIClickCButtonf 115,183,byte[vsyncon],initDirectDraw +%elifdef __MSDOS__ + GUIClickCButtonT 115,183,byte[vsyncon],byte[Triplebufen] +%endif + GUIClickCButton 11,183,byte[GrayscaleMode] .notfilterstab cmp dword[GUIVideoTabs],3 ; NTSC @@ -3292,7 +3300,7 @@ DisplayGUISaveClick: GUIPHoldbutton2 173,17,181,24,70,byte[RewindStates],1,99 GUIPHoldbutton2 184,17,192,24,71,byte[RewindStates],-1,0 GUIPHoldbutton2 173,29,181,36,72,byte[RewindFrames],1,99 - GUIPHoldbutton2 184,29,192,36,73,byte[RewindFrames],-1,0 + GUIPHoldbutton2 184,29,192,36,73,byte[RewindFrames],-1,1 DGOptnsProcBox 27,121,[KeyStateSlc0] DGOptnsProcBox 27+45,121,[KeyStateSlc1] DGOptnsProcBox 27+45*2,121,[KeyStateSlc2] diff --git a/zsnes/src/gui/guiwindp.inc b/zsnes/src/gui/guiwindp.inc index 14561078..d4e3ac8b 100644 --- a/zsnes/src/gui/guiwindp.inc +++ b/zsnes/src/gui/guiwindp.inc @@ -1616,29 +1616,27 @@ DisplayGUIVideo: mov byte[En2xSaI],0 mov byte[hqFilter],0 .no2xSaIdis - cmp byte[En2xSaI],0 - je .no2xsaidis - mov byte[Triplebufen],0 -.no2xsaidis cmp byte[En2xSaI],0 je .no2xsaien + mov byte[Triplebufen],0 mov byte[hqFilter],0 mov byte[scanlines],0 mov byte[antienab],0 .no2xsaien cmp byte[hqFilter],0 - je .nohq3xen + je .nohqen mov byte[En2xSaI],0 mov byte[scanlines],0 mov byte[antienab],0 -.nohq3xen +.nohqen + + GUIDrawWindowBox 5,GUIVideoDisp ; Video Modes List/Options + xor ebx,ebx mov bl,[NTSCFilter] add ebx,2 mov [GUIVideoTabs+4],ebx - GUIDrawWindowBox 5,GUIVideoDisp ; Video Modes List/Options - GUIDrawTab 5,GUIVideoTabs cmp dword[GUIVideoTabs],1 @@ -1714,7 +1712,7 @@ DisplayGUIVideo: cmp dword[GUIVideoTabs],2 jne near .notfilterstab - xor eax,eax ; 100% Scanlines + xor eax,eax ; Scanlines text mov al,[cvidmode] cmp byte[GUISLVID+eax],0 je near .notext2 @@ -1723,23 +1721,30 @@ DisplayGUIVideo: %else GUIDisplayText 5,13,111,GUIVideoTextC %endif +.notext2 -.notext2 ; Interpol. - xor eax,eax +;Checkboxes + xor eax,eax ; Interpolations mov al,[cvidmode] cmp byte[GUIINVID+eax],0 je near .notext3 GUIDisplayCheckboxu 5,11,78,antienab,GUIVideoText3,0 - -.notext3 ; Eagle Eng. +.notext3 xor eax,eax mov al,[cvidmode] + cmp byte[GUII2VID+eax],0 + je near .nocheckboxi2 + GUIDisplayCheckboxu 5,11,163,antienab,GUIVideoText3,0 +.nocheckboxi2 + + xor eax,eax ; Eagle Interp. + mov al,[cvidmode] cmp byte[GUIEAVID+eax],0 je near .notext4 GUIDisplayCheckboxu 5,11,78,antienab,GUIVideoText4,9 +.notext4 -.notext4 ; Full/Widescreen - xor eax,eax + xor eax,eax ; Full/Widescreen mov al,[cvidmode] cmp byte[GUIFSVID+eax],0 je near .notext5 @@ -1749,36 +1754,35 @@ DisplayGUIVideo: jmp .notext5 .notext4a GUIDisplayCheckboxu 5,11,88,ScreenScale,GUIVideoText5,6 +.notext5 -.notext5 ; 2x - xor eax,eax + xor eax,eax ; Small Screen mov al,[cvidmode] + cmp byte[GUISSVID+eax],0 + je near .nocheckbox3b + GUIDisplayCheckboxu 5,11,98,smallscreenon,GUIVideoText6,1 +.nocheckbox3b + + xor eax,eax ; hq*x + mov al,[cvidmode] + cmp byte[MMXSupport],0 + je near .notexthq4xa cmp byte[GUIHQ2X+eax],0 je near .notexthq2xa - cmp byte[MMXSupport],0 - je near .notexthq2xa GUIDisplayCheckboxu 5,115,163,hqFilter,GUIVideoTexthq2x,1 - -.notexthq2xa ; 3x - xor eax,eax - mov al,[cvidmode] + jmp .notexthq4xa +.notexthq2xa cmp byte[GUIHQ3X+eax],0 je near .notexthq3xa - cmp byte[MMXSupport],0 - je near .notexthq3xa GUIDisplayCheckboxu 5,115,163,hqFilter,GUIVideoTexthq3x,1 - -.notexthq3xa ; 4x - xor eax,eax - mov al,[cvidmode] + jmp .notexthq4xa +.notexthq3xa cmp byte[GUIHQ4X+eax],0 je near .notexthq4xa - cmp byte[MMXSupport],0 - je near .notexthq4xa GUIDisplayCheckboxu 5,115,163,hqFilter,GUIVideoTexthq4x,1 - .notexthq4xa - xor eax,eax ; Checkboxes + + xor eax,eax ; scanlines mov al,[cvidmode] cmp byte[GUISLVID+eax],0 je near .nocheckboxb @@ -1787,7 +1791,6 @@ DisplayGUIVideo: %else GUIDisplayCheckboxun 5,21,114,scanlines,1,GUIVideoTextC1,0 %endif - .nocheckboxb xor eax,eax mov al,[cvidmode] @@ -1800,17 +1803,25 @@ DisplayGUIVideo: GUIDisplayCheckboxun 5,61,114,scanlines,3,GUIVideoTextC2,0 GUIDisplayCheckboxun 5,101,114,scanlines,2,GUIVideoTextC3,0 %endif - .nocheckboxw - xor eax,eax + + xor eax,eax ; triple buffs mov al,[cvidmode] cmp byte[GUITBWVID+eax],0 je near .nocheckboxslw2 GUIDisplayCheckboxu 5,11,123,TripleBufferWin,GUIVideoText7,0 - .nocheckboxslw2 xor eax,eax mov al,[cvidmode] + cmp byte[GUITBVID+eax],0 + je near .nocheckboxtbb + cmp byte[TripBufAvail],0 + je near .nocheckboxtbb + GUIDisplayCheckboxun 5,11,163,Triplebufen,1,GUIVideoText7,0 +.nocheckboxtbb + + xor eax,eax ; 2xSaI & Supers + mov al,[cvidmode] cmp byte[GUI2xVID+eax],0 je near .nocheckboxx cmp byte[MMXSupport],0 @@ -1818,39 +1829,23 @@ DisplayGUIVideo: GUIDisplayCheckboxun 5,11,133,En2xSaI,1,GUIVideoTextc,1 GUIDisplayCheckboxun 5,11,143,En2xSaI,2,GUIVideoTextd,6 GUIDisplayCheckboxun 5,11,153,En2xSaI,3,GUIVideoTextd2,0 - .nocheckboxx - xor eax,eax - mov al,[cvidmode] - cmp byte[GUII2VID+eax],0 - je near .nocheckboxi2 - GUIDisplayCheckboxu 5,11,163,antienab,GUIVideoText3,0 -.nocheckboxi2 - xor eax,eax + xor eax,eax ; Bilinear mov al,[cvidmode] cmp byte[GUIBIFIL+eax],0 je near .nocheckboxe GUIDisplayCheckboxu 5,11,163,BilinearFilter,GUIVideoTextbf,0 - .nocheckboxe - xor eax,eax + + xor eax,eax ; NTSC filter mov al,[cvidmode] - cmp byte[GUINTSC+eax],0 + cmp byte[GUINTVID+eax],0 je near .nocheckboxbf GUIDisplayCheckboxu 5,115,173,NTSCFilter,GUIVideoTexte,0 - .nocheckboxbf - xor eax,eax - mov al,[cvidmode] - cmp byte[GUITBVID+eax],0 - je near .nocheckboxtbb - cmp byte[TripBufAvail],0 - je near .nocheckboxtbb - GUIDisplayCheckboxun 5,11,163,Triplebufen,1,GUIVideoText7,0 -.nocheckboxtbb - xor eax,eax + xor eax,eax ; Hires Mode7 mov al,[cvidmode] cmp byte[GUIM7VID+eax],0 je near .nocheckboxm72 @@ -1858,20 +1853,13 @@ DisplayGUIVideo: je near .nocheckboxm72 GUIDisplayCheckboxu 5,11,173,Mode7HiRes16b,GUIVideoText8b,0 .nocheckboxm72 + GUIDisplayCheckboxu 5,11,183,GrayscaleMode,GUIVideoText8c,0 %ifndef __UNIXSDL__ GUIDisplayCheckboxu 5,115,183,vsyncon,GUIVideoText9,0 %endif - -.nocheckbox2b - xor eax,eax - mov al,[cvidmode] - cmp byte[GUISSVID+eax],0 - je near .nocheckbox3b - GUIDisplayCheckboxu 5,11,98,smallscreenon,GUIVideoText6,1 - -.nocheckbox3b .notfilterstab + cmp dword[GUIVideoTabs],3 jne .notntsctab .notntsctab diff --git a/zsnes/src/linux/sdlintrf.asm b/zsnes/src/linux/sdlintrf.asm index 1d0b54bf..2ae2a065 100644 --- a/zsnes/src/linux/sdlintrf.asm +++ b/zsnes/src/linux/sdlintrf.asm @@ -795,38 +795,37 @@ db '1024x896 ODR W',0 ;17 db '1280x960 ODS F',0 ;18 db '1280x1024 ODS F',0 ;19 db '1600x1200 ODS F',0 ;20 -db 'VARIABLE ODR W',0 ;21 +db 'VARIABLE OD W',0 ;21 %endif ; Video Mode Feature Availability (1 = Available, 0 = Not Available) ; Left side starts with Video Mode 0 ; vid mode column = 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1 -NEWSYM GUI16VID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 16-bit mode -NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; New Graphics Mode Available -NEWSYM GUISLVID, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; Scanlines -NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation -NEWSYM GUII2VID, db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation(w) -NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Eagle -NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Interp | Eagle) -NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Full Screen -NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Full Scr. | Wide Scr.) -NEWSYM GUISSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Small Screen -NEWSYM GUITBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering -NEWSYM GUIHSVID, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; Half/Quarter Scanlines -NEWSYM GUI2xVID, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 2xSaI/Super Eagle Engines -NEWSYM GUIM7VID, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; ?Mode 7 video thing? -NEWSYM GUIWFVID, db 0,1,0,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0 ; If Windows Full Screen -NEWSYM GUIDSIZE, db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -NEWSYM GUIRATIO, db 0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -NEWSYM GUIBIFIL, db 0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; binlinear = 1, nearest = 0 -NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win) -NEWSYM GUIMBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -NEWSYM GUIHQ2X, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1 ; hq2x filter -NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq3x filter -NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq4x filter -NEWSYM GUIRESIZE, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 ; resizable -NEWSYM GUINTSC, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; NTSC Filter +NEWSYM GUI16VID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 16-bit mode +NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; New Graphics Engine +NEWSYM GUISLVID, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; Scanlines +NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Interpolation) +NEWSYM GUII2VID, db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation +NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Eagle) +NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Eagle+Int) +NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Fullscreen) +NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Widescreen) +NEWSYM GUISSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Smallscreen) +NEWSYM GUITBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Triple Buffer) +NEWSYM GUIHSVID, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; Half/Quarter Scanlines +NEWSYM GUI2xVID, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 2xSaI/Super Engines +NEWSYM GUIM7VID, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; Hires Mode 7 +NEWSYM GUIWFVID, db 0,1,0,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0 ; Fullscreen +NEWSYM GUIDSIZE, db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; D modes +NEWSYM GUIRATIO, db 0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Ratio-Fullscreen modes +NEWSYM GUIBIFIL, db 0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; SDL Bilinear Filter +NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Win Triple Buffer) +NEWSYM GUIHQ2X, db 0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1 ; hq2x filter +NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (hq3x filter) +NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (hq4x filter) +NEWSYM GUIRESIZE, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 ; SDL Resizable +NEWSYM GUINTVID, db 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; NTSC Filter SECTION .text diff --git a/zsnes/src/linux/sw_draw.c b/zsnes/src/linux/sw_draw.c index 026a8eba..b01478d7 100644 --- a/zsnes/src/linux/sw_draw.c +++ b/zsnes/src/linux/sw_draw.c @@ -141,7 +141,7 @@ void sw_drawwin() if (prevtot == frametot && (!GUIOn || !GUIOn2)) { return; } - if (curblank) return; + if (curblank || cvidmode > 5) return; LockSurface(); ScreenPtr = vidbuffer; @@ -208,5 +208,3 @@ void sw_drawwin() } UnlockSurface(); } - - diff --git a/zsnes/src/win/winintrf.asm b/zsnes/src/win/winintrf.asm index f4a98ec2..581087bb 100644 --- a/zsnes/src/win/winintrf.asm +++ b/zsnes/src/win/winintrf.asm @@ -993,31 +993,31 @@ db '1680x1050 DR F',0 ;37 ; Video Mode Feature Availability (1 = Available, 0 = Not Available) ; Left side starts with Video Mode 0 ; 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 -NEWSYM GUI16VID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 16-bit mode -NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; New Graphics Mode Available -NEWSYM GUISLVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; Scanlines -NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Interpolation -NEWSYM GUII2VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; Interpolation(w) -NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Eagle -NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Interp | Eagle) -NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Full Screen -NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (Full Scr. | Wide Scr.) -NEWSYM GUISSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Small Screen -NEWSYM GUITBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering -NEWSYM GUIHSVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; Half/Quarter Scanlines -NEWSYM GUI2xVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; 2xSaI/Super Eagle Engines -NEWSYM GUIM7VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; ?Mode 7 video thing? -NEWSYM GUIWFVID, db 0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1 ; If Windows Full Screen -NEWSYM GUIDSIZE, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 -NEWSYM GUIRATIO, db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -NEWSYM GUITBWVID, db 0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1 ; Triple Buffering (Win) -NEWSYM GUISMODE, db 0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0 -NEWSYM GUIDSMODE, db 0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0 -NEWSYM GUIHQ2X, db 0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq2x filter -NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq3x filter -NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; hq4x filter -NEWSYM GUINTSC, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; NTSC Filter +NEWSYM GUI16VID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 16-bit mode +NEWSYM GUINGVID, db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; New Graphics engine +NEWSYM GUISLVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; Scanlines +NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Interpolation) +NEWSYM GUII2VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; Interpolation +NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Eagle) +NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Eagle+Int) +NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Fullscreen) +NEWSYM GUIWSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Widescreen) +NEWSYM GUISSVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Smallscreen) +NEWSYM GUITBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (DOS Triple Buffer) +NEWSYM GUIHSVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; Half/Quarter Scanlines +NEWSYM GUI2xVID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; 2xSaI/Super Engines +NEWSYM GUIM7VID, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; Hires Mode 7 +NEWSYM GUIWFVID, db 0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1 ; Fullscreen +NEWSYM GUIDSIZE, db 0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; D-only modes +NEWSYM GUIRATIO, db 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Ratio-Fullscreen modes +NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; (SDL Bilinear Filter) +NEWSYM GUITBWVID, db 0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1 ; Win Triple Buffer +NEWSYM GUISMODE, db 0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0 ; Win Stretched modes +NEWSYM GUIDSMODE, db 0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0 ; Win D-Stretched modes +NEWSYM GUIHQ2X, db 0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq2x filter +NEWSYM GUIHQ3X, db 0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; hq3x filter +NEWSYM GUIHQ4X, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; hq4x filter +NEWSYM GUINTVID, db 0,0,0,0,0,1,1,1,0,0,1,0,1,0,1,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,1,0,1,1,1,1 ; NTSC Filter SECTION .text