summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriCatButler <i.am.catbutler@gmail.com>2018-12-16 15:24:01 +0000
committeriCatButler <i.am.catbutler@gmail.com>2018-12-16 15:24:01 +0000
commitcd685f7b75b8c7165642bd45044481ec5b27bc04 (patch)
tree0e0e1c0549961e4432ac31b25143476c199d1b0e
parent808e3feedb672c9a69830e0011a4fc79d16613f6 (diff)
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)
-rw-r--r--plugins/peopsxgl/externals.h1
-rw-r--r--plugins/peopsxgl/prim.c342
-rw-r--r--plugins/peopsxgl/texture.c1
-rw-r--r--win32/plugins/peopsxgl/gpuPeopsOpenGL.rc357
-rw-r--r--win32/plugins/peopsxgl/resource.h3
-rw-r--r--win32/plugins/peopsxgl/winsrc/cfg.c17
6 files changed, 327 insertions, 394 deletions
diff --git a/plugins/peopsxgl/externals.h b/plugins/peopsxgl/externals.h
index 1d82bf4f..e7aa013b 100644
--- a/plugins/peopsxgl/externals.h
+++ b/plugins/peopsxgl/externals.h
@@ -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;
diff --git a/plugins/peopsxgl/prim.c b/plugins/peopsxgl/prim.c
index b03d87d7..e9c4a442 100644
--- a/plugins/peopsxgl/prim.c
+++ b/plugins/peopsxgl/prim.c
@@ -3326,167 +3326,194 @@ void primPolyG4(unsigned char * baseAddr)
// cmd: flat shaded Texture3
////////////////////////////////////////////////////////////////////////
-BOOL DoLineCheck(uint32_t *gpuData)
-{
- BOOL bQuad=FALSE;short dx,dy;
-
- if(lx0==lx1)
- {
- dx=lx0-lx2;if(dx<0) dx=-dx;
-
- 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;
-
- 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;
-
- bQuad=TRUE;
- }
- }
-
- if(lx0==lx2)
- {
- dx=lx0-lx1;if(dx<0) dx=-dx;
- 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;
+// 0 = disabled
+// 1 = enabled (default mode)
+// 2 = enabled (aggressive mode)
- 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;
-
- bQuad=TRUE;
- }
- }
-
- if(lx1==lx2)
- {
- dx=lx1-lx0;if(dx<0) dx=-dx;
+typedef struct
+{
+ short x, y;
+ short padding[2];
+}sourceVert;
- 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 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;
+
+ sourceVert* pSourceVerts = (sourceVert*)&gpuData[1];
+
+ // reject 3D elements
+ if ((vertex[0].w != vertex[1].w) ||
+ (vertex[1].w != vertex[2].w))
+ return FALSE;
+
+ // 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;
+
+ // assign other indices to remaining vertices
+ shortIdx = (cornerIdx + 1) % 3;
+ longIdx = (shortIdx + 1) % 3;
+
+ // 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;
+
+ // 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;
+
+ // 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(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;
- bQuad=TRUE;
- }
- else
- if(ly2==ly0)
- {
- dy=ly2-ly1;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;
+
+ sourceVert* pSourceVerts = (sourceVert*)&gpuData[1];
+
+ // reject 3D elements
+ if ((vertex[0].w != vertex[1].w) ||
+ (vertex[1].w != vertex[2].w))
+ 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;
+
+ // assign other indices to remaining vertices
+ B = (A + 1) % 3;
+ C = (B + 1) % 3;
+
+ // 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;
+
+ // determine lengths of sides
+ if (abs(pSourceVerts[A].y - pSourceVerts[B].y) == pxWidth)
+ {
+ // is Horizontal
+ shortIdx = (cornerIdx == A) ? B : A;
+ longIdx = C;
- 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;
+ // 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;
- bQuad=TRUE;
- }
- }
+ // flip corner index to other side of quad
+ vertex[3] = vertex[longIdx];
+ vertex[3].x = vertex[shortIdx].x;
+ }
+ else
+ return FALSE;
- if(!bQuad) return FALSE;
+ // 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;
- PRIMdrawTexturedQuad(&vertex[0], &vertex[1], &vertex[3], &vertex[2]);
+ // Draw Quad
+ PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
- if(bDrawMultiPass)
- {
- SetSemiTransMulti(1);
- PRIMdrawTexturedQuad(&vertex[0], &vertex[1], &vertex[3], &vertex[2]);
- }
+ if (bDrawMultiPass)
+ {
+ SetSemiTransMulti(1);
+ PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
+ }
- if(ubOpaqueDraw)
- {
- SetZMask4O();
- if(bUseMultiPass) SetOpaqueColor(gpuData[0]);
- DEFOPAQUEON
- PRIMdrawTexturedQuad(&vertex[0], &vertex[1], &vertex[3], &vertex[2]);
- DEFOPAQUEOFF
- }
+ if (ubOpaqueDraw)
+ {
+ SetZMask4O();
+ if (bUseMultiPass) SetOpaqueColor(gpuData[0]);
+ DEFOPAQUEON
+ PRIMdrawTexturedQuad(&vertex[cornerIdx], &vertex[longIdx], &vertex[3], &vertex[shortIdx]);
+ DEFOPAQUEOFF
+ }
- iDrawnSomething=1;
+ iDrawnSomething = 1;
- return TRUE;
+ 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)
diff --git a/plugins/peopsxgl/texture.c b/plugins/peopsxgl/texture.c
index 8d8fb41b..c19bf0ca 100644
--- a/plugins/peopsxgl/texture.c
+++ b/plugins/peopsxgl/texture.c
@@ -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);
diff --git a/win32/plugins/peopsxgl/gpuPeopsOpenGL.rc b/win32/plugins/peopsxgl/gpuPeopsOpenGL.rc
index 704476c8..a8e877da 100644
--- a/win32/plugins/peopsxgl/gpuPeopsOpenGL.rc
+++ b/win32/plugins/peopsxgl/gpuPeopsOpenGL.rc
@@ -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
/////////////////////////////////////////////////////////////////////////////
diff --git a/win32/plugins/peopsxgl/resource.h b/win32/plugins/peopsxgl/resource.h
index 82463988..8d10b7bb 100644
--- a/win32/plugins/peopsxgl/resource.h
+++ b/win32/plugins/peopsxgl/resource.h
@@ -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
diff --git a/win32/plugins/peopsxgl/winsrc/cfg.c b/win32/plugins/peopsxgl/winsrc/cfg.c
index 959509fd..37f8139f 100644
--- a/win32/plugins/peopsxgl/winsrc/cfg.c
+++ b/win32/plugins/peopsxgl/winsrc/cfg.c
@@ -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;