diff --git a/Include/dxwnd.h b/Include/dxwnd.h index 3ea6c87..a34a3fd 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -117,6 +117,9 @@ #define SUPPRESSCHILD 0x00000002 // suppress child process generation (CreateProcessA, ...?) #define FIXREFCOUNTER 0x00000004 // fixes the reference counter for the main directdraw session (the one connected to primary surfaces) #define SHOWTIMESTRETCH 0x00000008 // Shows time stretching multiplier on screen overlay +#define ZBUFFERCLEAN 0x00000010 // Clean ZBUFFER upon (fix for "Star Wars Ep. I - Racer") +#define ZBUFFER0CLEAN 0x00000020 // Clean ZBUFFER upon (fix for "Star Wars Ep. I - Racer") +#define ZBUFFERALWAYS 0x00000040 // Forces ZBUFFER D3DCMP_ALWAYS condition to show all planes.... // logging Tflags DWORD: #define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 07abbc0..90c719f 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c96cb2622942095b2b952937cc60ce9ba524aaf8921ddfc68088c370d79d2ff1 -size 426496 +oid sha256:404c01ee20ad1832dc37c27ab836098886b2f3363181e6976a52457ecd82d59e +size 430592 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index ba10d1d..c837a02 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97bc60a26fa1ffe141ac022b2baadea04bef5c3b2d9072c19d606d61261266bc -size 532992 +oid sha256:a5c2c347ab9be31f30206cc590f69d6d24bbd4e63aca63bea0f46931ef7afcb1 +size 531968 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index 5367e19..10cc6bc 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -75,10 +75,10 @@ opengllib3= ver3=0 coord3=0 flag3=671088674 -flagg3=1207959552 +flagg3=-939524096 flagh3=20 flagi3=4 -tflag3=0 +tflag3=3 initx3=0 inity3=0 minx3=0 @@ -284,7 +284,7 @@ coord12=0 flag12=134234148 flagg12=1207959552 flagh12=20 -flagi12=4 +flagi12=36 tflag12=258 initx12=0 inity12=0 @@ -489,7 +489,7 @@ opengllib21= ver21=0 coord21=0 flag21=679485472 -flagg21=1207959552 +flagg21=-939524096 flagh21=20 flagi21=4 tflag21=0 @@ -765,9 +765,9 @@ opengllib33= ver33=0 coord33=0 flag33=134234148 -flagg33=1207959808 +flagg33=-939523840 flagh33=20 -flagi33=0 +flagi33=16 tflag33=2 initx33=0 inity33=0 @@ -857,7 +857,7 @@ opengllib37= ver37=0 coord37=0 flag37=134217762 -flagg37=1207963648 +flagg37=-939520000 flagh37=20 flagi37=4 tflag37=0 @@ -1293,11 +1293,11 @@ module56= opengllib56= ver56=0 coord56=2 -flag56=687865888 -flagg56=1207959568 +flag56=671088672 +flagg56=1207959696 flagh56=65556 flagi56=0 -tflag56=2 +tflag56=3 initx56=0 inity56=0 minx56=0 @@ -1471,8 +1471,54 @@ sizx63=800 sizy63=600 maxfps63=0 initts63=0 +title64=Star Wars Episode I Racer +path64=D:\Games\Star Wars Episode 1 racer\SWEP1RCR.EXE +module64= +opengllib64= +ver64=0 +coord64=0 +flag64=679493669 +flagg64=1210056720 +flagh64=8212 +flagi64=20 +tflag64=67 +initx64=0 +inity64=0 +minx64=0 +miny64=0 +maxx64=0 +maxy64=0 +posx64=50 +posy64=50 +sizx64=800 +sizy64=600 +maxfps64=0 +initts64=0 +title65=Mageslayer +path65=D:\Games\MAGE\MAGESLAY.EXE +module65= +opengllib65= +ver65=0 +coord65=0 +flag65=134217762 +flagg65=1207959552 +flagh65=20 +flagi65=0 +tflag65=67 +initx65=0 +inity65=0 +minx65=0 +miny65=0 +maxx65=0 +maxy65=0 +posx65=50 +posy65=50 +sizx65=800 +sizy65=600 +maxfps65=0 +initts65=0 [window] -posx=1360 -posy=603 -sizx=497 -sizy=410 +posx=1056 +posy=200 +sizx=638 +sizy=670 diff --git a/build/exports/Crimson Skies.dxw b/build/exports/Crimson Skies.dxw index 8563189..741addf 100644 --- a/build/exports/Crimson Skies.dxw +++ b/build/exports/Crimson Skies.dxw @@ -8,8 +8,8 @@ coord0=0 flag0=134234148 flagg0=1207959552 flagh0=20 -flagi0=4 -tflag0=259 +flagi0=36 +tflag0=258 initx0=0 inity0=0 minx0=0 diff --git a/build/exports/Star Wars Episode I Racer.dxw b/build/exports/Star Wars Episode I Racer.dxw new file mode 100644 index 0000000..37ebbe2 --- /dev/null +++ b/build/exports/Star Wars Episode I Racer.dxw @@ -0,0 +1,24 @@ +[target] +title0=Star Wars Episode I Racer +path0=D:\Games\Star Wars Episode 1 racer\SWEP1RCR.EXE +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=679493669 +flagg0=1210056720 +flagh0=8212 +flagi0=20 +tflag0=67 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 diff --git a/build/issues.txt b/build/issues.txt index c163985..214f7c1 100644 --- a/build/issues.txt +++ b/build/issues.txt @@ -1,3 +1,4 @@ Ancient Evil: working both in emulated / direct mode, but in emulated mode the cursor is not visible. window handling for ddraw8 games - see WildFire with keep aspect ratio & client area -"devastation" intro movie - bad cooordinates \ No newline at end of file +"devastation" intro movie - bad cooordinates +Praetorians: bad splash screen & crash \ No newline at end of file diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 040864a..9a15f7f 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -312,3 +312,11 @@ A small fix for ddraw 7 games that makes Praetorians playable, though with some v2.02.46 Fixed handling of user32 CreateDialogIndirectParam call to avoid processing in non fullscreen mode - fix necessary to start "Crimson Skies". + +v2.02.47 +GUI: +Configuration tabs reorganization: now some tabs have merged making it easier to reach all options +core: +improved d3d wrapping and sdded ZBUFFER cleanup flags to fix some d3d games. In particular: +Clean ZBUFFER @1.0 fix: to fix "Star Wars Episode I Racer" +Clean ZBUFFER @0.0 fix: to fix "Crimson Skies" black blocks bug on ATI cards \ No newline at end of file diff --git a/dll/dxhelper.cpp b/dll/dxhelper.cpp index d9de4f4..90b8119 100644 --- a/dll/dxhelper.cpp +++ b/dll/dxhelper.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "dxwnd.h" @@ -1572,4 +1573,92 @@ char *ExplainRasterCaps(DWORD c) return(eb); } +char *ExplainD3DRenderState(DWORD c) +{ + char *p; + if((c>=D3DRENDERSTATE_STIPPLEPATTERN00) && (c<=D3DRENDERSTATE_STIPPLEPATTERN31)) p="STIPPLEPATTERNnn"; + else + if((c>=D3DRENDERSTATE_WRAP0) && (c<=D3DRENDERSTATE_WRAP7)) p="WRAPn"; + else + switch(c){ + case D3DRENDERSTATE_ANTIALIAS: p="ANTIALIAS"; break; + case D3DRENDERSTATE_TEXTUREPERSPECTIVE: p="TEXTUREPERSPECTIVE"; break; + case D3DRENDERSTATE_ZENABLE: p="ZENABLE"; break; + case D3DRENDERSTATE_FILLMODE: p="FILLMODE"; break; + case D3DRENDERSTATE_SHADEMODE: p="SHADEMODE"; break; + case D3DRENDERSTATE_LINEPATTERN: p="LINEPATTERN"; break; + case D3DRENDERSTATE_ZWRITEENABLE: p="ZWRITEENABLE"; break; + case D3DRENDERSTATE_ALPHATESTENABLE: p="ALPHATESTENABLE"; break; + case D3DRENDERSTATE_LASTPIXEL: p="LASTPIXEL"; break; + case D3DRENDERSTATE_SRCBLEND: p="SRCBLEND"; break; + case D3DRENDERSTATE_DESTBLEND: p="DESTBLEND"; break; + case D3DRENDERSTATE_CULLMODE: p="CULLMODE"; break; + case D3DRENDERSTATE_ZFUNC: p="ZFUNC"; break; + case D3DRENDERSTATE_ALPHAREF: p="ALPHAREF"; break; + case D3DRENDERSTATE_ALPHAFUNC: p="ALPHAFUNC"; break; + case D3DRENDERSTATE_DITHERENABLE: p="DITHERENABLE"; break; + case D3DRENDERSTATE_ALPHABLENDENABLE: p="ALPHABLENDENABLE"; break; + case D3DRENDERSTATE_FOGENABLE: p="FOGENABLE"; break; + case D3DRENDERSTATE_SPECULARENABLE: p="SPECULARENABLE"; break; + case D3DRENDERSTATE_ZVISIBLE: p="ZVISIBLE"; break; + case D3DRENDERSTATE_STIPPLEDALPHA: p="STIPPLEDALPHA"; break; + case D3DRENDERSTATE_FOGCOLOR: p="FOGCOLOR"; break; + case D3DRENDERSTATE_FOGTABLEMODE: p="FOGTABLEMODE"; break; + case D3DRENDERSTATE_FOGSTART: p="FOGSTART"; break; + case D3DRENDERSTATE_FOGEND: p="FOGEND"; break; + case D3DRENDERSTATE_FOGDENSITY: p="FOGDENSITY"; break; + case D3DRENDERSTATE_EDGEANTIALIAS: p="EDGEANTIALIAS"; break; + case D3DRENDERSTATE_COLORKEYENABLE: p="COLORKEYENABLE"; break; + case D3DRENDERSTATE_STENCILENABLE: p="STENCILENABLE"; break; + case D3DRENDERSTATE_ZBIAS: p="ZBIAS"; break; + case D3DRENDERSTATE_RANGEFOGENABLE: p="RANGEFOGENABLE"; break; + case D3DRENDERSTATE_STENCILFAIL: p="STENCILFAIL"; break; + case D3DRENDERSTATE_STENCILZFAIL: p="STENCILZFAIL"; break; + case D3DRENDERSTATE_STENCILPASS: p="STENCILPASS"; break; + case D3DRENDERSTATE_STENCILFUNC: p="STENCILFUNC"; break; + case D3DRENDERSTATE_STENCILREF: p="STENCILREF"; break; + case D3DRENDERSTATE_STENCILMASK: p="STENCILMASK"; break; + case D3DRENDERSTATE_STENCILWRITEMASK: p="STENCILWRITEMASK"; break; + case D3DRENDERSTATE_TEXTUREFACTOR: p="TEXTUREFACTOR"; break; + case D3DRENDERSTATE_CLIPPING: p="CLIPPING"; break; + case D3DRENDERSTATE_LIGHTING: p="LIGHTING"; break; + case D3DRENDERSTATE_EXTENTS: p="EXTENTS"; break; + case D3DRENDERSTATE_AMBIENT: p="AMBIENT"; break; + case D3DRENDERSTATE_FOGVERTEXMODE: p="FOGVERTEXMODE"; break; + case D3DRENDERSTATE_COLORVERTEX: p="COLORVERTEX"; break; + case D3DRENDERSTATE_LOCALVIEWER: p="LOCALVIEWER"; break; + case D3DRENDERSTATE_NORMALIZENORMALS: p="NORMALIZENORMALS"; break; + case D3DRENDERSTATE_COLORKEYBLENDENABLE: p="COLORKEYBLENDENABLE"; break; + case D3DRENDERSTATE_DIFFUSEMATERIALSOURCE: p="DIFFUSEMATERIALSOURCE"; break; + case D3DRENDERSTATE_SPECULARMATERIALSOURCE: p="SPECULARMATERIALSOURCE"; break; + case D3DRENDERSTATE_AMBIENTMATERIALSOURCE: p="AMBIENTMATERIALSOURCE"; break; + case D3DRENDERSTATE_EMISSIVEMATERIALSOURCE: p="EMISSIVEMATERIALSOURCE"; break; + case D3DRENDERSTATE_VERTEXBLEND: p="VERTEXBLEND"; break; + case D3DRENDERSTATE_CLIPPLANEENABLE: p="CLIPPLANEENABLE"; break; + // unsupported legacy + + case D3DRENDERSTATE_TEXTUREHANDLE: p="TEXTUREHANDLE"; break; + case D3DRENDERSTATE_TEXTUREADDRESS: p="TEXTUREADDRESS"; break; + case D3DRENDERSTATE_WRAPU: p="WRAPU"; break; + case D3DRENDERSTATE_WRAPV: p="WRAPV"; break; + case D3DRENDERSTATE_MONOENABLE: p="MONOENABLE"; break; + case D3DRENDERSTATE_ROP2: p="ROP2"; break; + case D3DRENDERSTATE_PLANEMASK: p="PLANEMASK"; break; + case D3DRENDERSTATE_TEXTUREMAG: p="TEXTUREMAG"; break; + case D3DRENDERSTATE_TEXTUREMIN: p="TEXTUREMIN"; break; + case D3DRENDERSTATE_TEXTUREMAPBLEND: p="TEXTUREMAPBLEND"; break; + case D3DRENDERSTATE_SUBPIXEL: p="SUBPIXEL"; break; + case D3DRENDERSTATE_SUBPIXELX: p="SUBPIXELX"; break; + case D3DRENDERSTATE_STIPPLEENABLE: p="STIPPLEENABLE"; break; + case D3DRENDERSTATE_BORDERCOLOR: p="BORDERCOLOR"; break; + case D3DRENDERSTATE_TEXTUREADDRESSU: p="TEXTUREADDRESSU"; break; + case D3DRENDERSTATE_TEXTUREADDRESSV: p="TEXTUREADDRESSV"; break; + case D3DRENDERSTATE_MIPMAPLODBIAS: p="MIPMAPLODBIAS"; break; + case D3DRENDERSTATE_ANISOTROPY: p="ANISOTROPY"; break; + case D3DRENDERSTATE_FLUSHBATCH: p="FLUSHBATCH"; break; + case D3DRENDERSTATE_FORCE_DWORD: p="FORCE_DWORD"; break; + default: p="???"; break; + } + return p; +} diff --git a/dll/dxhelper.h b/dll/dxhelper.h index 24b5669..1ef6d57 100644 --- a/dll/dxhelper.h +++ b/dll/dxhelper.h @@ -46,3 +46,4 @@ extern char *ExplainPeekRemoveMsg(DWORD); extern char *ExplainGetDCExFlags(DWORD); extern char *ExplainPaletteUse(UINT); extern char *ExplainRasterCaps(DWORD); +extern char *ExplainD3DRenderState(DWORD); \ No newline at end of file diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index ecc6d89..8d838cd 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -24,7 +24,7 @@ along with this program. If not, see . #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.46" +#define VERSION "2.02.47" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index f126de6..f162989 100644 Binary files a/dll/dxwnd.vs2008.suo and b/dll/dxwnd.vs2008.suo differ diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp index 8e2f3a0..2c302f5 100644 --- a/dll/gdi32.cpp +++ b/dll/gdi32.cpp @@ -10,7 +10,7 @@ static void Stopper(char *s, int line) { char sMsg[81]; - sprintf(sMsg,"break: \"%s\"", s); + sprintf_s(sMsg, 80, "break: \"%s\"", s); MessageBox(0, sMsg, "break", MB_OK | MB_ICONEXCLAMATION); } diff --git a/dll/hd3d7.cpp b/dll/hd3d7.cpp index c177003..be0164c 100644 --- a/dll/hd3d7.cpp +++ b/dll/hd3d7.cpp @@ -40,6 +40,10 @@ typedef HRESULT (WINAPI *QueryInterfaceD3_Type)(void *, REFIID, LPVOID *); typedef HRESULT (WINAPI *D3DInitialize_Type)(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC); typedef HRESULT (WINAPI *D3DGetCaps_Type)(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC); +typedef HRESULT (WINAPI *SetRenderState3_Type)(void *, D3DRENDERSTATETYPE, DWORD); +typedef HRESULT (WINAPI *Scene3_Type)(void *); + + Initialize_Type pInitialize = NULL; EnumDevices_Type pEnumDevices = NULL; CreateLight_Type pCreateLight = NULL; @@ -54,6 +58,15 @@ SetViewport_Type pSetViewport = NULL; GetViewport_Type pGetViewport = NULL; QueryInterfaceD3_Type pQueryInterfaceD3 = NULL; +SetRenderState3_Type pSetRenderState2 = NULL; +SetRenderState3_Type pSetRenderState3 = NULL; +Scene3_Type pBeginScene1 = NULL; +Scene3_Type pBeginScene2 = NULL; +Scene3_Type pBeginScene3 = NULL; +Scene3_Type pEndScene1 = NULL; +Scene3_Type pEndScene2 = NULL; +Scene3_Type pEndScene3 = NULL; + D3DInitialize_Type pD3DInitialize = NULL; D3DGetCaps_Type pD3DGetCaps = NULL; @@ -74,6 +87,15 @@ HRESULT WINAPI extQueryInterfaceD3(void *, REFIID, LPVOID *); HRESULT WINAPI extD3DInitialize(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC); HRESULT WINAPI extD3DGetCaps(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC); +HRESULT WINAPI extSetRenderState2(void *, D3DRENDERSTATETYPE, DWORD); +HRESULT WINAPI extBeginScene1(void *); +HRESULT WINAPI extEndScene1(void *); +HRESULT WINAPI extBeginScene2(void *); +HRESULT WINAPI extEndScene2(void *); +HRESULT WINAPI extSetRenderState3(void *, D3DRENDERSTATETYPE, DWORD); +HRESULT WINAPI extBeginScene3(void *); +HRESULT WINAPI extEndScene3(void *); + extern char *ExplainDDError(DWORD); int HookDirect3D7(HMODULE module, int version){ @@ -184,28 +206,33 @@ void HookDirect3DSession(LPDIRECTDRAW *lplpdd, int dxversion) } } -void HookDirect3DDevice(LPDIRECTDRAW *lpd3d, int dxversion) + +void HookDirect3DDevice(void **lpd3ddev, int dxversion) { - OutTraceD("HookDirect3DDevice: d3d=%x d3dversion=%d\n", *lpd3d, dxversion); + OutTraceD("HookDirect3DDevice: d3ddev=%x d3dversion=%d\n", lpd3ddev, dxversion); gD3DVersion = dxversion; switch(dxversion){ case 1: - //SetHook((void *)(**(DWORD **)lpd3d + 12), extInitialize, (void **)&pInitialize, "Initialize"); - //SetHook((void *)(**(DWORD **)lpd3d + 16), extEnumDevices, (void **)&pEnumDevices, "EnumDevices"); - //SetHook((void *)(**(DWORD **)lpd3d + 20), extCreateLight, (void **)&pCreateLight, "CreateLight"); - //SetHook((void *)(**(DWORD **)lpd3d + 24), extCreateMaterial, (void **)&pCreateMaterial, "CreateMaterial"); - //SetHook((void *)(**(DWORD **)lpd3d + 28), extCreateViewport, (void **)&pCreateViewport, "CreateViewport"); - //SetHook((void *)(**(DWORD **)lpd3d + 32), extFindDevice, (void **)&pFindDevice, "FindDevice"); + SetHook((void *)(**(DWORD **)lpd3ddev + 76), extBeginScene1, (void **)&pBeginScene1, "BeginScene(1)"); + SetHook((void *)(**(DWORD **)lpd3ddev + 80), extEndScene1, (void **)&pEndScene1, "EndScene(1)"); break; - case 5: - case 6: - //SetHook((void *)(**(DWORD **)lpd3d + 12), extEnumDevices, (void **)&pEnumDevices, "EnumDevices"); - //SetHook((void *)(**(DWORD **)lpd3d + 16), extCreateLight, (void **)&pCreateLight, "CreateLight"); - //SetHook((void *)(**(DWORD **)lpd3d + 20), extCreateMaterial, (void **)&pCreateMaterial, "CreateMaterial"); - //SetHook((void *)(**(DWORD **)lpd3d + 24), extCreateViewport, (void **)&pCreateViewport, "CreateViewport"); - //SetHook((void *)(**(DWORD **)lpd3d + 28), extFindDevice, (void **)&pFindDevice, "FindDevice"); + case 2: + SetHook((void *)(**(DWORD **)lpd3ddev + 40), extBeginScene2, (void **)&pBeginScene2, "BeginScene(2)"); + SetHook((void *)(**(DWORD **)lpd3ddev + 44), extEndScene2, (void **)&pEndScene2, "EndScene(2)"); + SetHook((void *)(**(DWORD **)lpd3ddev + 92), extSetRenderState2, (void **)&pSetRenderState2, "SetRenderState(2)"); + if(dxw.dwFlags2 & WIREFRAME){ + (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); + } + break; + case 3: + SetHook((void *)(**(DWORD **)lpd3ddev + 36), extBeginScene3, (void **)&pBeginScene3, "BeginScene(3)"); + SetHook((void *)(**(DWORD **)lpd3ddev + 40), extEndScene3, (void **)&pEndScene3, "EndScene(3)"); + SetHook((void *)(**(DWORD **)lpd3ddev + 88), extSetRenderState3, (void **)&pSetRenderState3, "SetRenderState(3)"); + if(dxw.dwFlags2 & WIREFRAME){ + (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); + } break; } } @@ -439,10 +466,7 @@ HRESULT WINAPI extCreateDevice2(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE else OutTraceD("CreateDevice(D3D2): lpd3dd=%x\n", lpd3d, *lplpd3dd); - // Hook device here ...! - SetHook((void *)(**(DWORD **)lplpd3dd + 12), extD3DInitialize, (void **)&pD3DInitialize, "Initialize(D3D)"); - SetHook((void *)(**(DWORD **)lplpd3dd + 16), extD3DGetCaps, (void **)&pD3DGetCaps, "GetCaps(D3D)"); - + HookDirect3DDevice((void **)lplpd3dd, 2); return res; } @@ -475,7 +499,7 @@ HRESULT WINAPI extCreateDevice3(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE4 return res; } - // Hook device here ...! + HookDirect3DDevice((void **)lplpd3dd, 3); return res; } @@ -521,3 +545,143 @@ HRESULT WINAPI extEndScene(void *d3dd) HRESULT WINAPI extGetDirect3D(void *d3dd, LPDIRECT3D*) #endif +char *ExplainRenderstateValue(DWORD Value) +{ + char *p; + switch(Value){ + case D3DCMP_NEVER : p="D3DCMP_NEVER"; break; + case D3DCMP_LESS : p="D3DCMP_LESS"; break; + case D3DCMP_EQUAL : p="D3DCMP_EQUAL"; break; + case D3DCMP_LESSEQUAL : p="D3DCMP_LESSEQUAL"; break; + case D3DCMP_GREATER : p="D3DCMP_GREATER"; break; + case D3DCMP_NOTEQUAL : p="D3DCMP_NOTEQUAL"; break; + case D3DCMP_GREATEREQUAL : p="D3DCMP_GREATEREQUAL"; break; + case D3DCMP_ALWAYS : p="D3DCMP_ALWAYS"; break; + default : p="???"; break; + } + return p; +} + +HRESULT WINAPI extSetRenderState2(void *d3dd, D3DRENDERSTATETYPE State, DWORD Value) +{ + HRESULT res; + OutTraceD("SetRenderState(2): d3dd=%x State=%x(%s) Value=%x\n", d3dd, State, ExplainD3DRenderState(State), Value); + if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) { + DWORD OldValue; + OldValue = Value; + Value = D3DCMP_ALWAYS; + OutTraceD("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(OldValue)); + } + if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){ + Value = D3DFILL_WIREFRAME; + OutTraceD("SetRenderState: FIXED State=FILLMODE Value=D3DFILL_WIREFRAME\n"); + } + res=(*pSetRenderState2)(d3dd, State, Value); + if(res) OutTraceE("SetRenderState(2): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + +HRESULT WINAPI extSetRenderState3(void *d3dd, D3DRENDERSTATETYPE State, DWORD Value) +{ + HRESULT res; + OutTraceD("SetRenderState(3): d3dd=%x State=%x(%s) Value=%x\n", d3dd, State, ExplainD3DRenderState(State), Value); + if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) { + DWORD OldValue; + OldValue = Value; + Value = D3DCMP_ALWAYS; + OutTraceD("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(OldValue)); + } + if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){ + Value = D3DFILL_WIREFRAME; + OutTraceD("SetRenderState: FIXED State=FILLMODE Value=D3DFILL_WIREFRAME\n"); + } + res=(*pSetRenderState3)(d3dd, State, Value); + if(res) OutTraceE("SetRenderState(3): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + +HRESULT WINAPI extBeginScene1(void *d3dd) +{ + HRESULT res; + OutTraceD("BeginScene(1): d3dd=%x\n", d3dd); + res=(*pBeginScene1)(d3dd); + if(res) OutTraceE("BeginScene(1): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + +HRESULT WINAPI extBeginScene2(void *d3dd) +{ + HRESULT res; + OutTraceD("BeginScene(2): d3dd=%x\n", d3dd); + if(dxw.dwFlags4 & ZBUFFERCLEAN){ + LPDIRECT3DVIEWPORT2 vp; + D3DVIEWPORT vpd; + ((LPDIRECT3DDEVICE2)d3dd)->GetCurrentViewport(&vp); + D3DRECT d3dRect; + vpd.dwSize=sizeof(D3DVIEWPORT); + vp->GetViewport(&vpd); + d3dRect.x1 = vpd.dwX; + d3dRect.y1 = vpd.dwY; + d3dRect.x2 = vpd.dwX + vpd.dwWidth; + d3dRect.y2 = vpd.dwY + vpd.dwHeight; + OutTraceD("d3dRect=(%d,%d)-(%d,%d)\n", d3dRect.x1, d3dRect.y1, d3dRect.x2, d3dRect.y2); + vp->Clear(1, &d3dRect, D3DCLEAR_ZBUFFER); + } + res=(*pBeginScene2)(d3dd); + if(res) OutTraceE("BeginScene(2): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + +HRESULT WINAPI extBeginScene3(void *d3dd) +{ + HRESULT res; + OutTraceD("BeginScene(3): d3dd=%x\n", d3dd); + if(dxw.dwFlags4 & (ZBUFFERCLEAN|ZBUFFER0CLEAN)){ + LPDIRECT3DVIEWPORT3 vp; + D3DVIEWPORT vpd; + ((LPDIRECT3DDEVICE3)d3dd)->GetCurrentViewport(&vp); + D3DRECT d3dRect; + vpd.dwSize=sizeof(D3DVIEWPORT); + vp->GetViewport(&vpd); + d3dRect.x1 = vpd.dwX; + d3dRect.y1 = vpd.dwY; + d3dRect.x2 = vpd.dwX + vpd.dwWidth; + d3dRect.y2 = vpd.dwY + vpd.dwHeight; + OutTraceD("d3dRect=(%d,%d)-(%d,%d)\n", d3dRect.x1, d3dRect.y1, d3dRect.x2, d3dRect.y2); + if(dxw.dwFlags4 & ZBUFFERCLEAN )vp->Clear2(1, &d3dRect, D3DCLEAR_ZBUFFER, 0, 1.0, 0); + if(dxw.dwFlags4 & ZBUFFER0CLEAN)vp->Clear2(1, &d3dRect, D3DCLEAR_ZBUFFER, 0, 0.0, 0); + } + res=(*pBeginScene3)(d3dd); + if(res) OutTraceE("BeginScene(3): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + +HRESULT WINAPI extEndScene1(void *d3dd) +{ + HRESULT res; + OutTraceD("EndScene(1): d3dd=%x\n", d3dd); + res=(*pEndScene1)(d3dd); + //dxw.ShowOverlay(); + if(res) OutTraceE("EndScene(1): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + +HRESULT WINAPI extEndScene2(void *d3dd) +{ + HRESULT res; + OutTraceD("EndScene(2): d3dd=%x\n", d3dd); + res=(*pEndScene2)(d3dd); + //dxw.ShowOverlay(); + if(res) OutTraceE("EndScene(2): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + +HRESULT WINAPI extEndScene3(void *d3dd) +{ + HRESULT res; + OutTraceD("EndScene(3): d3dd=%x\n", d3dd); + res=(*pEndScene3)(d3dd); + //dxw.ShowOverlay(); + if(res) OutTraceE("EndScene(3): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} diff --git a/host/Resource.h b/host/Resource.h index 558be92..1d8280b 100644 --- a/host/Resource.h +++ b/host/Resource.h @@ -22,21 +22,18 @@ #define IDI_RUN6 148 #define IDD_STATUS 149 #define IDD_TIMESLIDER 150 -#define IDD_TAB_PROGRAM 152 -#define IDD_TAB_LOG 153 +#define IDD_TAB_PROGRAM 151 +#define IDD_TAB_LOG 152 #define IDB_BIGICONS 153 #define IDD_TAB_DIRECTX 154 -#define IDD_TAB_MOUSE 155 -#define IDB_BITMAP1 155 -#define IDB_SMALLICONS 155 -#define IDD_TAB_TIMING 156 -#define IDD_TAB_WINDOW 157 -#define IDD_TAB_EMPTY 158 -#define IDB_PALETTE 158 -#define IDD_TAB_OPENGL 159 -#define IDD_TAB_COMPAT 160 -#define IDD_TAB_GDI 161 -#define IDD_TAB_COLOR 162 +#define IDD_TAB_INPUT 155 +#define IDB_SMALLICONS 156 +#define IDD_TAB_TIMING 157 +#define IDD_TAB_OUTPUT 158 +#define IDD_TAB_EMPTY 159 +#define IDB_PALETTE 160 +#define IDD_TAB_COMPAT 161 +#define IDD_TAB_SYSLIBS 162 #define IDD_TAB_DEBUG 163 #define IDD_PALETTE 164 #define IDC_AUTO 300 @@ -173,9 +170,9 @@ #define IDC_FIXD3DFRAME 1127 #define IDC_BUFFEREDIOFIX 1128 #define IDC_FILTERMESSAGES 1129 -#define IDC_PEEKALLMESSAGES 1130 -#define IDC_TRACEHOOKS 1131 -#define IDC_FULLRECTBLT2 1132 +#define IDC_ZBUFFERCLEAN 1130 +#define IDC_PEEKALLMESSAGES 1131 +#define IDC_TRACEHOOKS 1132 #define IDC_SURFACEWARN 1133 #define IDC_ANALITICALMODE 1134 #define IDC_ANALYTICMODE 1135 @@ -190,6 +187,8 @@ #define IDC_SUPPRESSCHILD 1144 #define IDC_FIXREFCOUNTER 1145 #define IDC_SHOWTIMESTRETCH 1146 +#define IDC_ZBUFFERALWAYS 1147 +#define IDC_ZBUFFER0CLEAN 1148 #define ID_MODIFY 32771 #define ID_DELETE 32772 #define ID_ADD 32773 diff --git a/host/TabCompat.cpp b/host/TabCompat.cpp index 09ee744..bb1aa40 100644 --- a/host/TabCompat.cpp +++ b/host/TabCompat.cpp @@ -37,6 +37,8 @@ void CTabCompat::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_CDROMDRIVETYPE, cTarget->m_CDROMDriveType); DDX_Check(pDX, IDC_FONTBYPASS, cTarget->m_FontBypass); DDX_Check(pDX, IDC_BUFFEREDIOFIX, cTarget->m_BufferedIOFix); + DDX_Check(pDX, IDC_ZBUFFERCLEAN, cTarget->m_ZBufferClean); + DDX_Check(pDX, IDC_ZBUFFER0CLEAN, cTarget->m_ZBuffer0Clean); } BEGIN_MESSAGE_MAP(CTabCompat, CDialog) diff --git a/host/TabDebug.cpp b/host/TabDebug.cpp index 4ee0aa5..3b7f52d 100644 --- a/host/TabDebug.cpp +++ b/host/TabDebug.cpp @@ -39,6 +39,8 @@ void CTabDebug::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_NODDRAWBLT, cTarget->m_NoDDRAWBlt); DDX_Check(pDX, IDC_NODDRAWFLIP, cTarget->m_NoDDRAWFlip); DDX_Check(pDX, IDC_NOGDIBLT, cTarget->m_NoGDIBlt); + DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry); + DDX_Check(pDX, IDC_ZBUFFERALWAYS, cTarget->m_ZBufferAlways); } BEGIN_MESSAGE_MAP(CTabDebug, CDialog) diff --git a/host/TabDirectX.cpp b/host/TabDirectX.cpp index e89c020..a2daaa8 100644 --- a/host/TabDirectX.cpp +++ b/host/TabDirectX.cpp @@ -44,14 +44,6 @@ void CTabDirectX::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_NOALPHACHANNEL, cTarget->m_NoAlphaChannel); DDX_Check(pDX, IDC_FIXREFCOUNTER, cTarget->m_FixRefCounter); //DDX_Check(pDX, IDC_SAVECAPS, cTarget->m_SaveCaps); - // DirectInput - DDX_Check(pDX, IDC_HOOKDI, cTarget->m_HookDI); - DDX_Text(pDX, IDC_INITX, cTarget->m_InitX); - DDX_Text(pDX, IDC_INITY, cTarget->m_InitY); - DDX_Text(pDX, IDC_MAXX, cTarget->m_MaxX); - DDX_Text(pDX, IDC_MAXY, cTarget->m_MaxY); - DDX_Text(pDX, IDC_MINX, cTarget->m_MinX); - DDX_Text(pDX, IDC_MINY, cTarget->m_MinY); } BEGIN_MESSAGE_MAP(CTabDirectX, CDialog) diff --git a/host/TabMouse.cpp b/host/TabMouse.cpp index 11885af..6ff8090 100644 --- a/host/TabMouse.cpp +++ b/host/TabMouse.cpp @@ -12,18 +12,18 @@ static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// -// CTabMouse dialog +// CTabInput dialog -CTabMouse::CTabMouse(CWnd* pParent /*=NULL*/) +CTabInput::CTabInput(CWnd* pParent /*=NULL*/) // : CTargetDlg(pParent) - : CDialog(CTabMouse::IDD, pParent) + : CDialog(CTabInput::IDD, pParent) { - //{{AFX_DATA_INIT(CTabMouse) + //{{AFX_DATA_INIT(CTabInput) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } -void CTabMouse::DoDataExchange(CDataExchange* pDX) +void CTabInput::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); @@ -37,13 +37,21 @@ void CTabMouse::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_MESSAGEPROC, cTarget->m_MessageProc); DDX_Check(pDX, IDC_FIXNCHITTEST, cTarget->m_FixNCHITTEST); DDX_Check(pDX, IDC_SLOW, cTarget->m_SlowDown); + // DirectInput + DDX_Check(pDX, IDC_HOOKDI, cTarget->m_HookDI); + DDX_Text(pDX, IDC_INITX, cTarget->m_InitX); + DDX_Text(pDX, IDC_INITY, cTarget->m_InitY); + DDX_Text(pDX, IDC_MAXX, cTarget->m_MaxX); + DDX_Text(pDX, IDC_MAXY, cTarget->m_MaxY); + DDX_Text(pDX, IDC_MINX, cTarget->m_MinX); + DDX_Text(pDX, IDC_MINY, cTarget->m_MinY); } -BEGIN_MESSAGE_MAP(CTabMouse, CDialog) - //{{AFX_MSG_MAP(CTabMouse) +BEGIN_MESSAGE_MAP(CTabInput, CDialog) + //{{AFX_MSG_MAP(CTabInput) // NOTE: the ClassWizard will add message map macros here //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// -// CTabMouse message handlers +// CTabInput message handlers diff --git a/host/TabMouse.h b/host/TabMouse.h index f0c1054..8fd9ec8 100644 --- a/host/TabMouse.h +++ b/host/TabMouse.h @@ -12,16 +12,16 @@ ///////////////////////////////////////////////////////////////////////////// // CTabDirectX dialog -//class CTabMouse : public CTargetDlg -class CTabMouse : public CDialog +//class CTabInput : public CTargetDlg +class CTabInput : public CDialog { // Construction public: - CTabMouse(CWnd* pParent = NULL); // standard constructor + CTabInput(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CTabDirectX) - enum { IDD = IDD_TAB_MOUSE }; + enum { IDD = IDD_TAB_INPUT }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA diff --git a/host/TabOpenGL.h b/host/TabOpenGL.h index 53c0aa5..97e7884 100644 --- a/host/TabOpenGL.h +++ b/host/TabOpenGL.h @@ -20,7 +20,7 @@ public: // Dialog Data //{{AFX_DATA(CTabOpenGL) - enum { IDD = IDD_TAB_OPENGL }; + enum { IDD = IDD_TAB_SYSLIBS }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA diff --git a/host/TabProgram.cpp b/host/TabProgram.cpp index 1df3503..bc3f919 100644 --- a/host/TabProgram.cpp +++ b/host/TabProgram.cpp @@ -33,7 +33,6 @@ void CTabProgram::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_UNNOTIFY, cTarget->m_UnNotify); DDX_Check(pDX, IDC_WINDOWIZE, cTarget->m_Windowize); DDX_Check(pDX, IDC_HOOKDLLS, cTarget->m_HookDLLs); - DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry); DDX_Check(pDX, IDC_FULLSCREENONLY, cTarget->m_FullScreenOnly); DDX_Check(pDX, IDC_FILTERMESSAGES, cTarget->m_FilterMessages); DDX_Check(pDX, IDC_PEEKALLMESSAGES, cTarget->m_PeekAllMessages); @@ -45,6 +44,7 @@ void CTabProgram::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_SAVELOAD, cTarget->m_SaveLoad); DDX_Check(pDX, IDC_HANDLEALTF4, cTarget->m_HandleAltF4); DDX_Check(pDX, IDC_KEEPASPECTRATIO, cTarget->m_KeepAspectRatio); + DDX_Check(pDX, IDC_HOOKOPENGL, cTarget->m_HookOpenGL); // duplicated DDX_Text(pDX, IDC_POSX, cTarget->m_PosX); DDX_Text(pDX, IDC_POSY, cTarget->m_PosY); DDX_Text(pDX, IDC_SIZX, cTarget->m_SizX); diff --git a/host/TabGDI.cpp b/host/TabSysLibs.cpp similarity index 68% rename from host/TabGDI.cpp rename to host/TabSysLibs.cpp index 9eda571..f43f3b9 100644 --- a/host/TabGDI.cpp +++ b/host/TabSysLibs.cpp @@ -3,7 +3,7 @@ #include "stdafx.h" #include "TargetDlg.h" -#include "TabGDI.h" +#include "TabSysLibs.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -14,23 +14,29 @@ static char THIS_FILE[] = __FILE__; ///////////////////////////////////////////////////////////////////////////// // CTabLogs dialog -CTabGDI::CTabGDI(CWnd* pParent /*=NULL*/) - : CDialog(CTabGDI::IDD, pParent) +CTabSysLibs::CTabSysLibs(CWnd* pParent /*=NULL*/) + : CDialog(CTabSysLibs::IDD, pParent) { - //{{AFX_DATA_INIT(CTabGDI) + //{{AFX_DATA_INIT(CTabSysLibs) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } -void CTabGDI::DoDataExchange(CDataExchange* pDX) +void CTabSysLibs::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + + // GDI DDX_Radio(pDX, IDC_GDINONE, cTarget->m_DCEmulationMode); DDX_Check(pDX, IDC_FIXTEXTOUT, cTarget->m_FixTextOut); + + // OpenGL + DDX_Check(pDX, IDC_FORCEHOOKOPENGL, cTarget->m_ForceHookOpenGL); + DDX_Text(pDX, IDC_OPENGLLIB, cTarget->m_OpenGLLib); } -BEGIN_MESSAGE_MAP(CTabGDI, CDialog) +BEGIN_MESSAGE_MAP(CTabSysLibs, CDialog) //{{AFX_MSG_MAP(CTabLogs) // NOTE: the ClassWizard will add message map macros here //}}AFX_MSG_MAP diff --git a/host/TabGDI.h b/host/TabSysLibs.h similarity index 88% rename from host/TabGDI.h rename to host/TabSysLibs.h index d97b00f..9ce08e0 100644 --- a/host/TabGDI.h +++ b/host/TabSysLibs.h @@ -11,15 +11,15 @@ ///////////////////////////////////////////////////////////////////////////// // CTabLogs dialog -class CTabGDI : public CDialog +class CTabSysLibs : public CDialog { // Construction public: - CTabGDI(CWnd* pParent = NULL); // standard constructor + CTabSysLibs(CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CTabLogs) - enum { IDD = IDD_TAB_GDI }; + enum { IDD = IDD_TAB_SYSLIBS }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA diff --git a/host/TabWindow.cpp b/host/TabWindow.cpp index 0bf1bca..a595c26 100644 --- a/host/TabWindow.cpp +++ b/host/TabWindow.cpp @@ -28,6 +28,8 @@ void CTabWindow::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); + + // window management DDX_Check(pDX, IDC_FIXWINFRAME, cTarget->m_FixWinFrame); DDX_Check(pDX, IDC_PREVENTMAXIMIZE, cTarget->m_PreventMaximize); DDX_Check(pDX, IDC_LOCKWINPOS, cTarget->m_LockWinPos); @@ -42,6 +44,16 @@ void CTabWindow::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_FIXD3DFRAME, cTarget->m_FixD3DFrame); DDX_Check(pDX, IDC_NOWINDOWMOVE, cTarget->m_NoWindowMove); DDX_Check(pDX, IDC_SUPPRESSCHILD, cTarget->m_SuppressChild); + + // color management + DDX_Check(pDX, IDC_INIT8BPP, cTarget->m_Init8BPP); + DDX_Check(pDX, IDC_INIT16BPP, cTarget->m_Init16BPP); + DDX_Check(pDX, IDC_DISABLEGAMMARAMP, cTarget->m_DisableGammaRamp); + DDX_Check(pDX, IDC_FORCE16BPP, cTarget->m_Force16BPP); + DDX_Check(pDX, IDC_WIREFRAME, cTarget->m_WireFrame); + DDX_Check(pDX, IDC_BLACKWHITE, cTarget->m_BlackWhite); + DDX_Check(pDX, IDC_USERGB565, cTarget->m_UseRGB565); + DDX_Check(pDX, IDC_LOCKSYSCOLORS, cTarget->m_LockSysColors); } BOOL CTabWindow::OnInitDialog() diff --git a/host/TabWindow.h b/host/TabWindow.h index b43de83..34d87f6 100644 --- a/host/TabWindow.h +++ b/host/TabWindow.h @@ -20,7 +20,7 @@ public: // Dialog Data //{{AFX_DATA(CTabWindow) - enum { IDD = IDD_TAB_WINDOW }; + enum { IDD = IDD_TAB_OUTPUT }; // NOTE: the ClassWizard will add data members here //}}AFX_DATA diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index 8bea190..c208288 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -53,6 +53,9 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_CDROMDriveType = FALSE; m_FontBypass = FALSE; m_BufferedIOFix = FALSE; + m_ZBufferClean = FALSE; + m_ZBuffer0Clean = FALSE; + m_ZBufferAlways = FALSE; m_UnNotify = FALSE; m_Windowize = TRUE; // default true !! m_HookDLLs = TRUE; // default true !! @@ -146,14 +149,12 @@ BOOL CTargetDlg::OnInitDialog() AfxEnableControlContainer(); CDialog::OnInitDialog(); m_tabdxTabCtrl.InsertItem(i++, _T("Main")); - m_tabdxTabCtrl.InsertItem(i++, _T("Window")); - m_tabdxTabCtrl.InsertItem(i++, _T("Color")); - m_tabdxTabCtrl.InsertItem(i++, _T("Mouse")); + m_tabdxTabCtrl.InsertItem(i++, _T("Video")); + m_tabdxTabCtrl.InsertItem(i++, _T("Input")); + m_tabdxTabCtrl.InsertItem(i++, _T("DirectX")); m_tabdxTabCtrl.InsertItem(i++, _T("Timing")); m_tabdxTabCtrl.InsertItem(i++, _T("Log")); - m_tabdxTabCtrl.InsertItem(i++, _T("DirectX")); - m_tabdxTabCtrl.InsertItem(i++, _T("OpenGL")); - m_tabdxTabCtrl.InsertItem(i++, _T("GDI")); + m_tabdxTabCtrl.InsertItem(i++, _T("Libs")); m_tabdxTabCtrl.InsertItem(i++, _T("Compat")); if (gbDebug) m_tabdxTabCtrl.InsertItem(i++, _T("Debug")); m_tabdxTabCtrl.Init(); diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 2b8dbed..1edded0 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -116,6 +116,9 @@ public: BOOL m_CDROMDriveType; BOOL m_FontBypass; BOOL m_BufferedIOFix; + BOOL m_ZBufferClean; + BOOL m_ZBuffer0Clean; + BOOL m_ZBufferAlways; BOOL m_SuppressIME; BOOL m_SetCompatibility; BOOL m_DisableHAL; diff --git a/host/dxTabCtrl.cpp b/host/dxTabCtrl.cpp index d31fe5d..7d9666b 100644 --- a/host/dxTabCtrl.cpp +++ b/host/dxTabCtrl.cpp @@ -30,7 +30,7 @@ #include "TabOpenGL.h" #include "TabCompat.h" #include "TabColor.h" -#include "TabGDI.h" +#include "TabSysLibs.h" #include "TabDebug.h" #ifdef _DEBUG @@ -49,13 +49,11 @@ CDXTabCtrl::CDXTabCtrl() int i=0; m_tabPages[i++]=new CTabProgram; m_tabPages[i++]=new CTabWindow; - m_tabPages[i++]=new CTabColor; - m_tabPages[i++]=new CTabMouse; + m_tabPages[i++]=new CTabInput; + m_tabPages[i++]=new CTabDirectX; m_tabPages[i++]=new CTabTiming; m_tabPages[i++]=new CTabLogs; - m_tabPages[i++]=new CTabDirectX; - m_tabPages[i++]=new CTabOpenGL; - m_tabPages[i++]=new CTabGDI; + m_tabPages[i++]=new CTabSysLibs; m_tabPages[i++]=new CTabCompat; if (gbDebug) m_tabPages[i++]=new CTabDebug; @@ -75,14 +73,12 @@ void CDXTabCtrl::Init() m_tabCurrent=0; m_tabPages[i++]->Create(IDD_TAB_PROGRAM, this); - m_tabPages[i++]->Create(IDD_TAB_WINDOW, this); - m_tabPages[i++]->Create(IDD_TAB_COLOR, this); - m_tabPages[i++]->Create(IDD_TAB_MOUSE, this); + m_tabPages[i++]->Create(IDD_TAB_OUTPUT, this); + m_tabPages[i++]->Create(IDD_TAB_INPUT, this); + m_tabPages[i++]->Create(IDD_TAB_DIRECTX, this); m_tabPages[i++]->Create(IDD_TAB_TIMING, this); m_tabPages[i++]->Create(IDD_TAB_LOG, this); - m_tabPages[i++]->Create(IDD_TAB_DIRECTX, this); - m_tabPages[i++]->Create(IDD_TAB_OPENGL, this); - m_tabPages[i++]->Create(IDD_TAB_GDI, this); + m_tabPages[i++]->Create(IDD_TAB_SYSLIBS, this); m_tabPages[i++]->Create(IDD_TAB_COMPAT, this); if (gbDebug) m_tabPages[i++]->Create(IDD_TAB_DEBUG, this); diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index 513f1d1..41cb995 100644 Binary files a/host/dxwndhost.aps and b/host/dxwndhost.aps differ diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index b2d2d5d..c4f757d 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -273,12 +273,12 @@ BEGIN CONTROL "Desktop work area",IDC_DESKTOPWORKAREA,"Button",BS_AUTORADIOBUTTON,170,210,95,10 CONTROL "Desktop",IDC_DESKTOPFULL,"Button",BS_AUTORADIOBUTTON,170,220,95,10 CONTROL "Hook child WindowProc",IDC_HOOKCHILDWIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,170,105,104,10 - CONTROL "Emulate Registry",IDC_EMULATEREGISTRY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,129,124,10 CONTROL "Fullscreen only",IDC_FULLSCREENONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,170,129,114,10 CONTROL "Filter offending messages",IDC_FILTERMESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,141,114,10 CONTROL "Peek all messages in queue",IDC_PEEKALLMESSAGES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,170,141,114,10 GROUPBOX "Position",IDC_STATIC,7,168,286,66 CONTROL "Keep aspect ratio",IDC_KEEPASPECTRATIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,179,115,10 + CONTROL "Hook OpenGL",IDC_HOOKOPENGL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,129,115,10 END IDD_TAB_LOG DIALOGEX 0, 0, 300, 240 @@ -324,22 +324,6 @@ BEGIN CONTROL "Blit from BackBuffer",IDC_BLITFROMBACKBUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,64,119,10 CONTROL "Suppress clipping",IDC_SUPPRESSCLIPPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,76,119,10 CONTROL "Palette update don't Blit",IDC_NOPALETTEUPDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,88,119,10 - LTEXT "DirectInput initial coord. and X,Y range",IDC_STATIC,19,201,146,9 - LTEXT "X",IDC_STATIC,13,216,9,9 - LTEXT "Y",IDC_STATIC,40,216,9,9 - LTEXT "(",IDC_STATIC,69,216,9,9 - LTEXT ",",IDC_STATIC,92,216,9,9 - LTEXT ")-(",IDC_STATIC,114,216,11,9 - LTEXT ",",IDC_STATIC,144,216,9,9 - LTEXT ")",IDC_STATIC,166,216,9,9 - EDITTEXT IDC_INITX,20,213,17,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_INITY,46,213,17,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT - EDITTEXT IDC_MINX,72,213,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT - EDITTEXT IDC_MINY,97,213,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT - EDITTEXT IDC_MAXX,124,213,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT - EDITTEXT IDC_MAXY,148,213,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT - CONTROL "DirectInput Hooking",IDC_HOOKDI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,183,214,97,12 - GROUPBOX "DirectInput",IDC_STATIC,7,189,286,44 CONTROL "Set AERO compatible mode",IDC_SETCOMPATIBILITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,100,109,12 CONTROL "Disable HAL support",IDC_DISABLEHAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,112,109,12 CONTROL "Forces HEL ",IDC_FORCESHEL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,124,109,12 @@ -350,22 +334,39 @@ BEGIN CONTROL "Fix ddraw ref counter",IDC_FIXREFCOUNTER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,172,123,12 END -IDD_TAB_MOUSE DIALOGEX 0, 0, 300, 240 +IDD_TAB_INPUT DIALOGEX 0, 0, 300, 240 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - CONTROL "Correct mouse position",IDC_MODIFYMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,38,113,12 - CONTROL "Hide Cursor",IDC_HIDEHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,15,117,10 + CONTROL "Correct mouse position",IDC_MODIFYMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,38,107,12 + CONTROL "Hide Cursor",IDC_HIDEHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,15,100,10 CONTROL "Intercept GDI Cursor Clipping",IDC_ENABLECLIPPING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,85,124,10 - GROUPBOX "Cursor handling",IDC_STATIC,7,3,140,144 - CONTROL "Keep cursor within window",IDC_KEEPCURSORWITHIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,61,123,10 - CONTROL "Force cursor clipping",IDC_CLIPCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,50,125,10 - CONTROL "Message processing",IDC_MESSAGEPROC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,96,115,10 - CONTROL "Keep cursor fixed",IDC_KEEPCURSORFIXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,73,123,10 - CONTROL "fix WM_NCHITTEST",IDC_FIXNCHITTEST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,107,115,10 - CONTROL "Show Cursor",IDC_SHOWHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,27,117,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,85,109,10 + GROUPBOX "Cursor handling",IDC_STATIC,7,3,129,134 + CONTROL "Keep cursor within window",IDC_KEEPCURSORWITHIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,61,108,10 + CONTROL "Force cursor clipping",IDC_CLIPCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,50,108,10 + CONTROL "Message processing",IDC_MESSAGEPROC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,96,103,10 + CONTROL "Keep cursor fixed",IDC_KEEPCURSORFIXED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,73,107,10 + CONTROL "fix WM_NCHITTEST",IDC_FIXNCHITTEST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,107,103,10 + CONTROL "Show Cursor",IDC_SHOWHWCURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,27,104,10 CONTROL "Slow down mouse polling",IDC_SLOW,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,118,103,12 + LTEXT "Initial coord.",IDC_STATIC,148,33,46,9 + LTEXT "X",IDC_STATIC,234,34,9,9 + LTEXT "Y",IDC_STATIC,261,34,9,9 + LTEXT "(",IDC_STATIC,187,53,9,9 + LTEXT ",",IDC_STATIC,210,53,9,9 + LTEXT ")-(",IDC_STATIC,232,53,11,9 + LTEXT ",",IDC_STATIC,262,53,9,9 + LTEXT ")",IDC_STATIC,284,53,9,9 + EDITTEXT IDC_INITX,241,31,17,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + EDITTEXT IDC_INITY,267,31,17,14,ES_AUTOHSCROLL | ES_NUMBER,WS_EX_RIGHT + EDITTEXT IDC_MINX,190,50,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT + EDITTEXT IDC_MINY,215,50,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT + EDITTEXT IDC_MAXX,242,50,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT + EDITTEXT IDC_MAXY,266,50,17,14,ES_AUTOHSCROLL,WS_EX_RIGHT + CONTROL "DirectInput Hooking",IDC_HOOKDI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,150,15,97,12 + GROUPBOX "DirectInput",IDC_STATIC,141,3,152,71 + LTEXT " X,Y range",IDC_STATIC,147,54,42,9 END IDD_TAB_TIMING DIALOGEX 0, 0, 300, 240 @@ -385,7 +386,7 @@ BEGIN CONTROL "Show time stretch",IDC_SHOWTIMESTRETCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,134,84,10 END -IDD_TAB_WINDOW DIALOGEX 0, 0, 300, 240 +IDD_TAB_OUTPUT DIALOGEX 0, 0, 300, 240 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN @@ -406,6 +407,16 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,160,125,10 CONTROL "Suppress child process creation",IDC_SUPPRESSCHILD, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,172,125,10 + GROUPBOX "Color management",IDC_STATIC,149,4,144,117 + CONTROL "Simulate 8BPP desktop",IDC_INIT8BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,16,115,10 + CONTROL "Simulate 16BPP desktop",IDC_INIT16BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,28,115,10 + CONTROL "Disable setting gamma ramp",IDC_DISABLEGAMMARAMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,88,119,10 + CONTROL "Forces 16BPP desktop",IDC_FORCE16BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,40,119,10 + CONTROL "3D Wireframe",IDC_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,136,96,10 + CONTROL "Simulate BW monitor",IDC_BLACKWHITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,52,96,10 + CONTROL "Set 16BPP RGB565 encoding",IDC_USERGB565,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,64,126,9 + CONTROL "Lock Sys Colors",IDC_LOCKSYSCOLORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,76,126,9 + GROUPBOX "3D effects",IDC_STATIC,149,122,144,111 END IDD_TAB_EMPTY DIALOGEX 0, 0, 300, 240 @@ -414,17 +425,6 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN END -IDD_TAB_OPENGL DIALOGEX 0, 0, 300, 240 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "OpenGL",IDC_STATIC,7,3,140,72 - LTEXT "Custom OpenGL library",IDC_STATIC,15,39,110,9 - CONTROL "Hook OpenGL",IDC_HOOKOPENGL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,15,115,10 - EDITTEXT IDC_OPENGLLIB,13,51,126,14,ES_AUTOHSCROLL - CONTROL "Force Hook",IDC_FORCEHOOKOPENGL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,25,115,10 -END - IDD_TAB_COMPAT DIALOGEX 0, 0, 300, 240 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -441,33 +441,24 @@ BEGIN CONTROL "Set CDROM Drive Type",IDC_CDROMDRIVETYPE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,152,109,12 CONTROL "Bypass font unsupported api",IDC_FONTBYPASS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,140,109,12 CONTROL "Fix buffered IO after Win98",IDC_BUFFEREDIOFIX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,128,109,12 + CONTROL "Clean ZBUFFER @1.0 fix",IDC_ZBUFFERCLEAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,116,109,12 + CONTROL "Clean ZBUFFER @0.0 fix",IDC_ZBUFFER0CLEAN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,104,109,12 END -IDD_TAB_GDI DIALOGEX 0, 0, 300, 240 +IDD_TAB_SYSLIBS DIALOGEX 0, 0, 300, 240 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - GROUPBOX "GDI Handling",IDC_STATIC,6,7,140,131 + GROUPBOX "GDI",IDC_STATIC,7,7,140,89 CONTROL "No GDI handling",IDC_GDINONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,17,26,67,10 CONTROL "Scaled GDI calls",IDC_HOOKGDI,"Button",BS_AUTORADIOBUTTON,17,38,66,10 CONTROL "Emulated Device Context",IDC_EMULATEDC,"Button",BS_AUTORADIOBUTTON,17,50,97,10 CONTROL "Map DC to Primary Surface",IDC_MAPGDITOPRIMARY,"Button",BS_AUTORADIOBUTTON,17,62,102,10 - CONTROL "Scale font parameters",IDC_FIXTEXTOUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,110,125,10 -END - -IDD_TAB_COLOR DIALOGEX 0, 0, 300, 240 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Color management",IDC_STATIC,7,3,144,230 - CONTROL "Simulate 8BPP desktop",IDC_INIT8BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,16,115,10 - CONTROL "Simulate 16BPP desktop",IDC_INIT16BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,28,115,10 - CONTROL "Disable setting gamma ramp",IDC_DISABLEGAMMARAMP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,40,119,10 - CONTROL "Forces 16BPP desktop",IDC_FORCE16BPP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,52,119,10 - CONTROL "3D Wireframe",IDC_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,64,96,10 - CONTROL "Simulate BW monitor",IDC_BLACKWHITE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,76,96,10 - CONTROL "Set 16BPP RGB565 encoding",IDC_USERGB565,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,88,126,9 - CONTROL "Lock Sys Colors",IDC_LOCKSYSCOLORS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,100,126,9 + CONTROL "Scale font parameters",IDC_FIXTEXTOUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,76,125,10 + GROUPBOX "OpenGL",IDC_STATIC,153,7,140,72 + LTEXT "Custom OpenGL library",IDC_STATIC,161,43,110,9 + EDITTEXT IDC_OPENGLLIB,159,55,126,14,ES_AUTOHSCROLL + CONTROL "Force Hook",IDC_FORCEHOOKOPENGL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,162,29,115,10 END IDD_TAB_DEBUG DIALOGEX 0, 0, 300, 240 @@ -490,6 +481,8 @@ BEGIN CONTROL "Suppress ddraw Flip",IDC_NODDRAWFLIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,36,127,10 CONTROL "Suppress GDI Blt",IDC_NOGDIBLT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,48,127,10 GROUPBOX "Visual flags",IDC_STATIC,153,7,140,139 + CONTROL "Emulate Registry",IDC_EMULATEREGISTRY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,84,124,10 + CONTROL "Force D3DCMP_ALWAYS setting ",IDC_ZBUFFERALWAYS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,164,127,10 END IDD_PALETTE DIALOGEX 0, 0, 169, 167 @@ -604,7 +597,7 @@ BEGIN BOTTOMMARGIN, 233 END - IDD_TAB_MOUSE, DIALOG + IDD_TAB_INPUT, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 293 @@ -620,7 +613,7 @@ BEGIN BOTTOMMARGIN, 233 END - IDD_TAB_WINDOW, DIALOG + IDD_TAB_OUTPUT, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 293 @@ -636,14 +629,6 @@ BEGIN BOTTOMMARGIN, 233 END - IDD_TAB_OPENGL, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 293 - TOPMARGIN, 7 - BOTTOMMARGIN, 233 - END - IDD_TAB_COMPAT, DIALOG BEGIN LEFTMARGIN, 7 @@ -652,7 +637,7 @@ BEGIN BOTTOMMARGIN, 233 END - IDD_TAB_GDI, DIALOG + IDD_TAB_SYSLIBS, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 293 @@ -660,14 +645,6 @@ BEGIN BOTTOMMARGIN, 233 END - IDD_TAB_COLOR, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 293 - TOPMARGIN, 3 - BOTTOMMARGIN, 233 - END - IDD_TAB_DEBUG, DIALOG BEGIN LEFTMARGIN, 7 diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index 0b20934..f78b449 100644 Binary files a/host/dxwndhost.vs2008.suo and b/host/dxwndhost.vs2008.suo differ diff --git a/host/dxwndhost.vs2008.vcproj b/host/dxwndhost.vs2008.vcproj index 70fff2c..21aad64 100644 --- a/host/dxwndhost.vs2008.vcproj +++ b/host/dxwndhost.vs2008.vcproj @@ -377,10 +377,6 @@ RelativePath=".\SystemTray.cpp" > - - @@ -393,10 +389,6 @@ RelativePath=".\TabDirectX.cpp" > - - @@ -406,11 +398,11 @@ > - - @@ -510,10 +498,6 @@ RelativePath=".\TabDirectX.h" > - - @@ -523,11 +507,11 @@ > m_CDROMDriveType) t->flags3 |= CDROMDRIVETYPE; if(dlg->m_FontBypass) t->flags3 |= FONTBYPASS; if(dlg->m_BufferedIOFix) t->flags3 |= BUFFEREDIOFIX; + if(dlg->m_ZBufferClean) t->flags4 |= ZBUFFERCLEAN; + if(dlg->m_ZBuffer0Clean) t->flags4 |= ZBUFFER0CLEAN; + if(dlg->m_ZBufferAlways) t->flags4 |= ZBUFFERALWAYS; if(dlg->m_SuppressIME) t->flags2 |= SUPPRESSIME; if(dlg->m_SuppressD3DExt) t->flags3 |= SUPPRESSD3DEXT; if(dlg->m_SetCompatibility) t->flags2 |= SETCOMPATIBILITY; @@ -308,6 +311,9 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_CDROMDriveType = t->flags3 & CDROMDRIVETYPE ? 1 : 0; dlg->m_FontBypass = t->flags3 & FONTBYPASS ? 1 : 0; dlg->m_BufferedIOFix = t->flags3 & BUFFEREDIOFIX ? 1 : 0; + dlg->m_ZBufferClean = t->flags4 & ZBUFFERCLEAN ? 1 : 0; + dlg->m_ZBuffer0Clean = t->flags4 & ZBUFFER0CLEAN ? 1 : 0; + dlg->m_ZBufferAlways = t->flags4 & ZBUFFERALWAYS ? 1 : 0; dlg->m_SaveLoad = t->flags & SAVELOAD ? 1 : 0; dlg->m_SlowDown = t->flags & SLOWDOWN ? 1 : 0; dlg->m_BlitFromBackBuffer = t->flags & BLITFROMBACKBUFFER ? 1 : 0;