--- ./zsnes_1_51_org/src/linux/gl_draw.c 2007-01-15 23:36:52.000000000 +0000 +++ ./zsnes_1_51/src/linux/gl_draw.c 2007-02-23 03:17:48.000000000 +0000 @@ -61,16 +61,39 @@ bool OGLModeCheck(); +void SetGLAttributes() +{ + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); +#if (SDL_MAJOR_VERSION > 1) || ((SDL_MINOR_VERSION > 2) || ((SDL_MINOR_VERSION == 2) && (SDL_PATCHLEVEL >= 10))) + //if(vsyncon) + SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1); + //else + // SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0); + SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL,1); +#endif +} + int gl_start(int width, int height, int req_depth, int FullScreen) { - Uint32 flags = SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWPALETTE | SDL_OPENGL; + Uint32 flags = SDL_OPENGL; int i; flags |= (GUIRESIZE[cvidmode] ? SDL_RESIZABLE : 0); flags |= (FullScreen ? SDL_FULLSCREEN : 0); + if (BilinearFilter) + { + glfilters = GL_LINEAR; + if (GUIOn2 && !FilteredGUI) + glfilters = GL_NEAREST; + } + else + { + glfilters = GL_NEAREST; + } SurfaceX = width; SurfaceY = height; + SetGLAttributes(); surface = SDL_SetVideoMode(SurfaceX, SurfaceY, req_depth, flags); if (surface == NULL) { @@ -78,11 +101,6 @@ return false; } - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); -#if (SDL_MAJOR_VERSION > 1) || ((SDL_MINOR_VERSION > 2) || ((SDL_MINOR_VERSION == 2) && (SDL_PATCHLEVEL >= 10))) - SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1); -#endif - if (!glvidbuffer) { glvidbuffer = (unsigned short *) malloc(512 * 512 * sizeof(short)); @@ -274,17 +292,6 @@ if (curblank || !OGLModeCheck()) return; - if (BilinearFilter) - { - glfilters = GL_LINEAR; - if (GUIOn2 && !FilteredGUI) - glfilters = GL_NEAREST; - } - else - { - glfilters = GL_NEAREST; - } - if (SurfaceX >= 512 && (hqFilter || En2xSaI)) { AddEndBytes = 0; --- ./zsnes_1_51_org/src/linux/gl_draw.h 2006-12-27 10:47:05.000000000 +0000 +++ ./zsnes_1_51/src/linux/gl_draw.h 2007-02-23 03:17:48.000000000 +0000 @@ -27,6 +27,7 @@ void gl_end(); void gl_clearwin(); void gl_drawwin(); +void SetGLAttributes(); #endif --- ./zsnes_1_51_org/src/linux/sdllink.c 2007-01-18 16:56:04.000000000 +0000 +++ ./zsnes_1_51/src/linux/sdllink.c 2007-02-23 03:21:29.000000000 +0000 @@ -42,7 +42,6 @@ typedef long long LARGE_INTEGER; #define QueryPerformanceCounter(x) asm volatile("rdtsc" : "=a"(((unsigned int *)(x))[0]),"=d"(((unsigned int *)x)[1])) - typedef enum { FALSE = 0, TRUE = 1 } BOOL; typedef enum vidstate_e { vid_null, vid_none, vid_soft, vid_gl } vidstate_t; @@ -418,10 +417,12 @@ case SDL_QUIT: exit(0); break; +#ifndef __MACOSX__ #ifdef __OPENGL__ case SDL_VIDEORESIZE: if(!GUIRESIZE[cvidmode]) { + SetGLAttributes(); surface = SDL_SetVideoMode(WindowWidth, WindowHeight, BitDepth, surface->flags & ~SDL_RESIZABLE); adjustMouseXScale(); adjustMouseYScale(); @@ -431,6 +432,7 @@ WindowHeight = SurfaceY = event.resize.h; SetHQx(SurfaceX,SurfaceY); SetHiresOpt(SurfaceX,SurfaceY); + SetGLAttributes(); surface = SDL_SetVideoMode(WindowWidth, WindowHeight, BitDepth, surface->flags); adjustMouseXScale(); adjustMouseYScale(); @@ -482,6 +484,7 @@ Clear2xSaIBuffer(); break; #endif +#endif default: break; } @@ -1021,6 +1024,7 @@ #ifdef __OPENGL__ if(OGLModeCheck()) { + SetGLAttributes(); surface = SDL_SetVideoMode(WindowWidth, WindowHeight, BitDepth, surface->flags); adjustMouseXScale(); adjustMouseYScale(); @@ -1068,9 +1072,15 @@ glLoadIdentity(); glDisable(GL_DEPTH_TEST); glFlush(); + #ifdef __MACOSX__ + clearwin(); + Clear2xSaIBuffer(); + initwinvideo(); //really really bad hack for OSX+ATI video cards -DL + #endif } #endif clearwin(); + Clear2xSaIBuffer(); } if (FirstVid == 1) @@ -1089,9 +1099,9 @@ void CheckTimers(void) { + //QueryPerformanceCounter((LARGE_INTEGER*)&end2); end2 = sem_GetTicks(); - while ((end2 - start2) >= update_ticks_pc2) { start2 += update_ticks_pc2; --- ./zsnes_1_51_org/src/video/copyvwin.asm 2007-01-16 03:37:47.000000000 +0000 +++ ./zsnes_1_51/src/video/copyvwin.asm 2007-02-23 04:23:44.000000000 +0000 @@ -1054,7 +1054,6 @@ ret .scanlines - inc dl mov [lineleft],dl ; do scanlines mov eax,[esi+510] @@ -1104,7 +1103,6 @@ ret .scanlineshalf - inc dl mov [lineleft],dl ; do scanlines .ahb @@ -1167,7 +1165,6 @@ ret .scanlinesquart - inc dl mov [lineleft],dl ; do scanlines .ahb2