//int16 * backbuffer;
uint32 * backbuffer;
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
+ #define RMASK 0xFF000000
+ #define GMASK 0x00FF0000
+ #define BMASK 0x0000FF00
+ #define AMASK 0x000000FF
+#else
+ #define RMASK 0x000000FF
+ #define GMASK 0x0000FF00
+ #define BMASK 0x00FF0000
+ #define AMASK 0xFF000000
+#endif
+
+
// One of the reasons why OpenGL is slower then normal SDL rendering, is because
// the data is being pumped into the buffer every frame with a overflow as result.
// So, we going tot render every 1 frame instead of every 0 frame.
//
// Create SDL/OpenGL surfaces
//
-bool InitVideo(void)
+bool VideoInit(void)
{
// Get proper info about the platform we're running on...
const SDL_VideoInfo * info = SDL_GetVideoInfo();
if (vjs.useOpenGL)
{
- // Initializing SDL attributes with OpenGL
- SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0);
- SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
+ // Initializing SDL attributes with OpenGL
+ SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0);
+ SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
mainSurfaceFlags = SDL_OPENGL;
-
}
else
{
// vsWidth = 1280;
//24BPP
// surface = SDL_CreateRGBSurface(SDL_SWSURFACE, VIRTUAL_SCREEN_WIDTH,
- surface = SDL_CreateRGBSurface(SDL_SWSURFACE, vsWidth, vsHeight, 32,
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF);
-#else
- 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000);
-#endif//*/
+ surface = SDL_CreateRGBSurface(SDL_SWSURFACE, vsWidth, vsHeight, 32, RMASK, GMASK, BMASK, AMASK);
if (surface == NULL)
{
// memcpy(surface->pixels, backbuffer, tom_getVideoModeWidth() * tom_getVideoModeHeight() * 2);
// This memcpy is expensive--do some profiling to see what the impact is!
if (vjs.renderType == RT_NORMAL)
- memcpy(surface->pixels, backbuffer, tom_getVideoModeWidth() * tom_getVideoModeHeight() * 4);
+ memcpy(surface->pixels, backbuffer, TOMGetVideoModeWidth() * TOMGetVideoModeHeight() * 4);
else if (vjs.renderType == RT_TV)
- memcpy(surface->pixels, backbuffer, 1280 * tom_getVideoModeHeight() * 4);
+ memcpy(surface->pixels, backbuffer, 1280 * TOMGetVideoModeHeight() * 4);
if (SDL_MUSTLOCK(surface))
SDL_UnlockSurface(surface);
void ResizeScreen(uint32 width, uint32 height)
{
SDL_FreeSurface(surface);
- surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32,
-#if SDL_BYTEORDER == SDL_BIG_ENDIAN
- 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF);
-#else
- 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000);
-#endif//*/
+ surface = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32, RMASK, GMASK, BMASK, AMASK);
if (surface == NULL)
{
//
void ToggleFullscreen(void)
{
+ // Set our internal variable, then toggle the SDL flag
vjs.fullscreen = !vjs.fullscreen;
- mainSurfaceFlags &= ~SDL_FULLSCREEN;
+ mainSurfaceFlags ^= SDL_FULLSCREEN;
+// mainSurfaceFlags = (vjs.fullscreen ? mainSurfaceFlags | SDL_FULLSCREEN :
+// mainSurfaceFlags & ~SDL_FULLSCREEN);
- if (vjs.fullscreen)
- mainSurfaceFlags |= SDL_FULLSCREEN;
+// mainSurfaceFlags &= ~SDL_FULLSCREEN;
+
+// if (vjs.fullscreen)
+// mainSurfaceFlags |= SDL_FULLSCREEN;
if (vjs.useOpenGL)
{
// This way we have good scaling functionality and when the screen is resized
// because of the NTSC <-> PAL resize, we only have to re-create the texture
// instead of initializing the entire OpenGL texture en screens.
- mainSurface = SDL_SetVideoMode(640, 480, 32, mainSurfaceFlags);//*/
+ mainSurface = SDL_SetVideoMode(640, 480, 32, mainSurfaceFlags);
// Reset viewport, etc.
glViewport(0, 0, mainSurface->w, mainSurface->h);