mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-27 03:31:49 +01:00
[Gamecube/Wii] added configurable NTSC filter
This commit is contained in:
parent
7dbeddece1
commit
3b95a6eaee
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Genesis Plus GX configuration file support
|
* Genesis Plus GX configuration file support
|
||||||
*
|
*
|
||||||
* Copyright Eke-Eke (2007-2013)
|
* Copyright Eke-Eke (2007-2014)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -164,6 +164,13 @@ void config_default(void)
|
|||||||
config.gamma = VI_GM_1_0 / 10.0;
|
config.gamma = VI_GM_1_0 / 10.0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* NTSC filter options */
|
||||||
|
config.ntsc_sharpness = 0.0;
|
||||||
|
config.ntsc_resolution = 0.0;
|
||||||
|
config.ntsc_artifacts = 0.0;
|
||||||
|
config.ntsc_fringing = 0.0;
|
||||||
|
config.ntsc_bleed = 0.0;
|
||||||
|
|
||||||
/* controllers options */
|
/* controllers options */
|
||||||
config.gun_cursor[0] = 1;
|
config.gun_cursor[0] = 1;
|
||||||
config.gun_cursor[1] = 1;
|
config.gun_cursor[1] = 1;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Genesis Plus GX configuration file support
|
* Genesis Plus GX configuration file support
|
||||||
*
|
*
|
||||||
* Copyright Eke-Eke (2007-2013)
|
* Copyright Eke-Eke (2007-2014)
|
||||||
*
|
*
|
||||||
* Redistribution and use of this code or any derivative works are permitted
|
* Redistribution and use of this code or any derivative works are permitted
|
||||||
* provided that the following conditions are met:
|
* provided that the following conditions are met:
|
||||||
@ -111,6 +111,11 @@ typedef struct
|
|||||||
float bgm_volume;
|
float bgm_volume;
|
||||||
float sfx_volume;
|
float sfx_volume;
|
||||||
char lastdir[FILETYPE_MAX][TYPE_RECENT][MAXPATHLEN];
|
char lastdir[FILETYPE_MAX][TYPE_RECENT][MAXPATHLEN];
|
||||||
|
float ntsc_sharpness;
|
||||||
|
float ntsc_resolution;
|
||||||
|
float ntsc_artifacts;
|
||||||
|
float ntsc_fringing;
|
||||||
|
float ntsc_bleed;
|
||||||
} t_config;
|
} t_config;
|
||||||
|
|
||||||
/* Global data */
|
/* Global data */
|
||||||
|
185
gx/gui/menu.c
185
gx/gui/menu.c
@ -370,9 +370,9 @@ static gui_item items_system[10] =
|
|||||||
|
|
||||||
/* Video options */
|
/* Video options */
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
static gui_item items_video[13] =
|
static gui_item items_video[18] =
|
||||||
#else
|
#else
|
||||||
static gui_item items_video[11] =
|
static gui_item items_video[16] =
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
{NULL,NULL,"Display: PROGRESSIVE", "Select video mode", 56,132,276,48},
|
{NULL,NULL,"Display: PROGRESSIVE", "Select video mode", 56,132,276,48},
|
||||||
@ -385,6 +385,11 @@ static gui_item items_video[11] =
|
|||||||
{NULL,NULL,"VI Gamma Correction: 1.0", "Adjust video hardware gamma correction", 56,132,276,48},
|
{NULL,NULL,"VI Gamma Correction: 1.0", "Adjust video hardware gamma correction", 56,132,276,48},
|
||||||
#endif
|
#endif
|
||||||
{NULL,NULL,"NTSC Filter: COMPOSITE", "Enable/disable NTSC software filtering", 56,132,276,48},
|
{NULL,NULL,"NTSC Filter: COMPOSITE", "Enable/disable NTSC software filtering", 56,132,276,48},
|
||||||
|
{NULL,NULL,"NTSC Sharpness: 0.0", "Adjust edge contrast enhancement/blurring", 56,132,276,48},
|
||||||
|
{NULL,NULL,"NTSC Resolution: 0.0", "Adjust image resolution", 56,132,276,48},
|
||||||
|
{NULL,NULL,"NTSC Artifacts: 0.0", "Adjust artifacts caused by color changes", 56,132,276,48},
|
||||||
|
{NULL,NULL,"NTSC Color Bleed: 0.0", "Adjust color resolution reduction", 56,132,276,48},
|
||||||
|
{NULL,NULL,"NTSC Color Fringing: 0.0", "Adjust artifacts caused by brightness changes", 56,132,276,48},
|
||||||
{NULL,NULL,"Borders: OFF", "Enable/disable overscan emulation", 56,132,276,48},
|
{NULL,NULL,"Borders: OFF", "Enable/disable overscan emulation", 56,132,276,48},
|
||||||
{NULL,NULL,"GG screen: ORIGINAL", "Enable/disable Game Gear extended screen", 56,132,276,48},
|
{NULL,NULL,"GG screen: ORIGINAL", "Enable/disable Game Gear extended screen", 56,132,276,48},
|
||||||
{NULL,NULL,"Aspect: ORIGINAL (4:3)", "Select display aspect ratio", 56,132,276,48},
|
{NULL,NULL,"Aspect: ORIGINAL (4:3)", "Select display aspect ratio", 56,132,276,48},
|
||||||
@ -1480,6 +1485,7 @@ static void videomenu ()
|
|||||||
int reinit = 0;
|
int reinit = 0;
|
||||||
gui_menu *m = &menu_video;
|
gui_menu *m = &menu_video;
|
||||||
gui_item *items = m->items;
|
gui_item *items = m->items;
|
||||||
|
int ntsc_offset = 0;
|
||||||
|
|
||||||
if (config.render == 1)
|
if (config.render == 1)
|
||||||
sprintf (items[0].text,"Display: INTERLACED");
|
sprintf (items[0].text,"Display: INTERLACED");
|
||||||
@ -1514,39 +1520,60 @@ static void videomenu ()
|
|||||||
sprintf (items[VI_OFFSET].text, "NTSC Filter: S-VIDEO");
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: S-VIDEO");
|
||||||
else if (config.ntsc == 3)
|
else if (config.ntsc == 3)
|
||||||
sprintf (items[VI_OFFSET].text, "NTSC Filter: RGB");
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: RGB");
|
||||||
|
else if (config.ntsc == 4)
|
||||||
|
{
|
||||||
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: MANUAL");
|
||||||
|
sprintf(items[VI_OFFSET+1].text, "NTSC Sharpness: %1.2f", config.ntsc_sharpness);
|
||||||
|
sprintf(items[VI_OFFSET+2].text, "NTSC Resolution: %1.2f", config.ntsc_resolution);
|
||||||
|
sprintf(items[VI_OFFSET+3].text, "NTSC Artifacts: %1.2f", config.ntsc_artifacts);
|
||||||
|
sprintf(items[VI_OFFSET+4].text, "NTSC Color Bleed: %1.2f", config.ntsc_bleed);
|
||||||
|
sprintf(items[VI_OFFSET+5].text, "NTSC Color Fringing: %1.2f", config.ntsc_fringing);
|
||||||
|
strcpy(items[VI_OFFSET+1].comment, "Adjust edge contrast enhancement/blurring");
|
||||||
|
strcpy(items[VI_OFFSET+2].comment, "Adjust image resolution");
|
||||||
|
strcpy(items[VI_OFFSET+3].comment, "Adjust artifacts caused by color changes");
|
||||||
|
strcpy(items[VI_OFFSET+4].comment, "Adjust color resolution reduction");
|
||||||
|
strcpy(items[VI_OFFSET+5].comment, "Adjust artifacts caused by brightness changes");
|
||||||
|
ntsc_offset = 5;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
sprintf (items[VI_OFFSET].text, "NTSC Filter: OFF");
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: OFF");
|
||||||
|
|
||||||
if (config.overscan == 3)
|
strcpy(items[VI_OFFSET+1+ntsc_offset].comment, "Enable/disable overscan emulation");
|
||||||
sprintf (items[VI_OFFSET+1].text, "Borders: FULL");
|
strcpy(items[VI_OFFSET+2+ntsc_offset].comment, "Enable/disable Game Gear extended screen");
|
||||||
else if (config.overscan == 2)
|
strcpy(items[VI_OFFSET+3+ntsc_offset].comment, "Select display aspect ratio");
|
||||||
sprintf (items[VI_OFFSET+1].text, "Borders: H ONLY");
|
strcpy(items[VI_OFFSET+4+ntsc_offset].comment, "Adjust display position");
|
||||||
else if (config.overscan == 1)
|
strcpy(items[VI_OFFSET+5+ntsc_offset].comment, "Adjust display scaling");
|
||||||
sprintf (items[VI_OFFSET+1].text, "Borders: V ONLY");
|
|
||||||
else
|
|
||||||
sprintf (items[VI_OFFSET+1].text, "Borders: NONE");
|
|
||||||
|
|
||||||
sprintf(items[VI_OFFSET+2].text, "GG Screen: %s", config.gg_extra ? "EXTENDED":"ORIGINAL");
|
if (config.overscan == 3)
|
||||||
|
sprintf (items[VI_OFFSET+1+ntsc_offset].text, "Borders: FULL");
|
||||||
|
else if (config.overscan == 2)
|
||||||
|
sprintf (items[VI_OFFSET+1+ntsc_offset].text, "Borders: H ONLY");
|
||||||
|
else if (config.overscan == 1)
|
||||||
|
sprintf (items[VI_OFFSET+1+ntsc_offset].text, "Borders: V ONLY");
|
||||||
|
else
|
||||||
|
sprintf (items[VI_OFFSET+1+ntsc_offset].text, "Borders: NONE");
|
||||||
|
|
||||||
|
sprintf(items[VI_OFFSET+2+ntsc_offset].text, "GG Screen: %s", config.gg_extra ? "EXTENDED":"ORIGINAL");
|
||||||
|
|
||||||
if (config.aspect == 1)
|
if (config.aspect == 1)
|
||||||
sprintf (items[VI_OFFSET+3].text,"Aspect: ORIGINAL (4:3)");
|
sprintf (items[VI_OFFSET+3+ntsc_offset].text,"Aspect: ORIGINAL (4:3)");
|
||||||
else if (config.aspect == 2)
|
else if (config.aspect == 2)
|
||||||
sprintf (items[VI_OFFSET+3].text, "Aspect: ORIGINAL (16:9)");
|
sprintf (items[VI_OFFSET+3+ntsc_offset].text, "Aspect: ORIGINAL (16:9)");
|
||||||
else
|
else
|
||||||
sprintf (items[VI_OFFSET+3].text, "Aspect: SCALED");
|
{
|
||||||
|
sprintf (items[VI_OFFSET+3+ntsc_offset].text, "Aspect: SCALED");
|
||||||
|
m->max_items++;
|
||||||
|
}
|
||||||
|
|
||||||
sprintf (items[VI_OFFSET+4].text, "Screen Position: (%s%02d,%s%02d)",
|
sprintf (items[VI_OFFSET+4+ntsc_offset].text, "Screen Position: (%s%02d,%s%02d)",
|
||||||
(config.xshift < 0) ? "":"+", config.xshift,
|
(config.xshift < 0) ? "":"+", config.xshift,
|
||||||
(config.yshift < 0) ? "":"+", config.yshift);
|
(config.yshift < 0) ? "":"+", config.yshift);
|
||||||
|
|
||||||
sprintf (items[VI_OFFSET+5].text, "Screen Scaling: (%s%02d,%s%02d)",
|
sprintf (items[VI_OFFSET+5+ntsc_offset].text, "Screen Scaling: (%s%02d,%s%02d)",
|
||||||
(config.xscale < 0) ? "":"+", config.xscale,
|
(config.xscale < 0) ? "":"+", config.xscale,
|
||||||
(config.yscale < 0) ? "":"+", config.yscale);
|
(config.yscale < 0) ? "":"+", config.yscale);
|
||||||
|
|
||||||
if (config.aspect)
|
m->max_items = VI_OFFSET + 5 + ntsc_offset + (config.aspect == 0);
|
||||||
m->max_items = VI_OFFSET+5;
|
|
||||||
else
|
|
||||||
m->max_items = VI_OFFSET+6;
|
|
||||||
|
|
||||||
GUI_InitMenu(m);
|
GUI_InitMenu(m);
|
||||||
GUI_SlideMenuTitle(m,strlen("Video "));
|
GUI_SlideMenuTitle(m,strlen("Video "));
|
||||||
@ -1555,6 +1582,11 @@ static void videomenu ()
|
|||||||
{
|
{
|
||||||
ret = GUI_RunMenu(m);
|
ret = GUI_RunMenu(m);
|
||||||
|
|
||||||
|
if (ret > VI_OFFSET)
|
||||||
|
{
|
||||||
|
ret += (5 - ntsc_offset);
|
||||||
|
}
|
||||||
|
|
||||||
switch (ret)
|
switch (ret)
|
||||||
{
|
{
|
||||||
case 0: /*** rendering ***/
|
case 0: /*** rendering ***/
|
||||||
@ -1643,64 +1675,135 @@ static void videomenu ()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
case VI_OFFSET: /*** NTSC filter ***/
|
case VI_OFFSET: /*** NTSC filter ***/
|
||||||
config.ntsc = (config.ntsc + 1) & 3;
|
config.ntsc = (config.ntsc + 1) % 5;
|
||||||
if (config.ntsc == 1)
|
if (config.ntsc == 1)
|
||||||
|
{
|
||||||
sprintf (items[VI_OFFSET].text, "NTSC Filter: COMPOSITE");
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: COMPOSITE");
|
||||||
|
}
|
||||||
else if (config.ntsc == 2)
|
else if (config.ntsc == 2)
|
||||||
|
{
|
||||||
sprintf (items[VI_OFFSET].text, "NTSC Filter: S-VIDEO");
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: S-VIDEO");
|
||||||
|
}
|
||||||
else if (config.ntsc == 3)
|
else if (config.ntsc == 3)
|
||||||
|
{
|
||||||
sprintf (items[VI_OFFSET].text, "NTSC Filter: RGB");
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: RGB");
|
||||||
|
}
|
||||||
|
else if (config.ntsc == 4)
|
||||||
|
{
|
||||||
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: MANUAL");
|
||||||
|
strcpy(items[VI_OFFSET+5+1].text, items[VI_OFFSET+1].text);
|
||||||
|
strcpy(items[VI_OFFSET+5+2].text, items[VI_OFFSET+2].text);
|
||||||
|
strcpy(items[VI_OFFSET+5+3].text, items[VI_OFFSET+3].text);
|
||||||
|
strcpy(items[VI_OFFSET+5+4].text, items[VI_OFFSET+4].text);
|
||||||
|
strcpy(items[VI_OFFSET+5+5].text, items[VI_OFFSET+5].text);
|
||||||
|
strcpy(items[VI_OFFSET+5+1].comment, items[VI_OFFSET+1].comment);
|
||||||
|
strcpy(items[VI_OFFSET+5+2].comment, items[VI_OFFSET+2].comment);
|
||||||
|
strcpy(items[VI_OFFSET+5+3].comment, items[VI_OFFSET+3].comment);
|
||||||
|
strcpy(items[VI_OFFSET+5+4].comment, items[VI_OFFSET+4].comment);
|
||||||
|
strcpy(items[VI_OFFSET+5+5].comment, items[VI_OFFSET+5].comment);
|
||||||
|
sprintf(items[VI_OFFSET+1].text, "NTSC Sharpness: %1.1f", config.ntsc_sharpness);
|
||||||
|
sprintf(items[VI_OFFSET+2].text, "NTSC Resolution: %1.1f", config.ntsc_resolution);
|
||||||
|
sprintf(items[VI_OFFSET+3].text, "NTSC Artifacts: %1.1f", config.ntsc_artifacts);
|
||||||
|
sprintf(items[VI_OFFSET+4].text, "NTSC Color Bleed: %1.1f", config.ntsc_bleed);
|
||||||
|
sprintf(items[VI_OFFSET+5].text, "NTSC Color Fringing: %1.1f", config.ntsc_fringing);
|
||||||
|
strcpy(items[VI_OFFSET+1].comment, "Adjust edge contrast enhancement/blurring");
|
||||||
|
strcpy(items[VI_OFFSET+2].comment, "Adjust image resolution");
|
||||||
|
strcpy(items[VI_OFFSET+3].comment, "Adjust artifacts caused by color changes");
|
||||||
|
strcpy(items[VI_OFFSET+4].comment, "Adjust color resolution reduction");
|
||||||
|
strcpy(items[VI_OFFSET+5].comment, "Adjust artifacts caused by brightness changes");
|
||||||
|
ntsc_offset = 5;
|
||||||
|
m->max_items = VI_OFFSET + 10 + (config.aspect == 0);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
sprintf (items[VI_OFFSET].text, "NTSC Filter: OFF");
|
sprintf (items[VI_OFFSET].text, "NTSC Filter: OFF");
|
||||||
|
strcpy(items[VI_OFFSET+1].text, items[VI_OFFSET+5+1].text);
|
||||||
|
strcpy(items[VI_OFFSET+2].text, items[VI_OFFSET+5+2].text);
|
||||||
|
strcpy(items[VI_OFFSET+3].text, items[VI_OFFSET+5+3].text);
|
||||||
|
strcpy(items[VI_OFFSET+4].text, items[VI_OFFSET+5+4].text);
|
||||||
|
strcpy(items[VI_OFFSET+5].text, items[VI_OFFSET+5+5].text);
|
||||||
|
strcpy(items[VI_OFFSET+1].comment, items[VI_OFFSET+5+1].comment);
|
||||||
|
strcpy(items[VI_OFFSET+2].comment, items[VI_OFFSET+5+2].comment);
|
||||||
|
strcpy(items[VI_OFFSET+3].comment, items[VI_OFFSET+5+3].comment);
|
||||||
|
strcpy(items[VI_OFFSET+4].comment, items[VI_OFFSET+5+4].comment);
|
||||||
|
strcpy(items[VI_OFFSET+5].comment, items[VI_OFFSET+5+5].comment);
|
||||||
|
ntsc_offset = 0;
|
||||||
|
m->max_items = VI_OFFSET + 5 + (config.aspect == 0);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VI_OFFSET+1: /*** overscan emulation ***/
|
case VI_OFFSET+1: /*** NTSC Sharpness ***/
|
||||||
|
GUI_OptionBox(m,update_bgm,"NTSC Sharpness",(void *)&config.ntsc_sharpness,0.01,-1.0,1.0,0);
|
||||||
|
sprintf(items[VI_OFFSET+1].text, "NTSC Sharpness: %1.2f", config.ntsc_sharpness);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VI_OFFSET+2: /*** NTSC Resolution ***/
|
||||||
|
GUI_OptionBox(m,update_bgm,"NTSC Resolution",(void *)&config.ntsc_resolution,0.01,0.0,1.0,0);
|
||||||
|
sprintf(items[VI_OFFSET+2].text, "NTSC Resolution: %1.2f", config.ntsc_resolution);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VI_OFFSET+3: /*** NTSC Artifacts ***/
|
||||||
|
GUI_OptionBox(m,update_bgm,"NTSC Artifacts",(void *)&config.ntsc_artifacts,0.01,-1.0,0.0,0);
|
||||||
|
sprintf(items[VI_OFFSET+3].text, "NTSC Artifacts: %1.2f", config.ntsc_artifacts);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VI_OFFSET+4: /*** NTSC Color Bleed ***/
|
||||||
|
GUI_OptionBox(m,update_bgm,"NTSC Color Bleed",(void *)&config.ntsc_bleed,0.01,-1.0,1.0,0);
|
||||||
|
sprintf(items[VI_OFFSET+4].text, "NTSC Color Bleed: %1.2f", config.ntsc_bleed);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VI_OFFSET+5: /*** NTSC Color Fringing ***/
|
||||||
|
GUI_OptionBox(m,update_bgm,"NTSC Color Fringing",(void *)&config.ntsc_fringing,0.01,-1.0,1.0,0);
|
||||||
|
sprintf(items[VI_OFFSET+5].text, "NTSC Color Fringing: %1.2f", config.ntsc_fringing);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VI_OFFSET+6: /*** overscan emulation ***/
|
||||||
config.overscan = (config.overscan + 1) & 3;
|
config.overscan = (config.overscan + 1) & 3;
|
||||||
if (config.overscan == 3)
|
if (config.overscan == 3)
|
||||||
sprintf (items[VI_OFFSET+1].text, "Borders: FULL");
|
sprintf (items[VI_OFFSET+ntsc_offset+1].text, "Borders: FULL");
|
||||||
else if (config.overscan == 2)
|
else if (config.overscan == 2)
|
||||||
sprintf (items[VI_OFFSET+1].text, "Borders: H ONLY");
|
sprintf (items[VI_OFFSET+ntsc_offset+1].text, "Borders: H ONLY");
|
||||||
else if (config.overscan == 1)
|
else if (config.overscan == 1)
|
||||||
sprintf (items[VI_OFFSET+1].text, "Borders: V ONLY");
|
sprintf (items[VI_OFFSET+ntsc_offset+1].text, "Borders: V ONLY");
|
||||||
else
|
else
|
||||||
sprintf (items[VI_OFFSET+1].text, "Borders: NONE");
|
sprintf (items[VI_OFFSET+ntsc_offset+1].text, "Borders: NONE");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VI_OFFSET+2: /*** Game Gear extended screen */
|
case VI_OFFSET+7: /*** Game Gear extended screen */
|
||||||
config.gg_extra ^= 1;
|
config.gg_extra ^= 1;
|
||||||
sprintf(items[VI_OFFSET+2].text, "GG Screen: %s", config.gg_extra ? "EXTENDED":"ORIGINAL");
|
sprintf(items[VI_OFFSET+ntsc_offset+2].text, "GG Screen: %s", config.gg_extra ? "EXTENDED":"ORIGINAL");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VI_OFFSET+3: /*** aspect ratio ***/
|
case VI_OFFSET+8: /*** aspect ratio ***/
|
||||||
config.aspect = (config.aspect + 1) % 3;
|
config.aspect = (config.aspect + 1) % 3;
|
||||||
if (config.aspect == 1)
|
if (config.aspect == 1)
|
||||||
sprintf (items[VI_OFFSET+3].text,"Aspect: ORIGINAL (4:3)");
|
sprintf (items[VI_OFFSET+ntsc_offset+3].text,"Aspect: ORIGINAL (4:3)");
|
||||||
else if (config.aspect == 2)
|
else if (config.aspect == 2)
|
||||||
sprintf (items[VI_OFFSET+3].text, "Aspect: ORIGINAL (16:9)");
|
sprintf (items[VI_OFFSET+ntsc_offset+3].text, "Aspect: ORIGINAL (16:9)");
|
||||||
else
|
else
|
||||||
sprintf (items[VI_OFFSET+3].text, "Aspect: SCALED");
|
sprintf (items[VI_OFFSET+ntsc_offset+3].text, "Aspect: SCALED");
|
||||||
|
|
||||||
if (config.aspect)
|
if (config.aspect)
|
||||||
{
|
{
|
||||||
/* disable items */
|
/* disable items */
|
||||||
m->max_items = VI_OFFSET+5;
|
m->max_items = VI_OFFSET + ntsc_offset + 5;
|
||||||
|
|
||||||
/* reset menu selection */
|
/* reset menu selection */
|
||||||
if (m->offset > VI_OFFSET)
|
if (m->selected < 2)
|
||||||
{
|
{
|
||||||
m->offset = VI_OFFSET;
|
m->offset = VI_OFFSET + ntsc_offset + 1;
|
||||||
m->selected = 3;
|
m->selected = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* enable items */
|
/* enable items */
|
||||||
m->max_items = VI_OFFSET+6;
|
m->max_items = VI_OFFSET + ntsc_offset + 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VI_OFFSET+4: /*** screen position ***/
|
case VI_OFFSET+9: /*** screen position ***/
|
||||||
if (system_hw)
|
if (system_hw)
|
||||||
{
|
{
|
||||||
state[0] = m->arrows[0]->state;
|
state[0] = m->arrows[0]->state;
|
||||||
@ -1718,7 +1821,7 @@ static void videomenu ()
|
|||||||
m->arrows[1]->state = state[1];
|
m->arrows[1]->state = state[1];
|
||||||
m->screenshot = 0;
|
m->screenshot = 0;
|
||||||
strcpy(m->title,"Video Settings");
|
strcpy(m->title,"Video Settings");
|
||||||
sprintf (items[VI_OFFSET+4].text, "Screen Position: (%s%02d,%s%02d)",
|
sprintf (items[VI_OFFSET+ntsc_offset+4].text, "Screen Position: (%s%02d,%s%02d)",
|
||||||
(config.xshift < 0) ? "":"+", config.xshift,
|
(config.xshift < 0) ? "":"+", config.xshift,
|
||||||
(config.yshift < 0) ? "":"+", config.yshift);
|
(config.yshift < 0) ? "":"+", config.yshift);
|
||||||
}
|
}
|
||||||
@ -1728,7 +1831,7 @@ static void videomenu ()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VI_OFFSET+5: /*** screen scaling ***/
|
case VI_OFFSET+10: /*** screen scaling ***/
|
||||||
if (system_hw)
|
if (system_hw)
|
||||||
{
|
{
|
||||||
state[0] = m->arrows[0]->state;
|
state[0] = m->arrows[0]->state;
|
||||||
@ -1746,7 +1849,7 @@ static void videomenu ()
|
|||||||
m->arrows[1]->state = state[1];
|
m->arrows[1]->state = state[1];
|
||||||
m->screenshot = 0;
|
m->screenshot = 0;
|
||||||
strcpy(m->title,"Video Settings");
|
strcpy(m->title,"Video Settings");
|
||||||
sprintf (items[VI_OFFSET+5].text, "Screen Scaling: (%s%02d,%s%02d)",
|
sprintf (items[VI_OFFSET+ntsc_offset+5].text, "Screen Scaling: (%s%02d,%s%02d)",
|
||||||
(config.xscale < 0) ? "":"+", config.xscale,
|
(config.xscale < 0) ? "":"+", config.xscale,
|
||||||
(config.yscale < 0) ? "":"+", config.yscale);
|
(config.yscale < 0) ? "":"+", config.yscale);
|
||||||
}
|
}
|
||||||
|
@ -1557,17 +1557,37 @@ void gx_video_Start(void)
|
|||||||
switch (config.ntsc)
|
switch (config.ntsc)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
|
{
|
||||||
sms_ntsc_init(sms_ntsc, &sms_ntsc_composite);
|
sms_ntsc_init(sms_ntsc, &sms_ntsc_composite);
|
||||||
md_ntsc_init(md_ntsc, &md_ntsc_composite);
|
md_ntsc_init(md_ntsc, &md_ntsc_composite);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
|
{
|
||||||
sms_ntsc_init(sms_ntsc, &sms_ntsc_svideo);
|
sms_ntsc_init(sms_ntsc, &sms_ntsc_svideo);
|
||||||
md_ntsc_init(md_ntsc, &md_ntsc_svideo);
|
md_ntsc_init(md_ntsc, &md_ntsc_svideo);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
|
{
|
||||||
sms_ntsc_init(sms_ntsc, &sms_ntsc_rgb);
|
sms_ntsc_init(sms_ntsc, &sms_ntsc_rgb);
|
||||||
md_ntsc_init(md_ntsc, &md_ntsc_rgb);
|
md_ntsc_init(md_ntsc, &md_ntsc_rgb);
|
||||||
|
}
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
md_ntsc_setup_t ntsc_custom = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||||
|
ntsc_custom.sharpness = config.ntsc_sharpness;
|
||||||
|
ntsc_custom.resolution = config.ntsc_resolution;
|
||||||
|
ntsc_custom.artifacts = config.ntsc_artifacts;
|
||||||
|
ntsc_custom.fringing = config.ntsc_fringing;
|
||||||
|
ntsc_custom.bleed = config.ntsc_bleed;
|
||||||
|
sms_ntsc_init(sms_ntsc, (sms_ntsc_setup_t *)&ntsc_custom);
|
||||||
|
md_ntsc_init(md_ntsc, &ntsc_custom);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user