Moved some more redundant code from the SDL child classes to the

parent class.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@229 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2003-12-10 18:58:56 +00:00
parent eddc10294d
commit 8524727d42
7 changed files with 50 additions and 74 deletions

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBufferGL.cxx,v 1.12 2003-12-06 00:17:29 stephena Exp $ // $Id: FrameBufferGL.cxx,v 1.13 2003-12-10 18:58:56 stephena Exp $
//============================================================================ //============================================================================
#include <SDL.h> #include <SDL.h>
@ -86,24 +86,6 @@ bool FrameBufferGL::createScreen()
return true; return true;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void FrameBufferGL::setupPalette(float shade)
{
const uInt32* gamePalette = myMediaSource->palette();
for(uInt32 i = 0; i < 256; ++i)
{
Uint8 r, g, b;
r = (Uint8) (((gamePalette[i] & 0x00ff0000) >> 16) * shade);
g = (Uint8) (((gamePalette[i] & 0x0000ff00) >> 8) * shade);
b = (Uint8) ((gamePalette[i] & 0x000000ff) * shade);
myPalette[i] = SDL_MapRGB(myTexture->format, r, g, b);
}
theRedrawEntireFrameIndicator = true;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FrameBufferGL::init() bool FrameBufferGL::init()
{ {
@ -212,7 +194,7 @@ bool FrameBufferGL::init()
// Set up the palette *after* we know the color components // Set up the palette *after* we know the color components
// and the textures // and the textures
setupPalette(1.0); setupPalette();
// Show some OpenGL info // Show some OpenGL info
if(myConsole->settings().getBool("showinfo")) if(myConsole->settings().getBool("showinfo"))

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBufferGL.hxx,v 1.6 2003-11-30 03:36:51 stephena Exp $ // $Id: FrameBufferGL.hxx,v 1.7 2003-12-10 18:58:56 stephena Exp $
//============================================================================ //============================================================================
#ifndef FRAMEBUFFER_GL_HXX #ifndef FRAMEBUFFER_GL_HXX
@ -34,7 +34,7 @@ class MediaSource;
This class implements an SDL OpenGL framebuffer. This class implements an SDL OpenGL framebuffer.
@author Stephen Anthony @author Stephen Anthony
@version $Id: FrameBufferGL.hxx,v 1.6 2003-11-30 03:36:51 stephena Exp $ @version $Id: FrameBufferGL.hxx,v 1.7 2003-12-10 18:58:56 stephena Exp $
*/ */
class FrameBufferGL : public FrameBufferSDL class FrameBufferGL : public FrameBufferSDL
{ {
@ -64,12 +64,6 @@ class FrameBufferGL : public FrameBufferSDL
*/ */
virtual bool createScreen(); virtual bool createScreen();
/**
Set up the palette for a screen of any depth > 8.
Scales the palette by 'shade'.
*/
virtual void setupPalette(float shade);
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// The following methods are derived from FrameBuffer.hxx // The following methods are derived from FrameBuffer.hxx
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBufferSDL.cxx,v 1.9 2003-12-04 22:22:53 stephena Exp $ // $Id: FrameBufferSDL.cxx,v 1.10 2003-12-10 18:58:56 stephena Exp $
//============================================================================ //============================================================================
#include <SDL.h> #include <SDL.h>
@ -36,7 +36,8 @@ FrameBufferSDL::FrameBufferSDL()
theGrabMouseIndicator(false), theGrabMouseIndicator(false),
theHideCursorIndicator(false), theHideCursorIndicator(false),
theAspectRatio(1.0), theAspectRatio(1.0),
isFullscreen(false) isFullscreen(false),
myPauseStatus(false)
{ {
} }
@ -48,13 +49,34 @@ FrameBufferSDL::~FrameBufferSDL()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void FrameBufferSDL::pauseEvent(bool status) void FrameBufferSDL::pauseEvent(bool status)
{ {
// Shade the palette to 75% normal value in pause mode myPauseStatus = status;
if(status) setupPalette();
setupPalette(0.75);
else
setupPalette(1.0);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void FrameBufferSDL::setupPalette()
{
// Shade the palette to 75% normal value in pause mode
float shade = 1.0;
if(myPauseStatus)
shade = 0.75;
const uInt32* gamePalette = myMediaSource->palette();
for(uInt32 i = 0; i < 256; ++i)
{
Uint8 r, g, b;
r = (Uint8) (((gamePalette[i] & 0x00ff0000) >> 16) * shade);
g = (Uint8) (((gamePalette[i] & 0x0000ff00) >> 8) * shade);
b = (Uint8) ((gamePalette[i] & 0x000000ff) * shade);
myPalette[i] = SDL_MapRGB(myScreen->format, r, g, b);
}
theRedrawEntireFrameIndicator = true;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void FrameBufferSDL::toggleFullscreen() void FrameBufferSDL::toggleFullscreen()
{ {

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBufferSDL.hxx,v 1.8 2003-12-03 18:11:25 stephena Exp $ // $Id: FrameBufferSDL.hxx,v 1.9 2003-12-10 18:58:56 stephena Exp $
//============================================================================ //============================================================================
#ifndef FRAMEBUFFER_SDL_HXX #ifndef FRAMEBUFFER_SDL_HXX
@ -34,7 +34,7 @@
the core FrameBuffer. the core FrameBuffer.
@author Stephen Anthony @author Stephen Anthony
@version $Id: FrameBufferSDL.hxx,v 1.8 2003-12-03 18:11:25 stephena Exp $ @version $Id: FrameBufferSDL.hxx,v 1.9 2003-12-10 18:58:56 stephena Exp $
*/ */
class FrameBufferSDL : public FrameBuffer class FrameBufferSDL : public FrameBuffer
{ {
@ -97,6 +97,11 @@ class FrameBufferSDL : public FrameBuffer
*/ */
void setWindowAttributes(); void setWindowAttributes();
/**
Set up the palette for a screen of any depth > 8.
*/
void setupPalette();
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// The following methods are derived from FrameBuffer.hxx // The following methods are derived from FrameBuffer.hxx
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
@ -116,12 +121,6 @@ class FrameBufferSDL : public FrameBuffer
*/ */
virtual bool createScreen() = 0; virtual bool createScreen() = 0;
/**
Set up the palette for a screen of any depth > 8.
Scales the palette by 'shade'.
*/
virtual void setupPalette(float shade) = 0;
protected: protected:
// The SDL video buffer // The SDL video buffer
SDL_Surface* myScreen; SDL_Surface* myScreen;
@ -155,6 +154,9 @@ class FrameBufferSDL : public FrameBuffer
// Indicates whether the game is currently in fullscreen // Indicates whether the game is currently in fullscreen
bool isFullscreen; bool isFullscreen;
// Indicates whether the emulation has paused
bool myPauseStatus;
}; };
#endif #endif

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBufferSoft.cxx,v 1.4 2003-12-03 18:11:25 stephena Exp $ // $Id: FrameBufferSoft.cxx,v 1.5 2003-12-10 18:58:56 stephena Exp $
//============================================================================ //============================================================================
#include <SDL.h> #include <SDL.h>
@ -56,24 +56,6 @@ bool FrameBufferSoft::createScreen()
return true; return true;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void FrameBufferSoft::setupPalette(float shade)
{
const uInt32* gamePalette = myMediaSource->palette();
for(uInt32 i = 0; i < 256; ++i)
{
Uint8 r, g, b;
r = (Uint8) (((gamePalette[i] & 0x00ff0000) >> 16) * shade);
g = (Uint8) (((gamePalette[i] & 0x0000ff00) >> 8) * shade);
b = (Uint8) ((gamePalette[i] & 0x000000ff) * shade);
myPalette[i] = SDL_MapRGB(myScreen->format, r, g, b);
}
theRedrawEntireFrameIndicator = true;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FrameBufferSoft::init() bool FrameBufferSoft::init()
{ {
@ -121,7 +103,7 @@ bool FrameBufferSoft::init()
// Create the screen // Create the screen
if(!createScreen()) if(!createScreen())
return false; return false;
setupPalette(1.0); setupPalette();
// Make sure that theUseFullScreenFlag sets up fullscreen mode correctly // Make sure that theUseFullScreenFlag sets up fullscreen mode correctly
theGrabMouseIndicator = myConsole->settings().getBool("grabmouse"); theGrabMouseIndicator = myConsole->settings().getBool("grabmouse");

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBufferSoft.hxx,v 1.1 2003-11-09 23:53:20 stephena Exp $ // $Id: FrameBufferSoft.hxx,v 1.2 2003-12-10 18:58:56 stephena Exp $
//============================================================================ //============================================================================
#ifndef FRAMEBUFFER_SOFT_HXX #ifndef FRAMEBUFFER_SOFT_HXX
@ -35,7 +35,7 @@ class RectList;
This class implements an SDL software framebuffer. This class implements an SDL software framebuffer.
@author Stephen Anthony @author Stephen Anthony
@version $Id: FrameBufferSoft.hxx,v 1.1 2003-11-09 23:53:20 stephena Exp $ @version $Id: FrameBufferSoft.hxx,v 1.2 2003-12-10 18:58:56 stephena Exp $
*/ */
class FrameBufferSoft : public FrameBufferSDL class FrameBufferSoft : public FrameBufferSDL
{ {
@ -59,12 +59,6 @@ class FrameBufferSoft : public FrameBufferSDL
*/ */
virtual bool createScreen(); virtual bool createScreen();
/**
Set up the palette for a screen of any depth > 8.
Scales the palette by 'shade'.
*/
virtual void setupPalette(float shade);
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// The following methods are derived from FrameBuffer.hxx // The following methods are derived from FrameBuffer.hxx
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: mainSDL.cxx,v 1.66 2003-12-06 00:17:29 stephena Exp $ // $Id: mainSDL.cxx,v 1.67 2003-12-10 18:58:56 stephena Exp $
//============================================================================ //============================================================================
#include <fstream> #include <fstream>
@ -399,12 +399,12 @@ void handleEvents()
else if(key == SDLK_f) // Ctrl-f toggles NTSC/PAL mode else if(key == SDLK_f) // Ctrl-f toggles NTSC/PAL mode
{ {
theConsole->toggleFormat(); theConsole->toggleFormat();
theDisplay->setupPalette(1.0); theDisplay->setupPalette();
} }
else if(key == SDLK_p) // Ctrl-p toggles different palettes else if(key == SDLK_p) // Ctrl-p toggles different palettes
{ {
theConsole->togglePalette(); theConsole->togglePalette();
theDisplay->setupPalette(1.0); theDisplay->setupPalette();
} }
else if(key == SDLK_END) // Ctrl-End increases Width else if(key == SDLK_END) // Ctrl-End increases Width
{ {