From c68f9a34c78082d584034a0d156f6e3a01158156 Mon Sep 17 00:00:00 2001 From: ipher <> Date: Wed, 12 Jan 2005 12:43:02 +0000 Subject: [PATCH] Added "O" flag in Video Modes, instead of just listing OGL. (sdlintrf.asm) Added "O" flag to Legend in Video Options (guiwindp.inc) Moved Scanlines options down (for above) (guiwindp.inc, guimouse.inc) Added 1280x1024 OGL (ODS) Full, for people with LCD Monitors (sdlintrf.asm, sdllink.c) Fixed 640x480 OGL (ODS) Win (sdllink.c) Organized the video menu, by res. (sdlintrf.asm, sdllink.c) Fixed insanely long HQ#x lines in sdlintrf.asm (sdllink.c) Thank Aerdan and robust for the help with this! --- zsnes/src/cfgload.c | 14 +++---- zsnes/src/gui/guimouse.inc | 9 +++++ zsnes/src/gui/guiwindp.inc | 44 +++++++++++++++++++- zsnes/src/linux/sdlintrf.asm | 78 ++++++++++++++++++------------------ zsnes/src/linux/sdllink.c | 31 ++++++++------ 5 files changed, 116 insertions(+), 60 deletions(-) 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();