From 9b28b7106a13e9e78fb2769411812eb2dc3c4983 Mon Sep 17 00:00:00 2001 From: gho tik Date: Tue, 2 Sep 2014 12:38:49 -0400 Subject: [PATCH] v2_02_58_src Former-commit-id: bfd8ee1c88c94f19238b0fcaed74711d61fd8935 --- Include/dxwnd.h | 3 +- build/dxwnd.dll | 4 +- build/dxwnd.exe | 2 +- build/dxwnd.ini | 73 ++++++++++++++++++++++- build/exports/Populous 3 (GOG - D3D).dxw | 26 ++++++++ build/exports/Populous 3 (GOG).dxw | 26 ++++++++ build/readme-relnotes.txt | 6 ++ dll/ddraw.cpp | 45 +++++++++++--- dll/dxhook.cpp | 22 ++----- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 108032 -> 120320 bytes dll/gdi32.cpp | 24 -------- dll/hd3d7.cpp | 58 ++++++------------ dll/syslibs.h | 2 - host/Resource.h | 5 +- host/TargetDlg.cpp | 4 +- host/TargetDlg.h | 2 +- host/dxwndhost.aps | Bin 170572 -> 170700 bytes host/dxwndhost.rc | 1 + host/dxwndhost.vs2008.suo | Bin 100352 -> 102912 bytes host/dxwndhostView.cpp | 8 ++- 21 files changed, 208 insertions(+), 105 deletions(-) create mode 100644 build/exports/Populous 3 (GOG - D3D).dxw create mode 100644 build/exports/Populous 3 (GOG).dxw diff --git a/Include/dxwnd.h b/Include/dxwnd.h index aaa14c2..15c7704 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -20,7 +20,8 @@ #define HANDLEEXCEPTIONS 0x00000040 // Handles exceptions: Div by 0 .... #define SAVELOAD 0x00000080 #define EMULATEBUFFER 0x00000100 -#define HANDLEDC 0x00000200 +//#define HANDLEDC 0x00000200 +#define AUTOMATIC 0x00000200 #define BLITFROMBACKBUFFER 0x00000400 #define SUPPRESSCLIPPING 0x00000800 #define AUTOREFRESH 0x00001000 diff --git a/build/dxwnd.dll b/build/dxwnd.dll index f81ec13..d1a1101 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4afdf78c8226b629ed5e70a1fe3d1e79ac6e8293bc1e2ac74b2257d59d10f6d7 -size 457728 +oid sha256:6470041921d673a2f604bd9a646a2462aba707cab537c42a5770a9cc981dbb0a +size 458240 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 7aea3db..8f9b3f1 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f349082b6ce4e630b509e9dc5903c05b296b7fa6b071c1885241ea5c4cf2ed7 +oid sha256:d9760719d7520e5a1b652d530fc2f32b8018842d333594f06241a692b3904652 size 535040 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index c84dc60..76b75c2 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -3124,12 +3124,81 @@ maxfps124=0 initts124=0 winver124=0 maxres124=-1 -title125=Red Storm: Rogue Spear +title125=Populous 3 (GOG - D3D) module125= opengllib125= -title126=Black Thorn +title126=Populous 3 (GOG) module126= opengllib126= +path125=D:\Games\Populous 3 (GOG)\D3DPopTB.exe +ver125=0 +coord125=0 +flag125=671105572 +flagg125=134217744 +flagh125=65556 +flagi125=4 +tflag125=6146 +initx125=0 +inity125=0 +minx125=0 +miny125=0 +maxx125=0 +maxy125=0 +posx125=50 +posy125=50 +sizx125=800 +sizy125=600 +maxfps125=0 +initts125=0 +winver125=0 +maxres125=-1 +path126=D:\Games\Populous 3 (GOG)\popTB.exe +ver126=0 +coord126=0 +flag126=671105572 +flagg126=1207959568 +flagh126=20 +flagi126=4 +tflag126=0 +initx126=0 +inity126=0 +minx126=0 +miny126=0 +maxx126=0 +maxy126=0 +posx126=50 +posy126=50 +sizx126=800 +sizy126=600 +maxfps126=0 +initts126=0 +winver126=0 +maxres126=-1 +title127=Thief 2 (GOG) +path127=D:\Games\Thief 2 (GOG)\thief2_no_ddfix.exe +module127= +opengllib127= +ver127=0 +coord127=0 +flag127=687865888 +flagg127=1207959552 +flagh127=65556 +flagi127=4 +tflag127=0 +initx127=0 +inity127=0 +minx127=0 +miny127=0 +maxx127=0 +maxy127=0 +posx127=50 +posy127=50 +sizx127=800 +sizy127=600 +maxfps127=0 +initts127=0 +winver127=0 +maxres127=-1 [window] posx=1129 posy=466 diff --git a/build/exports/Populous 3 (GOG - D3D).dxw b/build/exports/Populous 3 (GOG - D3D).dxw new file mode 100644 index 0000000..3bfd24c --- /dev/null +++ b/build/exports/Populous 3 (GOG - D3D).dxw @@ -0,0 +1,26 @@ +[target] +title0=Populous 3 (GOG - D3D) +path0=D:\Games\Populous 3 (GOG)\D3DPopTB.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671105572 +flagg0=134217744 +flagh0=65556 +flagi0=4 +tflag0=6146 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/exports/Populous 3 (GOG).dxw b/build/exports/Populous 3 (GOG).dxw new file mode 100644 index 0000000..762b140 --- /dev/null +++ b/build/exports/Populous 3 (GOG).dxw @@ -0,0 +1,26 @@ +[target] +title0=Populous 3 (GOG) +path0=D:\Games\Populous 3 (GOG)\popTB.exe +module0= +opengllib0= +ver0=0 +coord0=0 +flag0=671105572 +flagg0=1207959568 +flagh0=20 +flagi0=4 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 2ee4534..6aaf2f4 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -390,5 +390,11 @@ v2.02.57 fixed WS_NCCALCSIZE & WM_NCPAINT messages to ensure a proper window's border and size - fixed Black Thorn window problems fixed "Hide desktop background" flag +v2.02.58 +Added Automatic DirectX mode: not workink always, but should make it much easier to guess a proper surface setting. +Automatic mode allows dynamic mode change depending on the situation: it is necessary for Populous 3 D3D version. +fixed BltFast operation with SRC color key (often used to draw cursor from texures) directly to primary surface: this makes the cursor visible in Populous 3. +minor fixes on logging + diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 6221b0f..f8d8ea2 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -16,7 +16,6 @@ #include "dxhelper.h" #include "syslibs.h" - // DirectDraw API HRESULT WINAPI extDirectDrawCreate(GUID FAR *, LPDIRECTDRAW FAR *, IUnknown FAR *); HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *, LPDIRECTDRAW FAR *, REFIID, IUnknown FAR *); @@ -1393,6 +1392,8 @@ HRESULT WINAPI extDirectDrawCreate(GUID FAR *lpguid, LPDIRECTDRAW FAR *lplpdd, I OutTraceDDRAW("DirectDrawCreate: guid=%x(%s)\n", lpguid, ExplainGUID(lpguid)); + if (dxw.dwFlags1 & AUTOMATIC) dxw.dwFlags1 |= EMULATESURFACE; + if(!pDirectDrawCreate){ // not hooked yet.... HINSTANCE hinst; hinst = LoadLibrary("ddraw.dll"); @@ -1463,6 +1464,8 @@ HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid, OutTraceDDRAW("DirectDrawCreateEx: guid=%x(%s) refiid=%x\n", lpguid, ExplainGUID(lpguid), iid); + if (dxw.dwFlags1 & AUTOMATIC) dxw.dwFlags1 |= EMULATESURFACE; + // v2.1.70: auto-hooking (just in case...) if(!pDirectDrawCreateEx){ // not hooked yet.... HINSTANCE hinst; @@ -3031,6 +3034,10 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, } if(res){ BlitError(res, lpsrcrect, &destrect, __LINE__); + if(IsDebug) { + DescribeSurface(lpdds, 0, "[DST]" , __LINE__); + if (lpddssrc) DescribeSurface(lpddssrc, 0, "[SRC]" , __LINE__); // lpddssrc could be NULL!!! + } // Try to handle HDC lock concurrency.... if(res==DDERR_SURFACEBUSY){ (*pUnlockMethod(lpdds))(lpdds, NULL); @@ -3038,8 +3045,30 @@ HRESULT WINAPI sBlt(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdestrect, res= (*pBlt)(lpdds, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); if (res) BlitError(res, lpsrcrect, &destrect, __LINE__); } - - if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=0; + // Try to handle DDBLT_KEYSRC on primary surface + if((res==DDERR_INVALIDPARAMS) && (dwflags & DDBLT_KEYSRC)){ + // to do: handle possible situations with surface 2 / 4 / 7 types + DDSURFACEDESC ddsd; + LPDIRECTDRAWSURFACE lpddsTmp; + if (IsDebug) BlitTrace("KEYSRC", lpsrcrect, &destrect, __LINE__); + memset(&ddsd, 0, sizeof(ddsd)); + ddsd.dwSize = sizeof(ddsd); + lpddssrc->GetSurfaceDesc(&ddsd); + res=(*pCreateSurface1)(lpPrimaryDD, &ddsd, &lpddsTmp, NULL); + if(res) OutTraceE("CreateSurface: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__); + // copy background + res= (*pBlt)(lpddsTmp, lpsrcrect, lpdds, &destrect, DDBLT_WAIT, NULL); + if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__); + // overlay texture + res= (*pBlt)(lpddsTmp, lpsrcrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); + if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__); + // copy back to destination + res= (*pBlt)(lpdds, &destrect, lpddsTmp, lpsrcrect, DDBLT_WAIT, lpddbltfx); + if(res) OutTraceE("Blt: ERROR %x(%s) at %d", res, ExplainDDError(res), __LINE__); + if (res) BlitError(res, lpsrcrect, &destrect, __LINE__); + (*pReleaseS)(lpddsTmp); + } + if(dxw.dwFlags1 & SUPPRESSDXERRORS) res=DD_OK; } return res; @@ -3252,12 +3281,13 @@ HRESULT WINAPI extBltFast(LPDIRECTDRAWSURFACE lpdds, DWORD dwx, DWORD dwy, return 0; } + flags = 0; if(dwtrans & DDBLTFAST_WAIT) flags = DDBLT_WAIT; if(dwtrans & DDBLTFAST_DESTCOLORKEY) flags |= DDBLT_KEYDEST; if(dwtrans & DDBLTFAST_SRCCOLORKEY) flags |= DDBLT_KEYSRC; if ((dxw.dwFlags2 & FULLRECTBLT) && ToPrim){ - return sBlt("BltFast", lpdds, NULL, lpddssrc, lpsrcrect, flags, 0, FALSE); + return sBlt("BltFast", lpdds, NULL, lpddssrc, lpsrcrect, flags, NULL, FALSE); } destrect.left = dwx; @@ -3267,8 +3297,7 @@ HRESULT WINAPI extBltFast(LPDIRECTDRAWSURFACE lpdds, DWORD dwx, DWORD dwy, destrect.bottom = destrect.top + lpsrcrect->bottom - lpsrcrect->top; // avoid altering pointed values.... srcrect=*lpsrcrect; - //ret=lpdds->Blt(&destrect, lpddssrc, &srcrect, flags, 0); - ret=sBlt("BltFast", lpdds, &destrect, lpddssrc, &srcrect, flags, 0, FALSE); + ret=sBlt("BltFast", lpdds, &destrect, lpddssrc, &srcrect, flags, NULL, FALSE); } else{ // does it EVER goes through here? NULL is not a valid rect value for BltFast call.... @@ -3282,7 +3311,7 @@ HRESULT WINAPI extBltFast(LPDIRECTDRAWSURFACE lpdds, DWORD dwx, DWORD dwy, } destrect.right = destrect.left + ddsd.dwWidth; destrect.bottom = destrect.top + ddsd.dwHeight; - ret=sBlt("BltFast", lpdds, &destrect, lpddssrc, NULL, flags, 0, FALSE); + ret=sBlt("BltFast", lpdds, &destrect, lpddssrc, NULL, flags, NULL, FALSE); } return ret; @@ -4032,7 +4061,7 @@ HRESULT WINAPI extGetColorKey(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORK OutTraceE("GetColorKey: ERROR lpdds=%x flags=%x res=%x(%s)\n", lpdds, flags, res, ExplainDDError(res)); else OutTraceDDRAW("GetColorKey: colors=(L:%x,H:%x)\n", - lpdds, lpDDColorKey->dwColorSpaceLowValue, lpDDColorKey->dwColorSpaceHighValue); + lpDDColorKey->dwColorSpaceLowValue, lpDDColorKey->dwColorSpaceHighValue); return res; } diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index 737a64b..c3a0e36 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -37,7 +37,7 @@ CRITICAL_SECTION TraceCS; static char *FlagNames[32]={ "UNNOTIFY", "EMULATESURFACE", "CLIPCURSOR", "RESETPRIMARY", "HOOKDI", "MODIFYMOUSE", "HANDLEEXCEPTIONS", "SAVELOAD", - "EMULATEBUFFER", "HANDLEDC", "BLITFROMBACKBUFFER", "SUPPRESSCLIPPING", + "EMULATEBUFFER", "AUTOMATIC", "BLITFROMBACKBUFFER", "SUPPRESSCLIPPING", "AUTOREFRESH", "FIXWINFRAME", "HIDEHWCURSOR", "SLOWDOWN", "ENABLECLIPPING", "LOCKWINSTYLE", "MAPGDITOPRIMARY", "FIXTEXTOUT", "KEEPCURSORWITHIN", "USERGB565", "SUPPRESSDXERRORS", "PREVENTMAXIMIZE", @@ -713,18 +713,6 @@ static void dx_TogglePositionLock(HWND hwnd) } } -static void dx_ToggleDC() -{ - if(dxw.dwFlags1 & HANDLEDC){ - dxw.dwFlags1 &= ~HANDLEDC; - OutTrace("ToggleDC: HANDLEDC mode OFF\n"); - } - else { - dxw.dwFlags1 |= HANDLEDC; - OutTrace("ToggleDC: HANDLEDC mode ON\n"); - } -} - static void dx_ToggleFPS() { if(dxw.dwFlags2 & SHOWFPS){ @@ -997,9 +985,9 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp case VK_F9: dx_TogglePositionLock(hwnd); break; - case VK_F8: - dx_ToggleDC(); - break; + //case VK_F8: + // dx_ToggleDC(); + // break; case VK_F7: dx_ToggleFPS(); break; @@ -1482,6 +1470,8 @@ void HookInit(TARGETMAP *target, HWND hwnd) dxw.InitTarget(target); + if(dxw.dwFlags1 & AUTOMATIC) dxw.dwFlags1 |= EMULATESURFACE; // if AUTOMATIC, try this first! + if(hwnd){ // v2/02.32: skip this when in code injection mode. // v2.1.75: is it correct to set hWnd here? //dxw.SethWnd(hwnd); diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 8039986..de28892 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.57" +#define VERSION "2.02.58" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index ad61a0914a82d739a8655fed5cca03c19be6fce6..b8f058b88ef1e96f1c4e3519d7aa36997ee661b3 100644 GIT binary patch delta 18345 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 diff --git a/dll/gdi32.cpp b/dll/gdi32.cpp index 24d19b6..fb17f83 100644 --- a/dll/gdi32.cpp +++ b/dll/gdi32.cpp @@ -1042,30 +1042,6 @@ BOOL WINAPI extGDIDeleteDC(HDC hdc) return res; } -COLORREF WINAPI extSetTextColor(HDC hdc, COLORREF crColor) -{ - COLORREF res; - - if ((dxw.dwFlags1 & EMULATESURFACE) && (dxw.dwFlags1 & HANDLEDC) && (dxw.VirtualPixelFormat.dwRGBBitCount==8)) - crColor=GetMatchingColor(crColor); - - res=(*pGDISetTextColor)(hdc, crColor); - OutTraceDW("SetTextColor: color=%x res=%x%s\n", crColor, res, (res==CLR_INVALID)?"(CLR_INVALID)":""); - return res; -} - -COLORREF WINAPI extSetBkColor(HDC hdc, COLORREF crColor) -{ - COLORREF res; - - if ((dxw.dwFlags1 & EMULATESURFACE) && (dxw.dwFlags1 & HANDLEDC) && (dxw.VirtualPixelFormat.dwRGBBitCount==8)) - crColor=GetMatchingColor(crColor); - - res=(*pGDISetBkColor)(hdc, crColor); - OutTraceDW("SetBkColor: color=%x res=%x%s\n", crColor, res, (res==CLR_INVALID)?"(CLR_INVALID)":""); - return res; -} - HFONT WINAPI extCreateFont(int nHeight, int nWidth, int nEscapement, int nOrientation, int fnWeight, DWORD fdwItalic, DWORD fdwUnderline, DWORD fdwStrikeOut, DWORD fdwCharSet, DWORD fdwOutputPrecision, DWORD fdwClipPrecision, DWORD fdwQuality, diff --git a/dll/hd3d7.cpp b/dll/hd3d7.cpp index f8e9bf9..47be8e2 100644 --- a/dll/hd3d7.cpp +++ b/dll/hd3d7.cpp @@ -693,7 +693,12 @@ HRESULT WINAPI extCreateDevice2(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE res=(*pCreateDevice2)(lpd3d, Guid, lpdds, lplpd3dd); if(res) { OutTraceE("CreateDevice(D3D2) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - return res; + if((dxw.dwFlags1 & AUTOMATIC) && (dxw.dwFlags1 & EMULATESURFACE)) { + dxw.dwFlags1 &= ~EMULATESURFACE; + dxw.dwFlags1 |= LOCKEDSURFACE; + res=(*pCreateDevice2)(lpd3d, Guid, lpdds, lplpd3dd); + } + if (res) return res; } else OutTraceD3D("CreateDevice(D3D2): lpd3dd=%x\n", lpd3d, *lplpd3dd); @@ -702,33 +707,20 @@ HRESULT WINAPI extCreateDevice2(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE return res; } -const GUID IID_IDirect3DRampDevice; -const GUID IID_IDirect3DRGBDevice; - HRESULT WINAPI extCreateDevice3(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE4 lpdds, LPDIRECT3DDEVICE3 *lplpd3dd, LPUNKNOWN unk) { HRESULT res; - GUID IID_IDirect3DRGBDevice = {0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56}; - GUID IID_IDirect3DRampDevice = {0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56}; - GUID IID_IDirect3DMMXDevice = {0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29}; OutTraceD3D("CreateDevice(D3D3): d3d=%x GUID=%x(%s) lpdds=%x\n", lpd3d, Guid.Data1, ExplainGUID((GUID *)&Guid), lpdds); res=(*pCreateDevice3)(lpd3d, Guid, lpdds, lplpd3dd, unk); - //res=(*pCreateDevice3)(lpd3d, IID_IDirect3DMMXDevice, lpdds, lplpd3dd, unk); if(res) { OutTraceE("CreateDevice(D3D3) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - //if(1) { - // GUID IID_IDirect3DRGBDevice = {0xA4665C60,0x2673,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56}; - // GUID IID_IDirect3DRampDevice = {0xF2086B20,0x259F,0x11CF,0xA3,0x1A,0x00,0xAA,0x00,0xB9,0x33,0x56}; - // GUID IID_IDirect3DMMXDevice = {0x881949a1,0xd6f3,0x11d0,0x89,0xab,0x00,0xa0,0xc9,0x05,0x41,0x29}; - // res=(*pCreateDevice3)(lpd3d, IID_IDirect3DRGBDevice, lpdds, lplpd3dd, unk); - // if(res) OutTraceE("CreateDevice(IID_IDirect3DRGBDevice) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - // res=(*pCreateDevice3)(lpd3d, IID_IDirect3DRampDevice, lpdds, lplpd3dd, unk); - // if(res) OutTraceE("CreateDevice(IID_IDirect3DRampDevice) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - // res=(*pCreateDevice3)(lpd3d, IID_IDirect3DMMXDevice, lpdds, lplpd3dd, unk); - // if(res) OutTraceE("CreateDevice(IID_IDirect3DMMXDevice) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); - //} - return res; + if((dxw.dwFlags1 & AUTOMATIC) && (dxw.dwFlags1 & EMULATESURFACE)) { + dxw.dwFlags1 &= ~EMULATESURFACE; + dxw.dwFlags1 |= LOCKEDSURFACE; + res=(*pCreateDevice3)(lpd3d, Guid, lpdds, lplpd3dd, unk); + } + if (res) return res; } HookDirect3DDevice((void **)lplpd3dd, 3); @@ -744,6 +736,12 @@ HRESULT WINAPI extCreateDevice7(void *lpd3d, REFCLSID Guid, LPDIRECTDRAWSURFACE7 res=(*pCreateDevice7)(lpd3d, Guid, lpdds, lplpd3dd); if(res) { OutTraceE("CreateDevice(D3D7) ERROR: err=%x(%s) at %d\n", res, ExplainDDError(res), __LINE__); + if((dxw.dwFlags1 & AUTOMATIC) && (dxw.dwFlags1 & EMULATESURFACE)) { + dxw.dwFlags1 &= ~EMULATESURFACE; + dxw.dwFlags1 |= LOCKEDSURFACE; + res=(*pCreateDevice7)(lpd3d, Guid, lpdds, lplpd3dd); + } + if (res) return res; return res; } @@ -773,26 +771,6 @@ HRESULT WINAPI extD3DGetCaps(void *d3dd, LPD3DDEVICEDESC lpd3dd ,LPD3DDEVICEDESC return res; } -#if 0 -//HRESULT WINAPI extSwapTextureHandles(void *d3dd, LPDIRECT3DTEXTURE,LPDIRECT3DTEXTURE) -//HRESULT WINAPI extCreateExecuteBuffer(void *d3dd, LPD3DEXECUTEBUFFERDESC,LPDIRECT3DEXECUTEBUFFER*,IUnknown*) -//HRESULT WINAPI extGetStats(void *d3dd, LPD3DSTATS) -HRESULT WINAPI extExecute(void *d3dd, LPDIRECT3DEXECUTEBUFFER lpd3dEB, LPDIRECT3DVIEWPORT lpd3dVP, DWORD dwFlags) -HRESULT WINAPI extAddViewport(void *d3dd, LPDIRECT3DVIEWPORT) -HRESULT WINAPI extDeleteViewport(void *d3dd,HIS_ LPDIRECT3DVIEWPORT) -HRESULT WINAPI extNextViewport(void *d3dd, LPDIRECT3DVIEWPORT,LPDIRECT3DVIEWPORT*,DWORD) -HRESULT WINAPI extPick(void *d3dd, LPDIRECT3DEXECUTEBUFFER,LPDIRECT3DVIEWPORT,DWORD,LPD3DRECT) -HRESULT WINAPI extGetPickRecords(void *d3dd, LPDWORD,LPD3DPICKRECORD) -HRESULT WINAPI extEnumTextureFormats(void *d3dd, LPD3DENUMTEXTUREFORMATSCALLBACK,LPVOID) -HRESULT WINAPI extCreateMatrix(void *d3dd, LPD3DMATRIXHANDLE) -HRESULT WINAPI extSetMatrix(void *d3dd, D3DMATRIXHANDLE,const LPD3DMATRIX) -HRESULT WINAPI extGetMatrix(void *d3dd, D3DMATRIXHANDLE,LPD3DMATRIX) -HRESULT WINAPI extDeleteMatrix(void *d3dd, D3DMATRIXHANDLE) -HRESULT WINAPI extBeginScene(void *d3dd) -HRESULT WINAPI extEndScene(void *d3dd) -HRESULT WINAPI extGetDirect3D(void *d3dd, LPDIRECT3D*) -#endif - char *ExplainRenderstateValue(DWORD Value) { char *p; diff --git a/dll/syslibs.h b/dll/syslibs.h index 086fb8a..57bbafe 100644 --- a/dll/syslibs.h +++ b/dll/syslibs.h @@ -450,9 +450,7 @@ extern BOOL WINAPI extGDIRestoreDC(HDC, int); extern int WINAPI extGDISaveDC(HDC); extern BOOL WINAPI extScaleWindowExtEx(HDC, int, int, int, int, LPSIZE); extern HPALETTE WINAPI extSelectPalette(HDC, HPALETTE, BOOL); -extern COLORREF WINAPI extSetBkColor(HDC, COLORREF); extern BOOL WINAPI extSetDeviceGammaRamp(HDC, LPVOID); -extern COLORREF WINAPI extSetTextColor(HDC, COLORREF); extern BOOL WINAPI extGDIStretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); extern int WINAPI extStretchDIBits(HDC, int, int, int, int, int, int, int, int, const VOID *, const BITMAPINFO *, UINT, DWORD); extern BOOL WINAPI extDDStretchBlt(HDC, int, int, int, int, HDC, int, int, int, int, DWORD); diff --git a/host/Resource.h b/host/Resource.h index 34d2ea9..73a9d8a 100644 --- a/host/Resource.h +++ b/host/Resource.h @@ -54,8 +54,9 @@ #define IDC_EMULATEBUFFER 1009 #define IDC_LOCKEDSURFACE 1010 #define IDC_EMULATESURFACE 1011 -#define IDC_MODIFYMOUSE 1012 -#define IDC_HANDLEDC 1014 +#define IDC_AUTOMATIC 1012 +#define IDC_MODIFYMOUSE 1013 +//#define IDC_HANDLEDC 1014 #define IDC_SAVELOAD 1015 #define IDC_INITX 1016 #define IDC_INITY 1017 diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index c8e68ff..c9532aa 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -22,7 +22,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) //{{AFX_DATA_INIT(CTargetDlg) m_DXVersion = 0; m_Coordinates = 0; - m_DxEmulationMode = 3; // default: EMULATESURFACE + m_DxEmulationMode = 4; // default: AUTOMATIC m_DCEmulationMode = 0; // default: no emulation m_HookDI = FALSE; m_ModifyMouse = TRUE; // default true !! @@ -34,7 +34,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_OutD3DTrace = FALSE; m_OutDDRAWTrace = FALSE; m_DXProxed = FALSE; - m_HandleDC = FALSE; + //m_HandleDC = FALSE; m_HandleExceptions = FALSE; m_SuppressIME = FALSE; m_SuppressD3DExt = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index 842dc7a..ee22b11 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -42,7 +42,7 @@ public: BOOL m_ImportTable; BOOL m_RegistryOp; BOOL m_TraceHooks; - BOOL m_HandleDC; + //BOOL m_HandleDC; BOOL m_UnNotify; BOOL m_Windowize; BOOL m_HookDLLs; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index 09fb942656a5e2c22e2b8ae6786e111f504ce5cb..0e149a6dfafa465db4d887ea86fe64af1d624b71 100644 GIT binary patch delta 2839 zcmZuxZBSI_6+Y)(SU$uRl;uMZ(4r)m*xdzWY1OiFm$+eJ*JV*abcxW^jC|~($wWv3 zV;Wn-ge-ZDFHKTo)gSzdakgzTlT59DI{lCY+EkO4CN^nPtVTgWZ6*yp@4a`C2Jg(> zbI$WT=bZPPz4xB~dE)tBB!(5UJItWx*Cnz@-GLJ&LQc0g7y;rB--Pg%qdT>36D-4c=EFhoY!)5sa#_ zv)=3W_%uy1jH#Hfu13|A!XMSx8wKp}r`;MduUQ#s@w> z$5W-E#W1d-5(w1#9X`Jbm%!in=rZ$;k5!Ut1Y}p0DuYkvz_}Uh77JWbVcO4}*lw}H z-|wRH)He8(m#3PSf2Oj2M{QNW>!_=hi?v%y;2!||c%!*jMy2piP2_Vl1bog~zqWt7 z#SWjVgglu%y1z~iYPXcZzf@eQcX+)4XT3{~WVc#iLWOG`+njPkI(YeR4Zo|}S?i|9 z#iw#sNc*>5XnT!93s6xTT;bn7k&Rcm`$Qgo!P`${;58mJn=`MgVs#ceW?i+`p$sPZ zF?0InDV25AD9(Bd9m?xbH*L3B;fBh1=V3OusbN(vw_A3#6~Q#{6(`eihA&B5g}3;z zv~<3!(a1e%M!c;??P*E;r)e3Bi)@>{UNxx<{zJ?v{F0wbGc!OwaxjM>@~=+jGKT!M z7ju{a`QpATjEU5xa|d4Gm+KFs`uaqkZy=58@>4s0rh7Y^PU~L&&MUfCu&Yn^&hFZx zd%1xPy0eblb;my{P=H`@Tku~BdW_@$f z>Zg))2q}?whIVd5h@@Y5Jd+j2^MUK@FjrtAmh$QAg{;cO^CoYxfP-gD*_aZDxTlP` zysHKDD-M{~2nN^wQ}wkNi$(h3`jRzx};LHajaWA^wuTIYYxv7{w`uo5Z*Q zwP=!I7e6#%5gJo z62oFD%!(+B%nIIpVW|=5f5^Vbb1r0yCk9y>+whSX7-Tsteq6jk7AM8XAj`!M#TU{v zi^VUId0RXv%_&hWja#%!Gb~;p!>(TC16P;F7RLinu0)hO;@V48vh{0W;$-)uSSM|A zqNtHJm?%1=jb9=Lq*a!RH^|}#VuVwAFhg9EaDA3A9budChhpmyYIk0Q$QV-HD0-?e zbM*ub(&Rzfn}KdrpO56^1UiOx4JQE%i80ElXbwbWv?RK|DQgQx`Iv=#GC=XuC|-RE zGYf_(C?AN5jrSDCzmB5w7-q&vaq63N+S8aBD}!-y=4Be>lo*rdT`?uiv`9J1a#zBa z(W;B@S@p+aE6MPP2uTwbgJcXD1x)m=VVQ9mbd-EM6aA%3J7m))rY~mMJ6{+qEqIj{B29v>8;tUDsDH|iRvh7njiiz$4 zwVY+%pCZ-oij*Oi>+mMau2L3WAWJ2rX=RijT)@jRmqdul81iY7ewrlKLfEgx8Nya3 zAC##^y6JO4mxYFmUK_}v)yve3XK8&0DYcTGo*`lV3CnGP=c1`*lT4YPO5Z$q;82ub zx_}=dz58&KPg}q@5+CzC6MGL+&yN{EpBST_*e9mQ81e^bk{5{TBi(sneT8NH4_&J@ A)c^nh delta 2680 zcmZuwdr*|u6+ibbEG&;@c`Unt28q74oR((hm$ZF8?>v{cKXO4PG{OdD}AVGjEUB!P>n*wN2b%#bMJoN#u?a| z{eI{Ce!p|>xo5u}JeD?iG_BibAN(*DFs2 z45>V95MKCmoVe$#O8AT9=4s)tPxHFquW_S(oYxJ1ixc;p=k>r@(U63E2kHk-Nr#t?x+%e9Cs+;7=URN1h79Dx{+yC*kwlEY4 zMH;JH0}DcOSzcEKTv4hdwMIWprnc&JdEuW*kYmxn)se+bs-O}+SG=#KIvm#gErE!n z-7ff-qMNFh_~jHjIZUK5*`4_#dQo$|k8Y||5ByuW?bF!Rz4p9J*`r+1<#0``vpXGM zsEXP^FsR9g(!6k89I!hIZYWLNHc%H1HL4jrE*KT3?FDnjlp3br%uqb=Wt=lQdCK6X zu;x4YIEbz9%rM;o5Kk>Fvd|cw3b?H@yZGdt4AUJwKD^W{2J+3KC*LVf<)=Hp0??|% zOE^yr7$AL3DL&5Cwv7?XdlIP>%NI{k#$ zGpl~DlVZVhBYJ`FJK0=3yZRgPl>JKduP)W&4`WwX2lWbeR)p7nt_#DlP{%?;U}9k1 zqjABU#b?39gm~*khq!;e(dL)pnM6$O*UyQYQ>#qU>@FAV$(efN1~E6P%c3-zE;dJ} z#})D2Xqq^h$lfPyJX)k{Bb0eI=owogR&AKA_iGjh6LE{UoQPXR$wu8HiZ`Z<=QbME z%VPUCZZgXsZ;PLrEZ#DgwTqXw{6sx>$KHKmm5JFz=JuKFa?HJ5q{J@nTxJtHbF7x~ zdB7Pk$QHJ2XDo=XvDp9m+8&9uo!wMmzMBG20$4A2p%}ek!ySxyg?F@6{Bbx{VKbOuB|J;pqU9d`vL;Igo#2PHuo>3CQ~02T6^W9YD>>;q zZa#`1WU(|cc=J8+>PV*O9Df`OlbBVU8Q&&$j#x$8ts2b8W2vHR#4HZq`hg-B-7b|F z>%3jc6mjB?J2v}nWg5+dD>(ZFPwGUci9Nx!CTuscZCnfE6%(7smjsSaOJds?UmU^x z$!vLHz-LTPw+`=vBsoPU`yt>GR{d&B97q3x3Imtj9I3G{b&gGa7QF`}0 zTKDq%_{op)AwqTt>-O?u){AQ;Ov61AHsQ}CtiV$eQt=B3?U*SD`td=*i<0GQLAAv2 zlXtK~P|GX-#V(2CfFDTgw%}=rqZYg_ahDaXy@V&T@gYJM!Ma{5A9Y}dq|X;(S1*5@ zCE*a!bek~(Q*SN9|J1UA*~2vag?dIyGtrl+h1+bFRAck~830af*vE?(e74-MnWnT| zTW9D=lXV-w(X9-NUStJx`YHKvk6|`XY2I~!;f({VAVr#c2WZ*>R*)={Hgvy67ny|( z5~?sNVH5Tc%;@~e=$biY*Hj#m?mQfmV8d*rUGzP`apD19km96K4pwkX_wx9V7armI zVsfW!H(bv#6ygQ51)wT6{trQJ!$o1Gxfbp>wB3>Yv}E9;t}GW?%ZLN+O5*>qWvU3 z^!6Nj#n5vm>3w7z+-2zblk}ye@7T@p>TWvoBBu-+-k`k!MhQ#@_s~tcNa`ddh)3Sw GMgIr%r2pgq diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index 7412695..5060d65 100644 --- a/host/dxwndhost.rc +++ b/host/dxwndhost.rc @@ -327,6 +327,7 @@ BEGIN CONTROL "Primary Buffer",IDC_EMULATEBUFFER,"Button",BS_AUTORADIOBUTTON,14,132,67,12 CONTROL "Locked Surface",IDC_LOCKEDSURFACE,"Button",BS_AUTORADIOBUTTON,14,144,67,12 CONTROL "Primary Surface",IDC_EMULATESURFACE,"Button",BS_AUTORADIOBUTTON,14,156,77,12 + CONTROL "Automatic mode",IDC_AUTOMATIC,"Button",BS_AUTORADIOBUTTON,14,168,77,12 GROUPBOX "DirectX Version Hook",IDC_STATIC,6,3,98,103,WS_GROUP GROUPBOX "Emulation",IDC_STATIC,7,109,98,80,WS_GROUP CONTROL "Auto Primary Surface Refresh",IDC_AUTOREFRESH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,118,16,126,9 diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index a74b1529f9dd51ae0c39036199520346dedbafe0..2352abcdd3577016345e6aec763b22ef52b6fa02 100644 GIT binary patch delta 4534 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 diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index 753877e..ddcdda3 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -129,6 +129,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) case 1: t->flags |= EMULATEBUFFER; break; case 2: t->flags |= LOCKEDSURFACE; break; case 3: t->flags |= EMULATESURFACE; break; + case 4: t->flags |= AUTOMATIC; break; } t->flags2 &= ~GDISTRETCHED; t->flags &= ~MAPGDITOPRIMARY; @@ -154,7 +155,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_ImportTable) t->tflags |= OUTIMPORTTABLE; if(dlg->m_RegistryOp) t->tflags |= OUTREGISTRY; if(dlg->m_TraceHooks) t->tflags |= TRACEHOOKS; - if(dlg->m_HandleDC) t->flags |= HANDLEDC; + //if(dlg->m_HandleDC) t->flags |= HANDLEDC; if(dlg->m_HandleExceptions) t->flags |= HANDLEEXCEPTIONS; if(dlg->m_LimitResources) t->flags2 |= LIMITRESOURCES; if(dlg->m_CDROMDriveType) t->flags3 |= CDROMDRIVETYPE; @@ -287,6 +288,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) if(t->flags & EMULATEBUFFER) dlg->m_DxEmulationMode = 1; if(t->flags & LOCKEDSURFACE) dlg->m_DxEmulationMode = 2; if(t->flags & EMULATESURFACE) dlg->m_DxEmulationMode = 3; + if(t->flags & AUTOMATIC) dlg->m_DxEmulationMode = 4; dlg->m_DCEmulationMode = 0; if(t->flags2 & GDISTRETCHED) dlg->m_DCEmulationMode = 1; @@ -308,7 +310,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_ImportTable = t->tflags & OUTIMPORTTABLE ? 1 : 0; dlg->m_RegistryOp = t->tflags & OUTREGISTRY ? 1 : 0; dlg->m_TraceHooks = t->tflags & TRACEHOOKS ? 1 : 0; - dlg->m_HandleDC = t->flags & HANDLEDC ? 1 : 0; + //dlg->m_HandleDC = t->flags & HANDLEDC ? 1 : 0; dlg->m_HandleExceptions = t->flags & HANDLEEXCEPTIONS ? 1 : 0; dlg->m_SuppressIME = t->flags2 & SUPPRESSIME ? 1 : 0; dlg->m_SuppressD3DExt = t->flags3 & SUPPRESSD3DEXT ? 1 : 0; @@ -1150,7 +1152,7 @@ void CDxwndhostView::OnAdd() //dlg.m_Coordinates = 0; //dlg.m_MaxX = 0; //639; //dlg.m_MaxY = 0; //479; - //dlg.m_DxEmulationMode = 3; // defaulting to EMULATIONMODE + //dlg.m_DxEmulationMode = 4; // defaulting to AUTOMATIC for(i = 0; i < MAXTARGETS; i ++) if(!TargetMaps[i].path[0]) break; if(i>=MAXTARGETS){ MessageBoxEx(0, "Maximum entries number reached.\nDelete some entry to add a new one.", "Warning", MB_OK | MB_ICONEXCLAMATION, NULL);