Index: /trunk/nv/common.hh
===================================================================
--- /trunk/nv/common.hh	(revision 170)
+++ /trunk/nv/common.hh	(revision 171)
@@ -122,4 +122,5 @@
 #endif 
 
+#define NV_UNUSED(x) (void)(x)
 #define NV_ASSERT(cond, msg) assert( (cond) && msg )
 #define NV_THROW(eobj, ...) { \
Index: /trunk/nv/gl/gl_context.hh
===================================================================
--- /trunk/nv/gl/gl_context.hh	(revision 170)
+++ /trunk/nv/gl/gl_context.hh	(revision 171)
@@ -20,5 +20,6 @@
 	{
 	public:
-		gl_context( device* a_device );
+		gl_context( device* a_device, void* a_win_handle );
+		~gl_context();
 		virtual void clear( const clear_state& cs );
 		// temporary
@@ -45,4 +46,5 @@
 		float m_clear_depth;
 		int   m_clear_stencil;
+		void* m_handle;
 	};
 
Index: /trunk/nv/gl/gl_window.hh
===================================================================
--- /trunk/nv/gl/gl_window.hh	(revision 170)
+++ /trunk/nv/gl/gl_window.hh	(revision 171)
@@ -39,6 +39,7 @@
 		uint16      m_height;
 		string      m_title;
-		void*       m_screen;
+		void*       m_handle;
 		gl_context* m_context;
+
 	};
 
Index: /trunk/nv/lib/detail/sdl_functions.inc
===================================================================
--- /trunk/nv/lib/detail/sdl_functions.inc	(revision 170)
+++ /trunk/nv/lib/detail/sdl_functions.inc	(revision 171)
@@ -8,5 +8,5 @@
 /* SDL_rwops.h functions */
 NV_SDL_FUN( SDL_RWops *, SDL_RWFromFile, (const char *file, const char *mode) );
-NV_SDL_FUN( SDL_RWops *, SDL_RWFromFP, (FILE *fp, int autoclose) );
+NV_SDL_FUN( SDL_RWops *, SDL_RWFromFP, (FILE *fp, SDL_bool autoclose) );
 NV_SDL_FUN( SDL_RWops *, SDL_RWFromMem, (void *mem, int size) );
 NV_SDL_FUN( SDL_RWops *, SDL_RWFromConstMem, (const void *mem, int size) );
@@ -26,61 +26,7 @@
 NV_SDL_FUN( int, SDL_WriteBE64, (SDL_RWops *dst, Uint64 value) );
 
-/* SDL_video.h defines */
-NV_SDL_FUN( int, SDL_VideoInit, (const char *driver_name, Uint32 flags) );
-NV_SDL_FUN( void, SDL_VideoQuit, (void) );
-NV_SDL_FUN( char *, SDL_VideoDriverName, (char *namebuf, int maxlen) );
-NV_SDL_FUN( SDL_Surface *, SDL_GetVideoSurface, (void) );
-NV_SDL_FUN( const SDL_VideoInfo *, SDL_GetVideoInfo, (void) );
-NV_SDL_FUN( int, SDL_VideoModeOK, (int width, int height, int bpp, Uint32 flags) );
-NV_SDL_FUN( SDL_Rect **, SDL_ListModes, (SDL_PixelFormat *format, Uint32 flags) );
-NV_SDL_FUN( SDL_Surface *, SDL_SetVideoMode, (int width, int height, int bpp, Uint32 flags) );
-NV_SDL_FUN( void, SDL_UpdateRects, (SDL_Surface *screen, int numrects, SDL_Rect *rects) );
-NV_SDL_FUN( void, SDL_UpdateRect, (SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h) );
-NV_SDL_FUN( int, SDL_Flip, (SDL_Surface *screen) );
-NV_SDL_FUN( int, SDL_SetGamma, (float red, float green, float blue) );
-NV_SDL_FUN( int, SDL_SetGammaRamp, (const Uint16 *red, const Uint16 *green, const Uint16 *blue) );
-NV_SDL_FUN( int, SDL_GetGammaRamp, (Uint16 *red, Uint16 *green, Uint16 *blue) );
-NV_SDL_FUN( int, SDL_SetColors, (SDL_Surface *surface, SDL_Color *colors, int firstcolor, int ncolors) );
-NV_SDL_FUN( int, SDL_SetPalette, (SDL_Surface *surface, int flags, SDL_Color *colors, int firstcolor, int ncolors) );
-NV_SDL_FUN( Uint32, SDL_MapRGB, (const SDL_PixelFormat * const format, const Uint8 r, const Uint8 g, const Uint8 b) );
-NV_SDL_FUN( Uint32, SDL_MapRGBA, (const SDL_PixelFormat * const format, const Uint8 r, const Uint8 g, const Uint8 b, const Uint8 a) );
-NV_SDL_FUN( void, SDL_GetRGB, (Uint32 pixel, const SDL_PixelFormat * const fmt, Uint8 *r, Uint8 *g, Uint8 *b) );
-NV_SDL_FUN( void, SDL_GetRGBA, (Uint32 pixel,	const SDL_PixelFormat * const fmt, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a) );
-NV_SDL_FUN( SDL_Surface *, SDL_CreateRGBSurface, (Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) );
-NV_SDL_FUN( SDL_Surface *, SDL_CreateRGBSurfaceFrom, (void *pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) );
-NV_SDL_FUN( void, SDL_FreeSurface, (SDL_Surface *surface) );
-NV_SDL_FUN( int, SDL_LockSurface, (SDL_Surface *surface) );
-NV_SDL_FUN( void, SDL_UnlockSurface, (SDL_Surface *surface) );
-NV_SDL_FUN( SDL_Surface *, SDL_LoadBMP_RW, (SDL_RWops *src, int freesrc) );
-NV_SDL_FUN( int, SDL_SaveBMP_RW, (SDL_Surface *surface, SDL_RWops *dst, int freedst) );
-NV_SDL_FUN( int, SDL_SetColorKey, (SDL_Surface *surface, Uint32 flag, Uint32 key) );
-NV_SDL_FUN( int, SDL_SetAlpha, (SDL_Surface *surface, Uint32 flag, Uint8 alpha) );
-NV_SDL_FUN( SDL_bool, SDL_SetClipRect, (SDL_Surface *surface, const SDL_Rect *rect) );
-NV_SDL_FUN( void, SDL_GetClipRect, (SDL_Surface *surface, SDL_Rect *rect) );
-NV_SDL_FUN( SDL_Surface *, SDL_ConvertSurface, (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags) );
-NV_SDL_FUN( int, SDL_UpperBlit, (SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect) );
-NV_SDL_FUN( int, SDL_LowerBlit, (SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect) );
-NV_SDL_FUN( int, SDL_FillRect, (SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) );
-NV_SDL_FUN( SDL_Surface *, SDL_DisplayFormat, (SDL_Surface *surface) );
-NV_SDL_FUN( SDL_Surface *, SDL_DisplayFormatAlpha, (SDL_Surface *surface) );
-NV_SDL_FUN( int, SDL_GL_LoadLibrary, (const char *path) );
-NV_SDL_FUN( void *, SDL_GL_GetProcAddress, (const char* proc) );
-NV_SDL_FUN( int, SDL_GL_SetAttribute, (SDL_GLattr attr, int value) );
-NV_SDL_FUN( int, SDL_GL_GetAttribute, (SDL_GLattr attr, int* value) );
-NV_SDL_FUN( void, SDL_GL_SwapBuffers, (void) );
-NV_SDL_FUN( void, SDL_GL_UpdateRects, (int numrects, SDL_Rect* rects) );
-NV_SDL_FUN( void, SDL_GL_Lock, (void) );
-NV_SDL_FUN( void, SDL_GL_Unlock, (void) );
-NV_SDL_FUN( void, SDL_WM_SetCaption, (const char *title, const char *icon) );
-NV_SDL_FUN( void, SDL_WM_GetCaption, (char **title, char **icon) );
-NV_SDL_FUN( void, SDL_WM_SetIcon, (SDL_Surface *icon, Uint8 *mask) );
-NV_SDL_FUN( int, SDL_WM_IconifyWindow, (void) );
-NV_SDL_FUN( int, SDL_WM_ToggleFullScreen, (SDL_Surface *surface) );
-NV_SDL_FUN( SDL_GrabMode, SDL_WM_GrabInput, (SDL_GrabMode mode) ); 
-
 /* SDL_audio.h functions */
 NV_SDL_FUN( int, SDL_AudioInit, (const char *driver_name) );
 NV_SDL_FUN( void, SDL_AudioQuit, (void) ); 
-NV_SDL_FUN( char *, SDL_AudioDriverName, (char *namebuf, int maxlen) );
 NV_SDL_FUN( int, SDL_OpenAudio, (SDL_AudioSpec *desired, SDL_AudioSpec *obtained) );
 NV_SDL_FUN( SDL_audiostatus, SDL_GetAudioStatus, (void) );
@@ -88,5 +34,5 @@
 NV_SDL_FUN( SDL_AudioSpec *, SDL_LoadWAV_RW, (SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len) );
 NV_SDL_FUN( void, SDL_FreeWAV, (Uint8 *audio_buf) );
-NV_SDL_FUN( int, SDL_BuildAudioCVT, (SDL_AudioCVT *cvt, Uint16 src_format, Uint8 src_channels, int src_rate, Uint16 dst_format, Uint8 dst_channels, int dst_rate) );
+NV_SDL_FUN( int, SDL_BuildAudioCVT, (SDL_AudioCVT *cvt, SDL_AudioFormat src_format, Uint8 src_channels, int src_rate, SDL_AudioFormat dst_format, Uint8 dst_channels, int dst_rate) );
 NV_SDL_FUN( int, SDL_ConvertAudio, (SDL_AudioCVT *cvt) );
 NV_SDL_FUN( void, SDL_MixAudio, (Uint8 *dst, const Uint8 *src, Uint32 len, int volume) );
@@ -98,7 +44,5 @@
 NV_SDL_FUN( SDL_bool, SDL_HasRDTSC, (void) );
 NV_SDL_FUN( SDL_bool, SDL_HasMMX, (void) );
-NV_SDL_FUN( SDL_bool, SDL_HasMMXExt, (void) );
 NV_SDL_FUN( SDL_bool, SDL_Has3DNow, (void) );
-NV_SDL_FUN( SDL_bool, SDL_Has3DNowExt, (void) );
 NV_SDL_FUN( SDL_bool, SDL_HasSSE, (void) );
 NV_SDL_FUN( SDL_bool, SDL_HasSSE2, (void) );
@@ -106,26 +50,8 @@
 
 /* SDL_error.h functions */
-NV_SDL_FUN( void, SDL_SetError, (const char *fmt, ...) );
 NV_SDL_FUN( char *, SDL_GetError, (void) );
 NV_SDL_FUN( void, SDL_ClearError, (void) );
-NV_SDL_FUN( void, SDL_Error, (SDL_errorcode code) );
 
-/* SDL_active.h functions */
-NV_SDL_FUN( Uint8, SDL_GetAppState, (void) );
-
-/* SDL_keyboard.h functions */
-NV_SDL_FUN( int, SDL_EnableUNICODE, (int enable) );
-NV_SDL_FUN( int, SDL_EnableKeyRepeat, (int delay, int interval) );
-NV_SDL_FUN( void, SDL_GetKeyRepeat, (int *delay, int *interval) );
-NV_SDL_FUN( Uint8 *, SDL_GetKeyState, (int *numkeys) );
-NV_SDL_FUN( SDLMod, SDL_GetModState, (void) );
-NV_SDL_FUN( void, SDL_SetModState, (SDLMod modstate) );
-NV_SDL_FUN( char *, SDL_GetKeyName, (SDLKey key) );
- 
 /* SDL_mouse.h functions */
-NV_SDL_FUN( Uint8, SDL_GetMouseState, (int *x, int *y) );
-NV_SDL_FUN( Uint8, SDL_GetRelativeMouseState, (int *x, int *y) );
-NV_SDL_FUN( void, SDL_WarpMouse, (Uint16 x, Uint16 y) );
-NV_SDL_FUN( SDL_Cursor *, SDL_CreateCursor, (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y) );
 NV_SDL_FUN( void, SDL_SetCursor, (SDL_Cursor *cursor) );
 NV_SDL_FUN( SDL_Cursor *, SDL_GetCursor, (void) );
@@ -135,8 +61,4 @@
 /* SDL_joystick.h functions */
 NV_SDL_FUN( int, SDL_NumJoysticks, (void) );
-NV_SDL_FUN( const char *, SDL_JoystickName, (int device_index) );
-NV_SDL_FUN( SDL_Joystick *, SDL_JoystickOpen, (int device_index) );
-NV_SDL_FUN( int, SDL_JoystickOpened, (int device_index) );
-NV_SDL_FUN( int, SDL_JoystickIndex, (SDL_Joystick *joystick) );
 NV_SDL_FUN( int, SDL_JoystickNumAxes, (SDL_Joystick *joystick) );
 NV_SDL_FUN( int, SDL_JoystickNumBalls, (SDL_Joystick *joystick) );
@@ -144,4 +66,5 @@
 NV_SDL_FUN( int, SDL_JoystickNumButtons, (SDL_Joystick *joystick) );
 NV_SDL_FUN( void, SDL_JoystickUpdate, (void) );
+NV_SDL_FUN( SDL_Joystick *, SDL_JoystickOpen, (int device_index) );
 NV_SDL_FUN( int, SDL_JoystickEventState, (int state) );
 NV_SDL_FUN( Sint16, SDL_JoystickGetAxis, (SDL_Joystick *joystick, int axis) );
@@ -154,18 +77,28 @@
 NV_SDL_FUN( Uint32, SDL_GetTicks, (void) );
 NV_SDL_FUN( void, SDL_Delay, (Uint32 ms) );
-NV_SDL_FUN( int, SDL_SetTimer, (Uint32 interval, SDL_TimerCallback callback) );
-NV_SDL_FUN( SDL_TimerID, SDL_AddTimer, (Uint32 interval, SDL_NewTimerCallback callback, void *param) );
+NV_SDL_FUN( SDL_TimerID, SDL_AddTimer, (Uint32 interval, SDL_TimerCallback callback, void *param) );
 NV_SDL_FUN( SDL_bool, SDL_RemoveTimer, (SDL_TimerID t) );
-
-/* SDL_version.h functions */
-NV_SDL_FUN( const SDL_version *, SDL_Linked_Version, (void) ); 
 
 /* SDL_event.h functions */
 NV_SDL_FUN( void, SDL_PumpEvents, (void) );
-NV_SDL_FUN( int, SDL_PeepEvents, (SDL_Event *events, int numevents, SDL_eventaction action, Uint32 mask) );
 NV_SDL_FUN( int, SDL_PollEvent, (SDL_Event *event) );
 NV_SDL_FUN( int, SDL_WaitEvent, (SDL_Event *event) );
 NV_SDL_FUN( int, SDL_PushEvent, (SDL_Event *event) );
-NV_SDL_FUN( void, SDL_SetEventFilter, (SDL_EventFilter filter) );
-NV_SDL_FUN( SDL_EventFilter, SDL_GetEventFilter, (void) );
-NV_SDL_FUN( Uint8, SDL_EventState, (Uint8 etype, int state) );
+
+/* SDL_video/SDL_surface */
+NV_SDL_FUN( SDL_Surface *, SDL_CreateRGBSurface, (Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) );
+NV_SDL_FUN( SDL_Surface *, SDL_CreateRGBSurfaceFrom, (void *pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) );
+NV_SDL_FUN( void , SDL_FreeSurface, (SDL_Surface * surface) );
+NV_SDL_FUN( int , SDL_LockSurface, (SDL_Surface * surface) );
+NV_SDL_FUN( void , SDL_UnlockSurface, (SDL_Surface * surface) );
+NV_SDL_FUN( int, SDL_SaveBMP_RW, (SDL_Surface *surface, SDL_RWops *dst, int freedst) );
+NV_SDL_FUN( SDL_Surface *, SDL_LoadBMP_RW, (SDL_RWops *src, int freesrc) );
+NV_SDL_FUN( SDL_bool , SDL_SetClipRect, (SDL_Surface * surface,const SDL_Rect * rect) );
+NV_SDL_FUN( void , SDL_GetClipRect, (SDL_Surface * surface,SDL_Rect * rect) );
+NV_SDL_FUN( SDL_Surface *, SDL_ConvertSurface, (SDL_Surface *src, SDL_PixelFormat *fmt, Uint32 flags) );
+
+NV_SDL_FUN( int , SDL_GL_LoadLibrary, (const char *path) );
+NV_SDL_FUN( void *, SDL_GL_GetProcAddress, (const char *proc) );
+NV_SDL_FUN( int, SDL_GL_SetAttribute, (SDL_GLattr attr, int value) );
+NV_SDL_FUN( int, SDL_GL_GetAttribute, (SDL_GLattr attr, int* value) );
+
Index: /trunk/nv/lib/detail/sdl_functions_12.inc
===================================================================
--- /trunk/nv/lib/detail/sdl_functions_12.inc	(revision 171)
+++ /trunk/nv/lib/detail/sdl_functions_12.inc	(revision 171)
@@ -0,0 +1,81 @@
+/* SDL_video.h defines */
+NV_SDL_FUN( int, SDL_VideoInit, (const char *driver_name, Uint32 flags) );
+NV_SDL_FUN( void, SDL_VideoQuit, (void) );
+NV_SDL_FUN( char *, SDL_VideoDriverName, (char *namebuf, int maxlen) );
+NV_SDL_FUN( SDL_Surface *, SDL_GetVideoSurface, (void) );
+NV_SDL_FUN( const SDL_VideoInfo *, SDL_GetVideoInfo, (void) );
+NV_SDL_FUN( int, SDL_VideoModeOK, (int width, int height, int bpp, Uint32 flags) );
+NV_SDL_FUN( SDL_Rect **, SDL_ListModes, (SDL_PixelFormat *format, Uint32 flags) );
+NV_SDL_FUN( SDL_Surface *, SDL_SetVideoMode, (int width, int height, int bpp, Uint32 flags) );
+NV_SDL_FUN( void, SDL_UpdateRects, (SDL_Surface *screen, int numrects, SDL_Rect *rects) );
+NV_SDL_FUN( void, SDL_UpdateRect, (SDL_Surface *screen, Sint32 x, Sint32 y, Uint32 w, Uint32 h) );
+NV_SDL_FUN( int, SDL_Flip, (SDL_Surface *screen) );
+NV_SDL_FUN( int, SDL_SetGamma, (float red, float green, float blue) );
+NV_SDL_FUN( int, SDL_SetGammaRamp, (const Uint16 *red, const Uint16 *green, const Uint16 *blue) );
+NV_SDL_FUN( int, SDL_GetGammaRamp, (Uint16 *red, Uint16 *green, Uint16 *blue) );
+NV_SDL_FUN( int, SDL_SetColors, (SDL_Surface *surface, SDL_Color *colors, int firstcolor, int ncolors) );
+NV_SDL_FUN( int, SDL_SetPalette, (SDL_Surface *surface, int flags, SDL_Color *colors, int firstcolor, int ncolors) );
+NV_SDL_FUN( Uint32, SDL_MapRGB, (const SDL_PixelFormat * const format, const Uint8 r, const Uint8 g, const Uint8 b) );
+NV_SDL_FUN( Uint32, SDL_MapRGBA, (const SDL_PixelFormat * const format, const Uint8 r, const Uint8 g, const Uint8 b, const Uint8 a) );
+NV_SDL_FUN( void, SDL_GetRGB, (Uint32 pixel, const SDL_PixelFormat * const fmt, Uint8 *r, Uint8 *g, Uint8 *b) );
+NV_SDL_FUN( void, SDL_GetRGBA, (Uint32 pixel,	const SDL_PixelFormat * const fmt, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a) );
+NV_SDL_FUN( int, SDL_SetColorKey, (SDL_Surface *surface, Uint32 flag, Uint32 key) );
+NV_SDL_FUN( int, SDL_SetAlpha, (SDL_Surface *surface, Uint32 flag, Uint8 alpha) );
+NV_SDL_FUN( int, SDL_UpperBlit, (SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect) );
+NV_SDL_FUN( int, SDL_LowerBlit, (SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect) );
+NV_SDL_FUN( int, SDL_FillRect, (SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) );
+NV_SDL_FUN( SDL_Surface *, SDL_DisplayFormat, (SDL_Surface *surface) );
+NV_SDL_FUN( SDL_Surface *, SDL_DisplayFormatAlpha, (SDL_Surface *surface) );
+NV_SDL_FUN( int, SDL_WM_IconifyWindow, (void) );
+NV_SDL_FUN( int, SDL_WM_ToggleFullScreen, (SDL_Surface *surface) );
+NV_SDL_FUN( SDL_GrabMode, SDL_WM_GrabInput, (SDL_GrabMode mode) ); 
+NV_SDL_FUN( void, SDL_GL_SwapBuffers, (void) );
+NV_SDL_FUN( void, SDL_GL_UpdateRects, (int numrects, SDL_Rect* rects) );
+NV_SDL_FUN( void, SDL_GL_Lock, (void) );
+NV_SDL_FUN( void, SDL_GL_Unlock, (void) );
+NV_SDL_FUN( void, SDL_WM_SetCaption, (const char *title, const char *icon) );
+NV_SDL_FUN( void, SDL_WM_GetCaption, (char **title, char **icon) );
+NV_SDL_FUN( void, SDL_WM_SetIcon, (SDL_Surface *icon, Uint8 *mask) );
+
+/* SDL_audio.h functions */
+NV_SDL_FUN( char *, SDL_AudioDriverName, (char *namebuf, int maxlen) );
+
+/* SDL_cpuinfo.h functions */
+NV_SDL_FUN( SDL_bool, SDL_HasMMXExt, (void) );
+NV_SDL_FUN( SDL_bool, SDL_Has3DNowExt, (void) );
+
+/* SDL_error.h functions */
+NV_SDL_FUN( void, SDL_SetError, (const char *fmt, ...) );
+NV_SDL_FUN( void, SDL_Error, (SDL_errorcode code) );
+
+/* SDL_active.h functions */
+NV_SDL_FUN( Uint8, SDL_GetAppState, (void) );
+
+/* SDL_keyboard.h functions */
+NV_SDL_FUN( int, SDL_EnableUNICODE, (int enable) );
+NV_SDL_FUN( int, SDL_EnableKeyRepeat, (int delay, int interval) );
+NV_SDL_FUN( void, SDL_GetKeyRepeat, (int *delay, int *interval) );
+NV_SDL_FUN( Uint8 *, SDL_GetKeyState, (int *numkeys) );
+NV_SDL_FUN( SDLMod, SDL_GetModState, (void) );
+NV_SDL_FUN( void, SDL_SetModState, (SDLMod modstate) );
+NV_SDL_FUN( char *, SDL_GetKeyName, (SDLKey key) );
+ 
+/* SDL_mouse.h functions */
+NV_SDL_FUN( Uint8, SDL_GetMouseState, (int *x, int *y) );
+NV_SDL_FUN( Uint8, SDL_GetRelativeMouseState, (int *x, int *y) );
+NV_SDL_FUN( void, SDL_WarpMouse, (Uint16 x, Uint16 y) );
+NV_SDL_FUN( SDL_Cursor *, SDL_CreateCursor, (Uint8 *data, Uint8 *mask, int w, int h, int hot_x, int hot_y) );
+
+/* SDL_joystick.h functions */
+NV_SDL_FUN( const char *, SDL_JoystickName, (int device_index) );
+NV_SDL_FUN( int, SDL_JoystickOpened, (int device_index) );
+NV_SDL_FUN( int, SDL_JoystickIndex, (SDL_Joystick *joystick) );
+
+/* SDL_version.h functions */
+NV_SDL_FUN( const SDL_version *, SDL_Linked_Version, (void) ); 
+
+/* SDL_event.h functions */
+NV_SDL_FUN( int, SDL_PeepEvents, (SDL_Event *events, int numevents, SDL_eventaction action, Uint32 mask) );
+NV_SDL_FUN( void, SDL_SetEventFilter, (SDL_EventFilter filter) );
+NV_SDL_FUN( SDL_EventFilter, SDL_GetEventFilter, (void) );
+NV_SDL_FUN( Uint8, SDL_EventState, (Uint8 etype, int state) );
Index: /trunk/nv/lib/detail/sdl_functions_20.inc
===================================================================
--- /trunk/nv/lib/detail/sdl_functions_20.inc	(revision 171)
+++ /trunk/nv/lib/detail/sdl_functions_20.inc	(revision 171)
@@ -0,0 +1,303 @@
+/* SDL_video.h defines */
+NV_SDL_FUN( int , SDL_GetNumVideoDrivers, (void) );
+NV_SDL_FUN( const char *, SDL_GetVideoDriver, (int index) );
+NV_SDL_FUN( int , SDL_VideoInit, (const char *driver_name) );
+NV_SDL_FUN( void , SDL_VideoQuit, (void) );
+NV_SDL_FUN( const char *, SDL_GetCurrentVideoDriver, (void) );
+NV_SDL_FUN( int , SDL_GetNumVideoDisplays, (void) );
+NV_SDL_FUN( const char * , SDL_GetDisplayName, (int displayIndex) );
+NV_SDL_FUN( int , SDL_GetDisplayBounds, (int displayIndex, SDL_Rect * rect) );
+NV_SDL_FUN( int , SDL_GetNumDisplayModes, (int displayIndex) );
+NV_SDL_FUN( int , SDL_GetDisplayMode, (int displayIndex, int modeIndex,SDL_DisplayMode * mode) );
+NV_SDL_FUN( int , SDL_GetDesktopDisplayMode, (int displayIndex, SDL_DisplayMode * mode) );
+NV_SDL_FUN( int , SDL_GetCurrentDisplayMode, (int displayIndex, SDL_DisplayMode * mode) );
+NV_SDL_FUN( SDL_DisplayMode * , SDL_GetClosestDisplayMode, (int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest) );
+NV_SDL_FUN( int , SDL_GetWindowDisplayIndex, (SDL_Window * window) );
+NV_SDL_FUN( int , SDL_SetWindowDisplayMode, (SDL_Window * window,const SDL_DisplayMode* mode) );
+NV_SDL_FUN( int , SDL_GetWindowDisplayMode, (SDL_Window * window,SDL_DisplayMode * mode) );
+NV_SDL_FUN( Uint32 , SDL_GetWindowPixelFormat, (SDL_Window * window) );
+NV_SDL_FUN( SDL_Window * , SDL_CreateWindow, (const char *title,int x, int y, int w,int h, Uint32 flags) );
+NV_SDL_FUN( SDL_Window * , SDL_CreateWindowFrom, (const void *data) );
+NV_SDL_FUN( Uint32 , SDL_GetWindowID, (SDL_Window * window) );
+NV_SDL_FUN( SDL_Window * , SDL_GetWindowFromID, (Uint32 id) );
+NV_SDL_FUN( Uint32 , SDL_GetWindowFlags, (SDL_Window * window) );
+NV_SDL_FUN( void , SDL_SetWindowTitle, (SDL_Window * window,const char *title) );
+NV_SDL_FUN( const char *, SDL_GetWindowTitle, (SDL_Window * window) );
+NV_SDL_FUN( void , SDL_SetWindowIcon, (SDL_Window * window,SDL_Surface * icon) );
+NV_SDL_FUN( void* , SDL_SetWindowData, (SDL_Window * window,const char *name,void *userdata) );
+NV_SDL_FUN( void *, SDL_GetWindowData, (SDL_Window * window,const char *name) );
+NV_SDL_FUN( void , SDL_SetWindowPosition, (SDL_Window * window,int x, int y) );
+NV_SDL_FUN( void , SDL_GetWindowPosition, (SDL_Window * window,int *x, int *y) );
+NV_SDL_FUN( void , SDL_SetWindowSize, (SDL_Window * window, int w,int h) );
+NV_SDL_FUN( void , SDL_GetWindowSize, (SDL_Window * window, int *w,int *h) );
+NV_SDL_FUN( void , SDL_SetWindowMinimumSize, (SDL_Window * window,int min_w, int min_h) );
+NV_SDL_FUN( void , SDL_GetWindowMinimumSize, (SDL_Window * window,int *w, int *h) );
+NV_SDL_FUN( void , SDL_SetWindowMaximumSize, (SDL_Window * window,int max_w, int max_h) );
+NV_SDL_FUN( void , SDL_GetWindowMaximumSize, (SDL_Window * window,int *w, int *h) );
+NV_SDL_FUN( void , SDL_SetWindowBordered, (SDL_Window * window,SDL_bool bordered) );
+NV_SDL_FUN( void , SDL_ShowWindow, (SDL_Window * window) );
+NV_SDL_FUN( void , SDL_HideWindow, (SDL_Window * window) );
+NV_SDL_FUN( void , SDL_RaiseWindow, (SDL_Window * window) );
+NV_SDL_FUN( void , SDL_MaximizeWindow, (SDL_Window * window) );
+NV_SDL_FUN( void , SDL_MinimizeWindow, (SDL_Window * window) );
+NV_SDL_FUN( void , SDL_RestoreWindow, (SDL_Window * window) );
+NV_SDL_FUN( int , SDL_SetWindowFullscreen, (SDL_Window * window,Uint32 flags) );
+NV_SDL_FUN( SDL_Surface * , SDL_GetWindowSurface, (SDL_Window * window) );
+NV_SDL_FUN( int , SDL_UpdateWindowSurface, (SDL_Window * window) );
+NV_SDL_FUN( int , SDL_UpdateWindowSurfaceRects, (SDL_Window * window,const SDL_Rect * rects,int numrects) );
+NV_SDL_FUN( void , SDL_SetWindowGrab, (SDL_Window * window,SDL_bool grabbed) );
+NV_SDL_FUN( SDL_bool , SDL_GetWindowGrab, (SDL_Window * window) );
+NV_SDL_FUN( int , SDL_SetWindowBrightness, (SDL_Window * window, float brightness) );
+NV_SDL_FUN( float , SDL_GetWindowBrightness, (SDL_Window * window) );
+NV_SDL_FUN( int , SDL_SetWindowGammaRamp, (SDL_Window * window,const Uint16 * red,const Uint16 * green,const Uint16 * blue) );
+NV_SDL_FUN( int , SDL_GetWindowGammaRamp, (SDL_Window * window,Uint16 * red,Uint16 * green,Uint16 * blue) );
+NV_SDL_FUN( void , SDL_DestroyWindow, (SDL_Window * window) );
+NV_SDL_FUN( SDL_bool , SDL_IsScreenSaverEnabled, (void) );
+NV_SDL_FUN( void , SDL_EnableScreenSaver, (void) );
+NV_SDL_FUN( void , SDL_DisableScreenSaver, (void) );
+NV_SDL_FUN( void , SDL_GL_UnloadLibrary, (void) );
+NV_SDL_FUN( SDL_bool , SDL_GL_ExtensionSupported, (const char*extension) );
+NV_SDL_FUN( SDL_GLContext , SDL_GL_CreateContext, (SDL_Window *window) );
+NV_SDL_FUN( int , SDL_GL_MakeCurrent, (SDL_Window * window,SDL_GLContext context) );
+NV_SDL_FUN( SDL_Window* , SDL_GL_GetCurrentWindow, (void) );
+NV_SDL_FUN( SDL_GLContext , SDL_GL_GetCurrentContext, (void) );
+NV_SDL_FUN( int , SDL_GL_SetSwapInterval, (int interval) );
+NV_SDL_FUN( int , SDL_GL_GetSwapInterval, (void) );
+NV_SDL_FUN( void , SDL_GL_SwapWindow, (SDL_Window * window) );
+NV_SDL_FUN( void , SDL_GL_DeleteContext, (SDL_GLContext context) );
+
+/* SDL_audio.h functions */
+NV_SDL_FUN( int , SDL_GetNumAudioDrivers, (void) );
+NV_SDL_FUN( const char *, SDL_GetAudioDriver, (int index) );
+NV_SDL_FUN( const char *, SDL_GetCurrentAudioDriver, (void) );
+NV_SDL_FUN( int , SDL_GetNumAudioDevices, (int iscapture) );
+NV_SDL_FUN( const char *, SDL_GetAudioDeviceName, (int index, int iscapture) );
+NV_SDL_FUN( SDL_AudioDeviceID , SDL_OpenAudioDevice, (const char *device, int iscapture, const SDL_AudioSpec * desired, SDL_AudioSpec * obtained, int allowed_changes) );
+NV_SDL_FUN( SDL_AudioStatus , SDL_GetAudioDeviceStatus, (SDL_AudioDeviceID dev) );
+NV_SDL_FUN( void , SDL_PauseAudioDevice, (SDL_AudioDeviceID dev, int pause_on) );
+NV_SDL_FUN( void , SDL_MixAudioFormat, (Uint8 * dst, const Uint8 * src, SDL_AudioFormat format, Uint32 len, int volume) );
+NV_SDL_FUN( void , SDL_LockAudioDevice, (SDL_AudioDeviceID dev) );
+NV_SDL_FUN( void , SDL_UnlockAudioDevice, (SDL_AudioDeviceID dev) );
+NV_SDL_FUN( void , SDL_CloseAudioDevice, (SDL_AudioDeviceID dev) );
+// NV_SDL_FUN( int , SDL_AudioDeviceConnected, (SDL_AudioDeviceID dev) );
+
+/* SDL_cpuinfo.h functions */
+NV_SDL_FUN( int , SDL_GetCPUCount, (void) );
+NV_SDL_FUN( int , SDL_GetCPUCacheLineSize, (void) );
+NV_SDL_FUN( SDL_bool, SDL_HasSSE3, (void) );
+NV_SDL_FUN( SDL_bool, SDL_HasSSE41, (void) );
+NV_SDL_FUN( SDL_bool, SDL_HasSSE42, (void) );
+
+/* SDL_error.h functions */
+NV_SDL_FUN( int, SDL_SetError, (const char *fmt, ...) );
+NV_SDL_FUN( int, SDL_Error, (SDL_errorcode code) );
+
+/* SDL_keyboard.h functions */
+NV_SDL_FUN( SDL_Window * , SDL_GetKeyboardFocus, (void) );
+NV_SDL_FUN( const Uint8 *, SDL_GetKeyboardState, (int *numkeys) );
+NV_SDL_FUN( SDL_Keymod , SDL_GetModState, (void) );
+NV_SDL_FUN( void , SDL_SetModState, (SDL_Keymod modstate) );
+NV_SDL_FUN( SDL_Keycode , SDL_GetKeyFromScancode, (SDL_Scancode scancode) );
+NV_SDL_FUN( SDL_Scancode , SDL_GetScancodeFromKey, (SDL_Keycode key) );
+NV_SDL_FUN( const char *, SDL_GetScancodeName, (SDL_Scancode scancode) );
+NV_SDL_FUN( SDL_Scancode , SDL_GetScancodeFromName, (const char *name) );
+NV_SDL_FUN( const char *, SDL_GetKeyName, (SDL_Keycode key) );
+NV_SDL_FUN( SDL_Keycode , SDL_GetKeyFromName, (const char *name) );
+NV_SDL_FUN( void , SDL_StartTextInput, (void) );
+NV_SDL_FUN( SDL_bool , SDL_IsTextInputActive, (void) );
+NV_SDL_FUN( void , SDL_StopTextInput, (void) );
+NV_SDL_FUN( void , SDL_SetTextInputRect, (SDL_Rect *rect) );
+NV_SDL_FUN( SDL_bool , SDL_HasScreenKeyboardSupport, (void) );
+NV_SDL_FUN( SDL_bool , SDL_IsScreenKeyboardShown, (SDL_Window *window) ); 
+
+/* SDL_mouse.h functions */
+NV_SDL_FUN( SDL_Window * , SDL_GetMouseFocus, (void) );
+NV_SDL_FUN( Uint32 , SDL_GetMouseState, (int *x, int *y) );
+NV_SDL_FUN( Uint32 , SDL_GetRelativeMouseState, (int *x, int *y) );
+NV_SDL_FUN( void , SDL_WarpMouseInWindow, (SDL_Window * window,int x, int y) );
+NV_SDL_FUN( int , SDL_SetRelativeMouseMode, (SDL_bool enabled) );
+NV_SDL_FUN( SDL_bool , SDL_GetRelativeMouseMode, (void) );
+NV_SDL_FUN( SDL_Cursor *, SDL_CreateCursor, (const Uint8 * data,const Uint8 * mask,int w, int h, int hot_x,int hot_y) );
+NV_SDL_FUN( SDL_Cursor *, SDL_CreateColorCursor, (SDL_Surface *surface,int hot_x,int hot_y) );
+NV_SDL_FUN( SDL_Cursor *, SDL_CreateSystemCursor, (SDL_SystemCursor id) );
+NV_SDL_FUN( SDL_Cursor *, SDL_GetDefaultCursor, (void) );
+
+NV_SDL_FUN( const char *, SDL_JoystickName, (SDL_Joystick * joystick) );
+NV_SDL_FUN( const char *, SDL_JoystickNameForIndex, (int device_index) );
+NV_SDL_FUN( SDL_JoystickGUID , SDL_JoystickGetDeviceGUID, (int device_index) );
+NV_SDL_FUN( SDL_JoystickGUID , SDL_JoystickGetGUID, (SDL_Joystick * joystick) );
+NV_SDL_FUN( void, SDL_JoystickGetGUIDString, (SDL_JoystickGUID guid, char *pszGUID, int cbGUID) );
+NV_SDL_FUN( SDL_JoystickGUID , SDL_JoystickGetGUIDFromString, (const char *pchGUID) );
+NV_SDL_FUN( SDL_bool , SDL_JoystickGetAttached, (SDL_Joystick * joystick) );
+NV_SDL_FUN( SDL_JoystickID , SDL_JoystickInstanceID, (SDL_Joystick * joystick) );
+
+NV_SDL_FUN( Uint64 , SDL_GetPerformanceCounter, (void) ); 
+NV_SDL_FUN( Uint64 , SDL_GetPerformanceFrequency, (void) );
+
+/* SDL_version.h functions */
+NV_SDL_FUN( void , SDL_GetVersion, (SDL_version * ver) );
+NV_SDL_FUN( const char *, SDL_GetRevision, (void) );
+NV_SDL_FUN( int , SDL_GetRevisionNumber, (void) );
+
+/* SDL_event.h functions */
+NV_SDL_FUN( int , SDL_PeepEvents, (SDL_Event * events, int numevents,SDL_eventaction action,Uint32 minType, Uint32 maxType) );
+NV_SDL_FUN( SDL_bool , SDL_HasEvent, (Uint32 type) );
+NV_SDL_FUN( SDL_bool , SDL_HasEvents, (Uint32 minType, Uint32 maxType) );
+NV_SDL_FUN( void , SDL_FlushEvent, (Uint32 type) );
+NV_SDL_FUN( void , SDL_FlushEvents, (Uint32 minType, Uint32 maxType) );
+NV_SDL_FUN( int , SDL_WaitEventTimeout, (SDL_Event * event,int timeout) );
+NV_SDL_FUN( void , SDL_SetEventFilter, (SDL_EventFilter filter,void *userdata) );
+NV_SDL_FUN( SDL_bool , SDL_GetEventFilter, (SDL_EventFilter * filter,void **userdata) );
+NV_SDL_FUN( void , SDL_AddEventWatch, (SDL_EventFilter filter,void *userdata) );
+NV_SDL_FUN( void , SDL_DelEventWatch, (SDL_EventFilter filter,void *userdata) );
+NV_SDL_FUN( void , SDL_FilterEvents, (SDL_EventFilter filter,void *userdata) );
+NV_SDL_FUN( Uint8 , SDL_EventState, (Uint32 type, int state) );
+NV_SDL_FUN( Uint32 , SDL_RegisterEvents, (int numevents) ); 
+
+/* SDL_clipboard.h functions (2.0 only) */
+NV_SDL_FUN( int, SDL_SetClipboardText, (const char *text) );
+NV_SDL_FUN( char *, SDL_GetClipboardText, (void) );
+NV_SDL_FUN( SDL_bool, SDL_HasClipboardText, (void) );
+
+/* SDL_gamecontroller.h functions (2.0 only) */
+NV_SDL_FUN( int , SDL_GameControllerAddMapping, ( const char* mappingString ) );
+NV_SDL_FUN( char * , SDL_GameControllerMappingForGUID, ( SDL_JoystickGUID guid ) );
+NV_SDL_FUN( char * , SDL_GameControllerMapping, ( SDL_GameController * gamecontroller ) );
+NV_SDL_FUN( SDL_bool , SDL_IsGameController, (int joystick_index) );
+NV_SDL_FUN( const char *, SDL_GameControllerNameForIndex, (int joystick_index) );
+NV_SDL_FUN( SDL_GameController *, SDL_GameControllerOpen, (int joystick_index) );
+NV_SDL_FUN( const char *, SDL_GameControllerName, (SDL_GameController *gamecontroller) );
+NV_SDL_FUN( SDL_bool , SDL_GameControllerGetAttached, (SDL_GameController *gamecontroller) );
+NV_SDL_FUN( SDL_Joystick *, SDL_GameControllerGetJoystick, (SDL_GameController *gamecontroller) );
+NV_SDL_FUN( int , SDL_GameControllerEventState, (int state) );
+NV_SDL_FUN( void , SDL_GameControllerUpdate, (void) );
+NV_SDL_FUN( SDL_GameControllerAxis , SDL_GameControllerGetAxisFromString, (const char *pchString) );
+NV_SDL_FUN( const char* , SDL_GameControllerGetStringForAxis, (SDL_GameControllerAxis axis) );
+NV_SDL_FUN( SDL_GameControllerButtonBind , SDL_GameControllerGetBindForAxis, (SDL_GameController *gamecontroller,SDL_GameControllerAxis axis) );
+NV_SDL_FUN( Sint16 , SDL_GameControllerGetAxis, (SDL_GameController *gamecontroller,SDL_GameControllerAxis axis) );
+NV_SDL_FUN( SDL_GameControllerButton , SDL_GameControllerGetButtonFromString, (const char *pchString) );
+NV_SDL_FUN( const char* , SDL_GameControllerGetStringForButton, (SDL_GameControllerButton button) );
+NV_SDL_FUN( SDL_GameControllerButtonBind , SDL_GameControllerGetBindForButton, (SDL_GameController *gamecontroller,SDL_GameControllerButton button) );
+NV_SDL_FUN( Uint8 , SDL_GameControllerGetButton, (SDL_GameController *gamecontroller,SDL_GameControllerButton button) );
+NV_SDL_FUN( void , SDL_GameControllerClose, (SDL_GameController *gamecontroller) );
+
+/* SDL_hints.h functions (2.0 only) */
+NV_SDL_FUN( SDL_bool , SDL_SetHintWithPriority, (const char *name,const char *value,SDL_HintPriority priority) );
+NV_SDL_FUN( SDL_bool , SDL_SetHint, (const char *name,const char *value) );
+NV_SDL_FUN( const char * , SDL_GetHint, (const char *name) );
+NV_SDL_FUN( void , SDL_ClearHints, (void) ); 
+
+/* SDL_main.h functions (2.0 only) */
+NV_SDL_FUN( void , SDL_SetMainReady, (void) );
+// NV_SDL_FUN( int , SDL_RegisterApp, (char *name, Uint32 style,void *hInst) );
+// NV_SDL_FUN( void , SDL_UnregisterApp, (void) ); 
+
+/* SDL_messagebox.h functions (2.0 only) */
+NV_SDL_FUN( int , SDL_ShowMessageBox, (const SDL_MessageBoxData *messageboxdata, int *buttonid) );
+NV_SDL_FUN( int , SDL_ShowSimpleMessageBox, (Uint32 flags, const char *title, const char *message, SDL_Window *window) ); 
+
+/* SDL_pixels.h functions (2.0 only) */
+NV_SDL_FUN( const char* , SDL_GetPixelFormatName, (Uint32 format) );
+NV_SDL_FUN( SDL_bool , SDL_PixelFormatEnumToMasks, (Uint32 format,int *bpp,Uint32 * Rmask,Uint32 * Gmask,Uint32 * Bmask,Uint32 * Amask) );
+NV_SDL_FUN( Uint32 , SDL_MasksToPixelFormatEnum, (int bpp,Uint32 Rmask,Uint32 Gmask,Uint32 Bmask,Uint32 Amask) );
+NV_SDL_FUN( SDL_PixelFormat * , SDL_AllocFormat, (Uint32 pixel_format) );
+NV_SDL_FUN( void , SDL_FreeFormat, (SDL_PixelFormat *format) );
+NV_SDL_FUN( SDL_Palette *, SDL_AllocPalette, (int ncolors) );
+NV_SDL_FUN( int , SDL_SetPixelFormatPalette, (SDL_PixelFormat * format,SDL_Palette *palette) );
+NV_SDL_FUN( int , SDL_SetPaletteColors, (SDL_Palette * palette,const SDL_Color * colors,int firstcolor, int ncolors) );
+NV_SDL_FUN( void , SDL_FreePalette, (SDL_Palette * palette) );
+NV_SDL_FUN( Uint32 , SDL_MapRGB, (const SDL_PixelFormat * format,Uint8 r, Uint8 g, Uint8 b) );
+NV_SDL_FUN( Uint32 , SDL_MapRGBA, (const SDL_PixelFormat * format,Uint8 r, Uint8 g, Uint8 b,Uint8 a) );
+NV_SDL_FUN( void , SDL_GetRGB, (Uint32 pixel,const SDL_PixelFormat * format,Uint8 * r, Uint8 * g, Uint8 * b) );
+NV_SDL_FUN( void , SDL_GetRGBA, (Uint32 pixel,const SDL_PixelFormat * format,Uint8 * r, Uint8 * g, Uint8 * b,Uint8 * a) );
+NV_SDL_FUN( void , SDL_CalculateGammaRamp, (float gamma, Uint16 * ramp) );  
+
+/* SDL_platform.h functions (2.0 only) */
+NV_SDL_FUN( const char * , SDL_GetPlatform , (void) );
+
+/* SDL_power.h functions (2.0 only) */
+NV_SDL_FUN( SDL_PowerState , SDL_GetPowerInfo, (int *secs, int *pct) ); 
+
+/* SDL_renderer.h functions (2.0 only) */
+NV_SDL_FUN( int , SDL_GetNumRenderDrivers, (void) );
+NV_SDL_FUN( int , SDL_GetRenderDriverInfo, (int index,SDL_RendererInfo * info) );
+NV_SDL_FUN( int , SDL_CreateWindowAndRenderer, (int width, int height, Uint32 window_flags,SDL_Window **window, SDL_Renderer **renderer) );
+NV_SDL_FUN( SDL_Renderer * , SDL_CreateRenderer, (SDL_Window * window,int index, Uint32 flags) );
+NV_SDL_FUN( SDL_Renderer * , SDL_CreateSoftwareRenderer, (SDL_Surface * surface) );
+NV_SDL_FUN( SDL_Renderer * , SDL_GetRenderer, (SDL_Window * window) );
+NV_SDL_FUN( int , SDL_GetRendererInfo, (SDL_Renderer * renderer,SDL_RendererInfo * info) );
+NV_SDL_FUN( int , SDL_GetRendererOutputSize, (SDL_Renderer * renderer,int *w, int *h) );
+NV_SDL_FUN( SDL_Texture * , SDL_CreateTexture, (SDL_Renderer * renderer,Uint32 format,int access, int w,int h) );
+NV_SDL_FUN( SDL_Texture * , SDL_CreateTextureFromSurface, (SDL_Renderer * renderer, SDL_Surface * surface) );
+NV_SDL_FUN( int , SDL_QueryTexture, (SDL_Texture * texture,Uint32 * format, int *access,int *w, int *h) );
+NV_SDL_FUN( int , SDL_SetTextureColorMod, (SDL_Texture * texture,Uint8 r, Uint8 g, Uint8 b) );
+NV_SDL_FUN( int , SDL_GetTextureColorMod, (SDL_Texture * texture,Uint8 * r, Uint8 * g,Uint8 * b) );
+NV_SDL_FUN( int , SDL_SetTextureAlphaMod, (SDL_Texture * texture,Uint8 alpha) );
+NV_SDL_FUN( int , SDL_GetTextureAlphaMod, (SDL_Texture * texture,Uint8 * alpha) );
+NV_SDL_FUN( int , SDL_SetTextureBlendMode, (SDL_Texture * texture,SDL_BlendMode blendMode) );
+NV_SDL_FUN( int , SDL_GetTextureBlendMode, (SDL_Texture * texture,SDL_BlendMode *blendMode) );
+NV_SDL_FUN( int , SDL_UpdateTexture, (SDL_Texture * texture,const SDL_Rect * rect,const void *pixels, int pitch) );
+NV_SDL_FUN( int , SDL_LockTexture, (SDL_Texture * texture,const SDL_Rect * rect,void **pixels, int *pitch) );
+NV_SDL_FUN( void , SDL_UnlockTexture, (SDL_Texture * texture) );
+NV_SDL_FUN( SDL_bool , SDL_RenderTargetSupported, (SDL_Renderer *renderer) );
+NV_SDL_FUN( int , SDL_SetRenderTarget, (SDL_Renderer *renderer,SDL_Texture *texture) );
+NV_SDL_FUN( SDL_Texture * , SDL_GetRenderTarget, (SDL_Renderer *renderer) );
+NV_SDL_FUN( int , SDL_RenderSetLogicalSize, (SDL_Renderer * renderer, int w, int h) );
+NV_SDL_FUN( void , SDL_RenderGetLogicalSize, (SDL_Renderer * renderer, int *w, int *h) );
+NV_SDL_FUN( int , SDL_RenderSetViewport, (SDL_Renderer * renderer,const SDL_Rect * rect) );
+NV_SDL_FUN( void , SDL_RenderGetViewport, (SDL_Renderer * renderer,SDL_Rect * rect) );
+NV_SDL_FUN( int , SDL_RenderSetClipRect, (SDL_Renderer * renderer,const SDL_Rect * rect) );
+NV_SDL_FUN( void , SDL_RenderGetClipRect, (SDL_Renderer * renderer,SDL_Rect * rect) );
+NV_SDL_FUN( int , SDL_RenderSetScale, (SDL_Renderer * renderer,float scaleX, float scaleY) );
+NV_SDL_FUN( void , SDL_RenderGetScale, (SDL_Renderer * renderer,float *scaleX, float *scaleY) );
+NV_SDL_FUN( int , SDL_SetRenderDrawColor, (SDL_Renderer * renderer,Uint8 r, Uint8 g, Uint8 b,Uint8 a) );
+NV_SDL_FUN( int , SDL_GetRenderDrawColor, (SDL_Renderer * renderer,Uint8 * r, Uint8 * g, Uint8 * b,Uint8 * a) );
+NV_SDL_FUN( int , SDL_SetRenderDrawBlendMode, (SDL_Renderer * renderer,SDL_BlendMode blendMode) );
+NV_SDL_FUN( int , SDL_GetRenderDrawBlendMode, (SDL_Renderer * renderer,SDL_BlendMode *blendMode) );
+NV_SDL_FUN( int , SDL_RenderClear, (SDL_Renderer * renderer) );
+NV_SDL_FUN( int , SDL_RenderDrawPoint, (SDL_Renderer * renderer,int x, int y) );
+NV_SDL_FUN( int , SDL_RenderDrawPoints, (SDL_Renderer * renderer,const SDL_Point * points,int count) );
+NV_SDL_FUN( int , SDL_RenderDrawLine, (SDL_Renderer * renderer,int x1, int y1, int x2, int y2) );
+NV_SDL_FUN( int , SDL_RenderDrawLines, (SDL_Renderer * renderer,const SDL_Point * points,int count) );
+NV_SDL_FUN( int , SDL_RenderDrawRect, (SDL_Renderer * renderer,const SDL_Rect * rect) );
+NV_SDL_FUN( int , SDL_RenderDrawRects, (SDL_Renderer * renderer,const SDL_Rect * rects,int count) );
+NV_SDL_FUN( int , SDL_RenderFillRect, (SDL_Renderer * renderer,const SDL_Rect * rect) );
+NV_SDL_FUN( int , SDL_RenderFillRects, (SDL_Renderer * renderer,const SDL_Rect * rects,int count) );
+NV_SDL_FUN( int , SDL_RenderCopy, (SDL_Renderer * renderer,SDL_Texture * texture,const SDL_Rect * srcrect,const SDL_Rect * dstrect) );
+NV_SDL_FUN( int , SDL_RenderCopyEx, (SDL_Renderer * renderer,SDL_Texture * texture,const SDL_Rect * srcrect,const SDL_Rect * dstrect,const double angle,const SDL_Point *center,const SDL_RendererFlip flip) );
+NV_SDL_FUN( int , SDL_RenderReadPixels, (SDL_Renderer * renderer,const SDL_Rect * rect,Uint32 format,void *pixels, int pitch) );
+NV_SDL_FUN( void , SDL_RenderPresent, (SDL_Renderer * renderer) );
+NV_SDL_FUN( void , SDL_DestroyTexture, (SDL_Texture * texture) );
+NV_SDL_FUN( void , SDL_DestroyRenderer, (SDL_Renderer * renderer) );
+NV_SDL_FUN( int , SDL_GL_BindTexture, (SDL_Texture *texture, float *texw, float *texh) );
+NV_SDL_FUN( int , SDL_GL_UnbindTexture, (SDL_Texture *texture) );
+
+/* SDL_shape.h functions (2.0 only) */
+NV_SDL_FUN( int , SDL_SetWindowShape, (SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode) );
+NV_SDL_FUN( int , SDL_GetShapedWindowMode, (SDL_Window *window,SDL_WindowShapeMode *shape_mode) ); 
+
+/* SDL_surface.h functions (2.0 only) */
+NV_SDL_FUN( int , SDL_SetSurfacePalette, (SDL_Surface * surface,SDL_Palette * palette) );
+NV_SDL_FUN( int , SDL_SetSurfaceRLE, (SDL_Surface * surface,int flag) );
+NV_SDL_FUN( int , SDL_SetColorKey, (SDL_Surface * surface,int flag, Uint32 key) );
+NV_SDL_FUN( int , SDL_GetColorKey, (SDL_Surface * surface,Uint32 * key) );
+NV_SDL_FUN( int , SDL_SetSurfaceColorMod, (SDL_Surface * surface,Uint8 r, Uint8 g, Uint8 b) );
+NV_SDL_FUN( int , SDL_GetSurfaceColorMod, (SDL_Surface * surface,Uint8 * r, Uint8 * g,Uint8 * b) );
+NV_SDL_FUN( int , SDL_SetSurfaceAlphaMod, (SDL_Surface * surface,Uint8 alpha) );
+NV_SDL_FUN( int , SDL_GetSurfaceAlphaMod, (SDL_Surface * surface,Uint8 * alpha) );
+NV_SDL_FUN( int , SDL_SetSurfaceBlendMode, (SDL_Surface * surface,SDL_BlendMode blendMode) );
+NV_SDL_FUN( int , SDL_GetSurfaceBlendMode, (SDL_Surface * surface,SDL_BlendMode *blendMode) );
+
+NV_SDL_FUN( SDL_Surface *, SDL_ConvertSurfaceFormat, (SDL_Surface * src, Uint32 pixel_format, Uint32 flags) );
+NV_SDL_FUN( int , SDL_ConvertPixels, (int width, int height,Uint32 src_format,const void * src, int src_pitch,Uint32 dst_format,void * dst, int dst_pitch) );
+NV_SDL_FUN( int , SDL_FillRect, (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color) );
+NV_SDL_FUN( int , SDL_FillRects, (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color) );
+NV_SDL_FUN( int , SDL_UpperBlit, (SDL_Surface * src, const SDL_Rect * srcrect,SDL_Surface * dst, SDL_Rect * dstrect) );
+NV_SDL_FUN( int , SDL_LowerBlit, (SDL_Surface * src, SDL_Rect * srcrect,SDL_Surface * dst, SDL_Rect * dstrect) );
+NV_SDL_FUN( int , SDL_SoftStretch, (SDL_Surface * src,const SDL_Rect * srcrect,SDL_Surface * dst,const SDL_Rect * dstrect) );
+NV_SDL_FUN( int , SDL_UpperBlitScaled, (SDL_Surface * src, const SDL_Rect * srcrect,SDL_Surface * dst, SDL_Rect * dstrect) );
+NV_SDL_FUN( int , SDL_LowerBlitScaled, (SDL_Surface * src, SDL_Rect * srcrect,SDL_Surface * dst, SDL_Rect * dstrect) );
+NV_SDL_FUN( int , SDL_GetNumTouchDevices, (void) );
+NV_SDL_FUN( SDL_TouchID , SDL_GetTouchDevice, (int index) );
+NV_SDL_FUN( int , SDL_GetNumTouchFingers, (SDL_TouchID touchID) );
+NV_SDL_FUN( SDL_Finger * , SDL_GetTouchFinger, (SDL_TouchID touchID, int index) ); 
Index: /trunk/nv/lib/detail/sdl_image_functions.inc
===================================================================
--- /trunk/nv/lib/detail/sdl_image_functions.inc	(revision 170)
+++ /trunk/nv/lib/detail/sdl_image_functions.inc	(revision 171)
@@ -2,7 +2,7 @@
 NV_SDL_FUN( int, IMG_Init, (int flags) );
 NV_SDL_FUN( void, IMG_Quit, (void) );
-NV_SDL_FUN( SDL_Surface *, IMG_LoadTyped_RW, (SDL_RWops *src, int freesrc, char *etype) );
 NV_SDL_FUN( SDL_Surface *, IMG_Load, (const char *file) );
 NV_SDL_FUN( SDL_Surface *, IMG_Load_RW, (SDL_RWops *src, int freesrc) );
+
 NV_SDL_FUN( int, IMG_isICO, (SDL_RWops *src) );
 NV_SDL_FUN( int, IMG_isCUR, (SDL_RWops *src) );
@@ -20,2 +20,13 @@
 NV_SDL_FUN( SDL_Surface *, IMG_LoadTGA_RW, (SDL_RWops *src) );
 NV_SDL_FUN( SDL_Surface *, IMG_LoadTIF_RW, (SDL_RWops *src) );
+
+#if NV_SDL_VERSION == NV_SDL_20 
+NV_SDL_FUN( int , IMG_SavePNG,(SDL_Surface *surface, const char *file) );
+NV_SDL_FUN( int , IMG_SavePNG_RW,(SDL_Surface *surface, SDL_RWops *dst, int freedst) );
+NV_SDL_FUN( SDL_Texture *, IMG_LoadTexture,(SDL_Renderer *renderer, const char *file) );
+NV_SDL_FUN( SDL_Texture *, IMG_LoadTexture_RW,(SDL_Renderer *renderer, SDL_RWops *src, int freesrc) );
+NV_SDL_FUN( SDL_Texture *, IMG_LoadTextureTyped_RW,(SDL_Renderer *renderer, SDL_RWops *src, int freesrc, const char *type) );
+NV_SDL_FUN( SDL_Surface *, IMG_LoadTyped_RW, (SDL_RWops *src, int freesrc, const char *etype) );
+#else
+NV_SDL_FUN( SDL_Surface *, IMG_LoadTyped_RW, (SDL_RWops *src, int freesrc, char *etype) );
+#endif
Index: /trunk/nv/lib/sdl.hh
===================================================================
--- /trunk/nv/lib/sdl.hh	(revision 170)
+++ /trunk/nv/lib/sdl.hh	(revision 171)
@@ -64,4 +64,6 @@
 	SDL_TRUE  = 1
 } SDL_bool;
+
+static_assert(sizeof(SDL_bool) == sizeof(int), "SDL_bool has wrong size!");
 
 typedef int8_t		Sint8;
@@ -107,4 +109,15 @@
 	) 
 #endif
+
+#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
+#define SDL_static_cast(type, expression) static_cast<type>(expression)
+#define SDL_const_cast(type, expression) const_cast<type>(expression)
+
+#define SDL_FOURCC(A, B, C, D) \
+	((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
+	(SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
+	(SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
+	(SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
+
 /* SDL_error.h defines */
 typedef enum {
@@ -116,13 +129,4 @@
 	SDL_LASTERROR
 } SDL_errorcode;
-
-#if NV_SDL_VERSION == NV_SDL_20
-#define SDL_RWOPS_UNKNOWN   0
-#define SDL_RWOPS_WINFILE   1
-#define SDL_RWOPS_STDFILE   2
-#define SDL_RWOPS_JNIFILE   3
-#define SDL_RWOPS_MEMORY    4
-#define SDL_RWOPS_MEMORY_RO 5
-#endif
 
 /* SDL_rwops.h defines */
@@ -214,4 +218,227 @@
 
 #if NV_SDL_VERSION == NV_SDL_20
+#define SDL_RWOPS_UNKNOWN   0
+#define SDL_RWOPS_WINFILE   1
+#define SDL_RWOPS_STDFILE   2
+#define SDL_RWOPS_JNIFILE   3
+#define SDL_RWOPS_MEMORY    4
+#define SDL_RWOPS_MEMORY_RO 5
+#endif
+
+/* SDL_pixels.h defines (2.0 only) */
+#if NV_SDL_VERSION == NV_SDL_20
+enum
+{
+	SDL_PIXELTYPE_UNKNOWN,
+	SDL_PIXELTYPE_INDEX1,
+	SDL_PIXELTYPE_INDEX4,
+	SDL_PIXELTYPE_INDEX8,
+	SDL_PIXELTYPE_PACKED8,
+	SDL_PIXELTYPE_PACKED16,
+	SDL_PIXELTYPE_PACKED32,
+	SDL_PIXELTYPE_ARRAYU8,
+	SDL_PIXELTYPE_ARRAYU16,
+	SDL_PIXELTYPE_ARRAYU32,
+	SDL_PIXELTYPE_ARRAYF16,
+	SDL_PIXELTYPE_ARRAYF32
+};
+
+enum
+{
+	SDL_BITMAPORDER_NONE,
+	SDL_BITMAPORDER_4321,
+	SDL_BITMAPORDER_1234
+};
+
+enum
+{
+	SDL_PACKEDORDER_NONE,
+	SDL_PACKEDORDER_XRGB,
+	SDL_PACKEDORDER_RGBX,
+	SDL_PACKEDORDER_ARGB,
+	SDL_PACKEDORDER_RGBA,
+	SDL_PACKEDORDER_XBGR,
+	SDL_PACKEDORDER_BGRX,
+	SDL_PACKEDORDER_ABGR,
+	SDL_PACKEDORDER_BGRA
+};
+
+enum
+{
+	SDL_ARRAYORDER_NONE,
+	SDL_ARRAYORDER_RGB,
+	SDL_ARRAYORDER_RGBA,
+	SDL_ARRAYORDER_ARGB,
+	SDL_ARRAYORDER_BGR,
+	SDL_ARRAYORDER_BGRA,
+	SDL_ARRAYORDER_ABGR
+};
+
+enum
+{
+	SDL_PACKEDLAYOUT_NONE,
+	SDL_PACKEDLAYOUT_332,
+	SDL_PACKEDLAYOUT_4444,
+	SDL_PACKEDLAYOUT_1555,
+	SDL_PACKEDLAYOUT_5551,
+	SDL_PACKEDLAYOUT_565,
+	SDL_PACKEDLAYOUT_8888,
+	SDL_PACKEDLAYOUT_2101010,
+	SDL_PACKEDLAYOUT_1010102
+};
+
+#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
+
+#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
+	((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
+	((bits) << 8) | ((bytes) << 0))
+
+#define SDL_PIXELFLAG(X)    (((X) >> 28) & 0x0F)
+#define SDL_PIXELTYPE(X)    (((X) >> 24) & 0x0F)
+#define SDL_PIXELORDER(X)   (((X) >> 20) & 0x0F)
+#define SDL_PIXELLAYOUT(X)  (((X) >> 16) & 0x0F)
+#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
+#define SDL_BYTESPERPIXEL(X) \
+	(SDL_ISPIXELFORMAT_FOURCC(X) ? \
+	((((X) == SDL_PIXELFORMAT_YUY2) || \
+	((X) == SDL_PIXELFORMAT_UYVY) || \
+	((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
+
+#define SDL_ISPIXELFORMAT_INDEXED(format)   \
+	(!SDL_ISPIXELFORMAT_FOURCC(format) && \
+	((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
+	(SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
+	(SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
+
+#define SDL_ISPIXELFORMAT_ALPHA(format)   \
+	(!SDL_ISPIXELFORMAT_FOURCC(format) && \
+	((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
+	(SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
+	(SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
+	(SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA)))
+
+#define SDL_ISPIXELFORMAT_FOURCC(format)    \
+	((format) && (SDL_PIXELFLAG(format) != 1))
+
+enum
+{
+	SDL_PIXELFORMAT_UNKNOWN,
+	SDL_PIXELFORMAT_INDEX1LSB =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
+	1, 0),
+	SDL_PIXELFORMAT_INDEX1MSB =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
+	1, 0),
+	SDL_PIXELFORMAT_INDEX4LSB =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
+	4, 0),
+	SDL_PIXELFORMAT_INDEX4MSB =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
+	4, 0),
+	SDL_PIXELFORMAT_INDEX8 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
+	SDL_PIXELFORMAT_RGB332 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
+	SDL_PACKEDLAYOUT_332, 8, 1),
+	SDL_PIXELFORMAT_RGB444 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
+	SDL_PACKEDLAYOUT_4444, 12, 2),
+	SDL_PIXELFORMAT_RGB555 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
+	SDL_PACKEDLAYOUT_1555, 15, 2),
+	SDL_PIXELFORMAT_BGR555 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
+	SDL_PACKEDLAYOUT_1555, 15, 2),
+	SDL_PIXELFORMAT_ARGB4444 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
+	SDL_PACKEDLAYOUT_4444, 16, 2),
+	SDL_PIXELFORMAT_RGBA4444 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
+	SDL_PACKEDLAYOUT_4444, 16, 2),
+	SDL_PIXELFORMAT_ABGR4444 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
+	SDL_PACKEDLAYOUT_4444, 16, 2),
+	SDL_PIXELFORMAT_BGRA4444 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
+	SDL_PACKEDLAYOUT_4444, 16, 2),
+	SDL_PIXELFORMAT_ARGB1555 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
+	SDL_PACKEDLAYOUT_1555, 16, 2),
+	SDL_PIXELFORMAT_RGBA5551 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
+	SDL_PACKEDLAYOUT_5551, 16, 2),
+	SDL_PIXELFORMAT_ABGR1555 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
+	SDL_PACKEDLAYOUT_1555, 16, 2),
+	SDL_PIXELFORMAT_BGRA5551 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
+	SDL_PACKEDLAYOUT_5551, 16, 2),
+	SDL_PIXELFORMAT_RGB565 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
+	SDL_PACKEDLAYOUT_565, 16, 2),
+	SDL_PIXELFORMAT_BGR565 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
+	SDL_PACKEDLAYOUT_565, 16, 2),
+	SDL_PIXELFORMAT_RGB24 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
+	24, 3),
+	SDL_PIXELFORMAT_BGR24 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
+	24, 3),
+	SDL_PIXELFORMAT_RGB888 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
+	SDL_PACKEDLAYOUT_8888, 24, 4),
+	SDL_PIXELFORMAT_RGBX8888 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
+	SDL_PACKEDLAYOUT_8888, 24, 4),
+	SDL_PIXELFORMAT_BGR888 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
+	SDL_PACKEDLAYOUT_8888, 24, 4),
+	SDL_PIXELFORMAT_BGRX8888 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
+	SDL_PACKEDLAYOUT_8888, 24, 4),
+	SDL_PIXELFORMAT_ARGB8888 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
+	SDL_PACKEDLAYOUT_8888, 32, 4),
+	SDL_PIXELFORMAT_RGBA8888 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
+	SDL_PACKEDLAYOUT_8888, 32, 4),
+	SDL_PIXELFORMAT_ABGR8888 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
+	SDL_PACKEDLAYOUT_8888, 32, 4),
+	SDL_PIXELFORMAT_BGRA8888 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
+	SDL_PACKEDLAYOUT_8888, 32, 4),
+	SDL_PIXELFORMAT_ARGB2101010 =
+	SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
+	SDL_PACKEDLAYOUT_2101010, 32, 4),
+
+	SDL_PIXELFORMAT_YV12 = SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),
+	SDL_PIXELFORMAT_IYUV = SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),
+	SDL_PIXELFORMAT_YUY2 = SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),
+	SDL_PIXELFORMAT_UYVY = SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),
+	SDL_PIXELFORMAT_YVYU = SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U')
+};
+
+typedef enum
+{
+	SDL_POWERSTATE_UNKNOWN,
+	SDL_POWERSTATE_ON_BATTERY,
+	SDL_POWERSTATE_NO_BATTERY,
+	SDL_POWERSTATE_CHARGING, 
+	SDL_POWERSTATE_CHARGED
+} SDL_PowerState;
+#endif
+
+#if NV_SDL_VERSION == NV_SDL_20
+
+typedef enum
+{
+	SDL_BLENDMODE_NONE = 0x00000000, 
+	SDL_BLENDMODE_BLEND = 0x00000001,
+	SDL_BLENDMODE_ADD = 0x00000002, 
+	SDL_BLENDMODE_MOD = 0x00000004  
+} SDL_BlendMode; 
+
 typedef struct SDL_PixelFormat {
 	Uint32 format;
@@ -362,4 +589,83 @@
 typedef enum
 {
+    SDL_RENDERER_SOFTWARE = 0x00000001,
+    SDL_RENDERER_ACCELERATED = 0x00000002,
+    SDL_RENDERER_PRESENTVSYNC = 0x00000004,
+    SDL_RENDERER_TARGETTEXTURE = 0x00000008
+} SDL_RendererFlags; 
+
+typedef struct SDL_RendererInfo
+{
+	const char *name;
+	Uint32 flags;
+	Uint32 num_texture_formats;
+	Uint32 texture_formats[16];
+	int max_texture_width;
+	int max_texture_height;
+} SDL_RendererInfo; 
+
+typedef enum
+{
+	SDL_TEXTUREACCESS_STATIC,
+	SDL_TEXTUREACCESS_STREAMING,
+	SDL_TEXTUREACCESS_TARGET
+} SDL_TextureAccess; 
+
+typedef enum
+{
+	SDL_TEXTUREMODULATE_NONE = 0x00000000,
+	SDL_TEXTUREMODULATE_COLOR = 0x00000001, 
+	SDL_TEXTUREMODULATE_ALPHA = 0x00000002
+} SDL_TextureModulate;
+
+typedef enum
+{
+	SDL_FLIP_NONE = 0x00000000,
+	SDL_FLIP_HORIZONTAL = 0x00000001,
+	SDL_FLIP_VERTICAL = 0x00000002
+} SDL_RendererFlip; 
+
+struct SDL_Renderer;
+typedef struct SDL_Renderer SDL_Renderer;
+
+struct SDL_Texture;
+typedef struct SDL_Texture SDL_Texture;
+
+#define SDL_NONSHAPEABLE_WINDOW -1
+#define SDL_INVALID_SHAPE_ARGUMENT -2
+#define SDL_WINDOW_LACKS_SHAPE -3 
+
+typedef enum {
+	ShapeModeDefault,
+	ShapeModeBinarizeAlpha,
+	ShapeModeReverseBinarizeAlpha,
+	ShapeModeColorKey
+} WindowShapeMode;
+
+typedef union {
+	Uint8 binarizationCutoff;
+	SDL_Color colorKey;
+} SDL_WindowShapeParams;
+
+typedef struct SDL_WindowShapeMode {
+	WindowShapeMode mode;
+	SDL_WindowShapeParams parameters;
+} SDL_WindowShapeMode;
+
+typedef Sint64 SDL_TouchID;
+typedef Sint64 SDL_FingerID;
+
+typedef struct SDL_Finger
+{
+	SDL_FingerID id;
+	float x;
+	float y;
+	float pressure;
+} SDL_Finger; 
+
+#define SDL_TOUCH_MOUSEID ((Uint32)-1)
+
+typedef enum
+{
     SDL_WINDOW_FULLSCREEN = 0x00000001,
     SDL_WINDOW_OPENGL = 0x00000002,
@@ -500,4 +806,6 @@
 typedef void (NV_SDL_APIENTRY * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, SDL_AudioFormat format);
 
+typedef Uint32 SDL_AudioDeviceID;
+
 typedef struct SDL_AudioSpec
 {
@@ -543,4 +851,87 @@
 
 #define SDL_MIX_MAXVOLUME 128
+
+#if NV_SDL_VERSION == NV_SDL_20
+/* SDL_hints.h defines */
+#define SDL_HINT_FRAMEBUFFER_ACCELERATION   "SDL_FRAMEBUFFER_ACCELERATION"
+#define SDL_HINT_RENDER_DRIVER              "SDL_RENDER_DRIVER"
+#define SDL_HINT_RENDER_OPENGL_SHADERS      "SDL_RENDER_OPENGL_SHADERS"
+#define SDL_HINT_RENDER_SCALE_QUALITY       "SDL_RENDER_SCALE_QUALITY"
+#define SDL_HINT_RENDER_VSYNC               "SDL_RENDER_VSYNC"
+#define SDL_HINT_VIDEO_X11_XVIDMODE         "SDL_VIDEO_X11_XVIDMODE"
+#define SDL_HINT_VIDEO_X11_XINERAMA         "SDL_VIDEO_X11_XINERAMA"
+#define SDL_HINT_VIDEO_X11_XRANDR           "SDL_VIDEO_X11_XRANDR"
+#define SDL_HINT_GRAB_KEYBOARD              "SDL_GRAB_KEYBOARD"
+#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS   "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
+#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
+#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
+#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
+#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
+#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
+#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
+typedef enum
+{
+    SDL_HINT_DEFAULT,
+    SDL_HINT_NORMAL,
+    SDL_HINT_OVERRIDE
+} SDL_HintPriority;
+#endif;
+
+#if NV_SDL_VERSION == NV_SDL_20
+/* SDL_messagebox.h defines */
+typedef enum
+{
+    SDL_MESSAGEBOX_ERROR        = 0x00000010,
+    SDL_MESSAGEBOX_WARNING      = 0x00000020,
+    SDL_MESSAGEBOX_INFORMATION  = 0x00000040
+} SDL_MessageBoxFlags;
+
+typedef enum
+{
+    SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001,
+    SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002
+} SDL_MessageBoxButtonFlags;
+
+typedef struct
+{
+    Uint32 flags;
+    int buttonid;
+    const char * text;
+} SDL_MessageBoxButtonData;
+
+typedef struct
+{
+    Uint8 r, g, b;
+} SDL_MessageBoxColor;
+
+typedef enum
+{
+    SDL_MESSAGEBOX_COLOR_BACKGROUND,
+    SDL_MESSAGEBOX_COLOR_TEXT,
+    SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,
+    SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,
+    SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,
+    SDL_MESSAGEBOX_COLOR_MAX
+} SDL_MessageBoxColorType;
+
+typedef struct
+{
+    SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];
+} SDL_MessageBoxColorScheme;
+
+typedef struct SDL_Window SDL_Window;
+
+typedef struct
+{
+    Uint32 flags;
+    SDL_Window *window;
+    const char *title;
+    const char *message;
+    int numbuttons;
+    const SDL_MessageBoxButtonData *buttons;
+    const SDL_MessageBoxColorScheme *colorScheme; 
+} SDL_MessageBoxData;
+#endif
+
 
 /* SDL_active.h defines */
@@ -576,4 +967,6 @@
 } SDLMod;
 
+typedef SDLMod SDL_Keymod; // 2.0
+
 #define KMOD_CTRL	(KMOD_LCTRL|KMOD_RCTRL)
 #define KMOD_SHIFT	(KMOD_LSHIFT|KMOD_RSHIFT)
@@ -595,4 +988,5 @@
 #define SDL_ALL_HOTKEYS		0xFFFFFFFF
 #else
+typedef Sint32 SDL_Keycode;
 typedef struct SDL_Keysym
 {
@@ -682,4 +1076,68 @@
 #define SDL_PRESSED	1
 
+/* SDL_gamecontroller.h defines  (2.0 only)*/
+#if  NV_SDL_VERSION == NV_SDL_20
+struct _SDL_GameController;
+typedef struct _SDL_GameController SDL_GameController;
+
+typedef enum
+{
+	SDL_CONTROLLER_BINDTYPE_NONE = 0,
+	SDL_CONTROLLER_BINDTYPE_BUTTON,
+	SDL_CONTROLLER_BINDTYPE_AXIS,
+	SDL_CONTROLLER_BINDTYPE_HAT
+} SDL_GameControllerBindType; 
+
+typedef struct SDL_GameControllerButtonBind
+{
+	SDL_GameControllerBindType bindType;
+	union
+	{
+		int button;
+		int axis;
+		struct {
+			int hat;
+			int hat_mask;
+		} hat;
+	} value;
+
+} SDL_GameControllerButtonBind; 
+
+typedef enum
+{
+	SDL_CONTROLLER_AXIS_INVALID = -1,
+	SDL_CONTROLLER_AXIS_LEFTX,
+	SDL_CONTROLLER_AXIS_LEFTY,
+	SDL_CONTROLLER_AXIS_RIGHTX,
+	SDL_CONTROLLER_AXIS_RIGHTY,
+	SDL_CONTROLLER_AXIS_TRIGGERLEFT,
+	SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
+	SDL_CONTROLLER_AXIS_MAX
+} SDL_GameControllerAxis; 
+
+typedef enum
+{
+	SDL_CONTROLLER_BUTTON_INVALID = -1,
+	SDL_CONTROLLER_BUTTON_A,
+	SDL_CONTROLLER_BUTTON_B,
+	SDL_CONTROLLER_BUTTON_X,
+	SDL_CONTROLLER_BUTTON_Y,
+	SDL_CONTROLLER_BUTTON_BACK,
+	SDL_CONTROLLER_BUTTON_GUIDE,
+	SDL_CONTROLLER_BUTTON_START,
+	SDL_CONTROLLER_BUTTON_LEFTSTICK,
+	SDL_CONTROLLER_BUTTON_RIGHTSTICK,
+	SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
+	SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
+	SDL_CONTROLLER_BUTTON_DPAD_UP,
+	SDL_CONTROLLER_BUTTON_DPAD_DOWN,
+	SDL_CONTROLLER_BUTTON_DPAD_LEFT,
+	SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
+	SDL_CONTROLLER_BUTTON_MAX
+} SDL_GameControllerButton; 
+
+typedef Sint64 SDL_GestureID; 
+#endif
+
 #if NV_SDL_VERSION == NV_SDL_12
 #include <nv/lib/detail/sdl_events_12.inc>
@@ -688,4 +1146,7 @@
 #endif
 
+#if NV_SDL_VERSION == NV_SDL_20
+typedef int (NV_SDL_APIENTRY * SDL_EventFilter) (void *userdata, SDL_Event * event);
+#endif
 
 #define SDL_QUERY	-1
@@ -701,6 +1162,5 @@
 #define SDL_TIMESLICE		10
 #define TIMER_RESOLUTION	10
-typedef Uint32 (NV_SDL_APIENTRY *SDL_TimerCallback)(Uint32 interval);
-typedef Uint32 (NV_SDL_APIENTRY *SDL_NewTimerCallback)(Uint32 interval, void *param);
+typedef Uint32 (NV_SDL_APIENTRY *SDL_TimerCallback)(Uint32 interval, void *param);
 typedef struct _SDL_TimerID *SDL_TimerID;
 #endif
@@ -729,4 +1189,9 @@
 #endif
 #include <nv/lib/detail/sdl_functions.inc>
+#if NV_SDL_VERSION == NV_SDL_12
+#include <nv/lib/detail/sdl_functions_12.inc>
+#elif NV_SDL_VERSION == NV_SDL_20
+#include <nv/lib/detail/sdl_functions_20.inc>
+#endif
 #undef NV_SDL_FUN
 
Index: /trunk/nv/lib/sdl_image.hh
===================================================================
--- /trunk/nv/lib/sdl_image.hh	(revision 170)
+++ /trunk/nv/lib/sdl_image.hh	(revision 171)
@@ -12,9 +12,22 @@
 
 #if NV_PLATFORM == NV_WINDOWS
-#	define NV_SDL_IMAGE_PATH "SDL_image.dll"
+#	define NV_SDL_IMAGE_PATH_12 "SDL_image.dll"
+#	define NV_SDL_IMAGE_PATH_20 "SDL2_image.dll"
 #elif NV_PLATFORM == NV_APPLE
-#	define NV_SDL_IMAGE_PATH "SDL_image.framework/SDL_image"
+#	define NV_SDL_IMAGE_PATH_12 "SDL_image.framework/SDL_image"
+#	define NV_SDL_IMAGE_PATH_20 "SDL2_image.framework/SDL_image"
 #else
-#	define NV_SDL_IMAGE_PATH "libSDL_image-1.2.so.0"
+#	define NV_SDL_IMAGE_PATH_12 "libSDL_image-1.2.so.0"
+#	define NV_SDL_IMAGE_PATH_20 "libSDL2_image-2.0.so.0"
+#endif
+
+#if NV_SDL_VERSION == NV_SDL_12
+#	define NV_SDL_IMAGE_PATH NV_SDL_IMAGE_PATH_12
+#elif NV_SDL_VERSION == NV_SDL_20 
+#	define NV_SDL_IMAGE_PATH NV_SDL_IMAGE_PATH_20
+#elif NV_SDL_VERSION == NV_SDL_C
+#	define NV_SDL_IMAGE_PATH nullptr
+#else
+#	error "Unrecognized NV_SDL_VERSION!"
 #endif
 
@@ -22,7 +35,14 @@
 
 /** SDL_image defines */
+#if NV_SDL_VERSION == NV_SDL_20 
+#define SDL_IMAGE_MAJOR_VERSION	2
+#define SDL_IMAGE_MINOR_VERSION	0
+#define SDL_IMAGE_PATCHLEVEL	0
+#else
 #define SDL_IMAGE_MAJOR_VERSION	1
 #define SDL_IMAGE_MINOR_VERSION	2
 #define SDL_IMAGE_PATCHLEVEL	11
+#endif
+
 #define SDL_IMAGE_VERSION(X)						\
 {									\
Index: /trunk/src/gl/gl_context.cc
===================================================================
--- /trunk/src/gl/gl_context.cc	(revision 170)
+++ /trunk/src/gl/gl_context.cc	(revision 171)
@@ -7,4 +7,5 @@
 #include "nv/gl/gl_enum.hh"
 #include "nv/lib/gl.hh"
+#include "nv/lib/sdl.hh"
 
 using namespace nv;
@@ -349,11 +350,42 @@
 
 
-gl_context::gl_context( device* a_device )
-	: context( a_device )
-{
+gl_context::gl_context( device* a_device, void* a_win_handle )
+	: context( a_device ), m_handle( nullptr )
+{
+#if NV_SDL_VERSION == NV_SDL_20
+	m_handle = SDL_GL_CreateContext( static_cast<SDL_Window*>( a_win_handle ) );
+
+	if ( m_handle == 0 )
+	{
+		NV_LOG( LOG_CRITICAL, "GL Context creation failed: " << SDL_GetError( ) );
+		return; // TODO: Error report
+	}
+#else
+	NV_UNUSED( a_win_handle );
+#endif
+
+	nv::load_gl_library();
+	NV_LOG( LOG_INFO, "OpenGL Vendor       : " << glGetString(GL_VENDOR) );
+	NV_LOG( LOG_INFO, "OpenGL Renderer     : " << glGetString(GL_RENDERER) );
+	NV_LOG( LOG_INFO, "OpenGL Version      : " << glGetString(GL_VERSION) );
+	NV_LOG( LOG_INFO, "OpenGL GLSL Version : " << glGetString(GL_SHADING_LANGUAGE_VERSION) );
+#if NV_SDL_VERSION == NV_SDL_20
+//	SDL_GL_SetSwapInterval(1);
+#endif
+
 	// TODO: do we really need this?
 	glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
+
 	force_apply_render_state( m_render_state );
 }
+
+
+nv::gl_context::~gl_context()
+{
+#if NV_SDL_VERSION == NV_SDL_20
+	SDL_GL_DeleteContext(static_cast<SDL_GLContext>( m_handle ) );
+#endif
+}
+
 
 void gl_context::draw( primitive prim, const render_state& rs, program* p, vertex_array* va, size_t count )
Index: /trunk/src/gl/gl_device.cc
===================================================================
--- /trunk/src/gl/gl_device.cc	(revision 170)
+++ /trunk/src/gl/gl_device.cc	(revision 171)
@@ -31,4 +31,5 @@
 	}
 
+#if NV_SDL_VERSION == NV_SDL_12
 	m_info = SDL_GetVideoInfo( );
 
@@ -38,4 +39,5 @@
 		return; // TODO: Error report
 	}
+#endif
 
 //	bpp = m_info->vfmt->BitsPerPixel;
@@ -49,4 +51,11 @@
 	SDL_GL_SetAttribute( SDL_GL_MULTISAMPLEBUFFERS, 1 );
 	SDL_GL_SetAttribute( SDL_GL_MULTISAMPLESAMPLES, 4 );
+
+#if NV_SDL_VERSION == NV_SDL_20
+	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
+	SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
+	SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
+	SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
+#endif
 
 }
Index: /trunk/src/gl/gl_window.cc
===================================================================
--- /trunk/src/gl/gl_window.cc	(revision 170)
+++ /trunk/src/gl/gl_window.cc	(revision 171)
@@ -18,8 +18,14 @@
 	kevent.key.code    = KEY_NONE;
 
+#if NV_SDL_VERSION == NV_SDL_20
+	uint32 ucode = ke.keysym.sym;
+#else
+	uint32 ucode = ke.keysym.unicode;
+#endif
+
 	// if result is a typable char place it into the structure
-	if (ke.keysym.unicode >= 32 && ke.keysym.unicode < 128 )
-	{
-		kevent.key.ascii = static_cast<char8>( ke.keysym.unicode );
+	if (ucode >= 32 && ucode < 128 )
+	{
+		kevent.key.ascii = static_cast<char8>( ucode );
 	}
 
@@ -67,5 +73,5 @@
 	case SDLK_DELETE       : kevent.key.code = KEY_DELETE; break;
 	case SDLK_INSERT       : kevent.key.code = KEY_INSERT; break;
-	case SDLK_KP5          : kevent.key.code = KEY_CENTER; break;
+	//case SDLK_KP5          : kevent.key.code = KEY_CENTER; break;
 	case SDLK_ESCAPE       : kevent.key.code = KEY_ESCAPE; break;
 	case SDLK_QUOTE        : kevent.key.code = KEY_QUOTE; break;
@@ -91,6 +97,6 @@
 	mevent.mbutton.button  = MOUSE_NONE;
 	mevent.mbutton.pressed = (mb.state != SDL_RELEASED);
-	mevent.mbutton.x       = mb.x;
-	mevent.mbutton.y       = mb.y;
+	mevent.mbutton.x       = static_cast< uint16 >( mb.x );
+	mevent.mbutton.y       = static_cast< uint16 >( mb.y );
 
 	switch ( mb.button )
@@ -99,6 +105,6 @@
 	case SDL_BUTTON_MIDDLE    : mevent.mbutton.button = MOUSE_MIDDLE; break;
 	case SDL_BUTTON_RIGHT     : mevent.mbutton.button = MOUSE_RIGHT; break;
-	case SDL_BUTTON_WHEELUP   : mevent.mbutton.button = MOUSE_WHEEL_UP; break;
-	case SDL_BUTTON_WHEELDOWN : mevent.mbutton.button = MOUSE_WHEEL_DOWN; break;
+	//case SDL_BUTTON_WHEELUP   : mevent.mbutton.button = MOUSE_WHEEL_UP; break;
+	//case SDL_BUTTON_WHEELDOWN : mevent.mbutton.button = MOUSE_WHEEL_DOWN; break;
 	default : break;
 	}
@@ -111,6 +117,6 @@
 	mevent.type          = EV_MOUSE_MOVE;
 	mevent.mmove.pressed = (mm.state != SDL_RELEASED);
-	mevent.mmove.x       = mm.x;
-	mevent.mmove.y       = mm.y;
+	mevent.mmove.x       = static_cast< uint16 >( mm.x );
+	mevent.mmove.y       = static_cast< uint16 >( mm.y );
 	return true;
 }
@@ -125,4 +131,5 @@
 	case SDL_MOUSEBUTTONDOWN : return sdl_mouse_button_to_io_event( e.button, ioevent );
 	case SDL_MOUSEBUTTONUP   : return sdl_mouse_button_to_io_event( e.button, ioevent );
+/* // SDL 2.0 incompatible 
 	case SDL_ACTIVEEVENT     : 
 		ioevent.type = EV_ACTIVE; 
@@ -134,8 +141,9 @@
 		ioevent.resize.y = e.resize.h;
 		return true;
+	case SDL_NOEVENT         : return false;
+	case SDL_VIDEOEXPOSE     : return false;
+*/
 	case SDL_SYSWMEVENT      : ioevent.type = EV_SYSTEM; return true;
 	case SDL_QUIT            : ioevent.type = EV_QUIT;   return true;
-	case SDL_NOEVENT         : return false;
-	case SDL_VIDEOEXPOSE     : return false;
 	case SDL_JOYAXISMOTION   : return false;
 	case SDL_JOYBALLMOTION   : return false;
@@ -149,11 +157,15 @@
 
 gl_window::gl_window( device* dev, uint16 width, uint16 height )
-	: m_device( dev ), m_width( width ), m_height( height ), m_title("NV Engine"), m_screen( nullptr )
-{
+	: m_device( dev ), m_width( width ), m_height( height ), m_title("NV Engine"), m_handle( nullptr )
+{
+#if NV_SDL_VERSION == NV_SDL_12
 	uint32 flags = SDL_OPENGL;
-	
-	m_screen = SDL_SetVideoMode( width, height, 32, flags );
-	
-	if ( m_screen == 0 )
+	m_handle = SDL_SetVideoMode( width, height, 32, flags );
+#elif NV_SDL_VERSION == NV_SDL_20
+	uint32 flags = SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN;
+	m_handle = SDL_CreateWindow("Nova Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
+		width, height, flags );
+#endif
+	if ( m_handle == 0 )
 	{
 		NV_LOG( LOG_CRITICAL, "Video mode set failed: " << SDL_GetError( ) );
@@ -161,11 +173,5 @@
 	}
 
-	nv::load_gl_library();
-	NV_LOG( LOG_INFO, "OpenGL Vendor       : " << glGetString(GL_VENDOR) );
-	NV_LOG( LOG_INFO, "OpenGL Renderer     : " << glGetString(GL_RENDERER) );
-	NV_LOG( LOG_INFO, "OpenGL Version      : " << glGetString(GL_VERSION) );
-	NV_LOG( LOG_INFO, "OpenGL GLSL Version : " << glGetString(GL_SHADING_LANGUAGE_VERSION) );
-
-	m_context = new gl_context( m_device );
+	m_context = new gl_context( m_device, m_handle );
 	m_context->set_viewport( nv::ivec4( 0, 0, m_width, m_height ) );
 }
@@ -188,5 +194,9 @@
 void gl_window::set_title( const string& title )
 {
+#if NV_SDL_VERSION == NV_SDL_20
+	SDL_SetWindowTitle( static_cast<SDL_Window*>( m_handle ), title.c_str() );
+#else
 	SDL_WM_SetCaption( title.c_str(), title.c_str() );
+#endif
 	m_title = title;
 }
@@ -206,5 +216,9 @@
 void gl_window::swap_buffers()
 {
+#if NV_SDL_VERSION == NV_SDL_20
+	SDL_GL_SwapWindow( static_cast<SDL_Window*>( m_handle ) );
+#else
 	SDL_GL_SwapBuffers();
+#endif
 }
 
@@ -212,3 +226,6 @@
 {
 	delete m_context;
-}
+#if NV_SDL_VERSION == NV_SDL_20
+	SDL_DestroyWindow( static_cast<SDL_Window*>( m_handle ) );
+#endif
+}
Index: /trunk/src/lib/sdl.cc
===================================================================
--- /trunk/src/lib/sdl.cc	(revision 170)
+++ /trunk/src/lib/sdl.cc	(revision 171)
@@ -13,5 +13,12 @@
 #define NV_SDL_FUN( rtype, fname, fparams ) rtype (NV_SDL_APIENTRY *fname) fparams = nullptr;
 #include <nv/lib/detail/sdl_functions.inc>
+#if NV_SDL_VERSION == NV_SDL_12
+#	include <nv/lib/detail/sdl_functions_12.inc>
+#elif NV_SDL_VERSION == NV_SDL_20
+#	include <nv/lib/detail/sdl_functions_20.inc>
+#endif
 #undef NV_SDL_FUN
+
+
 
 bool nv::load_sdl_library( const char* path )
@@ -22,4 +29,9 @@
 #	define NV_SDL_FUN( rtype, fname, fparams ) *(void **) (&fname) = sdl_library.get(#fname);
 #	include <nv/lib/detail/sdl_functions.inc>
+#	if NV_SDL_VERSION == NV_SDL_12
+#		include <nv/lib/detail/sdl_functions_12.inc>
+#	elif NV_SDL_VERSION == NV_SDL_20
+#		include <nv/lib/detail/sdl_functions_20.inc>
+#	endif
 #	undef NV_SDL_FUN
 	return true;
