More OpenGL updates, patch #628356
Make sure simon debug is enabled by default svn-id: r5310
This commit is contained in:
parent
da131f8256
commit
99c8889bba
3 changed files with 39 additions and 35 deletions
|
@ -36,7 +36,7 @@ DEFINES += -DCOMPRESSED_SOUND_FILE
|
||||||
LIBS += -lmad
|
LIBS += -lmad
|
||||||
|
|
||||||
# Uncomment this to activate extended debugging support in Simon
|
# Uncomment this to activate extended debugging support in Simon
|
||||||
#DEFINES += -DSIMONDEBUG
|
DEFINES += -DSIMONDEBUG
|
||||||
|
|
||||||
# Concat DEFINES and INCLUDES to for the CPPFLAGS
|
# Concat DEFINES and INCLUDES to for the CPPFLAGS
|
||||||
CPPFLAGS= $(DEFINES) $(INCLUDES)
|
CPPFLAGS= $(DEFINES) $(INCLUDES)
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#define FB2GL_AUDIO 8 // Activate SDL Audio
|
#define FB2GL_AUDIO 8 // Activate SDL Audio
|
||||||
#define FB2GL_PITCH 16 // On fb2l_update, use pitch (else bytes per pixel)
|
#define FB2GL_PITCH 16 // On fb2l_update, use pitch (else bytes per pixel)
|
||||||
#define FB2GL_EXPAND 32 // Create a RGB fb with the color lookup table
|
#define FB2GL_EXPAND 32 // Create a RGB fb with the color lookup table
|
||||||
|
#define FB2GL_16BIT 64 // 16 BIT Color Depth
|
||||||
|
|
||||||
// This extension isn't defined in OpenGL 1.1
|
// This extension isn't defined in OpenGL 1.1
|
||||||
#ifndef GL_EXT_paletted_texture
|
#ifndef GL_EXT_paletted_texture
|
||||||
|
@ -183,13 +184,14 @@ int FB2GL::init(int width, int height, int xfix, int yfix, char _flags)
|
||||||
flags = _flags;
|
flags = _flags;
|
||||||
|
|
||||||
// Fullscreen?
|
// Fullscreen?
|
||||||
if ((flags & FB2GL_FS) && !screen) {
|
if (!screen) {
|
||||||
screen = SDL_SetVideoMode(width, height, 0, SDL_HWSURFACE | SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_FULLSCREEN);
|
screen = SDL_SetVideoMode(width, height, (flags & FB2GL_16BIT? 16: 0),
|
||||||
}
|
SDL_HWPALETTE | SDL_HWSURFACE | SDL_OPENGL | SDL_GL_DOUBLEBUFFER |
|
||||||
else if (!screen) {
|
(flags & FB2GL_FS? SDL_FULLSCREEN: 0));
|
||||||
screen = SDL_SetVideoMode(width, height, 0, SDL_HWPALETTE | SDL_HWSURFACE | SDL_OPENGL | SDL_GL_DOUBLEBUFFER);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fprintf(stderr,"Screen BitsPerPixel: %d\n",screen->format->BitsPerPixel);
|
||||||
|
|
||||||
if (!screen) {
|
if (!screen) {
|
||||||
fprintf(stderr, "Couldn't start video res %dx%d\n", width, height);
|
fprintf(stderr, "Couldn't start video res %dx%d\n", width, height);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -55,8 +55,8 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
FB2GL fb2gl;
|
FB2GL fb2gl;
|
||||||
SDL_Surface *glEnd; // Black rectangle at end of the GL screen
|
SDL_Surface *tmpSurface; // Used for black rectangles blitting
|
||||||
SDL_Rect blackrect2; // Needed for blitting the above surface
|
SDL_Rect tmpBlackRect; // Black rectangle at end of the GL screen
|
||||||
typedef void ScalerProc(uint8 *srcPtr, uint32 srcPitch, uint8 *deltaPtr,
|
typedef void ScalerProc(uint8 *srcPtr, uint32 srcPitch, uint8 *deltaPtr,
|
||||||
uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
||||||
|
|
||||||
|
@ -208,6 +208,14 @@ void OSystem_SDL_Normal::undraw_mouse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSystem_SDL_Normal::load_gfx_mode() {
|
void OSystem_SDL_Normal::load_gfx_mode() {
|
||||||
|
uint32 Rmask, Gmask, Bmask, Amask;
|
||||||
|
// I have to force 16 bit color depth with 565 ordering
|
||||||
|
// SDL_SetVideoMode sometimes doesn't accept your color depth definition
|
||||||
|
Rmask = 0xF800; // 5
|
||||||
|
Gmask = 0x07E0; // 6
|
||||||
|
Bmask = 0x001F; // 5
|
||||||
|
Amask = 0;
|
||||||
|
|
||||||
_forceFull = true;
|
_forceFull = true;
|
||||||
_mode_flags = DF_WANT_RECT_OPTIM | DF_UPDATE_EXPAND_1_PIXEL;
|
_mode_flags = DF_WANT_RECT_OPTIM | DF_UPDATE_EXPAND_1_PIXEL;
|
||||||
_scaleFactor = 2;
|
_scaleFactor = 2;
|
||||||
|
@ -228,15 +236,7 @@ void OSystem_SDL_Normal::load_gfx_mode() {
|
||||||
// Create the surface that contains the scaled graphics in 16 bit mode
|
// Create the surface that contains the scaled graphics in 16 bit mode
|
||||||
//
|
//
|
||||||
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );
|
int gl_flags = FB2GL_320 | FB2GL_RGBA | FB2GL_16BIT;
|
||||||
// if (fb2gl.screen->format->Rmask == 0x7C00)
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );
|
|
||||||
// else
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 6 );
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );
|
|
||||||
// SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
|
|
||||||
|
|
||||||
int gl_flags = FB2GL_320 | FB2GL_RGBA | FB2GL_EXPAND;
|
|
||||||
if (_full_screen) gl_flags |= (FB2GL_FS);
|
if (_full_screen) gl_flags |= (FB2GL_FS);
|
||||||
// 640x480 screen resolution
|
// 640x480 screen resolution
|
||||||
fb2gl.init(640,480,0,_screenStart? 15: 70,gl_flags);
|
fb2gl.init(640,480,0,_screenStart? 15: 70,gl_flags);
|
||||||
|
@ -252,24 +252,26 @@ void OSystem_SDL_Normal::load_gfx_mode() {
|
||||||
uint16 *tmp_screen = (uint16*)calloc(TMP_SCREEN_WIDTH*(_screenHeight+3),sizeof(uint16));
|
uint16 *tmp_screen = (uint16*)calloc(TMP_SCREEN_WIDTH*(_screenHeight+3),sizeof(uint16));
|
||||||
sdl_tmpscreen = SDL_CreateRGBSurfaceFrom(tmp_screen,
|
sdl_tmpscreen = SDL_CreateRGBSurfaceFrom(tmp_screen,
|
||||||
TMP_SCREEN_WIDTH, _screenHeight + 3, 16, TMP_SCREEN_WIDTH*2,
|
TMP_SCREEN_WIDTH, _screenHeight + 3, 16, TMP_SCREEN_WIDTH*2,
|
||||||
fb2gl.screen->format->Rmask,
|
Rmask,
|
||||||
fb2gl.screen->format->Gmask,
|
Gmask,
|
||||||
fb2gl.screen->format->Bmask,
|
Bmask,
|
||||||
fb2gl.screen->format->Amask);
|
Amask);
|
||||||
|
|
||||||
glEnd = SDL_CreateRGBSurface(SDL_SWSURFACE, _screenWidth,
|
fprintf(stderr,"bits: %d\n",sdl_tmpscreen->format->BitsPerPixel);
|
||||||
|
|
||||||
|
tmpSurface = SDL_CreateRGBSurface(SDL_SWSURFACE, _screenWidth,
|
||||||
// 320x256 texture (black end)
|
// 320x256 texture (black end)
|
||||||
256-_screenHeight-_screenStart,
|
256-_screenHeight-_screenStart,
|
||||||
16,
|
16,
|
||||||
fb2gl.screen->format->Rmask,
|
Rmask,
|
||||||
fb2gl.screen->format->Gmask,
|
Gmask,
|
||||||
fb2gl.screen->format->Bmask,
|
Bmask,
|
||||||
fb2gl.screen->format->Amask);
|
Amask);
|
||||||
|
|
||||||
blackrect2.x = 0;
|
tmpBlackRect.x = 0;
|
||||||
blackrect2.y = 0;
|
tmpBlackRect.y = 0;
|
||||||
blackrect2.w = _screenWidth;
|
tmpBlackRect.w = _screenWidth;
|
||||||
blackrect2.h = 256-_screenHeight-_screenStart;
|
tmpBlackRect.h = 256-_screenHeight-_screenStart;
|
||||||
|
|
||||||
if (sdl_tmpscreen == NULL)
|
if (sdl_tmpscreen == NULL)
|
||||||
error("sdl_tmpscreen failed");
|
error("sdl_tmpscreen failed");
|
||||||
|
@ -305,9 +307,9 @@ void OSystem_SDL_Normal::update_screen() {
|
||||||
// If the shake position changed, fill the dirty area with blackness
|
// If the shake position changed, fill the dirty area with blackness
|
||||||
if (_currentShakePos != _newShakePos) {
|
if (_currentShakePos != _newShakePos) {
|
||||||
SDL_Rect blackrect = {0, _screenStart, _screenWidth, _newShakePos+_screenStart};
|
SDL_Rect blackrect = {0, _screenStart, _screenWidth, _newShakePos+_screenStart};
|
||||||
SDL_FillRect(sdl_tmpscreen, &blackrect, 0);
|
|
||||||
|
|
||||||
fb2gl.blit16(sdl_tmpscreen,1,&blackrect,0,0);
|
SDL_FillRect(tmpSurface, &blackrect, 0);
|
||||||
|
fb2gl.blit16(tmpSurface,1,&blackrect,0,0);
|
||||||
|
|
||||||
_currentShakePos = _newShakePos;
|
_currentShakePos = _newShakePos;
|
||||||
|
|
||||||
|
@ -362,8 +364,8 @@ void OSystem_SDL_Normal::update_screen() {
|
||||||
_currentShakePos+_screenStart);
|
_currentShakePos+_screenStart);
|
||||||
|
|
||||||
|
|
||||||
SDL_FillRect(glEnd, &blackrect2, 0);
|
SDL_FillRect(tmpSurface, &tmpBlackRect, 0);
|
||||||
fb2gl.blit16(glEnd,1,&blackrect2,0,_screenHeight+_screenStart);
|
fb2gl.blit16(tmpSurface,1,&tmpBlackRect,0,_screenHeight+_screenStart);
|
||||||
|
|
||||||
fb2gl.display();
|
fb2gl.display();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue