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 BOOL bUse15bitMdec;
extern int iFrameTexType; extern int iFrameTexType;
extern int iFrameReadType; extern int iFrameReadType;
extern int iLineHackMode;
extern int iClampType; extern int iClampType;
extern int iSortTexCnt; extern int iSortTexCnt;
extern BOOL bFakeFrontBuffer; extern BOOL bFakeFrontBuffer;

View file

@ -3326,167 +3326,194 @@ void primPolyG4(unsigned char * baseAddr)
// cmd: flat shaded Texture3 // 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) // 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
dx=lx0-lx2;if(dx<0) dx=-dx; BOOL Hack_FindLine(uint32_t *gpuData)
{
int pxWidth = 1; // width of a single pixel
unsigned short cornerIdx, shortIdx, longIdx;
if(ly1==ly2) sourceVert* pSourceVerts = (sourceVert*)&gpuData[1];
{
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;
bQuad=TRUE; // reject 3D elements
} if ((vertex[0].w != vertex[1].w) ||
else (vertex[1].w != vertex[2].w))
if(ly0==ly2) return FALSE;
{
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;
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) // assign other indices to remaining vertices
{ shortIdx = (cornerIdx + 1) % 3;
dx=lx0-lx1;if(dx<0) dx=-dx; longIdx = (shortIdx + 1) % 3;
if(ly2==ly1) // determine line orientation and check width
{ if ((vertex[cornerIdx].x == vertex[shortIdx].x) && (abs(pSourceVerts[cornerIdx].y - pSourceVerts[shortIdx].y) == pxWidth))
dy=ly2-ly0;if(dy<0) dy=-dy; {
if(dx<=1) // line is horizontal
{ // determine which is truly the corner by checking against the long side, while making sure it is axis aligned
vertex[3]=vertex[1]; if (vertex[shortIdx].y == vertex[longIdx].y)
vertex[1]=vertex[0]; {
vertex[1].x=vertex[3].x; unsigned short tempIdx = shortIdx;
} shortIdx = cornerIdx;
else cornerIdx = tempIdx;
if(dy<=1) }
{ else if (vertex[cornerIdx].y != vertex[longIdx].y)
vertex[3]=vertex[1]; return FALSE;
vertex[1].y=vertex[0].y;
}
else return FALSE;
bQuad=TRUE; // flip corner index to other side of quad
} vertex[3] = vertex[longIdx];
else vertex[3].y = vertex[shortIdx].y;
if(ly0==ly1) }
{ else if ((vertex[cornerIdx].y == vertex[shortIdx].y) && (abs(pSourceVerts[cornerIdx].x - pSourceVerts[shortIdx].x) == pxWidth))
dy=ly2-ly0;if(dy<0) dy=-dy; {
if(dx<=1) // line is vertical
{ // determine which is truly the corner by checking against the long side, while making sure it is axis aligned
vertex[3]=vertex[2]; if (vertex[shortIdx].x == vertex[longIdx].x)
vertex[3].x=vertex[1].x; {
} unsigned short tempIdx = shortIdx;
else shortIdx = cornerIdx;
if(dy<=1) cornerIdx = tempIdx;
{ }
vertex[3]=vertex[1]; else if (vertex[cornerIdx].x != vertex[longIdx].x)
vertex[3].y=vertex[2].y; return FALSE;
}
else 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) // 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
dy=ly1-ly2;if(dy<0) dy=-dy; BOOL Hack_ForceLine(uint32_t *gpuData)
{
int pxWidth = 1; // width of a single pixel
unsigned short cornerIdx, shortIdx, longIdx;
if(dx<=1) sourceVert* pSourceVerts = (sourceVert*)&gpuData[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;
bQuad=TRUE; // reject 3D elements
} if ((vertex[0].w != vertex[1].w) ||
else (vertex[1].w != vertex[2].w))
if(ly2==ly0) return FALSE;
{
dy=ly2-ly1;if(dy<0) dy=-dy;
if(dx<=1) // find vertical AB
{ unsigned short A, B, C;
vertex[3]=vertex[1]; if (vertex[0].x == vertex[1].x)
vertex[1].x=vertex[0].x; A = 0;
} else if (vertex[1].x == vertex[2].x)
else A = 1;
if(dy<=1) else if (vertex[2].x == vertex[0].x)
{ A = 2;
vertex[3]=vertex[1]; else
vertex[1]=vertex[0]; return FALSE;
vertex[1].y=vertex[3].y;
}
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) // flip corner index to other side of quad
{ vertex[3] = vertex[longIdx];
SetSemiTransMulti(1); vertex[3].y = vertex[shortIdx].y;
PRIMdrawTexturedQuad(&vertex[0], &vertex[1], &vertex[3], &vertex[2]); }
} else if (abs(pSourceVerts[A].x - pSourceVerts[C].x) == pxWidth)
{
// is Vertical
shortIdx = C;
longIdx = (cornerIdx == A) ? B : A;
if(ubOpaqueDraw) // flip corner index to other side of quad
{ vertex[3] = vertex[longIdx];
SetZMask4O(); vertex[3].x = vertex[shortIdx].x;
if(bUseMultiPass) SetOpaqueColor(gpuData[0]); }
DEFOPAQUEON else
PRIMdrawTexturedQuad(&vertex[0], &vertex[1], &vertex[3], &vertex[2]); return FALSE;
DEFOPAQUEOFF
}
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(); assignTexture3();
if(!(dwActFixes&0x10)) switch(iLineHackMode)
{ {
if(DoLineCheck(gpuData)) return; 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]); PRIMdrawTexturedTri(&vertex[0], &vertex[1], &vertex[2]);
@ -3572,6 +3608,10 @@ void RectTexAlign(void)
int UFlipped = FALSE; int UFlipped = FALSE;
int VFlipped = 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(gTexName==gTexFrameName) return;
if(ly0==ly1) if(ly0==ly1)

View file

@ -139,6 +139,7 @@ BOOL bUseFastMdec=FALSE;
BOOL bUse15bitMdec=FALSE; BOOL bUse15bitMdec=FALSE;
int iFrameTexType=0; int iFrameTexType=0;
int iFrameReadType=0; int iFrameReadType=0;
int iLineHackMode=0;
uint32_t (*TCF[2]) (uint32_t); uint32_t (*TCF[2]) (uint32_t);
unsigned short (*PTCF[2]) (unsigned short); 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" #include "resource.h"
@ -6,14 +6,8 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Generated from the TEXTINCLUDE 2 resource. // Generated from the TEXTINCLUDE 2 resource.
// Use MFC if available
// //
#if defined(_MFC_VER)
#include "afxres.h" #include "afxres.h"
#else
#include "WinResrc.h"
#include <winres.h>
#endif
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS #undef APSTUDIO_READONLY_SYMBOLS
@ -22,29 +16,26 @@
// Neutral resources // Neutral resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
#ifdef _WIN32
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#pragma code_page(1252) #pragma code_page(1252)
#endif //_WIN32
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Bitmap // Bitmap
// //
IDB_GPU BITMAP DISCARDABLE "res\\gpu.bmp" IDB_GPU BITMAP "res\\gpu.bmp"
#endif // Neutral resources #endif // Neutral resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources // English (United States) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252) #pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@ -52,18 +43,18 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// TEXTINCLUDE // TEXTINCLUDE
// //
1 TEXTINCLUDE DISCARDABLE 1 TEXTINCLUDE
BEGIN BEGIN
"resource.h\0" "resource.h\0"
END END
2 TEXTINCLUDE DISCARDABLE 2 TEXTINCLUDE
BEGIN BEGIN
"#include ""afxres.h""\r\n" "#include ""afxres.h""\r\n"
"\0" "\0"
END END
3 TEXTINCLUDE DISCARDABLE 3 TEXTINCLUDE
BEGIN BEGIN
"#define _AFX_NO_SPLITTER_RESOURCES\r\n" "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
"#define _AFX_NO_OLE_RESOURCES\r\n" "#define _AFX_NO_OLE_RESOURCES\r\n"
@ -81,7 +72,6 @@ END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED
#ifndef _MAC
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Version // Version
@ -104,18 +94,13 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "Comments", "\0" VALUE "FileDescription", "gpuPeopsOpenGL.dll"
VALUE "CompanyName", "\0" VALUE "FileVersion", "1, 78, 0, 0"
VALUE "FileDescription", "gpuPeopsOpenGL.dll\0" VALUE "InternalName", "P.E.Op.S. PSX OpenGL GPU (mod)"
VALUE "FileVersion", "1, 78, 0, 0\0" VALUE "LegalCopyright", "Copyright (C) 1999-2009"
VALUE "InternalName", "P.E.Op.S. PSX OpenGL GPU (mod)\0" VALUE "OriginalFilename", "gpuPeopsOpenGL.dll"
VALUE "LegalCopyright", "Copyright (C) 1999-2009\0" VALUE "ProductName", "gpuPeopsOpenGL Dynamic Link Library"
VALUE "LegalTrademarks", "\0" VALUE "ProductVersion", "1, 78, 0, 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"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"
@ -124,16 +109,14 @@ BEGIN
END END
END END
#endif // !_MAC
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// Dialog // Dialog
// //
IDD_DIALOG_ABOUT DIALOG DISCARDABLE 0, 0, 258, 165 IDD_DIALOG_ABOUT DIALOG 0, 0, 258, 165
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About P.E.Op.S. PSX OpenGL Renderer ..." CAPTION "About P.E.Op.S. PSX OpenGL Renderer ..."
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
@ -147,23 +130,18 @@ BEGIN
RTEXT "Release date:",IDC_STATIC,8,17,49,10 RTEXT "Release date:",IDC_STATIC,8,17,49,10
LTEXT "04/2009",IDC_STATIC,60,17,159,10 LTEXT "04/2009",IDC_STATIC,60,17,159,10
RTEXT "Thanks to:",IDC_STATIC,8,74,49,10 RTEXT "Thanks to:",IDC_STATIC,8,74,49,10
LTEXT "Lewpy - without his infos this driver wouldn't exist", LTEXT "Lewpy - without his infos this driver wouldn't exist",IDC_STATIC,60,74,159,10
IDC_STATIC,60,74,159,10 LTEXT "Duddie && FoxPro - for their public sources",IDC_STATIC,60,86,159,10
LTEXT "Duddie && FoxPro - for their public sources",IDC_STATIC, LTEXT "My girlfriend Heike - 'Hey, that cloud still looks funny, ",IDC_STATIC,60,112,170,10
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 LTEXT "go on and change it...'",IDC_STATIC,125,121,117,10
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME | SS_SUNKEN,4,68, CONTROL "",IDC_STATIC,"Static",SS_ETCHEDFRAME | SS_SUNKEN,4,68,249,70
249,70 LTEXT "Gamma - thanks for your OpenGL book",IDC_STATIC,60,99,159,10
LTEXT "Gamma - thanks for your OpenGL book",IDC_STATIC,60,99,
159,10
END END
IDD_CFGDLG DIALOGEX 0, 0, 413, 306 IDD_CFGDLG DIALOGEX 0, 0, 413, 341
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Configure P.E.Op.S. PSX OpenGL Renderer ..." CAPTION "Configure P.E.Op.S. PSX OpenGL Renderer ..."
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN BEGIN
CONTROL "Fullscreen mode",IDC_DISPMODE1,"Button",BS_AUTORADIOBUTTON,11,11,73,10 CONTROL "Fullscreen mode",IDC_DISPMODE1,"Button",BS_AUTORADIOBUTTON,11,11,73,10
CONTROL "Window mode",IDC_DISPMODE2,"Button",BS_AUTORADIOBUTTON,11,25,63,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 "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 "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 "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 CONTROL "Scanlines",IDC_USESCANLINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,198,46,10
EDITTEXT IDC_SCANBLEND,375,175,29,12,ES_AUTOHSCROLL EDITTEXT IDC_SCANBLEND,379,197,29,12,ES_AUTOHSCROLL
CONTROL "Line mode",IDC_USELINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,186,48,10 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,11,196,113,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,11,206,121,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,11,216,81,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,11,226,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,11,236,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,11,246,75,10 CONTROL "Special game fixes",IDC_GAMEFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,268,75,10
PUSHBUTTON "...",IDC_SELFIX,89,246,11,10,0,WS_EX_STATICEDGE PUSHBUTTON "...",IDC_SELFIX,93,268,11,10,0,WS_EX_STATICEDGE
PUSHBUTTON "Fast",IDC_DEF1,10,282,34,14 PUSHBUTTON "Fast",IDC_DEF1,14,309,34,14
PUSHBUTTON "Nice",IDC_DEF2,49,282,34,14 PUSHBUTTON "Nice",IDC_DEF2,53,309,34,14
DEFPUSHBUTTON "OK",IDOK,113,282,84,14 DEFPUSHBUTTON "OK",IDOK,117,309,84,14
PUSHBUTTON "Cancel",IDCANCEL,215,282,84,14 PUSHBUTTON "Cancel",IDCANCEL,219,309,84,14
PUSHBUTTON "Copy settings\n to clipboard",IDC_CLIPBOARD,322,276,87,25,BS_MULTILINE,WS_EX_STATICEDGE PUSHBUTTON "Copy settings\n to clipboard",IDC_CLIPBOARD,319,298,87,25,BS_MULTILINE,WS_EX_STATICEDGE
GROUPBOX "Misc",IDC_STATIC,3,166,406,104 GROUPBOX "Misc",IDC_STATIC,7,184,406,108
GROUPBOX "Default settings",IDC_STATIC,3,272,88,30 GROUPBOX "Default settings",IDC_STATIC,7,293,88,30
GROUPBOX "Textures",IDC_STATIC,3,41,406,40 GROUPBOX "Textures",IDC_STATIC,3,41,406,40
RTEXT "Desktop resolution:",IDC_STATIC,81,12,65,9 RTEXT "Desktop resolution:",IDC_STATIC,81,12,65,9
GROUPBOX "Resolution && Colors",IDC_STATIC,3,1,406,40 GROUPBOX "Resolution && Colors",IDC_STATIC,3,1,406,40
RTEXT "Color depth:",IDC_STATIC,219,12,39,9 RTEXT "Color depth:",IDC_STATIC,219,12,39,9
GROUPBOX "Framerate",IDC_STATIC,3,81,406,33 GROUPBOX "Framerate",IDC_STATIC,3,81,406,33
LTEXT "FPS",IDC_STATIC,367,100,17,9,SS_CENTERIMAGE 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 "Texture quality:",IDC_QUALTXT,6,52,51,9
RTEXT "Window size:",IDC_STATIC,85,26,61,9 RTEXT "Window size:",IDC_STATIC,85,26,61,9
CTEXT "x",IDC_STATIC,177,26,8,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 "Off-Screen drawing:",IDC_STATIC,11,124,64,10,SS_CENTERIMAGE
RTEXT "Texture filtering:",IDC_STATIC,6,65,52,10 RTEXT "Texture filtering:",IDC_STATIC,6,65,52,10
RTEXT "Framebuffer textures:",IDC_STATIC,7,137,68,10,SS_CENTERIMAGE 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 "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,135,216,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,135,196,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,135,186,89,9,SS_CENTERIMAGE LTEXT "Polygons will not get filled",IDC_STATIC,139,208,89,9,SS_CENTERIMAGE
LTEXT "TV screen alike lines",IDC_STATIC,135,176,69,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 "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 "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 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 RTEXT "Scanline brightness (0...255, -1=Monitor dot matrix):",IDC_STATIC,214,198,162,9,SS_CENTERIMAGE
EDITTEXT IDC_CLPEDIT,314,293,6,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | NOT WS_VISIBLE 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 "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 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 "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,135,206,268,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 RTEXT "Hi-Res textures:",IDC_QUALTXT4,223,52,50,9
COMBOBOX IDC_VSYNC,261,24,36,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_VSYNC,261,24,36,64,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
RTEXT "V-Sync:",IDC_STATIC,219,26,39,9,SS_CENTERIMAGE 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 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,135,256,262,9,SS_CENTERIMAGE 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 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 END
IDD_FIXES DIALOG DISCARDABLE 0, 0, 316, 322 IDD_FIXES DIALOG 0, 0, 316, 322
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Special game fixes..." CAPTION "Special game fixes..."
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
CONTROL "0x00001: Adjust framebuffer access",IDC_FIX1,"Button", CONTROL "0x00001: Adjust framebuffer access",IDC_FIX1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,30,133,10
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 "0x00004: Ignore black brightness",IDC_FIX3,"Button", CONTROL "0x00008: Swap front/back detection",IDC_FIX4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,75,144,10
BS_AUTOCHECKBOX | WS_TABSTOP,11,60,140,10 CONTROL "0x00010: Disable coord check",IDC_FIX5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,90,139,10
CONTROL "0x00008: Swap front/back detection",IDC_FIX4,"Button", CONTROL "0x00020: Remove blue glitches",IDC_FIX6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,105,139,10
BS_AUTOCHECKBOX | WS_TABSTOP,11,75,144,10 CONTROL "0x00040: Mixed software FB access",IDC_FIX7,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,120,143,10
CONTROL "0x00010: Disable coord check",IDC_FIX5,"Button", CONTROL "0x00080: Use PC fps calculation",IDC_FIX8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,135,142,10
BS_AUTOCHECKBOX | WS_TABSTOP,11,90,139,10 CONTROL "0x00100: Use old frame skipping",IDC_FIX9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,150,139,10
CONTROL "0x00020: Remove blue glitches",IDC_FIX6,"Button", CONTROL "0x00002: Direct framebuffer updates",IDC_FIX2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,45,137,10
BS_AUTOCHECKBOX | WS_TABSTOP,11,105,139,10 CONTROL "0x00200: G4 polygon cache",IDC_FIX10,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,165,141,10
CONTROL "0x00040: Mixed software FB access",IDC_FIX7,"Button", CONTROL "0x00400: Fake subtractive blending",IDC_FIX11,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,180,143,10
BS_AUTOCHECKBOX | WS_TABSTOP,11,120,143,10 CONTROL "0x00800: Lazy upload detection",IDC_FIX12,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,195,144,10
CONTROL "0x00080: Use PC fps calculation",IDC_FIX8,"Button", CONTROL "0x01000: Odd/even bit hack",IDC_FIX13,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,210,143,10
BS_AUTOCHECKBOX | WS_TABSTOP,11,135,142,10 CONTROL "0x02000: Expand screen width",IDC_FIX14,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,225,144,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 DEFPUSHBUTTON "OK",IDOK,83,302,50,14
PUSHBUTTON "Cancel",IDCANCEL,182,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)!", 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
IDC_STATIC,7,4,246,22 LTEXT "ONLY for FF7 battle cursor/battle swirl",IDC_STATIC,163,30,137,9,SS_CENTERIMAGE
LTEXT "ONLY for FF7 battle cursor/battle swirl",IDC_STATIC,163, LTEXT "Speed up in nasty frame upload situations",IDC_STATIC,163,45,137,9,SS_CENTERIMAGE
30,137,9,SS_CENTERIMAGE LTEXT "Fixes black screens in Lunar",IDC_STATIC,162,60,123,9,SS_CENTERIMAGE
LTEXT "Speed up in nasty frame upload situations",IDC_STATIC, LTEXT "Speed freaks, Killer Loop",IDC_STATIC,162,75,90,9,SS_CENTERIMAGE
163,45,137,9,SS_CENTERIMAGE LTEXT "Old coord compatibility mode",IDC_STATIC,162,89,99,9,SS_CENTERIMAGE
LTEXT "Fixes black screens in Lunar",IDC_STATIC,162,60,123,9, LTEXT "Leg. o. Dragoon, Alpha Multipass needed",IDC_STATIC,162,105,136,9,SS_CENTERIMAGE
SS_CENTERIMAGE LTEXT "Faster FB access on some systems/ATI",IDC_STATIC,162,120,125,9,SS_CENTERIMAGE
LTEXT "Speed freaks, Killer Loop",IDC_STATIC,162,75,90,9, LTEXT "Better fps limitation with some games",IDC_STATIC,162,135,117,9,SS_CENTERIMAGE
SS_CENTERIMAGE LTEXT "Skips only every second frame",IDC_STATIC,162,150,130,9,SS_CENTERIMAGE
LTEXT "Old coord compatibility mode",IDC_STATIC,162,89,99,9, LTEXT "ONLY for FF9 battle mode... yellow rect",IDC_STATIC,162,165,132,9,SS_CENTERIMAGE
SS_CENTERIMAGE LTEXT "Needed by some (buggy) OpenGL ICDs",IDC_STATIC,162,180,132,9,SS_CENTERIMAGE
LTEXT "Leg. o. Dragoon, Alpha Multipass needed",IDC_STATIC,162, LTEXT "DW7 fix (not 100% perfect...)",IDC_STATIC,162,195,132,9,SS_CENTERIMAGE
105,136,9,SS_CENTERIMAGE LTEXT "Needed with epsxe 1.5.2 and older",IDC_STATIC,162,210,138,9,SS_CENTERIMAGE
LTEXT "Faster FB access on some systems/ATI",IDC_STATIC,162, LTEXT "Shows the full area in Capcom 2D fighters",IDC_STATIC,162,225,138,9,SS_CENTERIMAGE
120,125,9,SS_CENTERIMAGE CONTROL "0x04000: Use old texture filtering",IDC_FIX15,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,240,141,10
LTEXT "Better fps limitation with some games",IDC_STATIC,162, LTEXT "Fixes black areas with some cards",IDC_STATIC,162,240,138,9,SS_CENTERIMAGE
135,117,9,SS_CENTERIMAGE CONTROL "0x08000: Special upload detection",IDC_FIX16,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,255,146,10
LTEXT "Skips only every second frame",IDC_STATIC,162,150,130,9, LTEXT "May show some additional splash screens",IDC_F14_STATIC3,163,255,137,9,SS_CENTERIMAGE
SS_CENTERIMAGE CONTROL "0x10000: Use low-res fps timer",IDC_FIX17,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,270,147,10
LTEXT "ONLY for FF9 battle mode... yellow rect",IDC_STATIC,162, LTEXT "For buggy motherboard chipsets",IDC_F14_STATIC4,163,270,137,9,SS_CENTERIMAGE
165,132,9,SS_CENTERIMAGE CONTROL "0x20000: Fake 'gpu busy' states",IDC_FIX18,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,285,147,10
LTEXT "Needed by some (buggy) OpenGL ICDs",IDC_STATIC,162,180, LTEXT "Toggles busy flags after drawing",IDC_F14_STATIC5,163,285,137,9,SS_CENTERIMAGE
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 END
IDD_KEYS DIALOG DISCARDABLE 0, 0, 186, 162 IDD_KEYS DIALOG 0, 0, 186, 162
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION
CAPTION "GPU key configuration" CAPTION "GPU key configuration"
FONT 8, "MS Sans Serif" FONT 8, "MS Sans Serif"
BEGIN BEGIN
PUSHBUTTON "Default keys",IDC_DEFAULT,107,6,61,13 PUSHBUTTON "Default keys",IDC_DEFAULT,107,6,61,13
COMBOBOX IDC_KEY1,108,25,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | COMBOBOX IDC_KEY1,108,25,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
WS_TABSTOP COMBOBOX IDC_KEY2,108,41,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_KEY2,108,41,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | COMBOBOX IDC_KEY3,108,57,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
WS_TABSTOP COMBOBOX IDC_KEY4,108,73,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDC_KEY3,108,57,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | COMBOBOX IDC_KEY5,108,89,61,62,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
WS_TABSTOP COMBOBOX IDC_KEY6,108,105,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 DEFPUSHBUTTON "OK",IDOK,19,142,50,14
PUSHBUTTON "Cancel",IDCANCEL,115,142,50,14 PUSHBUTTON "Cancel",IDCANCEL,115,142,50,14
RTEXT "Show/hide gpu menu:",IDC_STATIC,4,26,100,9, RTEXT "Show/hide gpu menu:",IDC_STATIC,4,26,100,9,SS_CENTERIMAGE
SS_CENTERIMAGE RTEXT "Show/hide gpu infos:",IDC_STATIC,4,42,100,9,SS_CENTERIMAGE
RTEXT "Show/hide gpu infos:",IDC_STATIC,4,42,100,9, RTEXT "Toggle selected option up:",IDC_STATIC,4,58,100,9,SS_CENTERIMAGE
SS_CENTERIMAGE RTEXT "Toggle selected option down:",IDC_STATIC,4,74,100,9,SS_CENTERIMAGE
RTEXT "Toggle selected option up:",IDC_STATIC,4,58,100,9, RTEXT "Select previous option:",IDC_STATIC,4,90,100,9,SS_CENTERIMAGE
SS_CENTERIMAGE RTEXT "Select next option:",IDC_STATIC,4,106,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 END
@ -368,7 +299,7 @@ END
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE GUIDELINES DESIGNINFO
BEGIN BEGIN
IDD_DIALOG_ABOUT, DIALOG IDD_DIALOG_ABOUT, DIALOG
BEGIN BEGIN
@ -383,7 +314,7 @@ BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 406 RIGHTMARGIN, 406
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 288 BOTTOMMARGIN, 323
END END
IDD_FIXES, DIALOG 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 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 0
END END
#endif
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// String Table // String Table
// //
STRINGTABLE DISCARDABLE STRINGTABLE
BEGIN 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_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!" 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." 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 END
#endif // English (U.S.) resources #endif // English (United States) resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////

View file

@ -76,6 +76,7 @@
#define IDC_QUALTXT2 1053 #define IDC_QUALTXT2 1053
#define IDC_QUALTXT3 1054 #define IDC_QUALTXT3 1054
#define IDC_GARBAGE 1055 #define IDC_GARBAGE 1055
#define IDC_LINEHACK 1055
#define IDC_PALTEXWND 1056 #define IDC_PALTEXWND 1056
#define IDC_HIRESTEX 1057 #define IDC_HIRESTEX 1057
#define IDC_GAMEFIX 1058 #define IDC_GAMEFIX 1058
@ -127,7 +128,7 @@
// //
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #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_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 2070 #define _APS_NEXT_CONTROL_VALUE 2070
#define _APS_NEXT_SYMED_VALUE 101 #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_AddString(hWC,"4: Full software drawing (FVP)");
ComboBox_SetCurSel(hWC,iFrameReadType); 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 //----------------------------------------------------// framerate stuff
if(iFrameLimit==2) if(iFrameLimit==2)
@ -306,6 +314,7 @@ void GetSettings(HWND hW)
iFrameTexType=ComboBox_GetCurSel(GetDlgItem(hW,IDC_FRAMETEX)); iFrameTexType=ComboBox_GetCurSel(GetDlgItem(hW,IDC_FRAMETEX));
iFrameReadType=ComboBox_GetCurSel(GetDlgItem(hW,IDC_FRAMEREAD)); iFrameReadType=ComboBox_GetCurSel(GetDlgItem(hW,IDC_FRAMEREAD));
iLineHackMode = ComboBox_GetCurSel(GetDlgItem(hW,IDC_LINEHACK));
if(IsDlgButtonChecked(hW,IDC_USELIMIT)) if(IsDlgButtonChecked(hW,IDC_USELIMIT))
bUseFrameLimit=TRUE; else bUseFrameLimit=FALSE; 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_SUBCACHE),2);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMETEX),1); ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMETEX),1);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMEREAD),0); ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMEREAD),0);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_LINEHACK), 1);
CheckDlgButton(hW,IDC_USEMASK,FALSE); CheckDlgButton(hW,IDC_USEMASK,FALSE);
CheckDlgButton(hW,IDC_FASTMDEC,TRUE); 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_SUBCACHE),2);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMETEX),2); ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMETEX),2);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMEREAD),0); ComboBox_SetCurSel(GetDlgItem(hW,IDC_FRAMEREAD),0);
ComboBox_SetCurSel(GetDlgItem(hW,IDC_LINEHACK), 1);
CheckDlgButton(hW,IDC_USEMASK,TRUE); CheckDlgButton(hW,IDC_USEMASK,TRUE);
CheckDlgButton(hW,IDC_FASTMDEC,FALSE); CheckDlgButton(hW,IDC_FASTMDEC,FALSE);
@ -619,6 +630,7 @@ void ReadConfig(void) // read all config vals
iUseScanLines=0; iUseScanLines=0;
iFrameTexType=0; iFrameTexType=0;
iFrameReadType=0; iFrameReadType=0;
iLineHackMode=0;
iShowFPS=0; iShowFPS=0;
bKeepRatio=FALSE; bKeepRatio=FALSE;
bForceRatio43=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) if(RegQueryValueEx(myKey,"FrameReadType",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
iFrameReadType=(int)temp; iFrameReadType=(int)temp;
size = 4; 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) if(RegQueryValueEx(myKey,"FullscreenBlur",0,&type,(LPBYTE)&temp,&size)==ERROR_SUCCESS)
iBlurBuffer=(int)temp; iBlurBuffer=(int)temp;
size = 4; size = 4;
@ -880,6 +895,8 @@ void WriteConfig(void)
RegSetValueEx(myKey,"FrameTexType",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp)); RegSetValueEx(myKey,"FrameTexType",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
temp=iFrameReadType; temp=iFrameReadType;
RegSetValueEx(myKey,"FrameReadType",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp)); RegSetValueEx(myKey,"FrameReadType",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
temp = iLineHackMode;
RegSetValueEx(myKey, "LineHackMode", 0, REG_DWORD, (LPBYTE)&temp, sizeof(temp));
temp=bKeepRatio; temp=bKeepRatio;
RegSetValueEx(myKey,"KeepRatio",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp)); RegSetValueEx(myKey,"KeepRatio",0,REG_DWORD,(LPBYTE) &temp,sizeof(temp));
temp=bForceRatio43; temp=bForceRatio43;