diff --git a/zsnes/src/cfgload.c b/zsnes/src/cfgload.c index 0b44f8a2..24be945c 100644 --- a/zsnes/src/cfgload.c +++ b/zsnes/src/cfgload.c @@ -454,13 +454,13 @@ void DOScreatenewcfg() WRITE_LINE("; 0 = 256x224 WIN 1 = 256x224 FULL\r\n"); WRITE_LINE("; 2 = 512x448 WIN 3 = 640x480 FULL\r\n"); #ifdef __OPENGL__ - WRITE_LINE("; 4 = 256x224 OGL WIN 5 = 512x448 OGL WIN\r\n"); - WRITE_LINE("; 6 = 640x480 OGL FULL 7 = 640x576 OGL WIN\r\n"); - WRITE_LINE("; 8 = 768x672 OGL WIN 9 = 896x784 OGL WIN\r\n"); - WRITE_LINE("; 10 = 1024x896 OGL WIN 11 = 800x600 OGL FULL\r\n"); - WRITE_LINE("; 12 = 1024x768 OGL FULL 13 = 640x480 OGL WIN\r\n"); - WRITE_LINE("; 14 = 800x600 OGL WIN 15 = 1024x768 OGL WIN\r\n"); - WRITE_LINE("; 16 = VARIABLE OGL WIN\r\n"); + WRITE_LINE("; 4 = 256x224 OR WIN 5 = 512x448 ODR WIN\r\n"); + WRITE_LINE("; 6 = 640x480 ODS FULL 7 = 640x480 ODS WIN\r\n"); + WRITE_LINE("; 8 = 640x576 ODR WIN 9 = 768x672 ODR WIN\r\n"); + WRITE_LINE("; 10 = 800x600 ODS FULL 11 = 800x600 ODS WIN\r\n"); + WRITE_LINE("; 12 = 896x784 ODR FULL 13 = 1024x768 ODS WIN\r\n"); + WRITE_LINE("; 14 = 1024x768 ODS WIN 15 = 1024x896 ODR WIN\r\n"); + WRITE_LINE("; 16 = 1280x1024 OGL WIN 17 = VARIABLE ODS WIN\r\n"); #endif sprintf(buffer, "\r\nVideoModeLin = %d\r\n\r\n", cfgcvidmode); SAVE_LINE(buffer); diff --git a/zsnes/src/gui/guimouse.inc b/zsnes/src/gui/guimouse.inc index acf7970b..17b20edf 100644 --- a/zsnes/src/gui/guimouse.inc +++ b/zsnes/src/gui/guimouse.inc @@ -2332,7 +2332,11 @@ DisplayGUIVideoClick: mov bl,[cvidmode] cmp byte[GUISLVID+ebx],0 je near .nocheckboxb +%ifdef __LINUX__ + GUIClickCButton4 21,119,byte[scanlines],byte[cfgscanline],1 +%else GUIClickCButton4 21,114,byte[scanlines],byte[cfgscanline],1 +%endif .nocheckboxb xor ebx,ebx mov bl,[cvidmode] @@ -2357,8 +2361,13 @@ DisplayGUIVideoClick: mov bl,[cvidmode] cmp byte[GUIHSVID+ebx],0 je near .nohsline +%ifdef __LINUX__ + GUIClickCButton4 61,119,byte[scanlines],byte[cfgscanline],3 + GUIClickCButton4 101,119,byte[scanlines],byte[cfgscanline],2 +%else GUIClickCButton4 61,114,byte[scanlines],byte[cfgscanline],3 GUIClickCButton4 101,114,byte[scanlines],byte[cfgscanline],2 +%endif .nohsline %ifdef __WIN32__ xor ebx,ebx diff --git a/zsnes/src/gui/guiwindp.inc b/zsnes/src/gui/guiwindp.inc index 6daa5fee..793b89fb 100644 --- a/zsnes/src/gui/guiwindp.inc +++ b/zsnes/src/gui/guiwindp.inc @@ -1638,21 +1638,34 @@ DisplayGUIVideo: GUIOuttextwin2 5,12,90,GUIVideoTextw2 GUIOuttextwin2 5,12,97,GUIVideoTextw3 %endif - +%ifdef __LINUX__ + GUIOuttextwin2 5,12,104,GUIVideoTextw4 +%endif xor eax,eax mov al,[cvidmode] cmp byte[GUISLVID+eax],0 je near .notext2 +%ifdef __LINUX__ + GUIOuttextwin2 5,13,116,GUIVideoTextb + GUIOuttextwin2u 5,36,124,GUIVideoTexta,0 +%else GUIOuttextwin2 5,13,111,GUIVideoTextb GUIOuttextwin2u 5,36,119,GUIVideoTexta,0 +%endif .notext2 xor eax,eax mov al,[cvidmode] cmp byte[GUIHSVID+eax],0 je near .notexta +%ifdef __LINUX__ + GUIOuttextwin2 5,13,116,GUIVideoTextb + GUIOuttextwin2u 5,76,124,GUIVideoTexta2,0 + GUIOuttextwin2u 5,116,124,GUIVideoTexta3,0 +%else GUIOuttextwin2 5,13,111,GUIVideoTextb GUIOuttextwin2u 5,76,119,GUIVideoTexta2,0 GUIOuttextwin2u 5,116,119,GUIVideoTexta3,0 +%endif .notexta xor eax,eax mov al,[cvidmode] @@ -1760,21 +1773,35 @@ DisplayGUIVideo: GUIOuttextwin2 5,11,82,GUIVideoTextw1 GUIOuttextwin2 5,11,89,GUIVideoTextw2 GUIOuttextwin2 5,11,96,GUIVideoTextw3 +%endif +%ifdef __LINUX__ + GUIOuttextwin2 5,11,103,GUIVideoTextw4 %endif xor eax,eax mov al,[cvidmode] cmp byte[GUISLVID+eax],0 je .notext2b +%ifdef __LINUX__ + GUIOuttextwin2 5,12,115,GUIVideoTextb + GUIOuttextwin2 5,35,123,GUIVideoTexta +%else GUIOuttextwin2 5,12,110,GUIVideoTextb GUIOuttextwin2 5,35,118,GUIVideoTexta +%endif .notext2b xor eax,eax mov al,[cvidmode] cmp byte[GUIHSVID+eax],0 je near .notextab +%ifdef __LINUX__ + GUIOuttextwin2 5,12,115,GUIVideoTextb + GUIOuttextwin2 5,75,123,GUIVideoTexta2 + GUIOuttextwin2 5,115,123,GUIVideoTexta3 +%else GUIOuttextwin2 5,12,110,GUIVideoTextb GUIOuttextwin2 5,75,118,GUIVideoTexta2 GUIOuttextwin2 5,115,118,GUIVideoTexta3 +%endif .notextab xor eax,eax mov al,[cvidmode] @@ -1894,7 +1921,11 @@ DisplayGUIVideo: jne .nocheckbox mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckbox +%ifdef __LINUX__ + GUIDisplayIconWin 5,21,119,[GUITemp] +%else GUIDisplayIconWin 5,21,114,[GUITemp] +%endif .nocheckboxb xor eax,eax mov al,[cvidmode] @@ -1905,13 +1936,21 @@ DisplayGUIVideo: jne .nocheckboxv mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckboxv +%ifdef __LINUX__ + GUIDisplayIconWin 5,61,119,[GUITemp] +%else GUIDisplayIconWin 5,61,114,[GUITemp] +%endif mov dword[GUITemp],GUIIconDataCheckBoxUC cmp byte[scanlines],2 jne .nocheckboxv2 mov dword[GUITemp],GUIIconDataCheckBoxC .nocheckboxv2 +%ifdef __LINUX__ + GUIDisplayIconWin 5,101,119,[GUITemp] +%else GUIDisplayIconWin 5,101,114,[GUITemp] +%endif .nocheckboxw xor eax,eax mov al,[cvidmode] @@ -2207,6 +2246,7 @@ GUIVideoTextw0 db 'LEGEND:',0 GUIVideoTextw1 db ' S = SCALED TO FIT SCREEN',0 GUIVideoTextw2 db ' R = MATCHED SCREEN RATIO',0 GUIVideoTextw3 db ' D = ALLOW 2XSAI,HIRES,ETC',0 +GUIVideoTextw4 db ' O = OPENGL MODE',0 SECTION .bss GUIVStA resd 3 @@ -5042,7 +5082,7 @@ DisplayGUIOptns: GUIOuttextwin2u 10,26,183,GUIGUIOptnsTextF,2 GUIOuttextwin2u 10,138,38,GUIGUIOptnsTextK,1 GUIOuttextwin2u 10,26,193,GUIGUIOptnsTextL,1 - GUIOuttextwin2u 10,138,58,GUIGUIOptnsTextN,3 + GUIOuttextwin2u 10,138,58,GUIGUIOptnsTextN,1 %endif mov byte[GUIGUIOptnsText6],'R' GUIOuttextwin2 10,16,123,GUIGUIOptnsText6 diff --git a/zsnes/src/linux/sdlintrf.asm b/zsnes/src/linux/sdlintrf.asm index 766e90f3..40960cb1 100644 --- a/zsnes/src/linux/sdlintrf.asm +++ b/zsnes/src/linux/sdlintrf.asm @@ -895,7 +895,7 @@ SECTION .data ; Total Number of Video Modes %ifdef __OPENGL__ -NEWSYM NumVideoModes, dd 17 +NEWSYM NumVideoModes, dd 18 %else NEWSYM NumVideoModes, dd 4 %endif @@ -908,47 +908,49 @@ db '256x224 R FULL',0 ;1 db '512X448 DR WIN ',0 ;2 db '640x480 DR FULL',0 ;3 %ifdef __OPENGL__ -db '256x224 OGL WIN ',0 ;4 -db '512x448 OGL WIN ',0 ;5 -db '640x480 OGL FULL',0 ;6 -db '640x576 OGL WIN ',0 ;7 -db '768x672 OGL WIN ',0 ;8 -db '896x784 OGL WIN ',0 ;9 -db '1024x896 OGL WIN ',0 ;10 -db '800x600 OGL FULL',0 ;11 -db '1024x768 OGL FULL',0 ;12 -db '640x480 OGL WIN ',0 ;13 -db '800x600 OGL WIN ',0 ;14 -db '1024x768 OGL WIN ',0 ;15 -db 'VARIABLE OGL WIN ',0 ;16 +db '256x224 OR WIN ',0 ;4 +db '512x448 ODR WIN ',0 ;5 +db '640x480 ODS FULL',0 ;6 +db '640x480 ODS WIN ',0 ;7 +db '640x576 ODR WIN ',0 ;8 +db '768x672 ODR WIN ',0 ;9 +db '800x600 ODS FULL',0 ;10 +db '800x600 ODS WIN ',0 ;11 +db '896x784 ODR WIN ',0 ;12 +db '1024x768 ODS FULL',0 ;13 +db '1024x768 ODS WIN ',0 ;14 +db '1024x896 ODR WIN ',0 ;15 +db '1280x1024ODS FULL',0 ;16 +db 'VARIABLE ODS WIN ',0 ;17 + %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 -NEWSYM GUI16VID, db 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 ; New Graphics Mode Available -NEWSYM GUISLVID, db 0,0,1,1,0,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 ; Interpolation -NEWSYM GUII2VID, db 0,0,1,1,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 ; Eagle -NEWSYM GUIIEVID, db 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 ; Full Screen -NEWSYM GUIWSVID, db 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 ; Small Screen -NEWSYM GUITBVID, db 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,0,1,1,1,1,1,1,1,1,1,1,1,1 ; Half/Quarter Scanlines -NEWSYM GUI2xVID, db 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1 ; 2xSaI/Super Eagle Engines -NEWSYM GUIM7VID, db 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1 ; ?Mode 7 video thing? -NEWSYM GUIWFVID, db 0,1,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0 ; If Windows Full Screen -NEWSYM GUIDSIZE, db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0 -NEWSYM GUIRATIO, db 0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 -NEWSYM GUIBIFIL, db 0,0,0,0,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 ; Triple Buffering (Win) -NEWSYM GUIMBVID, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -NEWSYM GUIHQ2X, db 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,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,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,0,0,0,0,0,0,0,0,0,0,0 ; hq4x filter +; vid mode column = 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 ; 16-bit mode +NEWSYM GUINGVID, db 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,0,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 ; Interpolation +NEWSYM GUII2VID, db 0,0,1,1,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 ; Eagle +NEWSYM GUIIEVID, db 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 ; Full Screen +NEWSYM GUIWSVID, db 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 ; Small Screen +NEWSYM GUITBVID, db 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,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; Half/Quarter Scanlines +NEWSYM GUI2xVID, db 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 2xSaI/Super Eagle Engines +NEWSYM GUIM7VID, db 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1 ; ?Mode 7 video thing? +NEWSYM GUIWFVID, db 0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0 ; If Windows Full Screen +NEWSYM GUIDSIZE, db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +NEWSYM GUIRATIO, db 0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 +NEWSYM GUIBIFIL, db 0,0,0,0,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 ; Triple Buffering (Win) +NEWSYM GUIMBVID, db 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,0,1,1,1,1,1,1,1,1,1,1,0,1,0 ; hq2x filter +NEWSYM GUIHQ3X, db 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 ; hq4x filter SECTION .text diff --git a/zsnes/src/linux/sdllink.c b/zsnes/src/linux/sdllink.c index 95a2fdaf..8b0bf62d 100644 --- a/zsnes/src/linux/sdllink.c +++ b/zsnes/src/linux/sdllink.c @@ -821,6 +821,7 @@ void initwinvideo(void) switch (cvidmode) { //case 0: + //case 4; default: WindowWidth = 256; WindowHeight = 224; @@ -831,42 +832,46 @@ void initwinvideo(void) break; case 2: case 5: - case 13: WindowWidth = 512; WindowHeight = 448; break; case 3: case 6: - case 16: + case 7: + case 17: // Variable WindowWidth = 640; WindowHeight = 480; break; - case 7: + case 8: WindowWidth = 640; WindowHeight = 576; break; - case 8: + case 9: WindowWidth = 768; WindowHeight = 672; break; - case 9: - WindowWidth = 896; - WindowHeight = 784; - break; case 10: - WindowWidth = 1024; - WindowHeight = 896; - break; case 11: - case 14: WindowWidth = 800; WindowHeight = 600; break; case 12: - case 15: + WindowWidth = 896; + WindowHeight = 784; + break; + case 13: + case 14: WindowWidth = 1024; WindowHeight = 768; break; + case 15: + WindowWidth = 1024; + WindowHeight = 896; + break; + case 16: + WindowWidth = 1280; + WindowHeight = 1024; + break; } adjustMouseXScale(); adjustMouseYScale();