diff options
| author | iCatButler <i.am.catbutler@gmail.com> | 2018-12-16 15:24:01 +0000 |
|---|---|---|
| committer | iCatButler <i.am.catbutler@gmail.com> | 2018-12-16 15:24:01 +0000 |
| commit | cd685f7b75b8c7165642bd45044481ec5b27bc04 (patch) | |
| tree | 0e0e1c0549961e4432ac31b25143476c199d1b0e | |
| parent | 808e3feedb672c9a69830e0011a4fc79d16613f6 (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.h | 1 | ||||
| -rw-r--r-- | plugins/peopsxgl/prim.c | 342 | ||||
| -rw-r--r-- | plugins/peopsxgl/texture.c | 1 | ||||
| -rw-r--r-- | win32/plugins/peopsxgl/gpuPeopsOpenGL.rc | 357 | ||||
| -rw-r--r-- | win32/plugins/peopsxgl/resource.h | 3 | ||||
| -rw-r--r-- | win32/plugins/peopsxgl/winsrc/cfg.c | 17 |
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; |
