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