Index: darkplaces/host.c
diff -u darkplaces/host.c:1.52 darkplaces/host.c:1.53
--- darkplaces/host.c:1.52	Tue Sep 17 19:23:45 2002
+++ darkplaces/host.c	Sat Sep 21 20:19:43 2002
@@ -885,7 +885,7 @@
 #ifndef _WIN32 // on non win32, mouse comes before video for security reasons
 		IN_Init ();
 #endif
-		VID_Init (vid_fullscreen.integer, vid_width.integer, vid_height.integer);
+		VID_Init (vid_fullscreen.integer, vid_width.integer, vid_height.integer, vid_bitsperpixel.integer);
 
 		Render_Init();
 		S_Init ();
Index: darkplaces/vid.h
diff -u darkplaces/vid.h:1.18 darkplaces/vid.h:1.19
--- darkplaces/vid.h:1.18	Tue Sep 17 19:23:45 2002
+++ darkplaces/vid.h	Sat Sep 21 20:19:43 2002
@@ -102,7 +102,7 @@
 
 void VID_CheckExtensions(void);
 
-void VID_Init (int fullscreen, int width, int height);
+void VID_Init (int fullscreen, int width, int height, int bpp);
 // Called at startup
 
 void VID_Shutdown (void);
Index: darkplaces/vid_glx.c
diff -u darkplaces/vid_glx.c:1.35 darkplaces/vid_glx.c:1.36
--- darkplaces/vid_glx.c:1.35	Tue Sep 17 19:23:45 2002
+++ darkplaces/vid_glx.c	Sat Sep 21 20:19:43 2002
@@ -636,7 +636,7 @@
 #endif
 }
 
-void VID_Init(int fullscreen, int width, int height)
+void VID_Init(int fullscreen, int width, int height, int bpp)
 {
 	int i;
 // LordHavoc: FIXME: finish this code, we need to allocate colors before we can store them
Index: darkplaces/vid_null.c
diff -u darkplaces/vid_null.c:1.1 darkplaces/vid_null.c:1.2
--- darkplaces/vid_null.c:1.1	Tue Sep 17 19:23:45 2002
+++ darkplaces/vid_null.c	Sat Sep 21 20:19:43 2002
@@ -67,7 +67,7 @@
 	return FALSE;
 }
 
-void VID_Init(int fullscreen, int width, int height)
+void VID_Init(int fullscreen, int width, int height, int bpp)
 {
 	InitSig(); // trap evil signals
 }
Index: darkplaces/vid_wgl.c
diff -u darkplaces/vid_wgl.c:1.37 darkplaces/vid_wgl.c:1.38
--- darkplaces/vid_wgl.c:1.37	Tue Sep 17 19:23:45 2002
+++ darkplaces/vid_wgl.c	Sat Sep 21 20:19:43 2002
@@ -33,14 +33,16 @@
 BOOL (WINAPI *qwglSwapBuffers)(HDC);
 HGLRC (WINAPI *qwglCreateContext)(HDC);
 BOOL (WINAPI *qwglDeleteContext)(HGLRC);
+HGLRC (WINAPI *qwglGetCurrentContext)(VOID);
+HDC (WINAPI *qwglGetCurrentDC)(VOID);
 PROC (WINAPI *qwglGetProcAddress)(LPCSTR);
 BOOL (WINAPI *qwglMakeCurrent)(HDC, HGLRC);
 BOOL (WINAPI *qwglSwapIntervalEXT)(int interval);
-const char *(WINAPI *wglGetExtensionsStringARB)(HDC hdc);
+const char *(WINAPI *qwglGetExtensionsStringARB)(HDC hdc);
 
 static gl_extensionfunctionlist_t getextensionsstringfuncs[] =
 {
-	{"wglGetExtensionsString", (void **) &qwglGetExtensionsString},
+	{"wglGetExtensionsString", (void **) &qwglGetExtensionsStringARB},
 	{NULL, NULL}
 };
 
@@ -986,14 +988,7 @@
 			devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
 
 			if (ChangeDisplaySettings (&devmode, CDS_TEST | CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL)
-			{
-			// if the width is more than twice the height, reduce it by half because this
-			// is probably a dual-screen monitor
-				if ((!COM_CheckParm("-noadjustaspect")) && (devmode.dmPelsWidth > (devmode.dmPelsHeight << 1)))
-					VID_AddMode(MS_FULLDIB, devmode.dmPelsWidth >> 1, devmode.dmPelsHeight, 0, 1, 1, 1, devmode.dmBitsPerPel);
-				else
-					VID_AddMode(MS_FULLDIB, devmode.dmPelsWidth, devmode.dmPelsHeight, 0, 0, 1, 1, devmode.dmBitsPerPel);
-			}
+				VID_AddMode(MS_FULLDIB, devmode.dmPelsWidth, devmode.dmPelsHeight, 0, 1, 1, devmode.dmBitsPerPel);
 		}
 
 		modenum++;
@@ -1015,7 +1010,7 @@
 			devmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
 
 			if (ChangeDisplaySettings (&devmode, CDS_TEST | CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL)
-				VID_AddMode(MS_FULLDIB, devmode.dmPelsWidth, devmode.dmPelsHeight, 0, 0, 1, 1, devmode.dmBitsPerPel);
+				VID_AddMode(MS_FULLDIB, devmode.dmPelsWidth, devmode.dmPelsHeight, 0, 1, 1, devmode.dmBitsPerPel);
 		}
 		switch (bpp)
 		{
@@ -1233,10 +1228,11 @@
 VID_Init
 ===================
 */
-void VID_Init (int fullscreen, int width, int height)
+void VID_Init (int fullscreen, int width, int height, int bpp)
 {
-	int i;
-	int basenummodes, bpp, findbpp, done;
+	int i, bestmode;
+	double rating, bestrating;
+	int basenummodes, done;
 	HDC hdc;
 	DEVMODE devmode;
 
@@ -1287,11 +1283,14 @@
 		bestrating = 1000000000;
 		for (i = 0;i < nummodes;i++)
 		{
-			rating = VID_CompareMode(fullscreen, width, height, bpp, modelist[i].fullscreen, modelist[i].width, modelist[i].height, modelist[i].bpp);
-			if (bestrating > rating)
+			if (fullscreen == modelist[i].fullscreen)
 			{
-				bestrating = rating;
-				bestmode = i;
+				rating = VID_CompareMode(width, height, bpp, modelist[i].width, modelist[i].height, modelist[i].bpp);
+				if (bestrating > rating)
+				{
+					bestrating = rating;
+					bestmode = i;
+				}
 			}
 		}
 
@@ -1306,7 +1305,7 @@
 	maindc = GetDC(mainwindow);
 	bSetupPixelFormat(maindc);
 
-	if (!gl_checkextension("wgl", wglfuncs, NULL, false))
+	if (!GL_CheckExtension("wgl", wglfuncs, NULL, false))
 		Sys_Error("wgl functions not found\n");
 
 	baseRC = qwglCreateContext( maindc );
@@ -1319,13 +1318,13 @@
 	gl_vendor = qglGetString(GL_VENDOR);
 	gl_version = qglGetString(GL_VERSION);
 	gl_extensions = qglGetString(GL_EXTENSIONS);
-	gl_platformname = "WGL";
+	gl_platform = "WGL";
 	gl_platformextensions = "";
 
-	if (gl_checkextension("WGL_ARB_extensions_string", extensionsstringfuncs, NULL, false))
+	if (GL_CheckExtension("WGL_ARB_extensions_string", getextensionsstringfuncs, NULL, false))
 		gl_platformextensions = qwglGetExtensionsStringARB(maindc);
 
-	gl_videosyncavailable = gl_checkextension("WGL_EXT_swap_control", wglswapintervalfuncs, NULL, false);
+	gl_videosyncavailable = GL_CheckExtension("WGL_EXT_swap_control", wglswapintervalfuncs, NULL, false);
 
 	GL_Init ();
 