Index: Daodan/src/daodan_gl.c
===================================================================
--- Daodan/src/daodan_gl.c	(revision 340)
+++ Daodan/src/daodan_gl.c	(revision 341)
@@ -46,5 +46,5 @@
 };
 
-const short daodan_resdepths[] = { 16, 32 };
+short daodan_resdepths[] = { 16, 32 };
 
 DEVMODE orig_devmode, cur_devmode, new_devmode;
@@ -86,4 +86,7 @@
 	int i, j;
 	
+	if (!M3gResolutionSwitch)
+		daodan_resdepths[0] = orig_devmode.dmBitsPerPel;
+	
 	for (i = 0; i < builtin_depths; i ++)
 	{
@@ -99,5 +102,5 @@
 		for (j = 0; j < builtin_modes; j ++)
 			if (!(daodan_reslist[j].Width == 640 && daodan_reslist[j].Height == 480) && !(daodan_reslist[j].Width == screen_x && daodan_reslist[j].Height == screen_y) &&
-				((daodan_reslist[j].Width < screen_x && daodan_reslist[j].Height < screen_y) || daodan_testmode(daodan_reslist[j])))
+				((daodan_reslist[j].Width < screen_x && daodan_reslist[j].Height < screen_y) || (M3gResolutionSwitch && daodan_testmode(daodan_reslist[j]))))
 			{
 				if (!scrInsert && (daodan_reslist[j].Width > screen_x || (daodan_reslist[j].Width == screen_x &&  daodan_reslist[j].Height > screen_y)))
@@ -130,4 +133,7 @@
 				goto modesfull;
 		}
+		
+		if (!M3gResolutionSwitch)
+			goto modesfull;
 	}
 	
