add support for using an actual 240p mode for 320x240
This commit is contained in:
parent
34179cedeb
commit
c40dab22fe
|
@ -66,7 +66,7 @@ int main(int argc, char *argv[])
|
||||||
SYS_SetResetCallback(ResetCB);
|
SYS_SetResetCallback(ResetCB);
|
||||||
#endif
|
#endif
|
||||||
PAD_Init();
|
PAD_Init();
|
||||||
WII_InitVideoSystem();
|
//WII_InitVideoSystem();
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
|
WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR);
|
||||||
WPAD_SetVRes(WPAD_CHAN_ALL, 640, 480);
|
WPAD_SetVRes(WPAD_CHAN_ALL, 640, 480);
|
||||||
|
|
|
@ -275,7 +275,22 @@ StartVideoThread()
|
||||||
|
|
||||||
static int WII_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
static int WII_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
||||||
{
|
{
|
||||||
// Set up the modes.
|
VIDEO_Init();
|
||||||
|
|
||||||
|
// VIDEO_GetPreferredMode will basically always return 480p or 480i (or
|
||||||
|
// the PAL equivalents). since we're only allowing 640x480 and 320x240
|
||||||
|
// SDL video modes, we can just use the 480p/480i video mode framebuffer
|
||||||
|
// properties to configure our SDL list of allowed video modes.
|
||||||
|
//
|
||||||
|
// the (eventual) call to SDL_SetVideoMode will reset vmode to something
|
||||||
|
// more closely matching the flags provided and the width/height
|
||||||
|
// requested (e.g. use real 240p for 320x240 instead of scaling up 2x and
|
||||||
|
// always using 480p or 480i ... unless the flags used call for that
|
||||||
|
// specifically!)
|
||||||
|
vmode = VIDEO_GetPreferredMode(NULL);
|
||||||
|
|
||||||
|
// set up the list of supported SDL video modes (which will be checked against
|
||||||
|
// in calls to SDL_SetVideoMode)
|
||||||
mode_640.w = vmode->fbWidth;
|
mode_640.w = vmode->fbWidth;
|
||||||
mode_640.h = vmode->efbHeight;
|
mode_640.h = vmode->efbHeight;
|
||||||
mode_320.w = mode_640.w / 2;
|
mode_320.w = mode_640.w / 2;
|
||||||
|
@ -299,6 +314,20 @@ static SDL_Rect **WII_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags)
|
||||||
return &modes_descending[0];
|
return &modes_descending[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PickWiiVideoMode(GXRModeObj **picked_mode, int width, int height, Uint32 flags)
|
||||||
|
{
|
||||||
|
*picked_mode = NULL;
|
||||||
|
|
||||||
|
if (height == 240)
|
||||||
|
{
|
||||||
|
*picked_mode = &TVNtsc240Ds;
|
||||||
|
}
|
||||||
|
else if (height == 480)
|
||||||
|
{
|
||||||
|
*picked_mode = &TVNtsc480Int;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static SDL_Surface *WII_SetVideoMode(_THIS, SDL_Surface *current,
|
static SDL_Surface *WII_SetVideoMode(_THIS, SDL_Surface *current,
|
||||||
int width, int height, int bpp, Uint32 flags)
|
int width, int height, int bpp, Uint32 flags)
|
||||||
{
|
{
|
||||||
|
@ -333,6 +362,15 @@ static SDL_Surface *WII_SetVideoMode(_THIS, SDL_Surface *current,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PickWiiVideoMode(&vmode, width, height, flags);
|
||||||
|
if (vmode == NULL)
|
||||||
|
{
|
||||||
|
SDL_SetError("Could not select suitable WII video mode.");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
WII_InitVideoSystem();
|
||||||
|
|
||||||
bytes_per_pixel = bpp / 8;
|
bytes_per_pixel = bpp / 8;
|
||||||
|
|
||||||
// Free any existing buffer.
|
// Free any existing buffer.
|
||||||
|
@ -775,7 +813,10 @@ WII_InitVideoSystem()
|
||||||
{
|
{
|
||||||
/* Initialise the video system */
|
/* Initialise the video system */
|
||||||
VIDEO_Init();
|
VIDEO_Init();
|
||||||
vmode = VIDEO_GetPreferredMode(NULL);
|
|
||||||
|
// assumes vmode has been pre-filled (WII_SetVideoMode does this for valid video mode parameters)
|
||||||
|
if (vmode == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
/* Set up the video system with the chosen mode */
|
/* Set up the video system with the chosen mode */
|
||||||
VIDEO_Configure(vmode);
|
VIDEO_Configure(vmode);
|
||||||
|
|
Reference in a new issue