Port various fixes from Beetle renderers

- Use PGXP w values to detect 3D geometry when modifying tex coords for flipped sprites
- Replace line rendering algorithm with find/force line hack implementations
- Add UI drop box to access this (no longer dependent on tex coord control)
This commit is contained in:
iCatButler 2018-12-16 15:24:01 +00:00
parent 808e3feedb
commit cd685f7b75
6 changed files with 319 additions and 386 deletions

View File

@ -353,6 +353,7 @@ extern BOOL bUseFastMdec;
extern BOOL bUse15bitMdec;
extern int iFrameTexType;
extern int iFrameReadType;
extern int iLineHackMode;
extern int iClampType;
extern int iSortTexCnt;
extern BOOL bFakeFrontBuffer;

View File

@ -3326,167 +3326,194 @@ void primPolyG4(unsigned char * baseAddr)
// cmd: flat shaded Texture3
////////////////////////////////////////////////////////////////////////
BOOL DoLineCheck(uint32_t *gpuData)
// 0 = disabled
// 1 = enabled (default mode)
// 2 = enabled (aggressive mode)
typedef struct
{
BOOL bQuad=FALSE;short dx,dy;
short x, y;
short padding[2];
}sourceVert;
if(lx0==lx1)
{
dx=lx0-lx2;if(dx<0) dx=-dx;
// Hack to deal with PS1 games rendering axis aligned lines using 1 pixel wide triangles with UVs that describe a line
// Suitable for games like Soul Blade, Doom and Hexen
BOOL Hack_FindLine(uint32_t *gpuData)
{
int pxWidth = 1; // width of a single pixel
unsigned short cornerIdx, shortIdx, longIdx;
if(ly1==ly2)
{
dy=ly1-ly0;if(dy<0) dy=-dy;
if(dx<=1)
{
vertex[3]=vertex[2];
vertex[2]=vertex[0];
vertex[2].x=vertex[3].x;
}
else
if(dy<=1)
{
vertex[3]=vertex[2];
vertex[2].y=vertex[0].y;
}
else return FALSE;
sourceVert* pSourceVerts = (sourceVert*)&gpuData[1];
bQuad=TRUE;
}
else
if(ly0==ly2)
{
dy=ly0-ly1;if(dy<0) dy=-dy;
if(dx<=1)
{
vertex[3]=vertex[1];
vertex[3].x=vertex[2].x;
}
else
if(dy<=1)
{
vertex[3]=vertex[2];
vertex[3].y=vertex[1].y;
}
else return FALSE;
// reject 3D elements
if ((vertex[0].w != vertex[1].w) ||
(vertex[1].w != vertex[2].w))
return FALSE;
bQuad=TRUE;
}
}
// find short side of triangle / end of line with 2 vertices (guess which vertex is the right angle)
if ((vertex[0].sow == vertex[1].sow) && (vertex[0].tow == vertex[1].tow))
cornerIdx = 0;
else if ((vertex[1].sow == vertex[2].sow) && (vertex[1].tow == vertex[2].tow))
cornerIdx = 1;
else if ((vertex[2].sow == vertex[0].sow) && (vertex[2].tow == vertex[0].tow))
cornerIdx = 2;
else
return FALSE;
if(lx0==lx2)
{
dx=lx0-lx1;if(dx<0) dx=-dx;
// assign other indices to remaining vertices
shortIdx = (cornerIdx + 1) % 3;
longIdx = (shortIdx + 1) % 3;
if(ly2==ly1)
{
dy=ly2-ly0;if(dy<0) dy=-dy;
if(dx<=1)
{
vertex[3]=vertex[1];
vertex[1]=vertex[0];
vertex[1].x=vertex[3].x;
}
else
if(dy<=1)
{
vertex[3]=vertex[1];
vertex[1].y=vertex[0].y;
}
else return FALSE;
// determine line orientation and check width
if ((vertex[cornerIdx].x == vertex[shortIdx].x) && (abs(pSourceVerts[cornerIdx].y - pSourceVerts[shortIdx].y) == pxWidth))
{
// line is horizontal
// determine which is truly the corner by checking against the long side, while making sure it is axis aligned
if (vertex[shortIdx].y == vertex[longIdx].y)
{
unsigned short tempIdx = shortIdx;
shortIdx = cornerIdx;
cornerIdx = tempIdx;
}
else if (vertex[cornerIdx].y != vertex[longIdx].y)
return FALSE;
bQuad=TRUE;
}
else
if(ly0==ly1)
{
dy=ly2-ly0;if(dy<0) dy=-dy;
if(dx<=1)
{
vertex[3]=vertex[2];
vertex[3].x=vertex[1].x;
}
else
if(dy<=1)
{
vertex[3]=vertex[1];
vertex[3].y=vertex[2].y;
}
else return FALSE;
// flip corner index to other side of quad
vertex[3] = vertex[longIdx];
vertex[3].y = vertex[shortIdx].y;
}
else if ((vertex[cornerIdx].y == vertex[shortIdx].y) && (abs(pSourceVerts[cornerIdx].x - pSourceVerts[shortIdx].x) == pxWidth))
{
// line is vertical
// determine which is truly the corner by checking against the long side, while making sure it is axis aligned
if (vertex[shortIdx].x == vertex[longIdx].x)
{
unsigned short tempIdx = shortIdx;
shortIdx = cornerIdx;
cornerIdx = tempIdx;
}
else if (vertex[cornerIdx].x != vertex[longIdx].x)
return FALSE;
bQuad=TRUE;
}
}
// flip corner index to other side of quad
vertex[3] = vertex[longIdx];
vertex[3].x = vertex[shortIdx].x;
}
else
return FALSE;
// Draw Quad
PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
if(bDrawMultiPass)
{
SetSemiTransMulti(1);
PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
}
if(ubOpaqueDraw)
{
SetZMask4O();
if(bUseMultiPass) SetOpaqueColor(gpuData[0]);
DEFOPAQUEON
PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
DEFOPAQUEOFF
}
iDrawnSomething=1;
return TRUE;
}
if(lx1==lx2)
{
dx=lx1-lx0;if(dx<0) dx=-dx;
if(ly1==ly0)
{
dy=ly1-ly2;if(dy<0) dy=-dy;
// Hack to deal with PS1 games rendering axis aligned lines using 1 pixel wide triangles and force UVs to describe a line
// Required for games like Dark Forces and Duke Nukem
BOOL Hack_ForceLine(uint32_t *gpuData)
{
int pxWidth = 1; // width of a single pixel
unsigned short cornerIdx, shortIdx, longIdx;
if(dx<=1)
{
vertex[3]=vertex[2];
vertex[2].x=vertex[0].x;
}
else
if(dy<=1)
{
vertex[3]=vertex[2];
vertex[2]=vertex[0];
vertex[2].y=vertex[3].y;
}
else return FALSE;
sourceVert* pSourceVerts = (sourceVert*)&gpuData[1];
bQuad=TRUE;
}
else
if(ly2==ly0)
{
dy=ly2-ly1;if(dy<0) dy=-dy;
// reject 3D elements
if ((vertex[0].w != vertex[1].w) ||
(vertex[1].w != vertex[2].w))
return FALSE;
if(dx<=1)
{
vertex[3]=vertex[1];
vertex[1].x=vertex[0].x;
}
else
if(dy<=1)
{
vertex[3]=vertex[1];
vertex[1]=vertex[0];
vertex[1].y=vertex[3].y;
}
else return FALSE;
// find vertical AB
unsigned short A, B, C;
if (vertex[0].x == vertex[1].x)
A = 0;
else if (vertex[1].x == vertex[2].x)
A = 1;
else if (vertex[2].x == vertex[0].x)
A = 2;
else
return FALSE;
bQuad=TRUE;
}
}
// assign other indices to remaining vertices
B = (A + 1) % 3;
C = (B + 1) % 3;
if(!bQuad) return FALSE;
// find horizontal AC or BC
if (vertex[A].y == vertex[C].y)
cornerIdx = A;
else if (vertex[B].y == vertex[C].y)
cornerIdx = B;
else
return FALSE;
PRIMdrawTexturedQuad(&vertex[0], &vertex[1], &vertex[3], &vertex[2]);
// determine lengths of sides
if (abs(pSourceVerts[A].y - pSourceVerts[B].y) == pxWidth)
{
// is Horizontal
shortIdx = (cornerIdx == A) ? B : A;
longIdx = C;
if(bDrawMultiPass)
{
SetSemiTransMulti(1);
PRIMdrawTexturedQuad(&vertex[0], &vertex[1], &vertex[3], &vertex[2]);
}
// flip corner index to other side of quad
vertex[3] = vertex[longIdx];
vertex[3].y = vertex[shortIdx].y;
}
else if (abs(pSourceVerts[A].x - pSourceVerts[C].x) == pxWidth)
{
// is Vertical
shortIdx = C;
longIdx = (cornerIdx == A) ? B : A;
if(ubOpaqueDraw)
{
SetZMask4O();
if(bUseMultiPass) SetOpaqueColor(gpuData[0]);
DEFOPAQUEON
PRIMdrawTexturedQuad(&vertex[0], &vertex[1], &vertex[3], &vertex[2]);
DEFOPAQUEOFF
}
// flip corner index to other side of quad
vertex[3] = vertex[longIdx];
vertex[3].x = vertex[shortIdx].x;
}
else
return FALSE;
iDrawnSomething=1;
// force UVs into a line along the upper or left most edge of the triangle
// Otherwise the wrong UVs will be sampled on second triangle and by hardware renderers
vertex[shortIdx].sow = vertex[cornerIdx].sow;
vertex[shortIdx].tow = vertex[cornerIdx].tow;
return TRUE;
// Draw Quad
PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
if (bDrawMultiPass)
{
SetSemiTransMulti(1);
PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
}
if (ubOpaqueDraw)
{
SetZMask4O();
if (bUseMultiPass) SetOpaqueColor(gpuData[0]);
DEFOPAQUEON
PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
DEFOPAQUEOFF
}
iDrawnSomething = 1;
return TRUE;
}
////////////////////////////////////////////////////////////////////////
@ -3536,9 +3563,18 @@ void primPolyFT3(unsigned char * baseAddr)
assignTexture3();
if(!(dwActFixes&0x10))
{
if(DoLineCheck(gpuData)) return;
switch(iLineHackMode)
{
case 0:
break; // disabled
case 1:
if (Hack_FindLine(gpuData)) // default mode
return;
break;
case 2:
if (Hack_ForceLine(gpuData)) // aggressive mode
return;
break;
}
PRIMdrawTexturedTri(&vertex[0], &vertex[1], &vertex[2]);
@ -3572,6 +3608,10 @@ void RectTexAlign(void)
int UFlipped = FALSE;
int VFlipped = FALSE;
// Leverage PGXP to further avoid 3D polygons that just happen to align this way after projection
if ((vertex[0].w != vertex[1].w) || (vertex[1].w != vertex[2].w))
return;
if(gTexName==gTexFrameName) return;
if(ly0==ly1)

View File

@ -139,6 +139,7 @@ BOOL bUseFastMdec=FALSE;
BOOL bUse15bitMdec=FALSE;
int iFrameTexType=0;
int iFrameReadType=0;
int iLineHackMode=0;
uint32_t (*TCF[2]) (uint32_t);
unsigned short (*PTCF[2]) (unsigned short);

View File

@ -1,4 +1,4 @@
//Microsoft Developer Studio generated resource script.
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
@ -6,14 +6,8 @@
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
// Use MFC if available
//
#if defined(_MFC_VER)
#include "afxres.h"
#else
#include "WinResrc.h"
#include <winres.h>
#endif
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
@ -22,29 +16,26 @@
// Neutral resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
#ifdef _WIN32
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_GPU BITMAP DISCARDABLE "res\\gpu.bmp"
IDB_GPU BITMAP "res\\gpu.bmp"
#endif // Neutral resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
// English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
@ -52,18 +43,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
3 TEXTINCLUDE
BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n"
@ -81,7 +72,6 @@ END
#endif // APSTUDIO_INVOKED
#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
@ -104,18 +94,13 @@ BEGIN
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "\0"
VALUE "FileDescription", "gpuPeopsOpenGL.dll\0"
VALUE "FileVersion", "1, 78, 0, 0\0"
VALUE "InternalName", "P.E.Op.S. PSX OpenGL GPU (mod)\0"
VALUE "LegalCopyright", "Copyright (C) 1999-2009\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "gpuPeopsOpenGL.dll\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "gpuPeopsOpenGL Dynamic Link Library\0"
VALUE "ProductVersion", "1, 78, 0, 0\0"
VALUE "SpecialBuild", "\0"
VALUE "FileDescription", "gpuPeopsOpenGL.dll"
VALUE "FileVersion", "1, 78, 0, 0"
VALUE "InternalName", "P.E.Op.S. PSX OpenGL GPU (mod)"
VALUE "LegalCopyright", "Copyright (C) 1999-2009"
VALUE "OriginalFilename", "gpuPeopsOpenGL.dll"
VALUE "ProductName", "gpuPeopsOpenGL Dynamic Link Library"
VALUE "ProductVersion", "1, 78, 0, 0"
END
END
BLOCK "VarFileInfo"
@ -124,16 +109,14 @@ BEGIN
END
END
#endif // !_MAC
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_DIALOG_ABOUT DIALOG DISCARDABLE 0, 0, 258, 165
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
IDD_DIALOG_ABOUT DIALOG 0, 0, 258, 165
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About P.E.Op.S. PSX OpenGL Renderer ..."
FONT 8, "MS Sans Serif"
BEGIN
@ -147,23 +130,18 @@ BEGIN
RTEXT "Release date:",IDC_STATIC,8,17,49,10
LTEXT "04/2009",IDC_STATIC,60,17,159,10
RTEXT "Thanks to:",IDC_STATIC,8,74,49,10
LTEXT "Lewpy - without his infos this driver wouldn't exist",
IDC_STATIC,60,74,159,10
LTEXT "Duddie && FoxPro - for their public sources",IDC_STATIC,
60,86,159,10
LTEXT "My girlfriend Heike - 'Hey, that cloud still looks funny, ",
IDC_STATIC,60,112,170,10
LTEXT "Lewpy - without his infos this driver wouldn't exist",IDC_STATIC,60,74,159,10
LTEXT "Duddie && FoxPro - for their public sources",IDC_STATIC,60,86,159,10
LTEXT "My girlfriend Heike - 'Hey, that cloud still looks funny, ",IDC_STATIC,60,112,170,10
LTEXT "go on and change it...'",IDC_STATIC,125,121,117,10
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME | SS_SUNKEN,4,68,
249,70
LTEXT "Gamma - thanks for your OpenGL book",IDC_STATIC,60,99,
159,10
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME | SS_SUNKEN,4,68,249,70
LTEXT "Gamma - thanks for your OpenGL book",IDC_STATIC,60,99,159,10
END
IDD_CFGDLG DIALOGEX 0, 0, 413, 306
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
IDD_CFGDLG DIALOGEX 0, 0, 413, 341
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Configure P.E.Op.S. PSX OpenGL Renderer ..."
FONT 8, "MS Sans Serif"
FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
CONTROL "Fullscreen mode",IDC_DISPMODE1,"Button",BS_AUTORADIOBUTTON,11,11,73,10
CONTROL "Window mode",IDC_DISPMODE2,"Button",BS_AUTORADIOBUTTON,11,25,63,10
@ -190,30 +168,30 @@ BEGIN
CONTROL "Alpha MultiPass",IDC_OPAQUE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,219,127,66,10
CONTROL "Mask bit",IDC_USEMASK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,219,138,47,10
CONTROL "Advanced blending",IDC_ADVBLEND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,219,149,76,10
CONTROL "Scanlines",IDC_USESCANLINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,176,46,10
EDITTEXT IDC_SCANBLEND,375,175,29,12,ES_AUTOHSCROLL
CONTROL "Line mode",IDC_USELINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,186,48,10
CONTROL "Unfiltered framebuffer updates",IDC_FASTMDEC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,196,113,10
CONTROL "Force 15 bit framebuffer updates",IDC_FASTMDEC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,206,121,10
CONTROL "Color dithering",IDC_DRAWDITHER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,216,81,10
CONTROL "Screen smoothing",IDC_BLUR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,226,81,10
CONTROL "Disable screensaver",IDC_SSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,236,81,10
CONTROL "Special game fixes",IDC_GAMEFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,246,75,10
PUSHBUTTON "...",IDC_SELFIX,89,246,11,10,0,WS_EX_STATICEDGE
PUSHBUTTON "Fast",IDC_DEF1,10,282,34,14
PUSHBUTTON "Nice",IDC_DEF2,49,282,34,14
DEFPUSHBUTTON "OK",IDOK,113,282,84,14
PUSHBUTTON "Cancel",IDCANCEL,215,282,84,14
PUSHBUTTON "Copy settings\n to clipboard",IDC_CLIPBOARD,322,276,87,25,BS_MULTILINE,WS_EX_STATICEDGE
GROUPBOX "Misc",IDC_STATIC,3,166,406,104
GROUPBOX "Default settings",IDC_STATIC,3,272,88,30
CONTROL "Scanlines",IDC_USESCANLINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,198,46,10
EDITTEXT IDC_SCANBLEND,379,197,29,12,ES_AUTOHSCROLL
CONTROL "Line mode",IDC_USELINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,208,48,10
CONTROL "Unfiltered framebuffer updates",IDC_FASTMDEC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,218,113,10
CONTROL "Force 15 bit framebuffer updates",IDC_FASTMDEC2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,228,121,10
CONTROL "Color dithering",IDC_DRAWDITHER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,238,81,10
CONTROL "Screen smoothing",IDC_BLUR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,248,81,10
CONTROL "Disable screensaver",IDC_SSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,258,81,10
CONTROL "Special game fixes",IDC_GAMEFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,268,75,10
PUSHBUTTON "...",IDC_SELFIX,93,268,11,10,0,WS_EX_STATICEDGE
PUSHBUTTON "Fast",IDC_DEF1,14,309,34,14
PUSHBUTTON "Nice",IDC_DEF2,53,309,34,14
DEFPUSHBUTTON "OK",IDOK,117,309,84,14
PUSHBUTTON "Cancel",IDCANCEL,219,309,84,14
PUSHBUTTON "Copy settings\n to clipboard",IDC_CLIPBOARD,319,298,87,25,BS_MULTILINE,WS_EX_STATICEDGE
GROUPBOX "Misc",IDC_STATIC,7,184,406,108
GROUPBOX "Default settings",IDC_STATIC,7,293,88,30
GROUPBOX "Textures",IDC_STATIC,3,41,406,40
RTEXT "Desktop resolution:",IDC_STATIC,81,12,65,9
GROUPBOX "Resolution && Colors",IDC_STATIC,3,1,406,40
RTEXT "Color depth:",IDC_STATIC,219,12,39,9
GROUPBOX "Framerate",IDC_STATIC,3,81,406,33
LTEXT "FPS",IDC_STATIC,367,100,17,9,SS_CENTERIMAGE
GROUPBOX "Compatibility",IDC_STATIC,3,115,406,51
GROUPBOX "Compatibility",IDC_STATIC,3,115,406,67
RTEXT "Texture quality:",IDC_QUALTXT,6,52,51,9
RTEXT "Window size:",IDC_STATIC,85,26,61,9
CTEXT "x",IDC_STATIC,177,26,8,9
@ -221,144 +199,97 @@ BEGIN
RTEXT "Off-Screen drawing:",IDC_STATIC,11,124,64,10,SS_CENTERIMAGE
RTEXT "Texture filtering:",IDC_STATIC,6,65,52,10
RTEXT "Framebuffer textures:",IDC_STATIC,7,137,68,10,SS_CENTERIMAGE
LTEXT "Some games will need certain special options to work without glitches",IDC_STATIC,135,246,242,9,SS_CENTERIMAGE
LTEXT "Smoother shading in 16 bit color depth",IDC_STATIC,135,216,242,9,SS_CENTERIMAGE
LTEXT "Small speed up with mdecs",IDC_STATIC,135,196,242,9,SS_CENTERIMAGE
LTEXT "Polygons will not get filled",IDC_STATIC,135,186,89,9,SS_CENTERIMAGE
LTEXT "TV screen alike lines",IDC_STATIC,135,176,69,9,SS_CENTERIMAGE
LTEXT "Some games will need certain special options to work without glitches",IDC_STATIC,139,268,242,9,SS_CENTERIMAGE
LTEXT "Smoother shading in 16 bit color depth",IDC_STATIC,139,238,242,9,SS_CENTERIMAGE
LTEXT "Small speed up with mdecs",IDC_STATIC,139,218,242,9,SS_CENTERIMAGE
LTEXT "Polygons will not get filled",IDC_STATIC,139,208,89,9,SS_CENTERIMAGE
LTEXT "TV screen alike lines",IDC_STATIC,139,198,69,9,SS_CENTERIMAGE
LTEXT "Accurate psx color emulation",IDC_STATIC,302,149,97,9,SS_CENTERIMAGE
LTEXT "Correct opaque texture areas",IDC_STATIC,302,127,97,9,SS_CENTERIMAGE
LTEXT "Needed by a few games",IDC_STATIC,302,138,97,9,SS_CENTERIMAGE
RTEXT "Scanline brightness (0...255, -1=Monitor dot matrix):",IDC_STATIC,210,176,162,9,SS_CENTERIMAGE
EDITTEXT IDC_CLPEDIT,314,293,6,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | NOT WS_VISIBLE
RTEXT "Scanline brightness (0...255, -1=Monitor dot matrix):",IDC_STATIC,214,198,162,9,SS_CENTERIMAGE
EDITTEXT IDC_CLPEDIT,318,311,6,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | NOT WS_VISIBLE
LTEXT "MBytes",IDC_QUALTXT3,340,65,27,9
LTEXT "The complete screen will get smoothed. Very slow on some cards, lotta vram needed",IDC_STATIC,135,226,269,9,SS_CENTERIMAGE
LTEXT "The complete screen will get smoothed. Very slow on some cards, lotta vram needed",IDC_STATIC,139,248,269,9,SS_CENTERIMAGE
RTEXT "Framebuffer access:",IDC_STATIC,7,150,68,10,SS_CENTERIMAGE
LTEXT "Disable screensavers and power saving modes. Not available in Win95/WinNT",IDC_STATIC,135,236,269,9,SS_CENTERIMAGE
LTEXT "Speed up with mdecs in 32 bit color depth, but less colorful",IDC_T14_STATIC2,135,206,268,9,SS_CENTERIMAGE
LTEXT "Disable screensavers and power saving modes. Not available in Win95/WinNT",IDC_STATIC,139,258,269,9,SS_CENTERIMAGE
LTEXT "Speed up with mdecs in 32 bit color depth, but less colorful",IDC_T14_STATIC2,139,228,268,9,SS_CENTERIMAGE
RTEXT "Hi-Res textures:",IDC_QUALTXT4,223,52,50,9
COMBOBOX IDC_VSYNC,261,24,36,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
RTEXT "V-Sync:",IDC_STATIC,219,26,39,9,SS_CENTERIMAGE
CONTROL "Gte accuracy",IDC_GTEACCURACY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,256,59,10
LTEXT "Higher GTE precision that can improve vertex positioning (ie less polygon shaking)",IDC_STATIC,135,256,262,9,SS_CENTERIMAGE
CONTROL "Gte accuracy",IDC_GTEACCURACY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,278,59,10
LTEXT "Higher GTE precision that can improve vertex positioning (ie less polygon shaking)",IDC_STATIC,139,278,262,9,SS_CENTERIMAGE
CONTROL "Force 4:3 aspect ratio",IDC_ARATIO43,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,306,25,95,12
COMBOBOX IDC_LINEHACK,78,162,130,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
RTEXT "Line Hack Mode",IDC_STATIC,7,163,68,10,SS_CENTERIMAGE
END
IDD_FIXES DIALOG DISCARDABLE 0, 0, 316, 322
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
IDD_FIXES DIALOG 0, 0, 316, 322
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Special game fixes..."
FONT 8, "MS Sans Serif"
BEGIN
CONTROL "0x00001: Adjust framebuffer access",IDC_FIX1,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,30,133,10
CONTROL "0x00004: Ignore black brightness",IDC_FIX3,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,60,140,10
CONTROL "0x00008: Swap front/back detection",IDC_FIX4,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,75,144,10
CONTROL "0x00010: Disable coord check",IDC_FIX5,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,90,139,10
CONTROL "0x00020: Remove blue glitches",IDC_FIX6,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,105,139,10
CONTROL "0x00040: Mixed software FB access",IDC_FIX7,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,120,143,10
CONTROL "0x00080: Use PC fps calculation",IDC_FIX8,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,135,142,10
CONTROL "0x00100: Use old frame skipping",IDC_FIX9,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,150,139,10
CONTROL "0x00002: Direct framebuffer updates",IDC_FIX2,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,45,137,10
CONTROL "0x00200: G4 polygon cache",IDC_FIX10,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,165,141,10
CONTROL "0x00400: Fake subtractive blending",IDC_FIX11,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,180,143,10
CONTROL "0x00800: Lazy upload detection",IDC_FIX12,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,195,144,10
CONTROL "0x01000: Odd/even bit hack",IDC_FIX13,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,210,143,10
CONTROL "0x02000: Expand screen width",IDC_FIX14,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,225,144,10
CONTROL "0x00001: Adjust framebuffer access",IDC_FIX1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,30,133,10
CONTROL "0x00004: Ignore black brightness",IDC_FIX3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,60,140,10
CONTROL "0x00008: Swap front/back detection",IDC_FIX4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,75,144,10
CONTROL "0x00010: Disable coord check",IDC_FIX5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,90,139,10
CONTROL "0x00020: Remove blue glitches",IDC_FIX6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,105,139,10
CONTROL "0x00040: Mixed software FB access",IDC_FIX7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,120,143,10
CONTROL "0x00080: Use PC fps calculation",IDC_FIX8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,135,142,10
CONTROL "0x00100: Use old frame skipping",IDC_FIX9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,150,139,10
CONTROL "0x00002: Direct framebuffer updates",IDC_FIX2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,45,137,10
CONTROL "0x00200: G4 polygon cache",IDC_FIX10,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,165,141,10
CONTROL "0x00400: Fake subtractive blending",IDC_FIX11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,180,143,10
CONTROL "0x00800: Lazy upload detection",IDC_FIX12,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,195,144,10
CONTROL "0x01000: Odd/even bit hack",IDC_FIX13,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,210,143,10
CONTROL "0x02000: Expand screen width",IDC_FIX14,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,225,144,10
DEFPUSHBUTTON "OK",IDOK,83,302,50,14
PUSHBUTTON "Cancel",IDCANCEL,182,302,50,14
LTEXT "Activate the following options only if you want to play one of the listed games (or if your game is showing similar glitches)!",
IDC_STATIC,7,4,246,22
LTEXT "ONLY for FF7 battle cursor/battle swirl",IDC_STATIC,163,
30,137,9,SS_CENTERIMAGE
LTEXT "Speed up in nasty frame upload situations",IDC_STATIC,
163,45,137,9,SS_CENTERIMAGE
LTEXT "Fixes black screens in Lunar",IDC_STATIC,162,60,123,9,
SS_CENTERIMAGE
LTEXT "Speed freaks, Killer Loop",IDC_STATIC,162,75,90,9,
SS_CENTERIMAGE
LTEXT "Old coord compatibility mode",IDC_STATIC,162,89,99,9,
SS_CENTERIMAGE
LTEXT "Leg. o. Dragoon, Alpha Multipass needed",IDC_STATIC,162,
105,136,9,SS_CENTERIMAGE
LTEXT "Faster FB access on some systems/ATI",IDC_STATIC,162,
120,125,9,SS_CENTERIMAGE
LTEXT "Better fps limitation with some games",IDC_STATIC,162,
135,117,9,SS_CENTERIMAGE
LTEXT "Skips only every second frame",IDC_STATIC,162,150,130,9,
SS_CENTERIMAGE
LTEXT "ONLY for FF9 battle mode... yellow rect",IDC_STATIC,162,
165,132,9,SS_CENTERIMAGE
LTEXT "Needed by some (buggy) OpenGL ICDs",IDC_STATIC,162,180,
132,9,SS_CENTERIMAGE
LTEXT "DW7 fix (not 100% perfect...)",IDC_STATIC,162,195,132,9,
SS_CENTERIMAGE
LTEXT "Needed with epsxe 1.5.2 and older",IDC_STATIC,162,210,
138,9,SS_CENTERIMAGE
LTEXT "Shows the full area in Capcom 2D fighters",IDC_STATIC,
162,225,138,9,SS_CENTERIMAGE
CONTROL "0x04000: Use old texture filtering",IDC_FIX15,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,240,141,10
LTEXT "Fixes black areas with some cards",IDC_STATIC,162,240,
138,9,SS_CENTERIMAGE
CONTROL "0x08000: Special upload detection",IDC_FIX16,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,255,146,10
LTEXT "May show some additional splash screens",
IDC_F14_STATIC3,163,255,137,9,SS_CENTERIMAGE
CONTROL "0x10000: Use low-res fps timer",IDC_FIX17,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,270,147,10
LTEXT "For buggy motherboard chipsets",IDC_F14_STATIC4,163,270,
137,9,SS_CENTERIMAGE
CONTROL "0x20000: Fake 'gpu busy' states",IDC_FIX18,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,11,285,147,10
LTEXT "Toggles busy flags after drawing",IDC_F14_STATIC5,163,
285,137,9,SS_CENTERIMAGE
LTEXT "Activate the following options only if you want to play one of the listed games (or if your game is showing similar glitches)!",IDC_STATIC,7,4,246,22
LTEXT "ONLY for FF7 battle cursor/battle swirl",IDC_STATIC,163,30,137,9,SS_CENTERIMAGE
LTEXT "Speed up in nasty frame upload situations",IDC_STATIC,163,45,137,9,SS_CENTERIMAGE
LTEXT "Fixes black screens in Lunar",IDC_STATIC,162,60,123,9,SS_CENTERIMAGE
LTEXT "Speed freaks, Killer Loop",IDC_STATIC,162,75,90,9,SS_CENTERIMAGE
LTEXT "Old coord compatibility mode",IDC_STATIC,162,89,99,9,SS_CENTERIMAGE
LTEXT "Leg. o. Dragoon, Alpha Multipass needed",IDC_STATIC,162,105,136,9,SS_CENTERIMAGE
LTEXT "Faster FB access on some systems/ATI",IDC_STATIC,162,120,125,9,SS_CENTERIMAGE
LTEXT "Better fps limitation with some games",IDC_STATIC,162,135,117,9,SS_CENTERIMAGE
LTEXT "Skips only every second frame",IDC_STATIC,162,150,130,9,SS_CENTERIMAGE
LTEXT "ONLY for FF9 battle mode... yellow rect",IDC_STATIC,162,165,132,9,SS_CENTERIMAGE
LTEXT "Needed by some (buggy) OpenGL ICDs",IDC_STATIC,162,180,132,9,SS_CENTERIMAGE
LTEXT "DW7 fix (not 100% perfect...)",IDC_STATIC,162,195,132,9,SS_CENTERIMAGE
LTEXT "Needed with epsxe 1.5.2 and older",IDC_STATIC,162,210,138,9,SS_CENTERIMAGE
LTEXT "Shows the full area in Capcom 2D fighters",IDC_STATIC,162,225,138,9,SS_CENTERIMAGE
CONTROL "0x04000: Use old texture filtering",IDC_FIX15,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,240,141,10
LTEXT "Fixes black areas with some cards",IDC_STATIC,162,240,138,9,SS_CENTERIMAGE
CONTROL "0x08000: Special upload detection",IDC_FIX16,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,255,146,10
LTEXT "May show some additional splash screens",IDC_F14_STATIC3,163,255,137,9,SS_CENTERIMAGE
CONTROL "0x10000: Use low-res fps timer",IDC_FIX17,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,270,147,10
LTEXT "For buggy motherboard chipsets",IDC_F14_STATIC4,163,270,137,9,SS_CENTERIMAGE
CONTROL "0x20000: Fake 'gpu busy' states",IDC_FIX18,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,285,147,10
LTEXT "Toggles busy flags after drawing",IDC_F14_STATIC5,163,285,137,9,SS_CENTERIMAGE
END
IDD_KEYS DIALOG DISCARDABLE 0, 0, 186, 162
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
IDD_KEYS DIALOG 0, 0, 186, 162
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
CAPTION "GPU key configuration"
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "Default keys",IDC_DEFAULT,107,6,61,13
COMBOBOX IDC_KEY1,108,25,61,62,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_KEY2,108,41,61,62,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_KEY3,108,57,61,62,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_KEY4,108,73,61,62,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_KEY5,108,89,61,62,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_KEY6,108,105,61,62,CBS_DROPDOWNLIST | WS_VSCROLL |
WS_TABSTOP
COMBOBOX IDC_KEY1,108,25,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_KEY2,108,41,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_KEY3,108,57,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_KEY4,108,73,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_KEY5,108,89,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_KEY6,108,105,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK",IDOK,19,142,50,14
PUSHBUTTON "Cancel",IDCANCEL,115,142,50,14
RTEXT "Show/hide gpu menu:",IDC_STATIC,4,26,100,9,
SS_CENTERIMAGE
RTEXT "Show/hide gpu infos:",IDC_STATIC,4,42,100,9,
SS_CENTERIMAGE
RTEXT "Toggle selected option up:",IDC_STATIC,4,58,100,9,
SS_CENTERIMAGE
RTEXT "Toggle selected option down:",IDC_STATIC,4,74,100,9,
SS_CENTERIMAGE
RTEXT "Select previous option:",IDC_STATIC,4,90,100,9,
SS_CENTERIMAGE
RTEXT "Select next option:",IDC_STATIC,4,106,100,9,
SS_CENTERIMAGE
RTEXT "Show/hide gpu menu:",IDC_STATIC,4,26,100,9,SS_CENTERIMAGE
RTEXT "Show/hide gpu infos:",IDC_STATIC,4,42,100,9,SS_CENTERIMAGE
RTEXT "Toggle selected option up:",IDC_STATIC,4,58,100,9,SS_CENTERIMAGE
RTEXT "Toggle selected option down:",IDC_STATIC,4,74,100,9,SS_CENTERIMAGE
RTEXT "Select previous option:",IDC_STATIC,4,90,100,9,SS_CENTERIMAGE
RTEXT "Select next option:",IDC_STATIC,4,106,100,9,SS_CENTERIMAGE
END
@ -368,7 +299,7 @@ END
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
GUIDELINES DESIGNINFO
BEGIN
IDD_DIALOG_ABOUT, DIALOG
BEGIN
@ -383,7 +314,7 @@ BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 406
TOPMARGIN, 7
BOTTOMMARGIN, 288
BOTTOMMARGIN, 323
END
IDD_FIXES, DIALOG
@ -407,79 +338,21 @@ END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog Info
// AFX_DIALOG_LAYOUT
//
#ifdef _MSC_VER
IDD_CFGDLG DLGINIT
IDD_CFGDLG AFX_DIALOG_LAYOUT
BEGIN
IDC_RESOLUTION, 0x403, 1, 0
"\000"
IDC_COLORDEPTH, 0x403, 7, 0
0x3631, 0x4220, 0x7469, "\000"
IDC_COLORDEPTH, 0x403, 7, 0
0x3233, 0x4220, 0x7469, "\000"
IDC_TEXQUALITY, 0x403, 11, 0
0x6f64, 0x276e, 0x2074, 0x6163, 0x6572, "\000"
IDC_TEXQUALITY, 0x403, 12, 0
0x3452, 0x4720, 0x2034, 0x3442, 0x4120, 0x0034,
IDC_TEXQUALITY, 0x403, 12, 0
0x3552, 0x4720, 0x2035, 0x3542, 0x4120, 0x0031,
IDC_TEXQUALITY, 0x403, 12, 0
0x3852, 0x4720, 0x2038, 0x3842, 0x4120, 0x0038,
IDC_FILTERTYPE, 0x403, 9, 0
0x7453, 0x6e61, 0x6164, 0x6472, "\000"
IDC_FILTERTYPE, 0x403, 9, 0
0x7845, 0x6574, 0x646e, 0x6465, "\000"
IDC_FILTERTYPE, 0x403, 22, 0
0x7453, 0x6e61, 0x6164, 0x6472, 0x2820, 0x6f6e, 0x5320, 0x7270, 0x7469,
0x7365, 0x0029,
IDC_FILTERTYPE, 0x403, 22, 0
0x7845, 0x6574, 0x646e, 0x6465, 0x2820, 0x6f6e, 0x5320, 0x7270, 0x7469,
0x7365, 0x0029,
IDC_HIRESTEX, 0x403, 11, 0
0x6f64, 0x276e, 0x2074, 0x6163, 0x6572, "\000"
IDC_HIRESTEX, 0x403, 12, 0
0x3452, 0x4720, 0x2034, 0x3442, 0x4120, 0x0034,
IDC_HIRESTEX, 0x403, 12, 0
0x3552, 0x4720, 0x2035, 0x3542, 0x4120, 0x0031,
IDC_HIRESTEX, 0x403, 12, 0
0x3852, 0x4720, 0x2038, 0x3842, 0x4120, 0x0038,
IDC_OFFSCREEN, 0x403, 11, 0
0x6f64, 0x276e, 0x2074, 0x6163, 0x6572, "\000"
IDC_OFFSCREEN, 0x403, 12, 0
0x3452, 0x4720, 0x2034, 0x3442, 0x4120, 0x0034,
IDC_OFFSCREEN, 0x403, 12, 0
0x3552, 0x4720, 0x2035, 0x3542, 0x4120, 0x0031,
IDC_OFFSCREEN, 0x403, 12, 0
0x3852, 0x4720, 0x2038, 0x3842, 0x4120, 0x0038,
IDC_FRAMETEX, 0x403, 11, 0
0x6f64, 0x276e, 0x2074, 0x6163, 0x6572, "\000"
IDC_FRAMETEX, 0x403, 12, 0
0x3452, 0x4720, 0x2034, 0x3442, 0x4120, 0x0034,
IDC_FRAMETEX, 0x403, 12, 0
0x3552, 0x4720, 0x2035, 0x3542, 0x4120, 0x0031,
IDC_FRAMETEX, 0x403, 12, 0
0x3852, 0x4720, 0x2038, 0x3842, 0x4120, 0x0038,
IDC_FRAMEREAD, 0x403, 11, 0
0x6f64, 0x276e, 0x2074, 0x6163, 0x6572, "\000"
IDC_FRAMEREAD, 0x403, 12, 0
0x3452, 0x4720, 0x2034, 0x3442, 0x4120, 0x0034,
IDC_FRAMEREAD, 0x403, 12, 0
0x3552, 0x4720, 0x2035, 0x3542, 0x4120, 0x0031,
IDC_FRAMEREAD, 0x403, 12, 0
0x3852, 0x4720, 0x2038, 0x3842, 0x4120, 0x0038,
0
END
#endif
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
STRINGTABLE
BEGIN
IDS_INFO0 "FL - Frame limitation:\n[Off] - Speed as fast as possible\n[On-1] - Limits speed to manual value\n[On-2] - Limits speed to auto-detected value."
IDS_INFO1 "FS - Frame skipping:\n[Off] - No frames get skipped\n[On] - Tries to speed up the game by skipping frames. Can cause glitches!"
@ -493,7 +366,7 @@ BEGIN
IDS_INFO9 "GF - Special game fixes:\n[Off] - Turn off all fixes\n[On] - Turn on all activated fixes. You have to select the fixes you want to use in the gpu config."
END
#endif // English (U.S.) resources
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////

View File

@ -76,6 +76,7 @@
#define IDC_QUALTXT2 1053
#define IDC_QUALTXT3 1054
#define IDC_GARBAGE 1055
#define IDC_LINEHACK 1055
#define IDC_PALTEXWND 1056
#define IDC_HIRESTEX 1057
#define IDC_GAMEFIX 1058
@ -127,7 +128,7 @@
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 140
#define _APS_NEXT_RESOURCE_VALUE 141
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 2070
#define _APS_NEXT_SYMED_VALUE 101

View File

@ -235,6 +235,14 @@ BOOL OnInitCfgDialog(HWND hW) // INIT CONFIG DIALOG
ComboBox_AddString(hWC,"4: Full software drawing (FVP)");
ComboBox_SetCurSel(hWC,iFrameReadType);
//----------------------------------------------------// line hack mode
hWC = GetDlgItem(hW, IDC_LINEHACK);
ComboBox_AddString(hWC, "0: Disabled");
ComboBox_AddString(hWC, "1: Default (Doom, Hexen, Soul Blade)");
ComboBox_AddString(hWC, "2: Aggressive (Dark Forces, Duke Nukem)");
ComboBox_SetCurSel(hWC, iLineHackMode);
//----------------------------------------------------// framerate stuff
if(iFrameLimit==2)
@ -306,6 +314,7 @@ void GetSettings(HWND hW)
iFrameTexType=ComboBox_GetCurSel(GetDlgItem(hW,IDC_FRAMETEX));
iFrameReadType=ComboBox_GetCurSel(GetDlgItem(hW,IDC_FRAMEREAD));
iLineHackMode = ComboBox_GetCurSel(GetDlgItem(hW,IDC_LINEHACK));
if(IsDlgButtonChecked(hW,IDC_USELIMIT))
bUseFrameLimit=TRUE; else bUseFrameLimit=FALSE;
@ -504,6 +513,7 @@ void OnCfgDef1(HWND hW)
ComboBox_SetCurSel(GetDlgItem(hW,IDC_SUBCACHE),2);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMETEX),1);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMEREAD),0);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_LINEHACK), 1);
CheckDlgButton(hW,IDC_USEMASK,FALSE);
CheckDlgButton(hW,IDC_FASTMDEC,TRUE);
@ -562,6 +572,7 @@ void OnCfgDef2(HWND hW)
ComboBox_SetCurSel(GetDlgItem(hW,IDC_SUBCACHE),2);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMETEX),2);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMEREAD),0);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_LINEHACK), 1);
CheckDlgButton(hW,IDC_USEMASK,TRUE);
CheckDlgButton(hW,IDC_FASTMDEC,FALSE);
@ -619,6 +630,7 @@ void ReadConfig(void) // read all config vals
iUseScanLines=0;
iFrameTexType=0;
iFrameReadType=0;
iLineHackMode=0;
iShowFPS=0;
bKeepRatio=FALSE;
bForceRatio43=FALSE;
@ -749,6 +761,9 @@ void ReadConfig(void) // read all config vals
if(RegQueryValueEx(myKey,"FrameReadType",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
iFrameReadType=(int)temp;
size = 4;
if (RegQueryValueEx(myKey, "LineHackMode", 0, &type, (LPBYTE)&temp, &size) == ERROR_SUCCESS)
iLineHackMode = (int)temp;
size = 4;
if(RegQueryValueEx(myKey,"FullscreenBlur",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
iBlurBuffer=(int)temp;
size = 4;
@ -880,6 +895,8 @@ void WriteConfig(void)
RegSetValueEx(myKey,"FrameTexType",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
temp=iFrameReadType;
RegSetValueEx(myKey,"FrameReadType",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
temp = iLineHackMode;
RegSetValueEx(myKey, "LineHackMode", 0, REG_DWORD, (LPBYTE)&temp, sizeof(temp));
temp=bKeepRatio;
RegSetValueEx(myKey,"KeepRatio",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
temp=bForceRatio43;