mirror of
https://github.com/dborth/fceugx.git
synced 2025-01-05 21:38:17 +01:00
This commit is contained in:
parent
db61d23ca4
commit
07e87efe38
@ -54,6 +54,7 @@ static Mtx GXmodelView2D;
|
||||
/*** Texture memory ***/
|
||||
static unsigned char texturemem[TEX_WIDTH * TEX_HEIGHT * 4] ATTRIBUTE_ALIGN (32);
|
||||
unsigned char filtermem[TEX_WIDTH * TEX_HEIGHT * 4] ATTRIBUTE_ALIGN (32);
|
||||
unsigned char filtermem2[TEX_WIDTH * TEX_HEIGHT * 4] ATTRIBUTE_ALIGN (32);
|
||||
|
||||
static int UpdateVideo = 1;
|
||||
static int vmode_60hz = 0;
|
||||
@ -669,6 +670,9 @@ ResetVideo_Emu ()
|
||||
|
||||
void RenderFrame(unsigned char *XBuf)
|
||||
{
|
||||
if(!XBuf)
|
||||
return;
|
||||
|
||||
// Ensure previous vb has complete
|
||||
while ((LWP_ThreadIsSuspended (vbthread) == 0) || (copynow == GX_TRUE))
|
||||
usleep (50);
|
||||
@ -696,8 +700,16 @@ void RenderFrame(unsigned char *XBuf)
|
||||
|
||||
if (GCSettings.FilterMethod != FILTER_NONE)
|
||||
{
|
||||
FilterMethod ((uint8*) XBuf, 272, (uint8*) filtermem, TEX_WIDTH*fscale*2, TEX_WIDTH, TEX_HEIGHT);
|
||||
MakeTexture565((char *)filtermem, (char *) texturemem, TEX_WIDTH*fscale, TEX_HEIGHT*fscale);
|
||||
// convert to 16 bpp
|
||||
uint8 *src = (uint8 *)XBuf;
|
||||
uint16 * dst = (uint16 *)filtermem;
|
||||
|
||||
for (height = 0; height < TEX_HEIGHT; height++)
|
||||
for (width = 0; width < TEX_WIDTH; width++)
|
||||
*dst++ = rgb565[*src++];
|
||||
|
||||
FilterMethod ((uint8*) filtermem, TEX_WIDTH*2, (uint8*) filtermem2, TEX_WIDTH*fscale*2, TEX_WIDTH, TEX_HEIGHT);
|
||||
MakeTexture565((char *)filtermem2, (char *) texturemem, TEX_WIDTH*fscale, TEX_HEIGHT*fscale);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -34,19 +34,6 @@ TFilterMethod FilterMethod = RenderPlain;
|
||||
// Functions:
|
||||
//
|
||||
|
||||
bool
|
||||
GetFilterHiResSupport (RenderFilter filterID)
|
||||
{
|
||||
switch(filterID)
|
||||
{
|
||||
case FILTER_NONE:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const char*
|
||||
GetFilterName (RenderFilter filterID)
|
||||
{
|
||||
@ -224,17 +211,10 @@ void InitLUTs(void)
|
||||
|
||||
for (c = 0 ; c < (1<<NUMBITS) ; c++)
|
||||
{
|
||||
//#ifdef R5G6B5
|
||||
b = (int)((c & 0x1F)) << 3;
|
||||
g = (int)((c & 0x7E0)) >> 3;
|
||||
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;
|
||||
|
||||
y = (int)( 0.256788f*r + 0.504129f*g + 0.097906f*b + 0.5f) + 16;
|
||||
@ -242,7 +222,6 @@ void InitLUTs(void)
|
||||
v = (int)( 0.439216f*r - 0.367788f*g - 0.071427f*b + 0.5f) + 128;
|
||||
|
||||
RGBtoYUV[c] = (y << 16) + (u << 8) + v;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,6 @@ enum RenderFilter {
|
||||
typedef void (*TFilterMethod)(uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
||||
|
||||
extern TFilterMethod FilterMethod;
|
||||
extern TFilterMethod FilterMethodHiRes;
|
||||
|
||||
extern unsigned char filtermem[];
|
||||
|
||||
@ -50,10 +49,8 @@ extern unsigned char filtermem[];
|
||||
//
|
||||
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);
|
||||
bool GetFilterHiResSupport (RenderFilter filterID);
|
||||
int GetFilterScale(RenderFilter filterID);
|
||||
template<int GuiScale> void RenderHQ2X (uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height);
|
||||
void InitLUTs();
|
||||
|
Loading…
Reference in New Issue
Block a user