mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-12-25 02:31:50 +01:00
tidy up filter code
This commit is contained in:
parent
16e8b6dd25
commit
9cab3a68e9
@ -31,28 +31,12 @@
|
|||||||
static int RGBtoYUV[1<<NUMBITS];
|
static int RGBtoYUV[1<<NUMBITS];
|
||||||
static uint16 RGBtoBright[1<<NUMBITS];
|
static uint16 RGBtoBright[1<<NUMBITS];
|
||||||
|
|
||||||
TFilterMethod FilterMethod = RenderPlain;
|
TFilterMethod FilterMethod;
|
||||||
//TFilterMethod FilterMethodHiRes = RenderPlain;
|
|
||||||
|
|
||||||
//
|
template<int GuiScale> void RenderHQ2X (uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
||||||
// Functions:
|
template<int GuiScale> void Scanlines (uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
||||||
//
|
|
||||||
|
|
||||||
bool
|
const char* GetFilterName (RenderFilter filterID)
|
||||||
GetFilterHiResSupport (RenderFilter filterID)
|
|
||||||
{
|
|
||||||
switch(filterID)
|
|
||||||
{
|
|
||||||
case FILTER_NONE:
|
|
||||||
return true;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char*
|
|
||||||
GetFilterName (RenderFilter filterID)
|
|
||||||
{
|
{
|
||||||
switch(filterID)
|
switch(filterID)
|
||||||
{
|
{
|
||||||
@ -66,17 +50,15 @@ GetFilterName (RenderFilter filterID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return pointer to appropriate function
|
// Return pointer to appropriate function
|
||||||
TFilterMethod
|
static TFilterMethod FilterToMethod (RenderFilter filterID)
|
||||||
FilterToMethod (RenderFilter filterID)
|
|
||||||
{
|
{
|
||||||
switch(filterID)
|
switch(filterID)
|
||||||
{
|
{
|
||||||
default:
|
|
||||||
case FILTER_NONE: return RenderPlain;
|
|
||||||
case FILTER_HQ2X: return RenderHQ2X<FILTER_HQ2X>;
|
case FILTER_HQ2X: return RenderHQ2X<FILTER_HQ2X>;
|
||||||
case FILTER_HQ2XS: return RenderHQ2X<FILTER_HQ2XS>;
|
case FILTER_HQ2XS: return RenderHQ2X<FILTER_HQ2XS>;
|
||||||
case FILTER_HQ2XBOLD: return RenderHQ2X<FILTER_HQ2XBOLD>;
|
case FILTER_HQ2XBOLD: return RenderHQ2X<FILTER_HQ2XBOLD>;
|
||||||
case FILTER_SCANLINES: return Scanlines<FILTER_SCANLINES>;
|
case FILTER_SCANLINES: return Scanlines<FILTER_SCANLINES>;
|
||||||
|
default: return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,7 +68,6 @@ int GetFilterScale(RenderFilter filterID)
|
|||||||
{
|
{
|
||||||
case FILTER_NONE:
|
case FILTER_NONE:
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
case FILTER_HQ2X:
|
case FILTER_HQ2X:
|
||||||
case FILTER_HQ2XS:
|
case FILTER_HQ2XS:
|
||||||
@ -96,32 +77,9 @@ int GetFilterScale(RenderFilter filterID)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void SelectFilterMethod ()
|
||||||
SelectFilterMethod ()
|
|
||||||
{
|
{
|
||||||
//InfoPrompt((char*)"Select Filter Method."); // debug
|
|
||||||
|
|
||||||
FilterMethod = FilterToMethod((RenderFilter)GCSettings.FilterMethod);
|
FilterMethod = FilterToMethod((RenderFilter)GCSettings.FilterMethod);
|
||||||
//FilterMethodHiRes = FilterToMethod((RenderFilter)GCSettings.FilterMethodHiRes);
|
|
||||||
|
|
||||||
// check whether or not we need filter memory (alloc or free it)
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Filter Codes:
|
|
||||||
//
|
|
||||||
|
|
||||||
// No enlargement, just render to the screen
|
|
||||||
void
|
|
||||||
RenderPlain (uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height)
|
|
||||||
{
|
|
||||||
if (dstPtr == NULL)
|
|
||||||
{
|
|
||||||
ErrorPrompt((char*)"dstPtr is NULL. exiting!");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
//memcpy (dstPtr, srcPtr, width*height*srcPitch);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -236,17 +194,10 @@ void InitLUTs(void)
|
|||||||
|
|
||||||
for (c = 0 ; c < (1<<NUMBITS) ; c++)
|
for (c = 0 ; c < (1<<NUMBITS) ; c++)
|
||||||
{
|
{
|
||||||
//#ifdef R5G6B5
|
|
||||||
b = (int)((c & 0x1F)) << 3;
|
b = (int)((c & 0x1F)) << 3;
|
||||||
g = (int)((c & 0x7E0)) >> 3;
|
g = (int)((c & 0x7E0)) >> 3;
|
||||||
r = (int)((c & 0xF800)) >> 8;
|
r = (int)((c & 0xF800)) >> 8;
|
||||||
|
|
||||||
//#else
|
|
||||||
// b = (int)((c & 0x1F)) << 3;
|
|
||||||
// g = (int)((c & 0x3E0)) >> 2;
|
|
||||||
// r = (int)((c & 0x7C00)) >> 7;
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
RGBtoBright[c] = r+r+r + g+g+g + b+b;
|
RGBtoBright[c] = r+r+r + g+g+g + b+b;
|
||||||
|
|
||||||
y = (int)( 0.256788f*r + 0.504129f*g + 0.097906f*b + 0.5f) + 16;
|
y = (int)( 0.256788f*r + 0.504129f*g + 0.097906f*b + 0.5f) + 16;
|
||||||
@ -254,7 +205,6 @@ void InitLUTs(void)
|
|||||||
v = (int)( 0.439216f*r - 0.367788f*g - 0.071427f*b + 0.5f) + 128;
|
v = (int)( 0.439216f*r - 0.367788f*g - 0.071427f*b + 0.5f) + 128;
|
||||||
|
|
||||||
RGBtoYUV[c] = (y << 16) + (u << 8) + v;
|
RGBtoYUV[c] = (y << 16) + (u << 8) + v;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +377,6 @@ void RenderHQ2X (uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,
|
|||||||
// If Snes9x is rendering anything in HiRes, then just copy, don't interpolate
|
// If Snes9x is rendering anything in HiRes, then just copy, don't interpolate
|
||||||
if (height > SNES_HEIGHT_EXTENDED || width == 512)
|
if (height > SNES_HEIGHT_EXTENDED || width == 512)
|
||||||
{
|
{
|
||||||
//RenderSimple2X (Src, Dst, rect);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,22 +42,12 @@ enum RenderFilter{
|
|||||||
typedef void (*TFilterMethod)(uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
typedef void (*TFilterMethod)(uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
||||||
|
|
||||||
extern TFilterMethod FilterMethod;
|
extern TFilterMethod FilterMethod;
|
||||||
extern TFilterMethod FilterMethodHiRes;
|
|
||||||
|
|
||||||
extern unsigned char * filtermem;
|
extern unsigned char * filtermem;
|
||||||
|
|
||||||
//
|
|
||||||
// Prototypes
|
|
||||||
//
|
|
||||||
void SelectFilterMethod ();
|
void SelectFilterMethod ();
|
||||||
void RenderPlain (uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
|
||||||
void SelectFilterMethod ();
|
|
||||||
TFilterMethod FilterToMethod (RenderFilter filterID);
|
|
||||||
const char* GetFilterName (RenderFilter filterID);
|
const char* GetFilterName (RenderFilter filterID);
|
||||||
bool GetFilterHiResSupport (RenderFilter filterID);
|
|
||||||
int GetFilterScale(RenderFilter filterID);
|
int GetFilterScale(RenderFilter filterID);
|
||||||
template<int GuiScale> void RenderHQ2X (uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
|
||||||
template<int GuiScale> void Scanlines (uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
|
||||||
void InitLUTs();
|
void InitLUTs();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user