diff --git a/zsnes/src/dos/dosintrf.asm b/zsnes/src/dos/dosintrf.asm index b47a52f6..d52225e4 100644 --- a/zsnes/src/dos/dosintrf.asm +++ b/zsnes/src/dos/dosintrf.asm @@ -1044,16 +1044,17 @@ NEWSYM GUISLVID, db 0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,0 ; Scanlines NEWSYM GUIINVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; Interpolation NEWSYM GUIEAVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 ; Eagle NEWSYM GUIIEVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0 ; (Interp | Eagle) -NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,0 ; Full Screen -NEWSYM GUISSVID, db 0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,0 ; Small Screen +NEWSYM GUIFSVID, db 0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,0 ; Full Screen +NEWSYM GUIWSVID, db 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,0,0,1,1,0 ; Small Screen NEWSYM GUITBVID, db 0,0,0,0,0,0,0,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,1,0 ; Half/Quarter Scanlines NEWSYM GUI2xVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 ; 2xSaI/Super Eagle Engines NEWSYM GUIWFVID, db 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 ; Interpolation -NEWSYM GUIM7VID, db 0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0 ; Interpolation +NEWSYM GUII2VID, db 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,1,0 ; Hi-Resolution Mode 7 NEWSYM GUIBIFIL, db 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 ; Triple Buffering (Win) +NEWSYM GUITBWVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; Triple Buffering (Win) SECTION .text ; **************************** diff --git a/zsnes/src/gui/gui.asm b/zsnes/src/gui/gui.asm index 87ada552..ccec83d8 100644 --- a/zsnes/src/gui/gui.asm +++ b/zsnes/src/gui/gui.asm @@ -135,8 +135,8 @@ EXTSYM NumVideoModes EXTSYM cfgvolume, MusicVol, DSPMem EXTSYM NumInputDevices,GUIInputNames EXTSYM GUIVideoModeNames -EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID,GUISSVID,GUITBVID -EXTSYM GUIHSVID,GUI2xVID,GUII2VID,GUIM7VID +EXTSYM GUISLVID,GUIINVID,GUIEAVID,GUIIEVID,GUIFSVID,GUIWSVID, +EXTSYM GUISSVID,GUITBVID,GUIHSVID,GUI2xVID,GUII2VID,GUIM7VID EXTSYM cfgsoundon,cfgSoundQuality,cfgStereoSound EXTSYM convertnum,converthex EXTSYM per2exec diff --git a/zsnes/src/gui/guiwindp.inc b/zsnes/src/gui/guiwindp.inc index 3c344d03..8a3455da 100644 --- a/zsnes/src/gui/guiwindp.inc +++ b/zsnes/src/gui/guiwindp.inc @@ -1714,7 +1714,12 @@ DisplayGUIVideo: xor eax,eax mov al,[cvidmode] cmp byte[GUIFSVID+eax],0 - je .notext5 + je near .notext5 + cmp byte[GUIWSVID+eax],0 + je .fs + GUIOuttextwin2u 5,26,93,GUIVideoText5b,1 + jmp .notext5 +.fs GUIOuttextwin2u 5,26,93,GUIVideoText5,1 .notext5 xor eax,eax @@ -1810,7 +1815,12 @@ DisplayGUIVideo: xor eax,eax mov al,[cvidmode] cmp byte[GUIFSVID+eax],0 - je .notext5b + je near .notext5b + cmp byte[GUIWSVID+eax],0 + je .fs2 + GUIOuttextwin2 5,25,92,GUIVideoText5b + jmp .notext5b +.fs2 GUIOuttextwin2 5,25,92,GUIVideoText5 .notext5b xor eax,eax @@ -2126,6 +2136,7 @@ GUIVideoTextbf db 'BILINEAR FILTER',0 GUIVideoText3 db 'INTERPOLATION',0 ; -y GUIVideoText4 db 'EAGLE ENGINE',0 ; -y GUIVideoText5 db 'FULL SCREEN',0 ; -c +GUIVideoText5b db 'WIDE SCREEN',0 ; -c GUIVideoText6 db 'SMALL SCREEN',0 ; -c GUIVideoText7 db 'TRIPLE BUFFERING',0 ; -c GUIVideoText8b db 'HI-RESOLUTION MODE7',0 ; -c diff --git a/zsnes/src/video/copyvid.inc b/zsnes/src/video/copyvid.inc index 19d9f371..b63a25d9 100644 --- a/zsnes/src/video/copyvid.inc +++ b/zsnes/src/video/copyvid.inc @@ -1067,21 +1067,21 @@ NEWSYM copyvesa2320x480x8b mov dl,[resolutn] dec dl dec dl - cmp byte[smallscreenon],1 - je near .smallscreen + cmp byte[ScreenScale],1 + je near .widescreen cmp byte[scanlines],1 je near .scanlines - ;cmp byte[CurrentGUIOn],1 - cmp byte[GUIOn],1 - je .loopa1 - cmp byte[f3menuen],1 - je .loopa1 - cmp byte[ForceNewGfxOff],1 - je .loopa1 - cmp byte[newengen],1 - je near copyvesa2320x480x8ng +; cmp byte[CurrentGUIOn],1 +; cmp byte[GUIOn],1 +; je .loopa +; cmp byte[f3menuen],1 +; je .loopa +; cmp byte[ForceNewGfxOff],1 +; je .loopa +; cmp byte[newengen],1 +; je near copyvesa2320x480x8ng -.loopa1 +.loopa cmp byte[MMXSupport],1 je .loopb .loopa2 @@ -1131,45 +1131,37 @@ NEWSYM copyvesa2320x480x8b emms jmp .done -.smallscreen +.widescreen add edi,60*320 - cmp byte[MMXSupport],1 - je near .ssloopb -.ssloopa - mov ecx,64 - rep movsd + sub edi,16 +.wsloopa + mov ecx,32 + call .wsloopb add esi,32 - add edi,32*2 - mov ecx,64 - rep movsd + add edi,16*2 + mov ecx,32 + call .wsloopb sub esi,256 - add edi,32*2 - mov ecx,64 - rep movsd + add edi,16*2 + mov ecx,32 + call .wsloopb add esi,32 - add edi,32*2 + add edi,16*2 dec dl dec dl - jnz .ssloopa - jmp .done -.ssloopb - mov ecx,16 - MMXStuff - add esi,32 - add edi,32*2 - mov ecx,16 - MMXStuff - sub esi,256 - add edi,32*2 - mov ecx,16 - MMXStuff - add esi,32 - add edi,32*2 - dec dl - dec dl - jnz near .ssloopb - emms + jnz .wsloopa jmp .done +.wsloopb + movsd + movsd + dec esi + mov al,[esi] + mov [es:edi],al + inc esi + inc edi + dec ecx + jnz .wsloopb + ret .done pop es @@ -1177,6 +1169,7 @@ NEWSYM copyvesa2320x480x8b copyvesa2320x480x8ng: + jmp .mode7hires mov ebx,1 .loopa cmp dword[ignor512],0 @@ -1198,7 +1191,6 @@ copyvesa2320x480x8ng: cmp byte[BGMA+ebx+1],7 je near .mode7hires .nomode7hires - mov ecx,64 .a mov eax,[esi] @@ -2131,7 +2123,7 @@ NEWSYM copyvesa2512x384x8b cmp byte[Triplebufen],1 je .ignorehr cmp al,1 - je .yeshires + je near .yeshires .ignorehr mov ecx,128 .a @@ -2501,8 +2493,6 @@ NEWSYM copyvesa2320x480x16bgui mov dl,[resolutn] dec dl dec dl - cmp byte[smallscreenon],1 - je near .smallscreen cmp byte[scanlines],3 je near .halfscanlines cmp byte[scanlines],2 @@ -2633,36 +2623,6 @@ NEWSYM copyvesa2320x480x16bgui jnz .loopabhq pop es ret - -.smallscreen - add edi,60*320*2 -.ssloopa - mov ecx,256 - call .ssloopa2 - add esi,32 - add edi,64*2*2 - mov ecx,256 - call .ssloopa2 - sub esi,256 - add edi,64*2*2 - mov ecx,256 - call .ssloopa2 - add esi,32 - add edi,64*2*2 - dec dl - dec dl - jnz .ssloopa - pop es - ret -.ssloopa2 - mov al,[esi] - inc esi - mov bx,[GUICPC+eax*2] - mov [es:edi],bx - add edi,2 - dec ecx - jnz .ssloopa2 - ret %endif NEWSYM ConvertToAFormat @@ -2778,8 +2738,8 @@ NEWSYM copyvesa2320x480x16b mov dl,[resolutn] dec dl dec dl - cmp byte[smallscreenon],1 - je near .smallscreen + cmp byte[ScreenScale],1 + je near .widescreen cmp byte[scanlines],1 je near .scanlines cmp byte[scanlines],3 @@ -3020,48 +2980,40 @@ NEWSYM copyvesa2320x480x16b jnz .mmxr2h2 jmp .returnbh2 -.smallscreen +.widescreen add edi,60*320*2 - cmp byte[MMXSupport],1 - je near .ssloopb -.ssloopa - mov ecx,64*2 - rep movsd + sub edi,16*2 +.wsloopa + mov ecx,32 + call .wsloopb add esi,32*2 - add edi,32*2*2 - mov ecx,64*2 - rep movsd + add edi,16*2*2 + mov ecx,32 + call .wsloopb sub esi,256*2 - add edi,32*2*2 - mov ecx,64*2 - rep movsd + add edi,16*2*2 + mov ecx,32 + call .wsloopb add esi,32*2 - add edi,32*2*2 + add edi,16*2*2 dec dl dec dl - jnz .ssloopa - jmp .done -.ssloopb - mov ecx,16*2 - MMXStuff - add esi,32*2 - add edi,32*2*2 - mov ecx,16*2 - MMXStuff - sub esi,256*2 - add edi,32*2*2 - mov ecx,16*2 - MMXStuff - add esi,32*2 - add edi,32*2*2 - dec dl - dec dl - jnz near .ssloopb - emms - jmp .done -.done + jnz .wsloopa pop es ret +.wsloopb + movsd + movsd + movsd + movsd + sub esi,2 + mov ax,[esi] + mov [es:edi],ax + add esi,2 + add edi,2 + dec ecx + jnz .wsloopb + ret ;******************************************************* ; Copy VESA2 640x480x16b Copies buffer to 640x480x16bVB2 @@ -5501,7 +5453,7 @@ NEWSYM copyvesa2512x384x16b cmp byte[Triplebufen],1 je .ignorehr cmp al,1 - je .yeshires + je near .yeshires .ignorehr mov ecx,256 .a diff --git a/zsnes/src/win/winintrf.asm b/zsnes/src/win/winintrf.asm index 3edd664e..4d0b3a86 100644 --- a/zsnes/src/win/winintrf.asm +++ b/zsnes/src/win/winintrf.asm @@ -1251,6 +1251,7 @@ 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, 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 ; 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 ; (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 ; 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 ; (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 ; 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 ; 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 ; Half/Quarter Scanlines