Port of statesaver to C, new resolution for SDL port, fixed bilinear filter in GUI
This commit is contained in:
@@ -46,7 +46,7 @@ extern DWORD BitDepth;
|
||||
static unsigned short *glvidbuffer = 0;
|
||||
static GLuint gltextures[4];
|
||||
static int gltexture256, gltexture512;
|
||||
static int glfilters = GL_NEAREST;
|
||||
static int glfilters = GL_LINEAR;
|
||||
static int glscanready = 0;
|
||||
extern Uint8 En2xSaI, scanlines;
|
||||
extern Uint8 BilinearFilter;
|
||||
@@ -55,6 +55,7 @@ extern Uint8 GUIOn2;
|
||||
|
||||
extern unsigned int vidbuffer;
|
||||
extern unsigned char curblank;
|
||||
extern BYTE GUIRESIZE[];
|
||||
|
||||
void gl_clearwin();
|
||||
void UpdateVFrame(void);
|
||||
@@ -67,7 +68,7 @@ int gl_start(int width, int height, int req_depth, int FullScreen)
|
||||
SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWPALETTE | SDL_OPENGL;
|
||||
int i;
|
||||
|
||||
flags |= (cvidmode == 16 ? SDL_RESIZABLE : 0);
|
||||
flags |= (GUIRESIZE[cvidmode] ? SDL_RESIZABLE : 0);
|
||||
flags |= (FullScreen ? SDL_FULLSCREEN : 0);
|
||||
|
||||
|
||||
|
||||
@@ -893,7 +893,7 @@ SECTION .data
|
||||
|
||||
; Total Number of Video Modes
|
||||
%ifdef __OPENGL__
|
||||
NEWSYM NumVideoModes, dd 18
|
||||
NEWSYM NumVideoModes, dd 19
|
||||
%else
|
||||
NEWSYM NumVideoModes, dd 4
|
||||
%endif
|
||||
@@ -919,38 +919,39 @@ 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 ODR WIN ',0 ;17
|
||||
db '1600x1200ODS FULL',0 ;17
|
||||
db 'VARIABLE ODR WIN ',0 ;18
|
||||
|
||||
%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
|
||||
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,1 ; 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
|
||||
; 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
|
||||
|
||||
|
||||
SECTION .text
|
||||
|
||||
; ****************************
|
||||
|
||||
@@ -87,6 +87,7 @@ extern BYTE GUIDSMODE[];
|
||||
extern BYTE GUIHQ2X[];
|
||||
extern BYTE GUIHQ3X[];
|
||||
extern BYTE GUIHQ4X[];
|
||||
extern BYTE GUIRESIZE[];
|
||||
|
||||
/* JOYSTICK AND KEYBOARD INPUT */
|
||||
SDL_Joystick *JoystickInput[5];
|
||||
@@ -388,7 +389,7 @@ int Main_Proc(void)
|
||||
break;
|
||||
#ifdef __OPENGL__
|
||||
case SDL_VIDEORESIZE:
|
||||
if(cvidmode != 17) {
|
||||
if(!GUIRESIZE[cvidmode]) {
|
||||
surface = SDL_SetVideoMode(WindowWidth, WindowHeight,
|
||||
BitDepth, surface->flags & ~SDL_RESIZABLE);
|
||||
adjustMouseXScale();
|
||||
@@ -830,7 +831,7 @@ void initwinvideo(void)
|
||||
break;
|
||||
case 2:
|
||||
case 5:
|
||||
case 17: // Variable
|
||||
case 18: // Variable
|
||||
WindowWidth = 512;
|
||||
WindowHeight = 448;
|
||||
break;
|
||||
@@ -870,6 +871,10 @@ void initwinvideo(void)
|
||||
WindowWidth = 1280;
|
||||
WindowHeight = 1024;
|
||||
break;
|
||||
case 17:
|
||||
WindowWidth = 1600;
|
||||
WindowHeight = 1200;
|
||||
break;
|
||||
}
|
||||
adjustMouseXScale();
|
||||
adjustMouseYScale();
|
||||
|
||||
Reference in New Issue
Block a user