mirror of
https://github.com/dborth/fceugx.git
synced 2024-10-31 22:45:05 +01:00
add overscan option
This commit is contained in:
parent
7bf1b8a4fe
commit
5c465f680e
@ -33,6 +33,7 @@ DefaultSettings ()
|
||||
GCSettings.ZoomLevel = 1.0; // zoom amount
|
||||
GCSettings.render = 2; // Unfiltered
|
||||
GCSettings.widescreen = 0; // no aspect ratio correction
|
||||
GCSettings.hideoverscan = 2; // hide both horizontal and vertical
|
||||
|
||||
GCSettings.LoadMethod = METHOD_AUTO; // Auto, SD, DVD, USB, Network (SMB)
|
||||
GCSettings.SaveMethod = METHOD_AUTO; // Auto, SD, Memory Card Slot A, Memory Card Slot B, USB, Network (SMB)
|
||||
|
@ -53,6 +53,7 @@ struct SGCSettings{
|
||||
int VerifySaves;
|
||||
int render; // 0 - original, 1 - filtered, 2 - unfiltered
|
||||
int widescreen;
|
||||
int hideoverscan;
|
||||
int currpal;
|
||||
int timing;
|
||||
int FSDisable;
|
||||
|
@ -438,7 +438,7 @@ UpdateScaling()
|
||||
square[3] = square[6] = (xscale);
|
||||
square[1] = square[4] = (yscale);
|
||||
square[7] = square[10] = (-yscale);
|
||||
DCFlushRange (square, sizeof(square)); // update memory BEFORE the GPU accesses it!
|
||||
DCFlushRange (square, 32); // update memory BEFORE the GPU accesses it!
|
||||
draw_init ();
|
||||
|
||||
if(updateScaling)
|
||||
@ -637,6 +637,7 @@ ResetVideo_Emu ()
|
||||
GX_InitTexObj (&texobj, texturemem, TEX_WIDTH, TEX_HEIGHT, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); // initialize the texture obj we are going to use
|
||||
if (!(GCSettings.render&1))
|
||||
GX_InitTexObjLOD(&texobj,GX_NEAR,GX_NEAR_MIP_NEAR,2.5,9.0,0.0,GX_FALSE,GX_FALSE,GX_ANISO_1); // original/unfiltered video mode: force texture filtering OFF
|
||||
memset(texturemem, 0, TEX_WIDTH * TEX_HEIGHT * 2); // clear texture memory
|
||||
|
||||
// set aspect ratio
|
||||
updateScaling = 5;
|
||||
@ -698,21 +699,21 @@ void RenderFrame(unsigned char *XBuf)
|
||||
|
||||
int width, height;
|
||||
|
||||
int hideoverscan = 1;
|
||||
// 0 = off, 1 = vertical, 2 = both
|
||||
u8 borderheight = GCSettings.hideoverscan < 1 ? 0 : 8;
|
||||
u8 borderwidth = GCSettings.hideoverscan < 2 ? 0 : 8;
|
||||
|
||||
u8 borderwidth = (hideoverscan ? 8 : 0);
|
||||
|
||||
u16 *texture = (unsigned short *)texturemem + borderwidth * 260;
|
||||
u8 *src1 = XBuf + borderwidth * 257;
|
||||
u8 *src2 = XBuf + borderwidth * 257 + 256;
|
||||
u8 *src3 = XBuf + borderwidth * 257 + 512;
|
||||
u8 *src4 = XBuf + borderwidth * 257 + 768;
|
||||
u16 *texture = (unsigned short *)texturemem + (borderheight << 8) + (borderwidth << 2);
|
||||
u8 *src1 = XBuf + (borderheight << 8) + borderwidth;
|
||||
u8 *src2 = XBuf + (borderheight << 8) + borderwidth + 256;
|
||||
u8 *src3 = XBuf + (borderheight << 8) + borderwidth + 512;
|
||||
u8 *src4 = XBuf + (borderheight << 8) + borderwidth + 768;
|
||||
|
||||
// clear texture objects
|
||||
GX_InvalidateTexAll();
|
||||
|
||||
// fill the texture
|
||||
for (height = 0; height < 240 - (borderwidth << 1); height += 4)
|
||||
for (height = 0; height < 240 - (borderheight << 1); height += 4)
|
||||
{
|
||||
for (width = 0; width < 256 - (borderwidth << 1); width += 4)
|
||||
{
|
||||
|
@ -109,6 +109,7 @@ static char videomenu[][50] = {
|
||||
|
||||
"Video Rendering",
|
||||
"Video Scaling",
|
||||
"Video Cropping"
|
||||
"Palette",
|
||||
"Enable Zooming",
|
||||
"Timing",
|
||||
@ -130,26 +131,33 @@ VideoOptions ()
|
||||
if (GCSettings.render==0 && progressive)
|
||||
GCSettings.render++;
|
||||
|
||||
if ( GCSettings.render == 0 )
|
||||
if (GCSettings.render == 0)
|
||||
sprintf (videomenu[0], "Video Rendering Original");
|
||||
if ( GCSettings.render == 1 )
|
||||
if (GCSettings.render == 1)
|
||||
sprintf (videomenu[0], "Video Rendering Filtered");
|
||||
if ( GCSettings.render == 2 )
|
||||
if (GCSettings.render == 2)
|
||||
sprintf (videomenu[0], "Video Rendering Unfiltered");
|
||||
|
||||
sprintf (videomenu[1], "Video Scaling %s",
|
||||
GCSettings.widescreen == true ? "16:9 Correction" : "Default");
|
||||
|
||||
sprintf (videomenu[2], "Palette - %s",
|
||||
if (GCSettings.hideoverscan == 0)
|
||||
sprintf (videomenu[2], "Video Cropping Off");
|
||||
if (GCSettings.hideoverscan == 1)
|
||||
sprintf (videomenu[2], "Video Cropping Hide Vertical");
|
||||
if (GCSettings.hideoverscan == 2)
|
||||
sprintf (videomenu[2], "Video Cropping Hide All");
|
||||
|
||||
sprintf (videomenu[3], "Palette - %s",
|
||||
GCSettings.currpal ? palettes[GCSettings.currpal-1].name : "Default");
|
||||
|
||||
sprintf (videomenu[3], "Enable Zooming %s",
|
||||
sprintf (videomenu[4], "Enable Zooming %s",
|
||||
GCSettings.Zoom == true ? " ON" : "OFF");
|
||||
|
||||
sprintf (videomenu[4], "Timing - %s",
|
||||
sprintf (videomenu[5], "Timing - %s",
|
||||
GCSettings.timing == true ? " PAL" : "NTSC");
|
||||
|
||||
sprintf (videomenu[5], "8 Sprite Limit - %s",
|
||||
sprintf (videomenu[6], "8 Sprite Limit - %s",
|
||||
GCSettings.slimit == true ? " ON" : "OFF");
|
||||
|
||||
ret = RunMenu (videomenu, videomenuCount, (char*)"Video Options", 20, -1);
|
||||
@ -158,7 +166,7 @@ VideoOptions ()
|
||||
{
|
||||
case 0:
|
||||
GCSettings.render++;
|
||||
if (GCSettings.render > 2 )
|
||||
if (GCSettings.render > 2)
|
||||
GCSettings.render = 0;
|
||||
// reset zoom
|
||||
zoom_reset ();
|
||||
@ -168,27 +176,33 @@ VideoOptions ()
|
||||
GCSettings.widescreen ^= 1;
|
||||
break;
|
||||
|
||||
case 2: // palette
|
||||
case 2:
|
||||
GCSettings.hideoverscan++;
|
||||
if (GCSettings.hideoverscan > 2)
|
||||
GCSettings.hideoverscan = 0;
|
||||
break;
|
||||
|
||||
case 3: // palette
|
||||
if ( ++GCSettings.currpal > MAXPAL )
|
||||
GCSettings.currpal = 0;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
GCSettings.Zoom ^= 1;
|
||||
break;
|
||||
|
||||
case 4: // timing
|
||||
case 5: // timing
|
||||
GCSettings.timing ^= 1;
|
||||
FCEUI_SetVidSystem(GCSettings.timing); // causes a small 'pop' in the audio
|
||||
break;
|
||||
|
||||
case 5: // 8 sprite limit
|
||||
case 6: // 8 sprite limit
|
||||
GCSettings.slimit ^=1;
|
||||
FCEUI_DisableSpriteLimitation(GCSettings.slimit);
|
||||
break;
|
||||
|
||||
case -1: // Button B
|
||||
case 6:
|
||||
case 7:
|
||||
quit = 1;
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user