Added initial support for TV output modes
authorSam Lantinga <slouken@libsdl.org>
Wed, 01 Aug 2001 05:01:08 +0000
changeset 135 0bfcf0d2b874
parent 134 f1550e1c4916
child 136 717f739d6ec1
Added initial support for TV output modes
src/video/ps2gs/SDL_gsvideo.c
--- a/src/video/ps2gs/SDL_gsvideo.c	Wed Aug 01 03:23:40 2001 +0000
+++ b/src/video/ps2gs/SDL_gsvideo.c	Wed Aug 01 05:01:08 2001 +0000
@@ -261,11 +261,13 @@
 		SDL_SetError("Couldn't get console pixel format");
 		return(-1);
 	}
+#if 0
 	if ( vinfo.mode != PS2_GS_VESA ) {
 		GS_VideoQuit(this);
 		SDL_SetError("Console must be in VESA video mode");
 		return(-1);
 	}
+#endif
 	switch (vinfo.psm) {
 	    /* Supported pixel formats */
 	    case PS2_GS_PSMCT32:
@@ -306,30 +308,42 @@
 
 static SDL_Rect **GS_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags)
 {
-	static SDL_Rect GS_mode_list[] = {
+	static SDL_Rect GS_tvout_mode;
+	static SDL_Rect *GS_tvout_modes[] = {
+		&GS_tvout_mode,
+		NULL
+	};
+	static SDL_Rect GS_vesa_mode_list[] = {
 		{ 0, 0, 1280, 1024 },
 		{ 0, 0, 1024, 768 },
 		{ 0, 0, 800, 600 },
 		{ 0, 0, 640, 480 }
 	};
-	static SDL_Rect *GS_modes[] = {
-		&GS_mode_list[0],
-		&GS_mode_list[1],
-		&GS_mode_list[2],
-		&GS_mode_list[3],
+	static SDL_Rect *GS_vesa_modes[] = {
+		&GS_vesa_mode_list[0],
+		&GS_vesa_mode_list[1],
+		&GS_vesa_mode_list[2],
+		&GS_vesa_mode_list[3],
 		NULL
 	};
-	SDL_Rect **modes;
+	SDL_Rect **modes = NULL;
 
-	switch (format->BitsPerPixel) {
-	    case 16:
-	    case 24:
-	    case 32:
-		modes = GS_modes;
-		break;
-	    default:
-		modes = NULL;
-		break;
+	if ( saved_vinfo.mode == PS2_GS_VESA ) {
+		switch (format->BitsPerPixel) {
+		    case 16:
+		    case 24:
+		    case 32:
+			modes = GS_vesa_modes;
+			break;
+		    default:
+			break;
+		}
+	} else {
+		if ( GS_formatmap[format->BitsPerPixel/8] == saved_vinfo.psm ) {
+			GS_tvout_mode.w = saved_vinfo.w;
+			GS_tvout_mode.h = saved_vinfo.h;
+			modes = GS_tvout_modes;
+		}
 	}
 	return(modes);
 }