mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_03_64_src
Former-commit-id: 218e592943c3d715cca0665549a72012eacbd70e
This commit is contained in:
parent
fc82f0a055
commit
ae96386781
@ -251,6 +251,7 @@
|
||||
// DxWnd host app data to be passed to the hook callback
|
||||
typedef struct TARGETMAP
|
||||
{
|
||||
int index;
|
||||
char path[MAX_PATH+1];
|
||||
char module[60+1];
|
||||
char OpenGLLib[20+1];
|
||||
@ -264,7 +265,8 @@ typedef struct TARGETMAP
|
||||
int flags6;
|
||||
int flags7;
|
||||
int flags8;
|
||||
int tflags;
|
||||
int tflags; // trace flags (cleared when exported/imported)
|
||||
int dflags; // debug flags (cleared when exported/imported)
|
||||
short posx;
|
||||
short posy;
|
||||
short sizx;
|
||||
@ -281,6 +283,7 @@ typedef struct
|
||||
{
|
||||
short Status;
|
||||
short TaskIdx;
|
||||
short OrigIdx;
|
||||
short IsFullScreen;
|
||||
short Width, Height;
|
||||
short ColorDepth;
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:537e48142d49baefcb73703effbe1cbdf7577aa64e9326adac8f4fe6dfe99958
|
||||
size 644096
|
||||
oid sha256:73656cf90cf6d5ad5a6c62da1bd48b14b7d0ff353dca4e04d87fb50445dfe178
|
||||
size 646656
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9f4fdbf4310c5fd473a72b37e4fcc5c30f5f12f4537a238748890b2b9ce38b43
|
||||
oid sha256:41b726e8f958c18372ccc7f6fbc5b53b3a2293c2298e5933dbb0b4b0f6fe4fba
|
||||
size 557056
|
||||
|
@ -27,9 +27,3 @@ notes0=
|
||||
flagj0=128
|
||||
winver0=0
|
||||
maxres0=0
|
||||
registry0=
|
||||
flagk0=65536
|
||||
flagl0=0
|
||||
flagm0=0
|
||||
swapeffect0=0
|
||||
maxddinterface0=7
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6f84be0f5c6643d8c83967d60f343b4d1a61f278287206ee56fbcb2991001d34
|
||||
oid sha256:fa29fd8235aa5d5495b9c746b2136881651c5b6b20eff49fd3b8066af4b02d32
|
||||
size 54784
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b1e79093e9a141f7936c8c8cd27ac2dc36196683294a81f21e5f84a5f5fcc5e0
|
||||
oid sha256:56c095298d34bb02e98bacc0a6003ad912dc590311f9b83e0e855e5da5109ec2
|
||||
size 55808
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:73324ad26838bc56f13cdcb1e23c1e122f9a6bb96cb3fdc3f13ad47f249ecb8e
|
||||
oid sha256:cdec1b4fb66b410c4d83bad4c9d12d9195bb1b1dc4dba15a11123d320bd09fc4
|
||||
size 56320
|
||||
|
@ -1089,3 +1089,8 @@ fix: saved config changes in case DxWnd is restarted for acquiring admin caps
|
||||
fix: duplicated several function pointers in D3D8/9 wrappers: fix some GTA3 crashes and reduce the need to suppress Reset operation
|
||||
add: flag "Widechar program vs. ANSI" to replace default ansi calls with widechar equivalents: fixes "Tomb Raider Anniversary" mouse problems
|
||||
|
||||
v2.03.64
|
||||
fix: completed the hook pointers separation per COM interface version: this is of growing importance on Win10 because of the system updates (shims?)
|
||||
fix: fixed incoherences in task refences of the GUI
|
||||
fix: recovered task kill on WinXP
|
||||
fix: updated RedrawWindow, now allows better handling of "Galapagos" pause screen
|
Binary file not shown.
169
dll/ddraw.cpp
169
dll/ddraw.cpp
@ -134,7 +134,11 @@ HRESULT WINAPI extDeleteAttachedSurface2(LPDIRECTDRAWSURFACE, DWORD, LPDIRECTDR
|
||||
HRESULT WINAPI extDeleteAttachedSurface3(LPDIRECTDRAWSURFACE, DWORD, LPDIRECTDRAWSURFACE);
|
||||
HRESULT WINAPI extDeleteAttachedSurface4(LPDIRECTDRAWSURFACE, DWORD, LPDIRECTDRAWSURFACE);
|
||||
HRESULT WINAPI extDeleteAttachedSurface7(LPDIRECTDRAWSURFACE, DWORD, LPDIRECTDRAWSURFACE);
|
||||
HRESULT WINAPI extEnumAttachedSurfaces(LPDIRECTDRAWSURFACE, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
HRESULT WINAPI extEnumAttachedSurfaces1(LPDIRECTDRAWSURFACE, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
HRESULT WINAPI extEnumAttachedSurfaces2(LPDIRECTDRAWSURFACE, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
HRESULT WINAPI extEnumAttachedSurfaces3(LPDIRECTDRAWSURFACE, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
HRESULT WINAPI extEnumAttachedSurfaces4(LPDIRECTDRAWSURFACE, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
HRESULT WINAPI extEnumAttachedSurfaces7(LPDIRECTDRAWSURFACE, LPVOID, LPDDENUMSURFACESCALLBACK);
|
||||
HRESULT WINAPI extFlip1(LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE, DWORD);
|
||||
HRESULT WINAPI extFlip2(LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE, DWORD);
|
||||
HRESULT WINAPI extFlip3(LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE, DWORD);
|
||||
@ -190,8 +194,16 @@ HRESULT WINAPI extReleaseDC2(LPDIRECTDRAWSURFACE, HDC);
|
||||
HRESULT WINAPI extReleaseDC3(LPDIRECTDRAWSURFACE, HDC);
|
||||
HRESULT WINAPI extReleaseDC4(LPDIRECTDRAWSURFACE, HDC);
|
||||
HRESULT WINAPI extReleaseDC7(LPDIRECTDRAWSURFACE, HDC);
|
||||
HRESULT WINAPI extSetClipper(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI extSetColorKey(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI extSetClipper1(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI extSetClipper2(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI extSetClipper3(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI extSetClipper4(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI extSetClipper7(LPDIRECTDRAWSURFACE, LPDIRECTDRAWCLIPPER);
|
||||
HRESULT WINAPI extSetColorKey1(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI extSetColorKey2(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI extSetColorKey3(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI extSetColorKey4(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI extSetColorKey7(LPDIRECTDRAWSURFACE, DWORD, LPDDCOLORKEY);
|
||||
HRESULT WINAPI extSetPalette1(LPDIRECTDRAWSURFACE, LPDIRECTDRAWPALETTE);
|
||||
HRESULT WINAPI extSetPalette2(LPDIRECTDRAWSURFACE, LPDIRECTDRAWPALETTE);
|
||||
HRESULT WINAPI extSetPalette3(LPDIRECTDRAWSURFACE, LPDIRECTDRAWPALETTE);
|
||||
@ -286,7 +298,7 @@ Blt_Type pBlt1, pBlt2, pBlt3, pBlt4, pBlt7;
|
||||
//BltBatch_Type pBltBatch;
|
||||
BltFast_Type pBltFast1, pBltFast2, pBltFast3, pBltFast4, pBltFast7;
|
||||
DeleteAttachedSurface_Type pDeleteAttachedSurface1, pDeleteAttachedSurface2, pDeleteAttachedSurface3, pDeleteAttachedSurface4, pDeleteAttachedSurface7;
|
||||
EnumAttachedSurfaces_Type pEnumAttachedSurfaces;
|
||||
EnumAttachedSurfaces_Type pEnumAttachedSurfaces1, pEnumAttachedSurfaces2, pEnumAttachedSurfaces3, pEnumAttachedSurfaces4, pEnumAttachedSurfaces7;
|
||||
EnumOverlayZOrders_Type pEnumOverlayZOrders;
|
||||
Flip_Type pFlip1, pFlip2, pFlip3, pFlip4, pFlip7;
|
||||
GetAttachedSurface_Type pGetAttachedSurface1, pGetAttachedSurface2, pGetAttachedSurface3, pGetAttachedSurface4, pGetAttachedSurface7;
|
||||
@ -307,8 +319,8 @@ Lock_Type pLock1, pLock2, pLock3, pLock4, pLock7;
|
||||
IsLost_Type pIsLost;
|
||||
ReleaseDC_Type pReleaseDC1, pReleaseDC2, pReleaseDC3, pReleaseDC4, pReleaseDC7;
|
||||
Restore_Type pRestore;
|
||||
SetClipper_Type pSetClipper;
|
||||
SetColorKey_Type pSetColorKey;
|
||||
SetClipper_Type pSetClipper1, pSetClipper2, pSetClipper3, pSetClipper4, pSetClipper7;
|
||||
SetColorKey_Type pSetColorKey1, pSetColorKey2, pSetColorKey3, pSetColorKey4, pSetColorKey7;
|
||||
SetOverlayPosition_Type pSetOverlayPosition;
|
||||
SetPalette_Type pSetPalette1, pSetPalette2, pSetPalette3, pSetPalette4, pSetPalette7;
|
||||
Unlock1_Type pUnlock1, pUnlock2, pUnlock3;
|
||||
@ -1149,11 +1161,8 @@ static void HookDDClipper(LPDIRECTDRAWCLIPPER FAR* lplpDDClipper)
|
||||
{
|
||||
OutTraceDW("Hooking directdraw clipper dd=%x\n", *lplpDDClipper);
|
||||
|
||||
// IDirectDrawClipper::Release
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 8), extReleaseC, (void **)&pReleaseC, "Release(C)");
|
||||
// IDirectDrawClipper::GetClipList
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 12), extGetClipList, (void **)&pGetClipList, "GetClipList(C)");
|
||||
// IDirectDrawClipper::SetHWnd
|
||||
SetHook((void *)(**(DWORD **)lplpDDClipper + 32), extSetHWnd, (void **)&pSetHWnd, "SetHWnd(C)");
|
||||
}
|
||||
|
||||
@ -1162,9 +1171,7 @@ static void HookDDPalette(LPDIRECTDRAWPALETTE FAR* lplpDDPalette)
|
||||
OutTraceDW("Hooking directdraw palette dd=%x\n", *lplpDDPalette);
|
||||
|
||||
/*** IDirectDrawPalette methods ***/
|
||||
// IDirectDrawPalette::Release
|
||||
SetHook((void *)(**(DWORD **)lplpDDPalette + 8), extReleaseP, (void **)&pReleaseP, "Release(P)");
|
||||
// IDirectDrawPalette::SetEntries
|
||||
SetHook((void *)(**(DWORD **)lplpDDPalette + 24), extSetEntries, (void **)&pSetEntries, "SetEntries(P)");
|
||||
}
|
||||
|
||||
@ -1176,8 +1183,6 @@ static void HookDDSurface(LPDIRECTDRAWSURFACE *lplpdds, int dxversion, BOOL isPr
|
||||
OutTraceDW("Hooking surface dds=%x dxversion=%d prim=%x thread_id=%x\n",
|
||||
*lplpdds, dxversion, isPrim, GetCurrentThreadId());
|
||||
|
||||
// IDirectDrawSurface::EnumAttachedSurfaces
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 36), extEnumAttachedSurfaces, (void **)&pEnumAttachedSurfaces, "EnumAttachedSurfaces(S)");
|
||||
switch(dxversion) {
|
||||
case 1:
|
||||
SetHook((void *)(**(DWORD **)lplpdds), extQueryInterfaceS1, (void **)&pQueryInterfaceS1, "QueryInterface(S1)");
|
||||
@ -1186,6 +1191,7 @@ static void HookDDSurface(LPDIRECTDRAWSURFACE *lplpdds, int dxversion, BOOL isPr
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 28), extBltFast1, (void **)&pBltFast1, "BltFast(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 20), extBlt1, (void **)&pBlt1, "Blt(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 32), extDeleteAttachedSurface1, (void **)&pDeleteAttachedSurface1, "DeleteAttachedSurface(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 36), extEnumAttachedSurfaces1, (void **)&pEnumAttachedSurfaces1, "EnumAttachedSurfaces(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 44), extFlip1, (void **)&pFlip1, "Flip(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 48), extGetAttachedSurface1, (void **)&pGetAttachedSurface1, "GetAttachedSurface(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 56), extGetCaps1S, (void **)&pGetCaps1S, "GetCaps(S1)");
|
||||
@ -1206,6 +1212,7 @@ static void HookDDSurface(LPDIRECTDRAWSURFACE *lplpdds, int dxversion, BOOL isPr
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 28), extBltFast2, (void **)&pBltFast2, "BltFast(S2)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 20), extBlt2, (void **)&pBlt2, "Blt(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 32), extDeleteAttachedSurface2, (void **)&pDeleteAttachedSurface2, "DeleteAttachedSurface(S2)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 36), extEnumAttachedSurfaces2, (void **)&pEnumAttachedSurfaces2, "EnumAttachedSurfaces(S2)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 44), extFlip2, (void **)&pFlip2, "Flip(S2)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 48), extGetAttachedSurface2, (void **)&pGetAttachedSurface2, "GetAttachedSurface(S2)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 56), extGetCaps2S, (void **)&pGetCaps2S, "GetCaps(S2)");
|
||||
@ -1226,6 +1233,7 @@ static void HookDDSurface(LPDIRECTDRAWSURFACE *lplpdds, int dxversion, BOOL isPr
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 28), extBltFast3, (void **)&pBltFast3, "BltFast(S3)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 20), extBlt3, (void **)&pBlt3, "Blt(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 32), extDeleteAttachedSurface3, (void **)&pDeleteAttachedSurface3, "DeleteAttachedSurface(S3)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 36), extEnumAttachedSurfaces3, (void **)&pEnumAttachedSurfaces3, "EnumAttachedSurfaces(S3)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 44), extFlip3, (void **)&pFlip3, "Flip(S3)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 48), extGetAttachedSurface3, (void **)&pGetAttachedSurface3, "GetAttachedSurface(S3)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 56), extGetCaps3S, (void **)&pGetCaps3S, "GetCaps(S3)");
|
||||
@ -1248,6 +1256,7 @@ static void HookDDSurface(LPDIRECTDRAWSURFACE *lplpdds, int dxversion, BOOL isPr
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 28), extBltFast4, (void **)&pBltFast4, "BltFast(S4)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 20), extBlt4, (void **)&pBlt4, "Blt(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 32), extDeleteAttachedSurface4, (void **)&pDeleteAttachedSurface4, "DeleteAttachedSurface(S4)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 36), extEnumAttachedSurfaces4, (void **)&pEnumAttachedSurfaces4, "EnumAttachedSurfaces(S4)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 44), extFlip4, (void **)&pFlip4, "Flip(S4)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 48), extGetAttachedSurface4, (void **)&pGetAttachedSurface4, "GetAttachedSurface(S4)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 56), extGetCaps4S, (void **)&pGetCaps4S, "GetCaps(S4)");
|
||||
@ -1270,6 +1279,7 @@ static void HookDDSurface(LPDIRECTDRAWSURFACE *lplpdds, int dxversion, BOOL isPr
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 28), extBltFast7, (void **)&pBltFast7, "BltFast(S7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 20), extBlt7, (void **)&pBlt7, "Blt(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 32), extDeleteAttachedSurface7, (void **)&pDeleteAttachedSurface7, "DeleteAttachedSurface(S7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 36), extEnumAttachedSurfaces7, (void **)&pEnumAttachedSurfaces7, "EnumAttachedSurfaces(S7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 44), extFlip7, (void **)&pFlip7, "Flip(S7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 48), extGetAttachedSurface7, (void **)&pGetAttachedSurface7, "GetAttachedSurface(S7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 56), extGetCaps7S, (void **)&pGetCaps7S, "GetCaps(S7)");
|
||||
@ -1289,19 +1299,26 @@ static void HookDDSurface(LPDIRECTDRAWSURFACE *lplpdds, int dxversion, BOOL isPr
|
||||
|
||||
if (!isPrim) return;
|
||||
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 112), extSetClipper, (void **)&pSetClipper, "SetClipper(S)");
|
||||
// IDirectDrawSurface::SetColorKey
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 116), extSetColorKey, (void **)&pSetColorKey, "SetColorKey(S)");
|
||||
switch(dxversion) {
|
||||
case 1:
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 112), extSetClipper1, (void **)&pSetClipper1, "SetClipper(S1)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 116), extSetColorKey1, (void **)&pSetColorKey1, "SetColorKey(S1)");
|
||||
break;
|
||||
case 2:
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 112), extSetClipper2, (void **)&pSetClipper2, "SetClipper(S2)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 116), extSetColorKey2, (void **)&pSetColorKey2, "SetColorKey(S2)");
|
||||
break;
|
||||
case 3:
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 112), extSetClipper3, (void **)&pSetClipper3, "SetClipper(S3)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 116), extSetColorKey3, (void **)&pSetColorKey3, "SetColorKey(S3)");
|
||||
break;
|
||||
case 4:
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 112), extSetClipper4, (void **)&pSetClipper4, "SetClipper(S4)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 116), extSetColorKey4, (void **)&pSetColorKey4, "SetColorKey(S4)");
|
||||
break;
|
||||
case 7:
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 112), extSetClipper7, (void **)&pSetClipper7, "SetClipper(S7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdds + 116), extSetColorKey7, (void **)&pSetColorKey7, "SetColorKey(S7)");
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1444,7 +1461,7 @@ static void HandleCapsD(char *sLabel, LPDDCAPS c)
|
||||
OutTraceDDRAW("GetCaps(%s): FIXED VidMemTotal=%x VidMemFree=%x\n", sLabel, c->dwVidMemTotal, c->dwVidMemFree);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetCapsD(int dxversion, GetCapsD_Type pGetCapsD, LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2)
|
||||
static HRESULT WINAPI extGetCapsD(int dxversion, GetCapsD_Type pGetCapsD, LPDIRECTDRAW lpdd, LPDDCAPS c1, LPDDCAPS c2)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceDDRAW("GetCaps(D): lpdd=%x %s %s\n", lpdd, c1?"c1":"NULL", c2?"c2":"NULL");
|
||||
@ -1647,7 +1664,7 @@ HRESULT WINAPI extDirectDrawCreateEx(GUID FAR *lpguid,
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extInitialize(Initialize_Type pInitialize, LPDIRECTDRAW lpdd, GUID FAR *lpguid)
|
||||
static HRESULT WINAPI extInitialize(Initialize_Type pInitialize, LPDIRECTDRAW lpdd, GUID FAR *lpguid)
|
||||
{
|
||||
HRESULT res;
|
||||
GUID FAR *lpPrivGuid = lpguid;
|
||||
@ -1674,7 +1691,7 @@ HRESULT WINAPI extInitialize4(LPDIRECTDRAW lpdd, GUID FAR *lpguid)
|
||||
HRESULT WINAPI extInitialize7(LPDIRECTDRAW lpdd, GUID FAR *lpguid)
|
||||
{ return extInitialize(pInitialize7, lpdd, lpguid); }
|
||||
|
||||
HRESULT WINAPI extQueryInterfaceD(QueryInterface_Type pQueryInterfaceD, void *lpdd, REFIID riid, LPVOID *obp)
|
||||
static HRESULT WINAPI extQueryInterfaceD(QueryInterface_Type pQueryInterfaceD, void *lpdd, REFIID riid, LPVOID *obp)
|
||||
{
|
||||
HRESULT res;
|
||||
unsigned int dwLocalDDVersion;
|
||||
@ -1767,7 +1784,7 @@ HRESULT WINAPI extQueryInterfaceD7(void *lpdd, REFIID riid, LPVOID *obp)
|
||||
// some unhandled interfaces in emulation mode:
|
||||
// REFIID={84e63de0-46aa-11cf-816f-0000c020156e}: IID_IDirect3DHALDevice
|
||||
|
||||
HRESULT WINAPI extQueryInterfaceS(QueryInterface_Type pQueryInterfaceS, void *lpdds, REFIID riid, LPVOID *obp)
|
||||
static HRESULT WINAPI extQueryInterfaceS(QueryInterface_Type pQueryInterfaceS, void *lpdds, REFIID riid, LPVOID *obp)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim;
|
||||
@ -4020,7 +4037,7 @@ HRESULT WINAPI extSetEntries(LPDIRECTDRAWPALETTE lpddp, DWORD dwflags, DWORD dws
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extSetClipper(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpddc)
|
||||
static HRESULT WINAPI extSetClipper(SetClipper_Type pSetClipper, LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpddc)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL isPrim;
|
||||
@ -4063,10 +4080,21 @@ HRESULT WINAPI extSetClipper(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpdd
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extSetClipper1(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpddc)
|
||||
{ return extSetClipper(pSetClipper1, lpdds, lpddc); }
|
||||
HRESULT WINAPI extSetClipper2(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpddc)
|
||||
{ return extSetClipper(pSetClipper2, lpdds, lpddc); }
|
||||
HRESULT WINAPI extSetClipper3(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpddc)
|
||||
{ return extSetClipper(pSetClipper3, lpdds, lpddc); }
|
||||
HRESULT WINAPI extSetClipper4(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpddc)
|
||||
{ return extSetClipper(pSetClipper4, lpdds, lpddc); }
|
||||
HRESULT WINAPI extSetClipper7(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWCLIPPER lpddc)
|
||||
{ return extSetClipper(pSetClipper7, lpdds, lpddc); }
|
||||
|
||||
DDSURFACEDESC SaveSurfaceDesc;
|
||||
LPDIRECTDRAWSURFACE SaveSurface = NULL;
|
||||
|
||||
HRESULT WINAPI extLock(Lock_Type pLock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
static HRESULT WINAPI extLock(Lock_Type pLock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{
|
||||
HRESULT res;
|
||||
|
||||
@ -4112,23 +4140,18 @@ HRESULT WINAPI extLock(Lock_Type pLock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect
|
||||
|
||||
HRESULT WINAPI extLock1(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{ return extLock(pLock1, lpdds, lprect, lpDDSurfaceDesc, flags, hEvent); }
|
||||
|
||||
HRESULT WINAPI extLock2(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{ return extLock(pLock2, lpdds, lprect, lpDDSurfaceDesc, flags, hEvent); }
|
||||
|
||||
HRESULT WINAPI extLock3(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{ return extLock(pLock3, lpdds, lprect, lpDDSurfaceDesc, flags, hEvent); }
|
||||
|
||||
HRESULT WINAPI extLock4(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{ return extLock(pLock4, lpdds, lprect, lpDDSurfaceDesc, flags, hEvent); }
|
||||
|
||||
HRESULT WINAPI extLock7(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{ return extLock(pLock7, lpdds, lprect, lpDDSurfaceDesc, flags, hEvent); }
|
||||
|
||||
|
||||
LPDIRECTDRAWSURFACE2 lpDDSBuffer = NULL;
|
||||
|
||||
HRESULT WINAPI extLockDir(int dxversion, Lock_Type pLock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
static HRESULT WINAPI extLockDir(int dxversion, Lock_Type pLock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD flags, HANDLE hEvent)
|
||||
{
|
||||
HRESULT res, res2;
|
||||
static RECT client;
|
||||
@ -4235,7 +4258,7 @@ HRESULT WINAPI extLockDir7(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect, LPDDSURFACE
|
||||
#define MARK16COLOR 0x7C1F
|
||||
#define MARK32COLOR 0x00FF00FF
|
||||
|
||||
HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect)
|
||||
static HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim;
|
||||
@ -4343,20 +4366,16 @@ HRESULT WINAPI extUnlock(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFAC
|
||||
|
||||
HRESULT WINAPI extUnlock1(LPDIRECTDRAWSURFACE lpdds, LPVOID lpvoid)
|
||||
{ return extUnlock(1, (Unlock4_Type)pUnlock1, lpdds, (LPRECT)lpvoid); }
|
||||
|
||||
HRESULT WINAPI extUnlock2(LPDIRECTDRAWSURFACE lpdds, LPVOID lpvoid)
|
||||
{ return extUnlock(2, (Unlock4_Type)pUnlock2, lpdds, (LPRECT)lpvoid); }
|
||||
|
||||
HRESULT WINAPI extUnlock3(LPDIRECTDRAWSURFACE lpdds, LPVOID lpvoid)
|
||||
{ return extUnlock(3, (Unlock4_Type)pUnlock3, lpdds, (LPRECT)lpvoid); }
|
||||
|
||||
HRESULT WINAPI extUnlock4(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect)
|
||||
{ return extUnlock(4, pUnlock4, lpdds, lprect); }
|
||||
|
||||
HRESULT WINAPI extUnlock7(LPDIRECTDRAWSURFACE lpdds, LPRECT lprect)
|
||||
{ return extUnlock(7, pUnlock7, lpdds, lprect); }
|
||||
|
||||
HRESULT WINAPI extUnlockDir(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect)
|
||||
static HRESULT WINAPI extUnlockDir(int dxversion, Unlock4_Type pUnlock, LPDIRECTDRAWSURFACE lpdds, LPRECT lprect)
|
||||
{
|
||||
HRESULT res;
|
||||
//RECT screen, rect;
|
||||
@ -4438,7 +4457,7 @@ ReleaseDC with Unlock, returning the surface memory ptr (???) as HDC
|
||||
and avoiding the consistency check performed by surface::GetDC (why
|
||||
should it bother if the screen is 32BPP and the surface is not??? */
|
||||
|
||||
HRESULT WINAPI extGetDC(int dxversion, GetDC_Type pGetDC, LPDIRECTDRAWSURFACE lpdds, HDC FAR *pHDC)
|
||||
static HRESULT WINAPI extGetDC(int dxversion, GetDC_Type pGetDC, LPDIRECTDRAWSURFACE lpdds, HDC FAR *pHDC)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim;
|
||||
@ -4907,7 +4926,7 @@ HRESULT WINAPI extReleaseS4(LPDIRECTDRAWSURFACE lpdds)
|
||||
HRESULT WINAPI extReleaseS7(LPDIRECTDRAWSURFACE lpdds)
|
||||
{ return extReleaseS(pReleaseS7, lpdds); }
|
||||
|
||||
HRESULT WINAPI extSetColorKey(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
static HRESULT WINAPI extSetColorKey(SetColorKey_Type pSetColorKey, LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim;
|
||||
@ -4926,7 +4945,18 @@ HRESULT WINAPI extSetColorKey(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORK
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetColorKey(GetColorKey_Type pGetColorKey, LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
HRESULT WINAPI extSetColorKey1(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
{ return extSetColorKey(pSetColorKey1, lpdds, flags, lpDDColorKey); }
|
||||
HRESULT WINAPI extSetColorKey2(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
{ return extSetColorKey(pSetColorKey2, lpdds, flags, lpDDColorKey); }
|
||||
HRESULT WINAPI extSetColorKey3(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
{ return extSetColorKey(pSetColorKey3, lpdds, flags, lpDDColorKey); }
|
||||
HRESULT WINAPI extSetColorKey4(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
{ return extSetColorKey(pSetColorKey4, lpdds, flags, lpDDColorKey); }
|
||||
HRESULT WINAPI extSetColorKey7(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
{ return extSetColorKey(pSetColorKey7, lpdds, flags, lpDDColorKey); }
|
||||
|
||||
static HRESULT WINAPI extGetColorKey(GetColorKey_Type pGetColorKey, LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim;
|
||||
@ -4953,7 +4983,7 @@ HRESULT WINAPI extGetColorKey4(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLOR
|
||||
HRESULT WINAPI extGetColorKey7(LPDIRECTDRAWSURFACE lpdds, DWORD flags, LPDDCOLORKEY lpDDColorKey)
|
||||
{ return extGetColorKey(pGetColorKey7, lpdds, flags, lpDDColorKey); }
|
||||
|
||||
HRESULT WINAPI extEnumAttachedSurfaces(LPDIRECTDRAWSURFACE lpdds, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
|
||||
static HRESULT WINAPI extEnumAttachedSurfaces(EnumAttachedSurfaces_Type pEnumAttachedSurfaces, LPDIRECTDRAWSURFACE lpdds, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim;
|
||||
@ -4994,7 +5024,18 @@ HRESULT WINAPI extEnumAttachedSurfaces(LPDIRECTDRAWSURFACE lpdds, LPVOID lpConte
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extAddAttachedSurface(AddAttachedSurface_Type pAddAttachedSurface, LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddsadd)
|
||||
HRESULT WINAPI extEnumAttachedSurfaces1(LPDIRECTDRAWSURFACE lpdds, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
|
||||
{ return extEnumAttachedSurfaces(pEnumAttachedSurfaces1, lpdds, lpContext, lpEnumSurfacesCallback); }
|
||||
HRESULT WINAPI extEnumAttachedSurfaces2(LPDIRECTDRAWSURFACE lpdds, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
|
||||
{ return extEnumAttachedSurfaces(pEnumAttachedSurfaces2, lpdds, lpContext, lpEnumSurfacesCallback); }
|
||||
HRESULT WINAPI extEnumAttachedSurfaces3(LPDIRECTDRAWSURFACE lpdds, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
|
||||
{ return extEnumAttachedSurfaces(pEnumAttachedSurfaces3, lpdds, lpContext, lpEnumSurfacesCallback); }
|
||||
HRESULT WINAPI extEnumAttachedSurfaces4(LPDIRECTDRAWSURFACE lpdds, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
|
||||
{ return extEnumAttachedSurfaces(pEnumAttachedSurfaces4, lpdds, lpContext, lpEnumSurfacesCallback); }
|
||||
HRESULT WINAPI extEnumAttachedSurfaces7(LPDIRECTDRAWSURFACE lpdds, LPVOID lpContext, LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
|
||||
{ return extEnumAttachedSurfaces(pEnumAttachedSurfaces7, lpdds, lpContext, lpEnumSurfacesCallback); }
|
||||
|
||||
static HRESULT WINAPI extAddAttachedSurface(AddAttachedSurface_Type pAddAttachedSurface, LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddsadd)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim, IsBack;
|
||||
@ -5059,7 +5100,7 @@ HRESULT WINAPI extAddAttachedSurface4(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSUR
|
||||
HRESULT WINAPI extAddAttachedSurface7(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWSURFACE lpddsadd)
|
||||
{ return extAddAttachedSurface(pAddAttachedSurface7, lpdds, lpddsadd); }
|
||||
|
||||
HRESULT WINAPI extDeleteAttachedSurface(DeleteAttachedSurface_Type pDeleteAttachedSurface, LPDIRECTDRAWSURFACE lpdds, DWORD dwflags, LPDIRECTDRAWSURFACE lpddsdel)
|
||||
static HRESULT WINAPI extDeleteAttachedSurface(DeleteAttachedSurface_Type pDeleteAttachedSurface, LPDIRECTDRAWSURFACE lpdds, DWORD dwflags, LPDIRECTDRAWSURFACE lpddsdel)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceDDRAW("DeleteAttachedSurface: lpdds=%x flags=%x lpddsdel=%x\n", lpdds, dwflags, lpddsdel);
|
||||
@ -5092,7 +5133,7 @@ HRESULT WINAPI cbDump(LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext)
|
||||
return 1;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDIRECTDRAWSURFACE lpdds, LPDDSCAPS caps)
|
||||
static HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDIRECTDRAWSURFACE lpdds, LPDDSCAPS caps)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim, IsBack, IsFixed;
|
||||
@ -5144,27 +5185,17 @@ HRESULT WINAPI extGetCapsS(int dxInterface, GetCapsS_Type pGetCapsS, LPDIRECTDRA
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetCaps1S(LPDIRECTDRAWSURFACE lpdds, LPDDSCAPS caps)
|
||||
{
|
||||
return extGetCapsS(1, pGetCaps1S, lpdds, caps);
|
||||
}
|
||||
{ return extGetCapsS(1, pGetCaps1S, lpdds, caps); }
|
||||
HRESULT WINAPI extGetCaps2S(LPDIRECTDRAWSURFACE lpdds, LPDDSCAPS caps)
|
||||
{
|
||||
return extGetCapsS(2, pGetCaps2S, lpdds, caps);
|
||||
}
|
||||
{ return extGetCapsS(2, pGetCaps2S, lpdds, caps); }
|
||||
HRESULT WINAPI extGetCaps3S(LPDIRECTDRAWSURFACE lpdds, LPDDSCAPS caps)
|
||||
{
|
||||
return extGetCapsS(3, pGetCaps3S, lpdds, caps);
|
||||
}
|
||||
{ return extGetCapsS(3, pGetCaps3S, lpdds, caps); }
|
||||
HRESULT WINAPI extGetCaps4S(LPDIRECTDRAWSURFACE lpdds, LPDDSCAPS2 caps)
|
||||
{
|
||||
return extGetCapsS(4, (GetCapsS_Type)pGetCaps4S, lpdds, (LPDDSCAPS)caps);
|
||||
}
|
||||
{ return extGetCapsS(4, (GetCapsS_Type)pGetCaps4S, lpdds, (LPDDSCAPS)caps); }
|
||||
HRESULT WINAPI extGetCaps7S(LPDIRECTDRAWSURFACE lpdds, LPDDSCAPS2 caps)
|
||||
{
|
||||
return extGetCapsS(7, (GetCapsS_Type)pGetCaps7S, lpdds, (LPDDSCAPS)caps);
|
||||
}
|
||||
{ return extGetCapsS(7, (GetCapsS_Type)pGetCaps7S, lpdds, (LPDDSCAPS)caps); }
|
||||
|
||||
ULONG WINAPI extReleaseD(int dxversion, ReleaseD_Type pReleaseD, LPDIRECTDRAW lpdd)
|
||||
static ULONG WINAPI extReleaseD(int dxversion, ReleaseD_Type pReleaseD, LPDIRECTDRAW lpdd)
|
||||
{
|
||||
ULONG ActualRef;
|
||||
LONG VirtualRef;
|
||||
@ -5212,17 +5243,14 @@ ULONG WINAPI extReleaseD(int dxversion, ReleaseD_Type pReleaseD, LPDIRECTDRAW lp
|
||||
|
||||
ULONG WINAPI extReleaseD1(LPDIRECTDRAW lpdd)
|
||||
{ return extReleaseD(1, pReleaseD1, lpdd); }
|
||||
|
||||
ULONG WINAPI extReleaseD2(LPDIRECTDRAW lpdd)
|
||||
{ return extReleaseD(2, pReleaseD2, lpdd); }
|
||||
|
||||
ULONG WINAPI extReleaseD4(LPDIRECTDRAW lpdd)
|
||||
{ return extReleaseD(4, pReleaseD4, lpdd); }
|
||||
|
||||
ULONG WINAPI extReleaseD7(LPDIRECTDRAW lpdd)
|
||||
{ return extReleaseD(7, pReleaseD7, lpdd); }
|
||||
|
||||
HRESULT WINAPI extCreateClipper(CreateClipper_Type pCreateClipper, LPDIRECTDRAW lpdd, DWORD dwflags,
|
||||
static HRESULT WINAPI extCreateClipper(CreateClipper_Type pCreateClipper, LPDIRECTDRAW lpdd, DWORD dwflags,
|
||||
LPDIRECTDRAWCLIPPER FAR* lplpDDClipper, IUnknown FAR* pUnkOuter)
|
||||
{
|
||||
HRESULT res;
|
||||
@ -5317,7 +5345,7 @@ HRESULT WINAPI extSetHWnd(LPDIRECTDRAWCLIPPER lpddClip, DWORD w, HWND hwnd)
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetSurfaceDesc(int dxversion, GetSurfaceDesc_Type pGetSurfaceDesc, LPDIRECTDRAWSURFACE lpdds, LPDDSURFACEDESC lpddsd)
|
||||
static HRESULT WINAPI extGetSurfaceDesc(int dxversion, GetSurfaceDesc_Type pGetSurfaceDesc, LPDIRECTDRAWSURFACE lpdds, LPDDSURFACEDESC lpddsd)
|
||||
{
|
||||
HRESULT res;
|
||||
BOOL IsPrim, IsBack, IsFixed;
|
||||
@ -5356,19 +5384,10 @@ HRESULT WINAPI extGetSurfaceDesc(int dxversion, GetSurfaceDesc_Type pGetSurfaceD
|
||||
if (IsBack) {
|
||||
OutTraceDW("GetSurfaceDesc: fixing BACKBUFFER surface\n");
|
||||
IsFixed=TRUE;
|
||||
//lpddsd->ddsCaps.dwCaps |= (DDSCAPS_BACKBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM); // you never know....
|
||||
//lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN); // backbuffer surfaces can't be this way
|
||||
//if(lpddsd->ddsCaps.dwCaps & DDSCAPS_3DDEVICE) lpddsd->ddsCaps.dwCaps |= DDSCAPS_LOCALVIDMEM;
|
||||
|
||||
//if(!(dxw.dwFlags6 & FLIPEMULATION)){
|
||||
// lpddsd->ddsCaps.dwCaps |= (DDSCAPS_3DDEVICE); // you never know....
|
||||
// lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_COMPLEX|DDSCAPS_FLIP); // backbuffer surfaces can't be this way
|
||||
//}
|
||||
// try ...
|
||||
// flags that backbuffer surfaces must have set
|
||||
lpddsd->ddsCaps.dwCaps |= (DDSCAPS_3DDEVICE|DDSCAPS_BACKBUFFER|DDSCAPS_VIDEOMEMORY|DDSCAPS_LOCALVIDMEM);
|
||||
lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN|DDSCAPS_COMPLEX|DDSCAPS_FLIP); // backbuffer surfaces can't be this way
|
||||
|
||||
|
||||
// flags that backbuffer surfaces can't have set
|
||||
lpddsd->ddsCaps.dwCaps &= ~(DDSCAPS_SYSTEMMEMORY|DDSCAPS_OFFSCREENPLAIN|DDSCAPS_COMPLEX|DDSCAPS_FLIP);
|
||||
}
|
||||
|
||||
if (lpddsd->ddsCaps.dwCaps & DDSCAPS_ZBUFFER) {
|
||||
@ -5592,7 +5611,7 @@ HRESULT WINAPI extDDSetGammaRamp(LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags, LPDDG
|
||||
return ret;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetAvailableVidMem(GetAvailableVidMem_Type pGetAvailableVidMem, LPDIRECTDRAW lpdd, LPDDSCAPS lpDDSCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree)
|
||||
static HRESULT WINAPI extGetAvailableVidMem(GetAvailableVidMem_Type pGetAvailableVidMem, LPDIRECTDRAW lpdd, LPDDSCAPS lpDDSCaps, LPDWORD lpdwTotal, LPDWORD lpdwFree)
|
||||
{
|
||||
HRESULT res;
|
||||
//const DWORD dwMaxMem = 0x7FFFF000;
|
||||
|
@ -446,6 +446,7 @@ void dxwCore::SetClipCursor()
|
||||
OutTraceDW("SetClipCursor: ASSERT hWnd==NULL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// check for errors to avoid setting random clip regions
|
||||
if(!(*pGetClientRect)(hWnd, &Rect)){
|
||||
OutTraceE("SetClipCursor: GetClientRect ERROR err=%d at %d\n", GetLastError(), __LINE__);
|
||||
|
@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "TlHelp32.h"
|
||||
|
||||
#define VERSION "2.03.63"
|
||||
#define VERSION "2.03.64"
|
||||
|
||||
#define DDTHREADLOCK 1
|
||||
//#define LOCKTHREADS
|
||||
@ -234,6 +234,7 @@ LRESULT CALLBACK HookProc(int ncode, WPARAM wparam, LPARAM lparam)
|
||||
|
||||
pStatus->Status=DXW_RUNNING;
|
||||
pStatus->TaskIdx=i;
|
||||
pStatus->OrigIdx=pMapping[i].index;
|
||||
pStatus->IsFullScreen=FALSE;
|
||||
pStatus->hWnd=hwnd;
|
||||
pStatus->dwPid=GetProcessId(GetCurrentProcess());
|
||||
|
Binary file not shown.
383
dll/hd3d.cpp
383
dll/hd3d.cpp
@ -22,7 +22,6 @@ extern void D3D9TextureHandling(void *, int);
|
||||
extern void D3D8TextureHandling(void *, int);
|
||||
|
||||
void *lpD3DActiveDevice = NULL;
|
||||
//DWORD gActiveDeviceParams[64];
|
||||
typedef HRESULT (WINAPI *QueryInterface_Type)(void *, REFIID riid, void** ppvObj);
|
||||
|
||||
// D3D8/9 API
|
||||
@ -43,63 +42,50 @@ void WINAPI voidDebugSetMute(void);
|
||||
BOOL WINAPI voidDisableD3DSpy(void);
|
||||
BOOL WINAPI extDisableD3DSpy(void);
|
||||
|
||||
Direct3DCreate8_Type pDirect3DCreate8 = 0;
|
||||
Direct3DCreate9_Type pDirect3DCreate9 = 0;
|
||||
Direct3DCreate9Ex_Type pDirect3DCreate9Ex = 0;
|
||||
CheckFullScreen_Type pCheckFullScreen = 0;
|
||||
DisableD3DSpy_Type pDisableD3DSpy = 0;
|
||||
|
||||
// IDirect3D8/9 methods
|
||||
|
||||
typedef HRESULT (WINAPI *RegisterSoftwareDevice_Type)(void *, void*);
|
||||
typedef UINT (WINAPI *GetAdapterCount_Type)(void *);
|
||||
typedef UINT (WINAPI *GetAdapterCount_Type)(void *);
|
||||
typedef HRESULT (WINAPI *GetAdapterIdentifier_Type)(void *, UINT, DWORD, D3DADAPTER_IDENTIFIER9 *);
|
||||
typedef UINT (WINAPI *GetAdapterModeCount_Type)(void *, UINT, D3DFORMAT);
|
||||
typedef UINT (WINAPI *GetAdapterModeCount_Type)(void *, UINT, D3DFORMAT);
|
||||
typedef HRESULT (WINAPI *EnumAdapterModes8_Type)(void *, UINT, UINT, D3DDISPLAYMODE *);
|
||||
typedef HRESULT (WINAPI *EnumAdapterModes9_Type)(void *, UINT, D3DFORMAT ,UINT, D3DDISPLAYMODE *);
|
||||
typedef HRESULT (WINAPI *GetAdapterDisplayMode_Type)(void *, UINT, D3DDISPLAYMODE *);
|
||||
typedef HRESULT (WINAPI *CheckDeviceType_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, BOOL);
|
||||
typedef HRESULT (WINAPI *CheckDeviceFormat_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, DWORD, D3DRESOURCETYPE, D3DFORMAT);
|
||||
typedef HRESULT (WINAPI *CheckDeviceMultiSampleType_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, BOOL, D3DMULTISAMPLE_TYPE, DWORD *);
|
||||
typedef HRESULT (WINAPI *CheckDepthStencilMatch_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, D3DFORMAT);
|
||||
typedef HRESULT (WINAPI *CheckDeviceFormatConversion_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT);
|
||||
typedef HRESULT (WINAPI *D3DGetDeviceCaps8_Type)(void *, UINT, D3DDEVTYPE, D3DCAPS8 *);
|
||||
typedef HRESULT (WINAPI *D3DGetDeviceCaps9_Type)(void *, UINT, D3DDEVTYPE, D3DCAPS9 *);
|
||||
typedef HMONITOR (WINAPI *GetAdapterMonitor_Type)(void *, UINT);
|
||||
typedef HRESULT (WINAPI *CreateDevice_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, void **);
|
||||
typedef HRESULT (WINAPI *CreateDeviceEx_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, D3DDISPLAYMODEEX *, void **);
|
||||
typedef BOOL (WINAPI *DisableD3DSpy_Type)(void);
|
||||
typedef BOOL (WINAPI *DisableD3DSpy_Type)(void);
|
||||
|
||||
HRESULT WINAPI extRegisterSoftwareDevice(void *, void*);
|
||||
UINT WINAPI extGetAdapterCount8(void *);
|
||||
UINT WINAPI extGetAdapterCount9(void *);
|
||||
HRESULT WINAPI extGetAdapterIdentifier8(void *, UINT, DWORD, D3DADAPTER_IDENTIFIER9 *);
|
||||
HRESULT WINAPI extGetAdapterIdentifier9(void *, UINT, DWORD, D3DADAPTER_IDENTIFIER9 *);
|
||||
UINT WINAPI extGetAdapterModeCount(void *, UINT, D3DFORMAT);
|
||||
HRESULT WINAPI extCheckDeviceType(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, BOOL);
|
||||
HRESULT WINAPI extCheckDeviceFormat(void *, UINT, D3DDEVTYPE, D3DFORMAT, DWORD, D3DRESOURCETYPE, D3DFORMAT);
|
||||
HRESULT WINAPI extCheckDeviceMultiSampleType(void *, UINT, D3DDEVTYPE, D3DFORMAT, BOOL, D3DMULTISAMPLE_TYPE, DWORD *);
|
||||
HRESULT WINAPI extCheckDepthStencilMatch(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, D3DFORMAT);
|
||||
HRESULT WINAPI extCheckDeviceFormatConversion(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT);
|
||||
HRESULT WINAPI extCheckDeviceType8(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, BOOL);
|
||||
HRESULT WINAPI extCheckDeviceType9(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, BOOL);
|
||||
HRESULT WINAPI extD3DGetDeviceCaps8(void *, UINT, D3DDEVTYPE, D3DCAPS8 *);
|
||||
HRESULT WINAPI extD3DGetDeviceCaps9(void *, UINT, D3DDEVTYPE, D3DCAPS9 *);
|
||||
HMONITOR WINAPI extGetAdapterMonitor(void *, UINT);
|
||||
HMONITOR WINAPI extGetAdapterMonitor8(void *, UINT);
|
||||
HMONITOR WINAPI extGetAdapterMonitor9(void *, UINT);
|
||||
HRESULT WINAPI extCreateDevice8(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, void **);
|
||||
HRESULT WINAPI extCreateDevice9(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, void **);
|
||||
HRESULT WINAPI extCreateDeviceEx(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, D3DDISPLAYMODEEX *, void **);
|
||||
|
||||
RegisterSoftwareDevice_Type pRegisterSoftwareDevice = 0;
|
||||
GetAdapterCount_Type pGetAdapterCount8 = 0;
|
||||
GetAdapterCount_Type pGetAdapterCount9 = 0;
|
||||
GetAdapterIdentifier_Type pGetAdapterIdentifier8 = 0;
|
||||
GetAdapterIdentifier_Type pGetAdapterIdentifier9 = 0;
|
||||
GetAdapterModeCount_Type pGetAdapterModeCount = 0;
|
||||
CheckDeviceType_Type pCheckDeviceType = 0;
|
||||
CheckDeviceFormat_Type pCheckDeviceFormat = 0;
|
||||
CheckDeviceMultiSampleType_Type pCheckDeviceMultiSampleType = 0;
|
||||
CheckDepthStencilMatch_Type pCheckDepthStencilMatch = 0;
|
||||
CheckDeviceFormatConversion_Type pCheckDeviceFormatConversion = 0;
|
||||
GetAdapterCount_Type pGetAdapterCount8, pGetAdapterCount9;
|
||||
GetAdapterIdentifier_Type pGetAdapterIdentifier8, pGetAdapterIdentifier9;
|
||||
CheckDeviceType_Type pCheckDeviceType8, pCheckDeviceType9;
|
||||
D3DGetDeviceCaps8_Type pD3DGetDeviceCaps8 = 0;
|
||||
D3DGetDeviceCaps9_Type pD3DGetDeviceCaps9 = 0;
|
||||
GetAdapterMonitor_Type pGetAdapterMonitor = 0;
|
||||
CreateDevice_Type pCreateDevice8 = 0;
|
||||
CreateDevice_Type pCreateDevice9 = 0;
|
||||
GetAdapterMonitor_Type pGetAdapterMonitor8, pGetAdapterMonitor9;
|
||||
CreateDevice_Type pCreateDevice8, pCreateDevice9;
|
||||
CreateDeviceEx_Type pCreateDeviceEx = 0;
|
||||
DisableD3DSpy_Type pDisableD3DSpy = 0;
|
||||
|
||||
// IDirect3DDevice8/9 methods
|
||||
|
||||
@ -121,14 +107,11 @@ typedef HRESULT (WINAPI *EndStateBlock8_Type)(void *, DWORD *);
|
||||
typedef HRESULT (WINAPI *EndStateBlock9_Type)(void *, IDirect3DStateBlock9**);
|
||||
typedef HRESULT (WINAPI *CreateTexture8_Type)(void *, UINT, UINT, UINT, DWORD, D3DFORMAT, D3DPOOL, void **);
|
||||
typedef HRESULT (WINAPI *CreateTexture9_Type)(void *, UINT, UINT, UINT, DWORD, D3DFORMAT, D3DPOOL, void **, HANDLE *);
|
||||
#ifdef DXWNDDISABLEDHOOKS
|
||||
typedef HRESULT (WINAPI *CopyRects_Type)(void *, void *, CONST RECT *, UINT, void *, CONST POINT *);
|
||||
typedef HRESULT (WINAPI *UpdateSurface_Type)(void *, IDirect3DSurface9 *, CONST RECT *, IDirect3DSurface9 *, CONST POINT *);
|
||||
typedef HRESULT (WINAPI *UpdateTexture_Type)(void *, IDirect3DBaseTexture9 *, IDirect3DBaseTexture9 *);
|
||||
#endif
|
||||
|
||||
UINT WINAPI extGetAvailableTextureMem(void *);
|
||||
HRESULT WINAPI extTestCooperativeLevel(void *);
|
||||
UINT WINAPI extGetAvailableTextureMem8(void *);
|
||||
UINT WINAPI extGetAvailableTextureMem9(void *);
|
||||
HRESULT WINAPI extTestCooperativeLevel8(void *);
|
||||
HRESULT WINAPI extTestCooperativeLevel9(void *);
|
||||
HRESULT WINAPI extGetDirect3D8(void *, void **);
|
||||
HRESULT WINAPI extGetDirect3D9(void *, void **);
|
||||
HRESULT WINAPI extGetDisplayMode8(void *, D3DDISPLAYMODE *);
|
||||
@ -147,14 +130,9 @@ HRESULT WINAPI extEndStateBlock8(void *, DWORD *);
|
||||
HRESULT WINAPI extEndStateBlock9(void *, IDirect3DStateBlock9**);
|
||||
HRESULT WINAPI extCreateTexture8(void *, UINT, UINT, UINT, DWORD, D3DFORMAT, D3DPOOL, void **);
|
||||
HRESULT WINAPI extCreateTexture9(void *, UINT, UINT, UINT, DWORD, D3DFORMAT, D3DPOOL, void **, HANDLE *);
|
||||
#ifdef DXWNDDISABLEDHOOKS
|
||||
HRESULT WINAPI extCopyRects(void *, void *, CONST RECT *, UINT, void *, CONST POINT *);
|
||||
HRESULT WINAPI extUpdateSurface(void *, IDirect3DSurface9 *, CONST RECT *, IDirect3DSurface9 *, CONST POINT *);
|
||||
HRESULT WINAPI extUpdateTexture(void *, IDirect3DBaseTexture9 *, IDirect3DBaseTexture9 *);
|
||||
#endif
|
||||
|
||||
GetAvailableTextureMem_Type pGetAvailableTextureMem = 0;
|
||||
TestCooperativeLevel_Type pTestCooperativeLevel = 0;
|
||||
GetAvailableTextureMem_Type pGetAvailableTextureMem8, pGetAvailableTextureMem9;
|
||||
TestCooperativeLevel_Type pTestCooperativeLevel8, pTestCooperativeLevel9;
|
||||
GetDirect3D8_Type pGetDirect3D8 = 0;
|
||||
GetDirect3D9_Type pGetDirect3D9 = 0;
|
||||
GetDisplayMode8_Type pGetDisplayMode8 = 0;
|
||||
@ -173,38 +151,19 @@ EndStateBlock8_Type pEndStateBlock8 = 0;
|
||||
EndStateBlock9_Type pEndStateBlock9 = 0;
|
||||
CreateTexture8_Type pCreateTexture8 = 0;
|
||||
CreateTexture9_Type pCreateTexture9 = 0;
|
||||
#ifdef DXWNDDISABLEDHOOKS
|
||||
CopyRects_Type pCopyRects = 0;
|
||||
UpdateSurface_Type pUpdateSurface = NULL;
|
||||
UpdateTexture_Type pUpdateTexture = NULL;
|
||||
#endif
|
||||
|
||||
// IDirect3DTexture8/9 methods
|
||||
|
||||
typedef HRESULT (WINAPI *LockRect_Type)(void *, UINT, D3DLOCKED_RECT *, CONST RECT *, DWORD);
|
||||
typedef HRESULT (WINAPI *UnlockRect_Type)(void *, UINT);
|
||||
#ifdef DXWNDDISABLEDHOOKS
|
||||
typedef HRESULT (WINAPI *GetSurfaceLevel_Type)(void *, UINT, IDirect3DSurface9**);
|
||||
typedef HRESULT (WINAPI *SetPrivateData_Type)(void *, REFGUID, CONST void *, DWORD, DWORD);
|
||||
typedef HRESULT (WINAPI *QueryInterfaceTex_Type)(void *, REFIID, void**);
|
||||
#endif
|
||||
|
||||
HRESULT WINAPI extLockRect(void *, UINT, D3DLOCKED_RECT *, CONST RECT *, DWORD);
|
||||
HRESULT WINAPI extLockRect8(void *, UINT, D3DLOCKED_RECT *, CONST RECT *, DWORD);
|
||||
HRESULT WINAPI extLockRect9(void *, UINT, D3DLOCKED_RECT *, CONST RECT *, DWORD);
|
||||
HRESULT WINAPI extUnlockRect8(void *, UINT);
|
||||
HRESULT WINAPI extUnlockRect9(void *, UINT);
|
||||
#ifdef DXWNDDISABLEDHOOKS
|
||||
HRESULT WINAPI extGetSurfaceLevel9(void *, UINT, IDirect3DSurface9**);
|
||||
HRESULT WINAPI extSetPrivateData(void *, REFGUID, CONST void *, DWORD, DWORD);
|
||||
HRESULT WINAPI extQueryInterfaceTex(void *, REFIID, void**);
|
||||
#endif
|
||||
|
||||
LockRect_Type pLockRect = NULL;
|
||||
UnlockRect_Type pUnlockRect = NULL;
|
||||
#ifdef DXWNDDISABLEDHOOKS
|
||||
GetSurfaceLevel_Type pGetSurfaceLevel9 = NULL;
|
||||
SetPrivateData_Type pSetPrivateData = NULL;
|
||||
QueryInterfaceTex_Type pQueryInterfaceTex = NULL;
|
||||
#endif
|
||||
LockRect_Type pLockRect8, pLockRect9;
|
||||
UnlockRect_Type pUnlockRect8, pUnlockRect9;
|
||||
|
||||
// to sort ...
|
||||
|
||||
@ -247,19 +206,22 @@ HRESULT WINAPI extGetAdapterDisplayMode8(void *, UINT, D3DDISPLAYMODE *);
|
||||
HRESULT WINAPI extGetAdapterDisplayMode9(void *, UINT, D3DDISPLAYMODE *);
|
||||
HRESULT WINAPI extPresent8(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *);
|
||||
HRESULT WINAPI extPresent9(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *);
|
||||
HRESULT WINAPI extSetRenderState(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extGetRenderState(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extSetRenderState8(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extSetRenderState9(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extGetRenderState8(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extGetRenderState9(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extGetViewport(void *, D3DVIEWPORT9 *);
|
||||
HRESULT WINAPI extSetViewport(void *, D3DVIEWPORT9 *);
|
||||
HRESULT WINAPI extReset8(void *, D3DPRESENT_PARAMETERS *);
|
||||
HRESULT WINAPI extReset9(void *, D3DPRESENT_PARAMETERS *);
|
||||
void WINAPI extSetGammaRamp(void *, UINT, DWORD, D3DGAMMARAMP *);
|
||||
void WINAPI extGetGammaRamp(void *, UINT, D3DGAMMARAMP *);
|
||||
void WINAPI extSetGammaRamp8(void *, UINT, DWORD, D3DGAMMARAMP *);
|
||||
void WINAPI extSetGammaRamp9(void *, UINT, DWORD, D3DGAMMARAMP *);
|
||||
void WINAPI extGetGammaRamp8(void *, UINT, D3DGAMMARAMP *);
|
||||
void WINAPI extGetGammaRamp9(void *, UINT, D3DGAMMARAMP *);
|
||||
ULONG WINAPI extAddRef9(void *);
|
||||
ULONG WINAPI extRelease9(void *);
|
||||
BOOL WINAPI voidDisableD3DSpy(void);
|
||||
|
||||
//ULONG WINAPI extCreateRenderTarget8(void *, UINT, UINT, D3DFORMAT, D3DMULTISAMPLE_TYPE, BOOL, IDirect3DSurface8**);
|
||||
ULONG WINAPI extCreateRenderTarget8(void *, UINT, UINT, D3DFORMAT, D3DMULTISAMPLE_TYPE, BOOL, void**);
|
||||
ULONG WINAPI extCreateRenderTarget9(void *, UINT, UINT, D3DFORMAT, D3DMULTISAMPLE_TYPE, BOOL, void**);
|
||||
ULONG WINAPI extBeginScene8(void *);
|
||||
@ -285,32 +247,24 @@ QueryInterface_Type pQueryInterfaceDev8 = 0;
|
||||
QueryInterface_Type pQueryInterfaceD3D9 = 0;
|
||||
QueryInterface_Type pQueryInterfaceDev9 = 0;
|
||||
|
||||
Direct3DCreate8_Type pDirect3DCreate8 = 0;
|
||||
Direct3DCreate9_Type pDirect3DCreate9 = 0;
|
||||
Direct3DCreate9Ex_Type pDirect3DCreate9Ex = 0;
|
||||
CheckFullScreen_Type pCheckFullScreen = 0;
|
||||
|
||||
EnumAdapterModes8_Type pEnumAdapterModes8 = 0;
|
||||
EnumAdapterModes9_Type pEnumAdapterModes9 = 0;
|
||||
GetAdapterDisplayMode_Type pGetAdapterDisplayMode8 = 0;
|
||||
GetAdapterDisplayMode_Type pGetAdapterDisplayMode9 = 0;
|
||||
Present_Type pPresent8 = 0;
|
||||
Present_Type pPresent9 = 0;
|
||||
SetRenderState_Type pSetRenderState = 0;
|
||||
GetRenderState_Type pGetRenderState = 0;
|
||||
SetRenderState_Type pSetRenderState8, pSetRenderState9;
|
||||
GetRenderState_Type pGetRenderState8, pGetRenderState9;
|
||||
GetViewport_Type pGetViewport = 0;
|
||||
SetViewport_Type pSetViewport = 0;
|
||||
SetGammaRamp_Type pSetGammaRamp = 0;
|
||||
GetGammaRamp_Type pGetGammaRamp = 0;
|
||||
SetGammaRamp_Type pSetGammaRamp8, pSetGammaRamp9;
|
||||
GetGammaRamp_Type pGetGammaRamp8, pGetGammaRamp9;
|
||||
|
||||
CreateRenderTarget8_Type pCreateRenderTarget8 = 0;
|
||||
CreateRenderTarget9_Type pCreateRenderTarget9 = 0;
|
||||
BeginScene_Type pBeginScene8 = 0;
|
||||
EndScene_Type pEndScene8 = 0;
|
||||
BeginScene_Type pBeginScene9 = 0;
|
||||
EndScene_Type pEndScene9 = 0;
|
||||
Reset_Type pReset8 = 0;
|
||||
Reset_Type pReset9 = 0;
|
||||
BeginScene_Type pBeginScene8, pBeginScene9;
|
||||
EndScene_Type pEndScene8, pEndScene9;
|
||||
Reset_Type pReset8, pReset9;
|
||||
SetTexture8_Type pSetTexture8 = 0;
|
||||
SetTexture9_Type pSetTexture9 = 0;
|
||||
|
||||
@ -490,8 +444,8 @@ void HookD3DDevice8(void** ppD3Ddev8)
|
||||
{
|
||||
OutTraceD3D("Device hook for IID_IDirect3DDevice8 interface\n");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 0), extQueryInterfaceDev8, (void **)&pQueryInterfaceDev8, "QueryInterface(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 12), extTestCooperativeLevel, (void **)&pTestCooperativeLevel, "TestCooperativeLevel(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 16), extGetAvailableTextureMem, (void **)&pGetAvailableTextureMem, "GetAvailableTextureMem(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 12), extTestCooperativeLevel8, (void **)&pTestCooperativeLevel8, "TestCooperativeLevel(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 16), extGetAvailableTextureMem8, (void **)&pGetAvailableTextureMem8, "GetAvailableTextureMem(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 24), extGetDirect3D8, (void **)&pGetDirect3D8, "GetDirect3D(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 32), extGetDisplayMode8, (void **)&pGetDisplayMode8, "GetDisplayMode(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 44), extSetCursorPosition8, (void **)&pSetCursorPosition8, "SetCursorPosition(D8)");
|
||||
@ -500,8 +454,8 @@ void HookD3DDevice8(void** ppD3Ddev8)
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 56), extReset8, (void **)&pReset8, "Reset(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 60), extPresent8, (void **)&pPresent8, "Present(D8)");
|
||||
if(dxw.dwFlags2 & DISABLEGAMMARAMP){
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 72), extSetGammaRamp, (void **)&pSetGammaRamp, "SetGammaRamp(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 76), extGetGammaRamp, (void **)&pGetGammaRamp, "GetGammaRamp(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 72), extSetGammaRamp8, (void **)&pSetGammaRamp8, "SetGammaRamp(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 76), extGetGammaRamp8, (void **)&pGetGammaRamp8, "GetGammaRamp(D8)");
|
||||
}
|
||||
if(dxw.dwFlags5 & TEXTUREMASK){
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 80), extCreateTexture8, (void **)&pCreateTexture8, "CreateTexture(D8)");
|
||||
@ -511,12 +465,12 @@ void HookD3DDevice8(void** ppD3Ddev8)
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 136), extBeginScene8, (void **)&pBeginScene8, "BeginScene(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 140), extEndScene8, (void **)&pEndScene8, "EndScene(D8)");
|
||||
if((dxw.dwFlags2 & WIREFRAME) || (dxw.dwFlags4 & DISABLEFOGGING) || (dxw.dwFlags4 & ZBUFFERALWAYS)){
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 200), extSetRenderState, (void **)&pSetRenderState, "SetRenderState(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 204), extGetRenderState, (void **)&pGetRenderState, "GetRenderState(D8)");
|
||||
if(dxw.dwFlags2 & WIREFRAME) (*pSetRenderState)((void *)*ppD3Ddev8, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
|
||||
if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState)((void *)*ppD3Ddev8, D3DRS_FOGENABLE, FALSE);
|
||||
if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState)((void *)*ppD3Ddev8, D3DRS_ZFUNC, D3DCMP_ALWAYS);
|
||||
//if(1) (*pSetRenderState)((void *)*ppD3Ddev8, D3DRS_SPECULARENABLE, TRUE);
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 200), extSetRenderState8, (void **)&pSetRenderState8, "SetRenderState(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 204), extGetRenderState8, (void **)&pGetRenderState8, "GetRenderState(D8)");
|
||||
if(dxw.dwFlags2 & WIREFRAME) (*pSetRenderState8)((void *)*ppD3Ddev8, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
|
||||
if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState8)((void *)*ppD3Ddev8, D3DRS_FOGENABLE, FALSE);
|
||||
if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState8)((void *)*ppD3Ddev8, D3DRS_ZFUNC, D3DCMP_ALWAYS);
|
||||
//if(1) (*pSetRenderState8)((void *)*ppD3Ddev8, D3DRS_SPECULARENABLE, TRUE);
|
||||
}
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 208), extBeginStateBlock8, (void **)&pBeginStateBlock8, "BeginStateBlock(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 212), extEndStateBlock8, (void **)&pEndStateBlock8, "EndStateBlock(D8)");
|
||||
@ -532,8 +486,8 @@ void HookD3DDevice9(void** ppD3Ddev9)
|
||||
{
|
||||
OutTraceD3D("Device hook for IID_IDirect3DDevice9 interface\n");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 0), extQueryInterfaceDev9, (void **)&pQueryInterfaceDev9, "QueryInterface(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 12), extTestCooperativeLevel, (void **)&pTestCooperativeLevel, "TestCooperativeLevel(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 16), extGetAvailableTextureMem, (void **)&pGetAvailableTextureMem, "GetAvailableTextureMem(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 12), extTestCooperativeLevel9, (void **)&pTestCooperativeLevel9, "TestCooperativeLevel(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 16), extGetAvailableTextureMem9, (void **)&pGetAvailableTextureMem9, "GetAvailableTextureMem(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 24), extGetDirect3D9, (void **)&pGetDirect3D9, "GetDirect3D(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 44), extSetCursorPosition9, (void **)&pSetCursorPosition9, "SetCursorPosition(D9)");
|
||||
@ -544,8 +498,8 @@ void HookD3DDevice9(void** ppD3Ddev9)
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 64), extReset9, (void **)&pReset9, "Reset(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 68), extPresent9, (void **)&pPresent9, "Present(D9)");
|
||||
if(dxw.dwFlags2 & DISABLEGAMMARAMP){
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 84), extSetGammaRamp, (void **)&pSetGammaRamp, "SetGammaRamp(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 88), extGetGammaRamp, (void **)&pGetGammaRamp, "GetGammaRamp(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 84), extSetGammaRamp9, (void **)&pSetGammaRamp9, "SetGammaRamp(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 88), extGetGammaRamp9, (void **)&pGetGammaRamp9, "GetGammaRamp(D9)");
|
||||
}
|
||||
if(dxw.dwFlags5 & TEXTUREMASK){
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 92), extCreateTexture9, (void **)&pCreateTexture9, "CreateTexture(D9)");
|
||||
@ -561,41 +515,33 @@ void HookD3DDevice9(void** ppD3Ddev9)
|
||||
//SetHook((void *)(**(DWORD **)ppD3Ddev9 +188), extSetViewport, (void **)&pSetViewport, "SetViewport(D9)");
|
||||
//SetHook((void *)(**(DWORD **)ppD3Ddev9 +192), extGetViewport, (void **)&pGetViewport, "GetViewport(D9)");
|
||||
if((dxw.dwFlags2 & WIREFRAME) || (dxw.dwFlags4 & DISABLEFOGGING) || (dxw.dwFlags4 & ZBUFFERALWAYS)){
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 228), extSetRenderState, (void **)&pSetRenderState, "SetRenderState(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 232), extGetRenderState, (void **)&pGetRenderState, "GetRenderState(D9)");
|
||||
if(dxw.dwFlags2 & WIREFRAME) (*pSetRenderState)((void *)*ppD3Ddev9, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
|
||||
if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState)((void *)*ppD3Ddev9, D3DRS_FOGENABLE, FALSE);
|
||||
if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState)((void *)*ppD3Ddev9, D3DRS_ZFUNC, D3DCMP_ALWAYS);
|
||||
//if(1) (*pSetRenderState)((void *)*ppD3Ddev9, D3DRS_SPECULARENABLE, TRUE);
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 228), extSetRenderState9, (void **)&pSetRenderState9, "SetRenderState(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 232), extGetRenderState9, (void **)&pGetRenderState9, "GetRenderState(D9)");
|
||||
if(dxw.dwFlags2 & WIREFRAME) (*pSetRenderState9)((void *)*ppD3Ddev9, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
|
||||
if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState9)((void *)*ppD3Ddev9, D3DRS_FOGENABLE, FALSE);
|
||||
if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState9)((void *)*ppD3Ddev9, D3DRS_ZFUNC, D3DCMP_ALWAYS);
|
||||
//if(1) (*pSetRenderState9)((void *)*ppD3Ddev9, D3DRS_SPECULARENABLE, TRUE);
|
||||
}
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 240), extBeginStateBlock9, (void **)&pBeginStateBlock9, "BeginStateBlock(D9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 244), extEndStateBlock9, (void **)&pEndStateBlock9, "EndStateBlock(D9)");
|
||||
if((dxw.dwFlags5 & TEXTUREMASK) || (dxw.dwFlags4 & NOTEXTURES)){
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 260), extSetTexture9, (void **)&pSetTexture9, "SetTexture(D9)");
|
||||
}
|
||||
//if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
//SetHook((void *)(**(DWORD **)ppD3Ddev9 + 4), extAddRef9, (void **)&pAddRef9, "AddRef(D9)");
|
||||
//SetHook((void *)(**(DWORD **)ppD3Ddev9 + 8), extRelease9, (void **)&pRelease9, "Release(D9)");
|
||||
}
|
||||
|
||||
// WIP
|
||||
void HookD3DTexture8(void** ppD3Dtex8)
|
||||
{
|
||||
OutTraceD3D("Device hook for IDirect3DTexture8 interface\n");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex8 + 64), extLockRect, (void **)&pLockRect, "LockRect(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex8 + 68), extUnlockRect8, (void **)&pUnlockRect, "UnlockRect(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex8 + 64), extLockRect8, (void **)&pLockRect8, "LockRect(D8)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex8 + 68), extUnlockRect8, (void **)&pUnlockRect8, "UnlockRect(D8)");
|
||||
}
|
||||
|
||||
void HookD3DTexture9(void** ppD3Dtex9)
|
||||
{
|
||||
OutTraceD3D("Device hook for IDirect3DTexture9 interface\n");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex9 + 76), extLockRect, (void **)&pLockRect, "LockRect(T9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex9 + 80), extUnlockRect9, (void **)&pUnlockRect, "UnlockRect(T9)");
|
||||
#ifdef DXWNDDISABLEDHOOKS
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex9 + 0), extQueryInterfaceTex, (void **)&pQueryInterfaceTex, "QueryInterface(T9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex9 + 16), extSetPrivateData, (void **)&pSetPrivateData, "SetPrivateData(T9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex9 + 72), extGetSurfaceLevel9, (void **)&pGetSurfaceLevel9, "GetSurfaceLevel(T9)");
|
||||
#endif
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex9 + 76), extLockRect9, (void **)&pLockRect9, "LockRect(T9)");
|
||||
SetHook((void *)(**(DWORD **)ppD3Dtex9 + 80), extUnlockRect9, (void **)&pUnlockRect9, "UnlockRect(T9)");
|
||||
}
|
||||
|
||||
void HookDirect3D8(void *lpd3d)
|
||||
@ -605,7 +551,9 @@ void HookDirect3D8(void *lpd3d)
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 20), extGetAdapterIdentifier8, (void **)&pGetAdapterIdentifier8, "GetAdapterIdentifier(D8)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 28), extEnumAdapterModes8, (void **)&pEnumAdapterModes8, "EnumAdapterModes(D8)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 32), extGetAdapterDisplayMode8, (void **)&pGetAdapterDisplayMode8, "GetAdapterDisplayMode(D8)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 36), extCheckDeviceType8, (void **)&pCheckDeviceType8, "CheckDeviceType(D8)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 52), extD3DGetDeviceCaps8, (void **)&pD3DGetDeviceCaps8, "GetDeviceCaps(D8)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 56), extGetAdapterMonitor8, (void **)&pGetAdapterMonitor8, "GetAdapterMonitor(D8)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 60), extCreateDevice8, (void **)&pCreateDevice8, "CreateDevice(D8)");
|
||||
}
|
||||
|
||||
@ -639,18 +587,11 @@ void HookDirect3D9(void *lpd3d, BOOL ex)
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 20), extGetAdapterIdentifier9, (void **)&pGetAdapterIdentifier9, "GetAdapterIdentifier(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 28), extEnumAdapterModes9, (void **)&pEnumAdapterModes9, "EnumAdapterModes(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 32), extGetAdapterDisplayMode9, (void **)&pGetAdapterDisplayMode9, "GetAdapterDisplayMode(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 36), extCheckDeviceType9, (void **)&pCheckDeviceType9, "CheckDeviceType(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 56), extD3DGetDeviceCaps9, (void **)&pD3DGetDeviceCaps9, "GetDeviceCaps(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 60), extGetAdapterMonitor9, (void **)&pGetAdapterMonitor9, "GetAdapterMonitor(D9)");
|
||||
SetHook((void *)(*(DWORD *)lpd3d + 64), extCreateDevice9, (void **)&pCreateDevice9, "CreateDevice(D9)");
|
||||
if(ex) SetHook((void *)(*(DWORD *)lpd3d + 80), extCreateDeviceEx, (void **)&pCreateDeviceEx, "CreateDeviceEx(D9)");
|
||||
//if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 12), extRegisterSoftwareDevice, (void **)&pRegisterSoftwareDevice, "RegisterSoftwareDevice(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 24), extGetAdapterModeCount, (void **)&pGetAdapterModeCount, "GetAdapterModeCount(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 36), extCheckDeviceType, (void **)&pCheckDeviceType, "CheckDeviceType(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 40), extCheckDeviceFormat, (void **)&pCheckDeviceFormat, "CheckDeviceFormat(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 44), extCheckDeviceMultiSampleType, (void **)&pCheckDeviceMultiSampleType, "CheckDeviceMultiSampleType(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 48), extCheckDepthStencilMatch, (void **)&pCheckDepthStencilMatch, "CheckDepthStencilMatch(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 52), extCheckDeviceFormatConversion, (void **)&pCheckDeviceFormatConversion, "CheckDeviceFormatConversion(D9)");
|
||||
//SetHook((void *)(*(DWORD *)lpd3d + 60), extGetAdapterMonitor, (void **)&pGetAdapterMonitor, "GetAdapterMonitor(D9)");
|
||||
}
|
||||
|
||||
void* WINAPI extDirect3DCreate9(UINT sdkversion)
|
||||
@ -1312,7 +1253,7 @@ HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetyp
|
||||
|
||||
extern char *ExplainRenderstateValue(DWORD Value);
|
||||
|
||||
HRESULT WINAPI extSetRenderState(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
static HRESULT WINAPI extSetRenderState(SetRenderState_Type pSetRenderState, void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("SetRenderState: d3dd=%x State=%x(%s) Value=%x\n", pd3dd, State, ExplainD3DRenderState(State), Value);
|
||||
@ -1335,11 +1276,21 @@ HRESULT WINAPI extSetRenderState(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Va
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetRenderState(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
HRESULT WINAPI extSetRenderState8(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{ return extSetRenderState(pSetRenderState8, pd3dd, State, Value); }
|
||||
HRESULT WINAPI extSetRenderState9(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{ return extSetRenderState(pSetRenderState9, pd3dd, State, Value); }
|
||||
|
||||
static HRESULT WINAPI extGetRenderState(GetRenderState_Type pGetRenderState, void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{
|
||||
return (*pGetRenderState)(pd3dd, State, Value);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetRenderState8(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{ return extGetRenderState(pSetRenderState8, pd3dd, State, Value); }
|
||||
HRESULT WINAPI extGetRenderState9(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{ return extGetRenderState(pSetRenderState9, pd3dd, State, Value); }
|
||||
|
||||
HRESULT WINAPI extGetViewport(void *pd3dd, D3DVIEWPORT9 *pViewport)
|
||||
{
|
||||
return (*pGetViewport)(pd3dd, pViewport);
|
||||
@ -1756,19 +1707,29 @@ HRESULT WINAPI extCheckFullScreen(void)
|
||||
return res;
|
||||
}
|
||||
|
||||
void WINAPI extSetGammaRamp(void *lpdd3dd, UINT iSwapChain, DWORD Flags, D3DGAMMARAMP *pRamp)
|
||||
static void WINAPI extSetGammaRamp(SetGammaRamp_Type pSetGammaRamp, void *lpdd3dd, UINT iSwapChain, DWORD Flags, D3DGAMMARAMP *pRamp)
|
||||
{
|
||||
OutTraceD3D("SetGammaRamp: dd3dd=%x SwapChain=%d flags=%x\n", lpdd3dd, iSwapChain, Flags);
|
||||
if (dxw.dwFlags2 & DISABLEGAMMARAMP) return;
|
||||
(*pSetGammaRamp)(lpdd3dd, iSwapChain, Flags, pRamp);
|
||||
}
|
||||
|
||||
void WINAPI extGetGammaRamp(void *lpdd3dd, UINT iSwapChain, D3DGAMMARAMP *pRamp)
|
||||
void WINAPI extSetGammaRamp8(void *lpdd3dd, UINT iSwapChain, DWORD Flags, D3DGAMMARAMP *pRamp)
|
||||
{ return extSetGammaRamp(pSetGammaRamp8, lpdd3dd, iSwapChain, Flags, pRamp); }
|
||||
void WINAPI extSetGammaRamp9(void *lpdd3dd, UINT iSwapChain, DWORD Flags, D3DGAMMARAMP *pRamp)
|
||||
{ return extSetGammaRamp(pSetGammaRamp9, lpdd3dd, iSwapChain, Flags, pRamp); }
|
||||
|
||||
static void WINAPI extGetGammaRamp(GetGammaRamp_Type pGetGammaRamp, void *lpdd3dd, UINT iSwapChain, D3DGAMMARAMP *pRamp)
|
||||
{
|
||||
OutTraceD3D("GetGammaRamp: dd3dd=%x SwapChain=%d\n", lpdd3dd, iSwapChain);
|
||||
(*pGetGammaRamp)(lpdd3dd, iSwapChain, pRamp);
|
||||
}
|
||||
|
||||
void WINAPI extGetGammaRamp8(void *lpdd3dd, UINT iSwapChain, D3DGAMMARAMP *pRamp)
|
||||
{ return extGetGammaRamp(pGetGammaRamp8, lpdd3dd, iSwapChain, pRamp); }
|
||||
void WINAPI extGetGammaRamp9(void *lpdd3dd, UINT iSwapChain, D3DGAMMARAMP *pRamp)
|
||||
{ return extGetGammaRamp(pGetGammaRamp9, lpdd3dd, iSwapChain, pRamp); }
|
||||
|
||||
void WINAPI extSetCursorPosition9(void *lpdd3dd, int X, int Y, DWORD Flags)
|
||||
{
|
||||
OutTraceD3D("SetCursorPosition: dd3dd=%x pos=(%d,%d) flags=%x\n", lpdd3dd, X, Y, Flags);
|
||||
@ -1927,19 +1888,7 @@ HRESULT WINAPI voidDirect3DShaderValidatorCreate9(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extRegisterSoftwareDevice(void *lpd3d, void *pInitializeFunction)
|
||||
{
|
||||
OutTraceD3D("RegisterSoftwareDevice: d3d=%x\n", lpd3d);
|
||||
return (*pRegisterSoftwareDevice)(lpd3d, pInitializeFunction);
|
||||
}
|
||||
|
||||
UINT WINAPI extGetAdapterModeCount(void *lpd3d, UINT Adapter, D3DFORMAT Format)
|
||||
{
|
||||
OutTraceD3D("GetAdapterModeCount: d3d=%x adapter=%d\n", lpd3d, Adapter);
|
||||
return (*pGetAdapterModeCount)(lpd3d, Adapter, Format);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extCheckDeviceType(void *lpd3d, UINT Adapter, D3DDEVTYPE DevType, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed)
|
||||
static HRESULT WINAPI extCheckDeviceType(CheckDeviceType_Type pCheckDeviceType, void *lpd3d, UINT Adapter, D3DDEVTYPE DevType, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("CheckDeviceType: d3d=%x adapter=%d windowed=%x\n", lpd3d, Adapter, bWindowed);
|
||||
@ -1949,29 +1898,10 @@ HRESULT WINAPI extCheckDeviceType(void *lpd3d, UINT Adapter, D3DDEVTYPE DevType,
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extCheckDeviceFormat(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat)
|
||||
{
|
||||
OutTraceD3D("CheckDeviceFormat: d3d=%x adapter=%d\n", lpd3d, Adapter);
|
||||
return (*pCheckDeviceFormat)(lpd3d, Adapter, DeviceType, AdapterFormat, Usage, RType, CheckFormat);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extCheckDeviceMultiSampleType(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SurfaceFormat, BOOL Windowed, D3DMULTISAMPLE_TYPE MultiSampleType, DWORD *pQualityLevels)
|
||||
{
|
||||
OutTraceD3D("CheckDeviceMultiSampleType: d3d=%x adapter=%d windowed=%x\n", lpd3d, Adapter, Windowed);
|
||||
return (*pCheckDeviceMultiSampleType)(lpd3d, Adapter, DeviceType, SurfaceFormat, Windowed, MultiSampleType, pQualityLevels);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extCheckDepthStencilMatch(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, D3DFORMAT RenderTargetFormat, D3DFORMAT DepthStencilFormat)
|
||||
{
|
||||
OutTraceD3D("CheckDepthStencilMatch: d3d=%x adapter=%d\n", lpd3d, Adapter);
|
||||
return (*pCheckDepthStencilMatch)(lpd3d, Adapter, DeviceType, AdapterFormat, RenderTargetFormat, DepthStencilFormat);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extCheckDeviceFormatConversion(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT SourceFormat, D3DFORMAT TargetFormat)
|
||||
{
|
||||
OutTraceD3D("CheckDeviceFormatConversion: d3d=%x adapter=%d\n", lpd3d, Adapter);
|
||||
return (*pCheckDeviceFormatConversion)(lpd3d, Adapter, DeviceType, SourceFormat, TargetFormat);
|
||||
}
|
||||
HRESULT WINAPI extCheckDeviceType8(void *lpd3d, UINT Adapter, D3DDEVTYPE DevType, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed)
|
||||
{ return extCheckDeviceType(pCheckDeviceType8, lpd3d, Adapter, DevType, AdapterFormat, BackBufferFormat, bWindowed); }
|
||||
HRESULT WINAPI extCheckDeviceType9(void *lpd3d, UINT Adapter, D3DDEVTYPE DevType, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, BOOL bWindowed)
|
||||
{ return extCheckDeviceType(pCheckDeviceType9, lpd3d, Adapter, DevType, AdapterFormat, BackBufferFormat, bWindowed); }
|
||||
|
||||
static char *ExplainD3D9DeviceType(D3DDEVTYPE DeviceType)
|
||||
{
|
||||
@ -2135,22 +2065,27 @@ HRESULT WINAPI extD3DGetDeviceCaps(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceT
|
||||
}
|
||||
|
||||
HRESULT WINAPI extD3DGetDeviceCaps8(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS8 *pCaps)
|
||||
{
|
||||
return extD3DGetDeviceCaps(lpd3d, Adapter, DeviceType, (D3DCAPS9 *)pCaps, 8);
|
||||
}
|
||||
|
||||
{ return extD3DGetDeviceCaps(lpd3d, Adapter, DeviceType, (D3DCAPS9 *)pCaps, 8); }
|
||||
HRESULT WINAPI extD3DGetDeviceCaps9(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9 *pCaps)
|
||||
{
|
||||
return extD3DGetDeviceCaps(lpd3d, Adapter, DeviceType, pCaps, 9);
|
||||
}
|
||||
{ return extD3DGetDeviceCaps(lpd3d, Adapter, DeviceType, pCaps, 9); }
|
||||
|
||||
HMONITOR WINAPI extGetAdapterMonitor(void *lpd3d, UINT Adapter)
|
||||
static HMONITOR WINAPI extGetAdapterMonitor(GetAdapterMonitor_Type pGetAdapterMonitor, void *lpd3d, UINT Adapter)
|
||||
{
|
||||
OutTraceD3D("GetAdapterMonitor: d3d=%x adapter=%d\n", lpd3d, Adapter);
|
||||
if((dxw.dwFlags2 & HIDEMULTIMONITOR) && (Adapter != D3DADAPTER_DEFAULT)){
|
||||
OutTraceD3D("GetAdapterMonitor: HIDE adapter=%d\n", Adapter);
|
||||
return NULL;
|
||||
}
|
||||
return (*pGetAdapterMonitor)(lpd3d, Adapter);
|
||||
}
|
||||
|
||||
UINT WINAPI extGetAvailableTextureMem(void *lpd3dd)
|
||||
HMONITOR WINAPI extGetAdapterMonitor8(void *lpd3d, UINT Adapter)
|
||||
{ return extGetAdapterMonitor(pGetAdapterMonitor8, lpd3d, Adapter); }
|
||||
HMONITOR WINAPI extGetAdapterMonitor9(void *lpd3d, UINT Adapter)
|
||||
{ return extGetAdapterMonitor(pGetAdapterMonitor9, lpd3d, Adapter); }
|
||||
|
||||
|
||||
static UINT WINAPI extGetAvailableTextureMem(GetAvailableTextureMem_Type pGetAvailableTextureMem, void *lpd3dd)
|
||||
{
|
||||
const UINT TextureMemoryLimit = 1024 * 1024 * 1024; // 1GB
|
||||
// const DWORD dwMaxMem = 0x70000000; = 1.8G
|
||||
@ -2164,7 +2099,12 @@ UINT WINAPI extGetAvailableTextureMem(void *lpd3dd)
|
||||
return AvailableTextureMem;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extTestCooperativeLevel(void *lpd3dd)
|
||||
UINT WINAPI extGetAvailableTextureMem8(void *lpd3dd)
|
||||
{ return extGetAvailableTextureMem(pGetAvailableTextureMem8, lpd3dd); }
|
||||
UINT WINAPI extGetAvailableTextureMem9(void *lpd3dd)
|
||||
{ return extGetAvailableTextureMem(pGetAvailableTextureMem9, lpd3dd); }
|
||||
|
||||
static HRESULT WINAPI extTestCooperativeLevel(TestCooperativeLevel_Type pTestCooperativeLevel, void *lpd3dd)
|
||||
{
|
||||
HRESULT res;
|
||||
res = (*pTestCooperativeLevel)(lpd3dd);
|
||||
@ -2172,6 +2112,11 @@ HRESULT WINAPI extTestCooperativeLevel(void *lpd3dd)
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extTestCooperativeLevel8(void *lpd3dd)
|
||||
{ return extTestCooperativeLevel(pTestCooperativeLevel8, lpd3dd); }
|
||||
HRESULT WINAPI extTestCooperativeLevel9(void *lpd3dd)
|
||||
{ return extTestCooperativeLevel(pTestCooperativeLevel9, lpd3dd); }
|
||||
|
||||
HRESULT WINAPI extGetSwapChain(void *lpd3dd, UINT iSwapChain, IDirect3DSwapChain9** pSwapChain)
|
||||
{
|
||||
HRESULT res;
|
||||
@ -2260,7 +2205,7 @@ HRESULT WINAPI extCreateTexture9(void *lpd3dd, UINT Width, UINT Height, UINT Lev
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extLockRect(void *lpd3dtex, UINT Level, D3DLOCKED_RECT *pLockedRect, CONST RECT *pRect, DWORD Flags)
|
||||
static HRESULT WINAPI extLockRect(LockRect_Type pLockRect, void *lpd3dtex, UINT Level, D3DLOCKED_RECT *pLockedRect, CONST RECT *pRect, DWORD Flags)
|
||||
{
|
||||
HRESULT res;
|
||||
if(IsTraceD3D){
|
||||
@ -2279,9 +2224,14 @@ HRESULT WINAPI extLockRect(void *lpd3dtex, UINT Level, D3DLOCKED_RECT *pLockedRe
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extLockRect8(void *lpd3dtex, UINT Level, D3DLOCKED_RECT *pLockedRect, CONST RECT *pRect, DWORD Flags)
|
||||
{ return extLockRect(pLockRect8, lpd3dtex, Level, pLockedRect, pRect, Flags); }
|
||||
HRESULT WINAPI extLockRect9(void *lpd3dtex, UINT Level, D3DLOCKED_RECT *pLockedRect, CONST RECT *pRect, DWORD Flags)
|
||||
{ return extLockRect(pLockRect9, lpd3dtex, Level, pLockedRect, pRect, Flags); }
|
||||
|
||||
typedef void (*TextureHandling_Type)(void *, int);
|
||||
|
||||
HRESULT WINAPI extUnlockRect(void *lpd3dtex, UINT Level, TextureHandling_Type TextureHandling)
|
||||
static HRESULT WINAPI extUnlockRect(UnlockRect_Type pUnlockRect, void *lpd3dtex, UINT Level, TextureHandling_Type TextureHandling)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("Texture::UnlockRect: lpd3dtex=%x level=%d\n", lpd3dtex, Level);
|
||||
@ -2292,74 +2242,9 @@ HRESULT WINAPI extUnlockRect(void *lpd3dtex, UINT Level, TextureHandling_Type Te
|
||||
}
|
||||
|
||||
HRESULT WINAPI extUnlockRect8(void *lpd3dtex, UINT Level)
|
||||
{
|
||||
return extUnlockRect(lpd3dtex, Level, D3D8TextureHandling);
|
||||
}
|
||||
|
||||
{ return extUnlockRect(pUnlockRect8, lpd3dtex, Level, D3D8TextureHandling); }
|
||||
HRESULT WINAPI extUnlockRect9(void *lpd3dtex, UINT Level)
|
||||
{
|
||||
return extUnlockRect(lpd3dtex, Level, D3D9TextureHandling);
|
||||
}
|
||||
|
||||
#ifdef DXWNDDISABLEDHOOKS
|
||||
HRESULT WINAPI extGetSurfaceLevel9(void *lpd3dtex, UINT Level, IDirect3DSurface9** ppSurfaceLevel)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("GetSurfaceLevel(9): lpd3dtex=%x level=%d\n", lpd3dtex, Level);
|
||||
res = (*pGetSurfaceLevel9)(lpd3dtex, Level, ppSurfaceLevel);
|
||||
if(res == DD_OK){
|
||||
OutTraceD3D("GetSurfaceLevel(9): SurfaceLevel=%x\n", lpd3dtex, Level, *ppSurfaceLevel);
|
||||
//HookD3DTexture9((void **)ppSurfaceLevel);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extCopyRects(void *lpd3dd, void *pSourceSurface, CONST RECT *pSourceRectsArray, UINT cRects, void *pDestinationSurface, CONST POINT* pDestPointsArray)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("CopyRects: rects=%d\n", cRects);
|
||||
res = (pCopyRects)(lpd3dd, pSourceSurface, pSourceRectsArray, cRects, pDestinationSurface, pDestPointsArray);
|
||||
//extern void D3D8TextureHandling(void *, int);
|
||||
//D3D8TextureHandling(pDestinationSurface, 0);
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extUpdateSurface(void *lpd3dd, IDirect3DSurface9 *pSourceSurface, CONST RECT *pSourceRect, IDirect3DSurface9 *pDestinationSurface, CONST POINT *pDestPoint)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("UpdateSurface: lpd3dd=%x sourcesurface=%x destsurface=%x\n", lpd3dd, pSourceSurface, pDestinationSurface);
|
||||
res = (*pUpdateSurface)(lpd3dd, pSourceSurface, pSourceRect, pDestinationSurface, pDestPoint);
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extUpdateTexture(void *lpd3dd, IDirect3DBaseTexture9 *pSourceTexture, IDirect3DBaseTexture9 *pDestinationTexture)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("UpdateTexture: lpd3dd=%x sourcetexture=%x desttexture=%x\n", lpd3dd, pSourceTexture, pDestinationTexture);
|
||||
res = (*pUpdateTexture)(lpd3dd, pSourceTexture, pDestinationTexture);
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extSetPrivateData(void *lpd3dd, REFGUID refguid, CONST void *pData, DWORD SizeOfData, DWORD Flags)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("SetPrivateData: lpd3dd=%x refguid=%x pData=%x size=%x flags=%x\n", lpd3dd, refguid, pData, SizeOfData, Flags);
|
||||
res = (*pSetPrivateData)(lpd3dd, refguid, pData, SizeOfData, Flags);
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extQueryInterfaceTex(void *obj, REFIID riid, void** ppvObj)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("D3D::QueryInterface(T9): d3d=%x riid=%x\n", obj, riid.Data1);
|
||||
res=pQueryInterfaceTex(obj, riid, ppvObj);
|
||||
if(res)
|
||||
OutTraceE("D3D::QueryInterface(T9): ERROR ret=%x(%s)\n", res, ExplainDDError(res));
|
||||
else
|
||||
OutTraceD3D("D3D::QueryInterface(T9): obp=%x\n", *ppvObj);
|
||||
return res;
|
||||
}
|
||||
#endif
|
||||
{ return extUnlockRect(pUnlockRect9, lpd3dtex, Level, D3D9TextureHandling); }
|
||||
|
||||
void RestoreD3DSurfaces(BOOL bFullScreen)
|
||||
{
|
||||
|
@ -11,8 +11,8 @@ extern void TextureHandling(LPDIRECTDRAWSURFACE);
|
||||
typedef HRESULT (WINAPI *LockRect_Type)(void *, UINT, D3DLOCKED_RECT *, CONST RECT *, DWORD);
|
||||
typedef HRESULT (WINAPI *UnlockRect_Type)(void *, UINT);
|
||||
|
||||
extern LockRect_Type pLockRect;
|
||||
extern UnlockRect_Type pUnlockRect;
|
||||
extern LockRect_Type pLockRect8;
|
||||
extern UnlockRect_Type pUnlockRect8;
|
||||
|
||||
extern void D3DTextureDump(D3DSURFACE_DESC, D3DLOCKED_RECT);
|
||||
extern void D3DTextureHighlight(D3DSURFACE_DESC, D3DLOCKED_RECT);
|
||||
@ -49,7 +49,7 @@ void D3D8TextureHandling(void *arg, int Level)
|
||||
}
|
||||
if(Desc.Usage == D3DUSAGE_RENDERTARGET)return;
|
||||
//pSurfaceLevel->GetRenderTargetData(&pRenderTarget, &pDestSurface);
|
||||
res=(*pLockRect)(lpd3dtex, Level, &LockedRect, NULL, 0);
|
||||
res=(*pLockRect8)(lpd3dtex, Level, &LockedRect, NULL, 0);
|
||||
OutTrace("D3D8TextureHandling: lpd3dtex=%x level=%d format=0x%x(%s) size=(%dx%d) bits=%x pitch=%d\n",
|
||||
lpd3dtex, Level, Desc.Format, ExplainD3DSurfaceFormat(Desc.Format),
|
||||
Desc.Width, Desc.Height, LockedRect.pBits, LockedRect.Pitch);
|
||||
@ -67,5 +67,5 @@ void D3D8TextureHandling(void *arg, int Level)
|
||||
D3DTextureTransp(Desc, LockedRect);
|
||||
break;
|
||||
}
|
||||
res=(*pUnlockRect)(lpd3dtex, Level);
|
||||
res=(*pUnlockRect8)(lpd3dtex, Level);
|
||||
}
|
||||
|
@ -11,8 +11,8 @@ extern void TextureHandling(LPDIRECTDRAWSURFACE);
|
||||
typedef HRESULT (WINAPI *LockRect_Type)(void *, UINT, D3DLOCKED_RECT *, CONST RECT *, DWORD);
|
||||
typedef HRESULT (WINAPI *UnlockRect_Type)(void *, UINT);
|
||||
|
||||
extern LockRect_Type pLockRect;
|
||||
extern UnlockRect_Type pUnlockRect;
|
||||
extern LockRect_Type pLockRect9;
|
||||
extern UnlockRect_Type pUnlockRect9;
|
||||
|
||||
extern void D3DTextureDump(D3DSURFACE_DESC, D3DLOCKED_RECT);
|
||||
extern void D3DTextureHighlight(D3DSURFACE_DESC, D3DLOCKED_RECT);
|
||||
@ -49,7 +49,7 @@ void D3D9TextureHandling(void *arg, int Level)
|
||||
}
|
||||
if(Desc.Usage == D3DUSAGE_RENDERTARGET)return;
|
||||
//pSurfaceLevel->GetRenderTargetData(&pRenderTarget, &pDestSurface);
|
||||
res=(*pLockRect)(lpd3dtex, Level, &LockedRect, NULL, D3DLOCK_READONLY);
|
||||
res=(*pLockRect9)(lpd3dtex, Level, &LockedRect, NULL, D3DLOCK_READONLY);
|
||||
OutTrace("D3D9TextureHandling: lpd3dtex=%x level=%d format=0x%x(%s) size=(%dx%d) bits=%x pitch=%d\n",
|
||||
lpd3dtex, Level, Desc.Format, ExplainD3DSurfaceFormat(Desc.Format),
|
||||
Desc.Width, Desc.Height, LockedRect.pBits, LockedRect.Pitch);
|
||||
@ -67,5 +67,5 @@ void D3D9TextureHandling(void *arg, int Level)
|
||||
D3DTextureTransp(Desc, LockedRect);
|
||||
break;
|
||||
}
|
||||
res=(*pUnlockRect)(lpd3dtex, Level);
|
||||
res=(*pUnlockRect9)(lpd3dtex, Level);
|
||||
}
|
||||
|
@ -97,6 +97,12 @@ BOOL WINAPI extPaintDesktop(HDC);
|
||||
typedef VOID (WINAPI *mouse_event_Type)(DWORD, DWORD, DWORD, DWORD, ULONG_PTR);
|
||||
mouse_event_Type pmouse_event = NULL;
|
||||
VOID WINAPI extmouse_event(DWORD, DWORD, DWORD, DWORD, ULONG_PTR);
|
||||
typedef BOOL (WINAPI *ShowScrollBar_Type)(HWND, int, BOOL);
|
||||
ShowScrollBar_Type pShowScrollBar = NULL;
|
||||
BOOL WINAPI extShowScrollBar(HWND, int, BOOL);
|
||||
typedef BOOL (WINAPI *DrawMenuBar_Type)(HWND);
|
||||
DrawMenuBar_Type pDrawMenuBar = NULL;
|
||||
BOOL WINAPI extDrawMenuBar(HWND);
|
||||
|
||||
|
||||
#ifdef TRACEPALETTE
|
||||
@ -181,6 +187,10 @@ static HookEntryEx_Type Hooks[]={
|
||||
{HOOK_HOT_CANDIDATE, 0, "ScrollDC", (FARPROC)NULL, (FARPROC *)&pScrollDC, (FARPROC)extScrollDC},
|
||||
//{HOOK_IAT_CANDIDATE, 0, "mouse_event", (FARPROC)NULL, (FARPROC *)&pmouse_event, (FARPROC)extmouse_event},
|
||||
|
||||
// both added to fix the Galapagos menu bar, but with no success !!!!
|
||||
{HOOK_HOT_CANDIDATE, 0, "ShowScrollBar", (FARPROC)ShowScrollBar, (FARPROC *)&pShowScrollBar, (FARPROC)extShowScrollBar},
|
||||
{HOOK_HOT_CANDIDATE, 0, "DrawMenuBar", (FARPROC)DrawMenuBar, (FARPROC *)&pDrawMenuBar, (FARPROC)extDrawMenuBar},
|
||||
|
||||
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
||||
};
|
||||
|
||||
@ -192,13 +202,12 @@ static HookEntryEx_Type RemapHooks[]={
|
||||
{HOOK_HOT_CANDIDATE, 0, "MapWindowPoints", (FARPROC)MapWindowPoints, (FARPROC *)&pMapWindowPoints, (FARPROC)extMapWindowPoints},
|
||||
{HOOK_HOT_CANDIDATE, 0, "GetUpdateRgn", (FARPROC)GetUpdateRgn, (FARPROC *)&pGetUpdateRgn, (FARPROC)extGetUpdateRgn},
|
||||
//{HOOK_IAT_CANDIDATE, 0, "GetUpdateRect", (FARPROC)GetUpdateRect, (FARPROC *)&pGetUpdateRect, (FARPROC)extGetUpdateRect},
|
||||
//{HOOK_IAT_CANDIDATE, 0, "RedrawWindow", (FARPROC)RedrawWindow, (FARPROC *)&pRedrawWindow, (FARPROC)extRedrawWindow},
|
||||
{HOOK_IAT_CANDIDATE, 0, "RedrawWindow", (FARPROC)RedrawWindow, (FARPROC *)&pRedrawWindow, (FARPROC)extRedrawWindow},
|
||||
{HOOK_IAT_CANDIDATE, 0, 0, NULL, 0, 0} // terminator
|
||||
};
|
||||
|
||||
static HookEntryEx_Type SyscallHooks[]={
|
||||
{HOOK_IAT_CANDIDATE, 0, "FrameRect", (FARPROC)FrameRect, (FARPROC *)&pFrameRect, (FARPROC)extFrameRect},
|
||||
{HOOK_IAT_CANDIDATE, 0, "RedrawWindow", (FARPROC)RedrawWindow, (FARPROC *)&pRedrawWindow, (FARPROC)extRedrawWindow},
|
||||
{HOOK_IAT_CANDIDATE, 0, "GetParent", (FARPROC)GetParent, (FARPROC *)&pGetParent, (FARPROC)extGetParent},
|
||||
{HOOK_HOT_CANDIDATE, 0, "InvalidateRgn", (FARPROC)InvalidateRgn, (FARPROC *)&pInvalidateRgn, (FARPROC)extInvalidateRgn},
|
||||
{HOOK_IAT_CANDIDATE, 0, "TabbedTextOutA", (FARPROC)TabbedTextOutA, (FARPROC *)&pTabbedTextOutA, (FARPROC)extTabbedTextOutA},
|
||||
@ -2902,22 +2911,19 @@ BOOL WINAPI extRedrawWindow(HWND hWnd, const RECT *lprcUpdate, HRGN hrgnUpdate,
|
||||
RECT rcUpdate;
|
||||
BOOL ret;
|
||||
|
||||
OutTraceDW("RedrawWindow: hwnd=%x flags=%x\n", hWnd, flags);
|
||||
OutTraceDW("RedrawWindow: hwnd=%x hrgn=%x flags=%x\n", hWnd, hrgnUpdate, flags);
|
||||
|
||||
rcUpdate = *lprcUpdate;
|
||||
// v2.03.64 fix: if hrgnUpdate is set, lprcUpdate is ignored, so it can't be scaled
|
||||
// beware: they both could be null, and that means the whole window
|
||||
if (!hrgnUpdate && lprcUpdate) rcUpdate = *lprcUpdate;
|
||||
// avoid redrawing the whole desktop
|
||||
if(dxw.Windowize && dxw.IsRealDesktop(hWnd)) hWnd=dxw.GethWnd();
|
||||
if(dxw.IsFullScreen()){
|
||||
switch(dxw.GDIEmulationMode){
|
||||
case GDIMODE_STRETCHED:
|
||||
rcUpdate = dxw.MapClientRect((LPRECT)lprcUpdate);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// v2.03.64 fix: if hrgnUpdate is set, lprcUpdate is ignored, so it can't be scaled
|
||||
if (!hrgnUpdate && lprcUpdate) rcUpdate = dxw.MapClientRect((LPRECT)lprcUpdate);
|
||||
}
|
||||
|
||||
ret = (*pRedrawWindow)(hWnd, &rcUpdate, hrgnUpdate, flags);
|
||||
ret = (*pRedrawWindow)(hWnd, lprcUpdate ? &rcUpdate : NULL, hrgnUpdate, flags);
|
||||
if(ret) OutTraceE("RedrawWindow ERROR: err=%d\n", GetLastError());
|
||||
return ret;
|
||||
}
|
||||
@ -3649,4 +3655,24 @@ VOID WINAPI extmouse_event(DWORD dwFlags, DWORD dx, DWORD dy, DWORD dwData, ULON
|
||||
{
|
||||
OutTrace("mouse_event: flags=%x xy=(%d,%d) data=%x, extrainfo=%lx\n", dwFlags, dx, dy, dwData, dwExtraInfo);
|
||||
return (*pmouse_event)(dwFlags, dx, dy, dwData, dwExtraInfo);
|
||||
}
|
||||
|
||||
BOOL WINAPI extShowScrollBar(HWND hWnd, int wBar, BOOL bShow)
|
||||
{
|
||||
BOOL ret;
|
||||
OutTraceDW("ShowScrollBar: hwnd=%x wBar=%x show=%x\n", hWnd, wBar, bShow);
|
||||
if(dxw.Windowize && dxw.IsRealDesktop(hWnd)) hWnd=dxw.GethWnd();
|
||||
ret=(*pShowScrollBar)(hWnd, wBar, bShow);
|
||||
if(!ret) OutTraceE("ShowScrollBar ERROR: err=%d\n", GetLastError());
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL WINAPI extDrawMenuBar(HWND hWnd)
|
||||
{
|
||||
BOOL ret;
|
||||
OutTraceDW("DrawMenuBar: hwnd=%x\n", hWnd);
|
||||
if(dxw.Windowize && dxw.IsRealDesktop(hWnd)) hWnd=dxw.GethWnd();
|
||||
ret=(*pDrawMenuBar)(hWnd);
|
||||
if(!ret) OutTraceE("DrawMenuBar ERROR: err=%d\n", GetLastError());
|
||||
return ret;
|
||||
}
|
@ -157,37 +157,36 @@ int KillProcByName(char *sProcessTail, BOOL bKill)
|
||||
return 0; // just tell you found it.
|
||||
}
|
||||
|
||||
#ifdef KILLSINGLEPROCESS
|
||||
// First open for termination
|
||||
hProc=OpenProcess(PROCESS_TERMINATE,FALSE,aiPID[i]);
|
||||
if(hProc)
|
||||
{
|
||||
if(TerminateProcess(hProc,0))
|
||||
{
|
||||
// process terminated
|
||||
CloseHandle(hProc);
|
||||
FreeLibrary(hInstLib);
|
||||
return 0;
|
||||
if(osvi.dwMajorVersion == 5){
|
||||
// First open for termination
|
||||
hProc=OpenProcess(PROCESS_TERMINATE,FALSE,aiPID[i]);
|
||||
if(hProc){
|
||||
if(TerminateProcess(hProc,0)){
|
||||
// process terminated
|
||||
CloseHandle(hProc);
|
||||
FreeLibrary(hInstLib);
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
// Unable to terminate process
|
||||
CloseHandle(hProc);
|
||||
FreeLibrary(hInstLib);
|
||||
return 602;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Unable to terminate process
|
||||
CloseHandle(hProc);
|
||||
FreeLibrary(hInstLib);
|
||||
return 602;
|
||||
else{
|
||||
// Unable to open process for termination
|
||||
FreeLibrary(hInstLib);
|
||||
return 604;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Unable to open process for termination
|
||||
FreeLibrary(hInstLib);
|
||||
return 604;
|
||||
else {
|
||||
// this will kill the whole process tree - though with no feedback retcode.
|
||||
extern void KillProcessTree(DWORD);
|
||||
KillProcessTree(aiPID[i]);
|
||||
FreeLibrary(hInstLib);
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
// this will kill the whole process tree - though with no feedback retcode.
|
||||
extern void KillProcessTree(DWORD);
|
||||
KillProcessTree(aiPID[i]);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,12 +66,14 @@ void CStatusDialog::OnTimer(UINT_PTR nIDEvent)
|
||||
Target=&pTargets[DxWndStatus.TaskIdx];
|
||||
|
||||
sprintf_s(sMsg2, 1024,
|
||||
"\nTask=%s\n"
|
||||
"\nTask=(%d): %s\n"
|
||||
"pid=%x\n"
|
||||
"Screen = (%dx%d) Color BPP=%d\n"
|
||||
"FullScreen = %s\nDX version = %d\n"
|
||||
"Logging = %s\n"
|
||||
"Cursor = (%d,%d)",
|
||||
pTitles[DxWndStatus.TaskIdx].title,
|
||||
(DxWndStatus.OrigIdx+1), pTitles[DxWndStatus.OrigIdx].title,
|
||||
DxWndStatus.dwPid,
|
||||
DxWndStatus.Width, DxWndStatus.Height, DxWndStatus.ColorDepth,
|
||||
DxWndStatus.IsFullScreen ? "Yes":"No", DxWndStatus.DXVersion,
|
||||
DxWndStatus.isLogging?"ON":"OFF",
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -767,6 +767,8 @@ static void SaveConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i,
|
||||
WritePrivateProfileString("target", key, val, InitPath);
|
||||
sprintf_s(key, sizeof(key), "tflag%i", i);
|
||||
sprintf_s(val, sizeof(val), "%i", TargetMap->tflags);
|
||||
sprintf_s(key, sizeof(key), "dflag%i", i);
|
||||
sprintf_s(val, sizeof(val), "%i", TargetMap->dflags);
|
||||
WritePrivateProfileString("target", key, val, InitPath);
|
||||
sprintf_s(key, sizeof(key), "posx%i", i);
|
||||
sprintf_s(val, sizeof(val), "%i", TargetMap->posx);
|
||||
@ -879,6 +881,7 @@ static int LoadConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i, c
|
||||
char *sBuf;
|
||||
sBuf = (char *)malloc(1000000);
|
||||
extern BOOL gbDebug;
|
||||
TargetMap->index = i;
|
||||
// -------
|
||||
sprintf_s(key, sizeof(key), "path%i", i);
|
||||
GetPrivateProfileString("target", key, "", TargetMap->path, MAX_PATH, InitPath);
|
||||
@ -941,6 +944,9 @@ static int LoadConfigItem(TARGETMAP *TargetMap, PRIVATEMAP *PrivateMap, int i, c
|
||||
sprintf_s(key, sizeof(key), "tflag%i", i);
|
||||
TargetMap->tflags = GetPrivateProfileInt("target", key, 0, InitPath);
|
||||
// -------
|
||||
sprintf_s(key, sizeof(key), "dflag%i", i);
|
||||
TargetMap->dflags = GetPrivateProfileInt("target", key, 0, InitPath);
|
||||
// -------
|
||||
sprintf_s(key, sizeof(key), "posx%i", i);
|
||||
TargetMap->posx = GetPrivateProfileInt("target", key, 0, InitPath);
|
||||
// -------
|
||||
@ -1514,6 +1520,7 @@ void CDxwndhostView::OnSort()
|
||||
listitem.pszText = PrivateMaps[i].title;
|
||||
listctrl.SetItem(&listitem);
|
||||
listctrl.InsertItem(&listitem);
|
||||
TargetMaps[i].index = i; // renumber
|
||||
}
|
||||
|
||||
SetTarget(TargetMaps);
|
||||
@ -1568,12 +1575,12 @@ void CDxwndhostView::OnPause()
|
||||
CTargetDlg dlg;
|
||||
HRESULT res;
|
||||
DXWNDSTATUS DxWndStatus;
|
||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
|
||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) /*|| (DxWndStatus.hWnd==NULL)*/ ) {
|
||||
MessageBoxLang(DXW_STRING_NOPAUSETASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
|
||||
}
|
||||
else {
|
||||
wchar_t *wcstring = new wchar_t[48+1];
|
||||
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[DxWndStatus.TaskIdx].title, _TRUNCATE);
|
||||
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[DxWndStatus.OrigIdx].title, _TRUNCATE);
|
||||
res=MessageBoxLangArg(DXW_STRING_PAUSETASK, DXW_STRING_INFO, MB_YESNO | MB_ICONQUESTION, wcstring);
|
||||
if(res!=IDYES) return;
|
||||
PauseResumeThreadList(DxWndStatus.dwPid, FALSE);
|
||||
@ -1585,12 +1592,12 @@ void CDxwndhostView::OnResume()
|
||||
CTargetDlg dlg;
|
||||
HRESULT res;
|
||||
DXWNDSTATUS DxWndStatus;
|
||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
|
||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) /*|| (DxWndStatus.hWnd==NULL)*/) {
|
||||
MessageBoxLang(DXW_STRING_NORESUMETASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
|
||||
}
|
||||
else {
|
||||
wchar_t *wcstring = new wchar_t[48+1];
|
||||
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[DxWndStatus.TaskIdx].title, _TRUNCATE);
|
||||
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[DxWndStatus.OrigIdx].title, _TRUNCATE);
|
||||
res=MessageBoxLangArg(DXW_STRING_RESUMETASK, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
|
||||
if(res!=IDYES) return;
|
||||
PauseResumeThreadList(DxWndStatus.dwPid, TRUE);
|
||||
@ -1639,12 +1646,12 @@ void CDxwndhostView::OnKill()
|
||||
HRESULT res;
|
||||
HANDLE TargetHandle;
|
||||
DXWNDSTATUS DxWndStatus;
|
||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) || (DxWndStatus.hWnd==NULL)) {
|
||||
if ((GetHookStatus(&DxWndStatus) != DXW_RUNNING) /*|| (DxWndStatus.hWnd==NULL)*/) {
|
||||
MessageBoxLang(DXW_STRING_NOKILLTASK, DXW_STRING_INFO, MB_ICONEXCLAMATION);
|
||||
}
|
||||
else {
|
||||
wchar_t *wcstring = new wchar_t[48+1];
|
||||
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[DxWndStatus.TaskIdx].title, _TRUNCATE);
|
||||
mbstowcs_s(NULL, wcstring, 48, PrivateMaps[DxWndStatus.OrigIdx].title, _TRUNCATE);
|
||||
res=MessageBoxLangArg(DXW_STRING_KILLTASK, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION, wcstring);
|
||||
if(res!=IDYES) return;
|
||||
DxWndStatus.dwPid;
|
||||
@ -1730,6 +1737,7 @@ void CDxwndhostView::OnAdd()
|
||||
len=FilePath.ReverseFind('\\');
|
||||
FilePath=FilePath.Right(FilePath.GetLength()-len-1);
|
||||
strncpy_s(PrivateMaps[i].title, sizeof(PrivateMaps[i].title), FilePath.GetString(), sizeof(PrivateMaps[i].title)-1);
|
||||
TargetMaps[i].index = i;
|
||||
}
|
||||
listitem.pszText = PrivateMaps[i].title;
|
||||
listctrl.InsertItem(&listitem);
|
||||
@ -1766,6 +1774,7 @@ void CDxwndhostView::OnDuplicate()
|
||||
listitem.pszText = PrivateMaps[i].title;
|
||||
listctrl.SetItem(&listitem);
|
||||
listctrl.InsertItem(&listitem);
|
||||
TargetMaps[i].index = i;
|
||||
}
|
||||
SetTarget(TargetMaps);
|
||||
this->isUpdated=TRUE;
|
||||
@ -2065,7 +2074,7 @@ DWORD WINAPI TrayIconUpdate(CSystemTray *Tray)
|
||||
GetHookStatus(&DxWndStatus);
|
||||
sprintf_s(sMsg, 1024,
|
||||
"Running \"%s\"\nScreen = (%dx%d) %dBPP\nFullScreen = %s\nDX version = %d",
|
||||
pTitles[DxWndStatus.TaskIdx].title,
|
||||
pTitles[DxWndStatus.OrigIdx].title,
|
||||
DxWndStatus.Width, DxWndStatus.Height, DxWndStatus.ColorDepth,
|
||||
DxWndStatus.IsFullScreen ? "Yes":"No", DxWndStatus.DXVersion);
|
||||
}
|
||||
@ -2171,6 +2180,7 @@ void CDxwndhostView::Resize()
|
||||
int i, tmp, size = 0;
|
||||
|
||||
for(i = 0; i < MAXTARGETS; i ++){
|
||||
TargetMaps[i].index = i; // renumber the items
|
||||
if(strlen(TargetMaps[i].path) == 0) break;
|
||||
tmp = listctrl.GetStringWidth(PrivateMaps[i].title);
|
||||
if(size < tmp) size = tmp;
|
||||
|
BIN
proxy/d3d8.suo
BIN
proxy/d3d8.suo
Binary file not shown.
BIN
proxy/d3d9.suo
BIN
proxy/d3d9.suo
Binary file not shown.
BIN
proxy/ddraw.suo
BIN
proxy/ddraw.suo
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user