From d23d41b1d594b7156fc0230c3be659578cc67051 Mon Sep 17 00:00:00 2001 From: grinvader <> Date: Mon, 18 Jul 2005 12:02:07 +0000 Subject: [PATCH] New resolutions for SDL port. [Aerdan] --- zsnes/src/cfgload.c | 23 +++++----- zsnes/src/linux/sdlintrf.asm | 89 +++++++++++++++++++----------------- zsnes/src/linux/sdllink.c | 40 +++++++++------- 3 files changed, 81 insertions(+), 71 deletions(-) diff --git a/zsnes/src/cfgload.c b/zsnes/src/cfgload.c index c741b571..16b3c4bb 100644 --- a/zsnes/src/cfgload.c +++ b/zsnes/src/cfgload.c @@ -452,21 +452,22 @@ void DOScreatenewcfg() #endif #ifdef __UNIXSDL__ #ifdef __OPENGL__ - WRITE_LINE("; Video Mode, 0 - 18\r\n"); + WRITE_LINE("; Video Mode, 0 - 21\r\n"); #else - WRITE_LINE("; Video Mode, 0 - 3\r\n"); + WRITE_LINE("; Video Mode, 0 - 5\r\n"); #endif WRITE_LINE("; 0 = 256x224 R WIN 1 = 256x224 R FULL\r\n"); - WRITE_LINE("; 2 = 512x448 DR WIN 3 = 640x480 DS FULL\r\n"); + WRITE_LINE("; 2 = 512x448 DR WIN 3 = 512x448 DR FULL\r\n"); + WRITE_LINE("; 4 = 640x480 DR FULL 5 = 800x600 DR FULL\r\n"); #ifdef __OPENGL__ - 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 WIN 13 = 1024x768 ODS FULL\r\n"); - WRITE_LINE("; 14 = 1024x768 ODS WIN 15 = 1024x896 ODR WIN\r\n"); - WRITE_LINE("; 16 = 1280x1024 ODS FULL 17 = 1600x1200 ODR FULL\r\n"); - WRITE_LINE("; 18 = VARIABLE ODS WIN\r\n"); + WRITE_LINE("; 6 = 256x224 OR WIN 7 = 512x448 ODR WIN\r\n"); + WRITE_LINE("; 8 = 640x480 ODS FULL 9 = 640x480 ODS WIN\r\n"); + WRITE_LINE("; 10 = 640x576 ODR WIN 11 = 768x672 ODR WIN\r\n"); + WRITE_LINE("; 12 = 800x600 ODS FULL 13 = 800x600 ODS WIN\r\n"); + WRITE_LINE("; 14 = 896x784 ODR WIN 15 = 1024x768 ODS FULL\r\n"); + WRITE_LINE("; 16 = 1024x768 ODS WIN 17 = 1024x896 ODR WIN\r\n"); + WRITE_LINE("; 18 = 1280x960 ODS FULL 19 = 1280x1024 ODS FULL\r\n"); + WRITE_LINE("; 20 = 1600x1200 ODR FULL 21 = VARIABLE ODR WIN\r\n"); #endif sprintf(buffer, "\r\nVideoModeLin = %d\r\n\r\n", cfgcvidmode); SAVE_LINE(buffer); diff --git a/zsnes/src/linux/sdlintrf.asm b/zsnes/src/linux/sdlintrf.asm index 7f9805fd..08c6c8e5 100644 --- a/zsnes/src/linux/sdlintrf.asm +++ b/zsnes/src/linux/sdlintrf.asm @@ -768,9 +768,9 @@ SECTION .data ; Total Number of Video Modes %ifdef __OPENGL__ -NEWSYM NumVideoModes, dd 19 +NEWSYM NumVideoModes, dd 22 %else -NEWSYM NumVideoModes, dd 4 +NEWSYM NumVideoModes, dd 6 %endif ; GUI Video Mode Names - Make sure that all names are of the same length @@ -779,53 +779,56 @@ NEWSYM GUIVideoModeNames db '256X224 R W',0 ;0 db '256x224 R F',0 ;1 db '512X448 DR W',0 ;2 -db '640x480 DR F',0 ;3 +db '512x448 DR F',0 ;3 +db '640x480 DR F',0 ;4 +db '800x600 DR F',0 ;5 %ifdef __OPENGL__ -db '256x224 OR W',0 ;4 -db '512x448 ODR W',0 ;5 -db '640x480 ODS F',0 ;6 -db '640x480 ODS W',0 ;7 -db '640x576 ODR W',0 ;8 -db '768x672 ODR W',0 ;9 -db '800x600 ODS F',0 ;10 -db '800x600 ODS W',0 ;11 -db '896x784 ODR W',0 ;12 -db '1024x768 ODS F',0 ;13 -db '1024x768 ODS W',0 ;14 -db '1024x896 ODR W',0 ;15 -db '1280x1024 ODS F',0 ;16 -db '1600x1200 ODS F',0 ;17 -db 'VARIABLE ODR W',0 ;18 +db '256x224 OR W',0 ;6 +db '512x448 ODR W',0 ;7 +db '640x480 ODS F',0 ;8 +db '640x480 ODS W',0 ;9 +db '640x576 ODR W',0 ;10 +db '768x672 ODR W',0 ;11 +db '800x600 ODS F',0 ;12 +db '800x600 ODS W',0 ;13 +db '896x784 ODR W',0 ;14 +db '1024x768 ODS F',0 ;15 +db '1024x768 ODS W',0 ;16 +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 %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 -NEWSYM GUI16VID, db 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 ; 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,1 ; Scanlines -NEWSYM GUIINVID, db 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,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 ; Eagle -NEWSYM GUIIEVID, db 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 ; Full Screen -NEWSYM GUIWSVID, db 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 ; Small Screen -NEWSYM GUITBVID, db 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,0,1,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,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,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,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,0 -NEWSYM GUIRATIO, db 0,1,0,0,0,0,1,0,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,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 ; 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 -NEWSYM GUIHQ2X, db 0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,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 ; hq3x filter -NEWSYM GUIHQ4X, db 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,1 ; resizable +; 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 SECTION .text diff --git a/zsnes/src/linux/sdllink.c b/zsnes/src/linux/sdllink.c index 2ae3611d..9377f76d 100644 --- a/zsnes/src/linux/sdllink.c +++ b/zsnes/src/linux/sdllink.c @@ -809,10 +809,10 @@ void initwinvideo(void) FullScreen = GUIWFVID[cvidmode]; #ifdef __OPENGL__ UseOpenGL = 0; - if (cvidmode > 3) + if (cvidmode > 5) UseOpenGL = 1; #else - if (cvidmode > 3) + if (cvidmode > 5) cvidmode = 2; // set it to the default 512x448 W #endif @@ -826,48 +826,54 @@ void initwinvideo(void) WindowHeight = 224; break; case 2: - case 5: - case 18: // Variable + case 3: + case 7: + case 21: // Variable WindowWidth = 512; WindowHeight = 448; break; - case 3: - case 6: - case 7: + case 4: + case 8: + case 9: WindowWidth = 640; WindowHeight = 480; break; - case 8: + case 10: WindowWidth = 640; WindowHeight = 576; break; - case 9: + case 11: WindowWidth = 768; WindowHeight = 672; break; - case 10: - case 11: + case 5: + case 12: + case 13: WindowWidth = 800; WindowHeight = 600; break; - case 12: + case 14: WindowWidth = 896; WindowHeight = 784; break; - case 13: - case 14: + case 15: + case 16: WindowWidth = 1024; WindowHeight = 768; break; - case 15: + case 17: WindowWidth = 1024; WindowHeight = 896; break; - case 16: + case 18: + WindowWidth = 1280; + WindowHeight = 960; + break; + case 19: WindowWidth = 1280; WindowHeight = 1024; break; - case 17: + case 20: WindowWidth = 1600; WindowHeight = 1200; break;