mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_02_62_src
Former-commit-id: a053e9cf3708adc2b143d5c01f7d515b3594686e
This commit is contained in:
parent
0197772dfd
commit
0075eb9b13
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c6bba6804bdeb0de0f1ff7e02150e77f737c1f1bcbab40e6b192d48a7ab00451
|
||||
size 462848
|
||||
oid sha256:d99c6a80bd9c8ad4d82a995f662236e7a452ad2317a55eda538c7d2ea4ed3bb6
|
||||
size 463872
|
||||
|
239
build/dxwnd.ini
239
build/dxwnd.ini
@ -3458,7 +3458,7 @@ coord138=0
|
||||
flag138=679493664
|
||||
flagg138=1208025088
|
||||
flagh138=65556
|
||||
flagi138=4
|
||||
flagi138=67596
|
||||
tflag138=6403
|
||||
initx138=0
|
||||
inity138=0
|
||||
@ -3471,7 +3471,7 @@ posy138=50
|
||||
sizx138=800
|
||||
sizy138=600
|
||||
maxfps138=0
|
||||
initts138=-2
|
||||
initts138=0
|
||||
winver138=0
|
||||
maxres138=-1
|
||||
title139=New York Race
|
||||
@ -3630,11 +3630,11 @@ module145=
|
||||
opengllib145=
|
||||
ver145=1
|
||||
coord145=0
|
||||
flag145=134234146
|
||||
flag145=134234274
|
||||
flagg145=134283520
|
||||
flagh145=20
|
||||
flagi145=12
|
||||
tflag145=5249
|
||||
tflag145=6163
|
||||
initx145=0
|
||||
inity145=0
|
||||
minx145=0
|
||||
@ -3646,7 +3646,7 @@ posy145=50
|
||||
sizx145=800
|
||||
sizy145=600
|
||||
maxfps145=0
|
||||
initts145=2
|
||||
initts145=0
|
||||
winver145=0
|
||||
maxres145=-1
|
||||
title146=Total Soccer 2000 (3DFX)
|
||||
@ -3699,8 +3699,233 @@ maxfps147=0
|
||||
initts147=0
|
||||
winver147=0
|
||||
maxres147=-1
|
||||
title148=Titan Quest
|
||||
path148=D:\Games\Titan Quest\Titan Quest.exe
|
||||
module148=
|
||||
opengllib148=
|
||||
ver148=9
|
||||
coord148=2
|
||||
flag148=134218272
|
||||
flagg148=134217728
|
||||
flagh148=20
|
||||
flagi148=1026
|
||||
tflag148=6147
|
||||
initx148=0
|
||||
inity148=0
|
||||
minx148=0
|
||||
miny148=0
|
||||
maxx148=0
|
||||
maxy148=0
|
||||
posx148=50
|
||||
posy148=50
|
||||
sizx148=800
|
||||
sizy148=600
|
||||
maxfps148=0
|
||||
initts148=0
|
||||
winver148=4
|
||||
maxres148=-1
|
||||
title149=Titan Quest Immortal Throne
|
||||
path149=D:\Games\Titan Quest Immortal Throne\Tqit.exe
|
||||
module149=
|
||||
opengllib149=
|
||||
ver149=9
|
||||
coord149=0
|
||||
flag149=134218272
|
||||
flagg149=1207959552
|
||||
flagh149=20
|
||||
flagi149=4
|
||||
tflag149=0
|
||||
initx149=0
|
||||
inity149=0
|
||||
minx149=0
|
||||
miny149=0
|
||||
maxx149=0
|
||||
maxy149=0
|
||||
posx149=50
|
||||
posy149=50
|
||||
sizx149=800
|
||||
sizy149=600
|
||||
maxfps149=0
|
||||
initts149=0
|
||||
winver149=0
|
||||
maxres149=-1
|
||||
title150=Darius Gaiden
|
||||
path150=D:\Games\Darius_gaiden\DARIUS.EXE
|
||||
module150=
|
||||
opengllib150=
|
||||
ver150=0
|
||||
coord150=0
|
||||
flag150=671089184
|
||||
flagg150=1207959552
|
||||
flagh150=20
|
||||
flagi150=4
|
||||
tflag150=0
|
||||
initx150=0
|
||||
inity150=0
|
||||
minx150=0
|
||||
miny150=0
|
||||
maxx150=0
|
||||
maxy150=0
|
||||
posx150=50
|
||||
posy150=50
|
||||
sizx150=800
|
||||
sizy150=600
|
||||
maxfps150=0
|
||||
initts150=2
|
||||
winver150=0
|
||||
maxres150=-1
|
||||
title151=Dark Colony
|
||||
path151=D:\Games\DarkColony\DCOLONY\DC.EXE
|
||||
module151=
|
||||
opengllib151=
|
||||
ver151=0
|
||||
coord151=0
|
||||
flag151=136315424
|
||||
flagg151=1207959552
|
||||
flagh151=20
|
||||
flagi151=4
|
||||
tflag151=0
|
||||
initx151=0
|
||||
inity151=0
|
||||
minx151=0
|
||||
miny151=0
|
||||
maxx151=0
|
||||
maxy151=0
|
||||
posx151=50
|
||||
posy151=50
|
||||
sizx151=800
|
||||
sizy151=600
|
||||
maxfps151=0
|
||||
initts151=0
|
||||
winver151=0
|
||||
maxres151=-1
|
||||
title152=Dark Reign 2
|
||||
path152=D:\Games\Dr2\dr2.exe
|
||||
module152=
|
||||
opengllib152=
|
||||
ver152=0
|
||||
coord152=0
|
||||
flag152=671088672
|
||||
flagg152=1207959552
|
||||
flagh152=20
|
||||
flagi152=4
|
||||
tflag152=0
|
||||
initx152=0
|
||||
inity152=0
|
||||
minx152=0
|
||||
miny152=0
|
||||
maxx152=0
|
||||
maxy152=0
|
||||
posx152=50
|
||||
posy152=50
|
||||
sizx152=800
|
||||
sizy152=600
|
||||
maxfps152=0
|
||||
initts152=0
|
||||
winver152=0
|
||||
maxres152=-1
|
||||
title153=Dark Planet: Battle for Natrolis
|
||||
path153=D:\Games\DarkPlanet\Dark.exe
|
||||
module153=
|
||||
opengllib153=
|
||||
ver153=0
|
||||
coord153=0
|
||||
flag153=671088673
|
||||
flagg153=1208025088
|
||||
flagh153=20
|
||||
flagi153=12
|
||||
tflag153=0
|
||||
initx153=0
|
||||
inity153=0
|
||||
minx153=0
|
||||
miny153=0
|
||||
maxx153=0
|
||||
maxy153=0
|
||||
posx153=50
|
||||
posy153=50
|
||||
sizx153=800
|
||||
sizy153=600
|
||||
maxfps153=0
|
||||
initts153=0
|
||||
winver153=0
|
||||
maxres153=-1
|
||||
title154=Geneforge
|
||||
path154=D:\Games\Geneforge\Geneforge.exe
|
||||
module154=
|
||||
opengllib154=
|
||||
ver154=0
|
||||
coord154=0
|
||||
flag154=134234660
|
||||
flagg154=1207959680
|
||||
flagh154=20
|
||||
flagi154=131076
|
||||
tflag154=0
|
||||
initx154=0
|
||||
inity154=0
|
||||
minx154=0
|
||||
miny154=0
|
||||
maxx154=0
|
||||
maxy154=0
|
||||
posx154=50
|
||||
posy154=50
|
||||
sizx154=800
|
||||
sizy154=600
|
||||
maxfps154=0
|
||||
initts154=0
|
||||
winver154=0
|
||||
maxres154=-1
|
||||
title155=Geneforge (GOG)
|
||||
path155=D:\Games\GOG.com\Geneforge\Geneforge\Geneforge.exe
|
||||
module155=
|
||||
opengllib155=
|
||||
ver155=0
|
||||
coord155=0
|
||||
flag155=134234656
|
||||
flagg155=1208025088
|
||||
flagh155=20
|
||||
flagi155=12
|
||||
tflag155=0
|
||||
initx155=0
|
||||
inity155=0
|
||||
minx155=0
|
||||
miny155=0
|
||||
maxx155=0
|
||||
maxy155=0
|
||||
posx155=50
|
||||
posy155=50
|
||||
sizx155=800
|
||||
sizy155=600
|
||||
maxfps155=0
|
||||
initts155=-8
|
||||
winver155=0
|
||||
maxres155=-1
|
||||
title156=Jumpgate Classic
|
||||
path156=D:\Games\Jumpgate\Jumpgate\jumpgate.exe
|
||||
module156=
|
||||
opengllib156=
|
||||
ver156=0
|
||||
coord156=0
|
||||
flag156=134218272
|
||||
flagg156=1207959568
|
||||
flagh156=84
|
||||
flagi156=2
|
||||
tflag156=0
|
||||
initx156=0
|
||||
inity156=0
|
||||
minx156=0
|
||||
miny156=0
|
||||
maxx156=0
|
||||
maxy156=0
|
||||
posx156=50
|
||||
posy156=50
|
||||
sizx156=1200
|
||||
sizy156=900
|
||||
maxfps156=0
|
||||
initts156=0
|
||||
winver156=0
|
||||
maxres156=-1
|
||||
[window]
|
||||
posx=1010
|
||||
posy=145
|
||||
posx=963
|
||||
posy=147
|
||||
sizx=638
|
||||
sizy=618
|
||||
|
@ -406,4 +406,11 @@ fixed ZBUFFER surface creation to handle GOG Incoming troubles on some cards
|
||||
fixed handling of special effects (wireframe, no fogging, zbuffer always) to be valid on all d3d versions
|
||||
|
||||
v2.02.61
|
||||
added directx "Compensate Flip emulation" flag: used primarily to get rid of mouse artifacts due to emulated Flip rpocedure in windowed mode. Fixes Gruntz issues and some other games...
|
||||
added directx "Compensate Flip emulation" flag: used primarily to get rid of mouse artifacts due to emulated Flip rpocedure in windowed mode. Fixes Gruntz issues and some other games...
|
||||
|
||||
v2.02.62
|
||||
fixed d3d7 CreateDevice hook and d3d7 rendering options (wireframe, disablefogging, zbufferalways)
|
||||
fixed doublebuffer emulation - avoid returning the backbuffer when zbuffer is requested. Fixes rendering problems of many games!
|
||||
|
||||
|
||||
|
||||
|
Binary file not shown.
@ -2820,11 +2820,15 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet
|
||||
// the attached backbuffer itself. Makes Silver working, anyway....
|
||||
// beware: "Snowboard Racer" fails if you return an attached surface anyhow! There,
|
||||
// the primary surface was created with back buffer count == 1.
|
||||
// v2.2.62 fix: a check to implement doublebuffer emulation only in case of DDSCAPS_BACKBUFFER
|
||||
// requests. A call to GetAttachedSurface can be made to retrieve DDSCAPS_ZBUFFER surfaces, and in
|
||||
// this case the lpDDSBack surface can't be returned.
|
||||
|
||||
if (IsBack && (DDSD_Prim.dwBackBufferCount > 1)){
|
||||
if (IsBack && (DDSD_Prim.dwBackBufferCount > 1) && (lpddsc->dwCaps & DDSCAPS_BACKBUFFER)){
|
||||
//if (IsBack && (DDSD_Prim.dwBackBufferCount > 1)){
|
||||
*lplpddas = lpDDSBack;
|
||||
OutTraceDW("GetAttachedSurface(%d): DOUBLEBUFFER attached=%x\n", dxversion, *lplpddas);
|
||||
return 0;
|
||||
OutTraceDW("GetAttachedSurface(%d): DOUBLEBUFFER attached to BACK=%x\n", dxversion, *lplpddas);
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
// on primary surface return the lpDDSBack surface coming from either an explicit
|
||||
@ -2834,7 +2838,7 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet
|
||||
if (lpDDSBack) {
|
||||
*lplpddas = lpDDSBack;
|
||||
OutTraceDW("GetAttachedSurface(%d): BACKBUFFER attached=%x\n", dxversion, *lplpddas);
|
||||
return 0;
|
||||
return DD_OK;
|
||||
}
|
||||
else {
|
||||
*lplpddas = NULL;
|
||||
@ -2842,7 +2846,7 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet
|
||||
return DDERR_NOTFOUND;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// proxy the call...
|
||||
|
||||
res=(*pGetAttachedSurface)(lpdds, lpddsc, lplpddas);
|
||||
|
@ -1662,3 +1662,20 @@ char *ExplainD3DRenderState(DWORD c)
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
char *ExplainRenderstateValue(DWORD Value)
|
||||
{
|
||||
char *p;
|
||||
switch(Value){
|
||||
case D3DCMP_NEVER : p="D3DCMP_NEVER"; break;
|
||||
case D3DCMP_LESS : p="D3DCMP_LESS"; break;
|
||||
case D3DCMP_EQUAL : p="D3DCMP_EQUAL"; break;
|
||||
case D3DCMP_LESSEQUAL : p="D3DCMP_LESSEQUAL"; break;
|
||||
case D3DCMP_GREATER : p="D3DCMP_GREATER"; break;
|
||||
case D3DCMP_NOTEQUAL : p="D3DCMP_NOTEQUAL"; break;
|
||||
case D3DCMP_GREATEREQUAL : p="D3DCMP_GREATEREQUAL"; break;
|
||||
case D3DCMP_ALWAYS : p="D3DCMP_ALWAYS"; break;
|
||||
default : p="???"; break;
|
||||
}
|
||||
return p;
|
||||
}
|
@ -46,4 +46,5 @@ extern char *ExplainPeekRemoveMsg(DWORD);
|
||||
extern char *ExplainGetDCExFlags(DWORD);
|
||||
extern char *ExplainPaletteUse(UINT);
|
||||
extern char *ExplainRasterCaps(DWORD);
|
||||
extern char *ExplainD3DRenderState(DWORD);
|
||||
extern char *ExplainD3DRenderState(DWORD);
|
||||
extern char *ExplainRenderstateValue(DWORD);
|
||||
|
BIN
dll/dxwnd.aps
BIN
dll/dxwnd.aps
Binary file not shown.
@ -24,7 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#include "dxwnd.h"
|
||||
#include "dxwcore.hpp"
|
||||
|
||||
#define VERSION "2.02.61"
|
||||
#define VERSION "2.02.62"
|
||||
|
||||
#define DDTHREADLOCK 1
|
||||
|
||||
|
Binary file not shown.
22
dll/hd3d.cpp
22
dll/hd3d.cpp
@ -7,6 +7,7 @@
|
||||
#include "dxwnd.h"
|
||||
#include "dxwcore.hpp"
|
||||
#include "dxhook.h"
|
||||
#include "dxhelper.h"
|
||||
#include "syslibs.h"
|
||||
|
||||
#define HOOKD3D10ANDLATER 1
|
||||
@ -496,6 +497,7 @@ void HookD3DDevice8(void** ppD3Ddev8)
|
||||
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);
|
||||
//if(1) (*pSetRenderState)((void *)*ppD3Ddev8, D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
|
||||
}
|
||||
//if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
//SetHook((void *)(**(DWORD **)ppD3Ddev8 + 4), extAddRef8, (void **)&pAddRef8, "AddRef(D8)");
|
||||
@ -529,6 +531,7 @@ void HookD3DDevice9(void** ppD3Ddev9)
|
||||
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);
|
||||
//if(1) (*pSetRenderState)((void *)*ppD3Ddev9, D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
|
||||
}
|
||||
if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
|
||||
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 4), extAddRef9, (void **)&pAddRef9, "AddRef(D9)");
|
||||
@ -960,14 +963,25 @@ extern char *ExplainRenderstateValue(DWORD Value);
|
||||
|
||||
HRESULT WINAPI extSetRenderState(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("SetRenderState: d3dd=%x State=%x(%s) Value=%x\n", pd3dd, State, ExplainD3DRenderState(State), Value);
|
||||
|
||||
if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRS_ZFUNC)) {
|
||||
OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(Value));
|
||||
Value = D3DCMP_ALWAYS;
|
||||
}
|
||||
if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRS_FILLMODE)) Value=D3DFILL_WIREFRAME;
|
||||
if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRS_FOGENABLE)) Value=FALSE;
|
||||
//if(1 && (State == D3DRS_SPECULARENABLE)) Value=TRUE;
|
||||
return (*pSetRenderState)(pd3dd, State, Value);
|
||||
if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRS_FILLMODE)){
|
||||
OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=%x->D3DFILL_WIREFRAME\n", Value);
|
||||
Value = D3DFILL_WIREFRAME;
|
||||
}
|
||||
if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRS_FOGENABLE)){
|
||||
OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=%x->FALSE\n", Value);
|
||||
Value = FALSE;
|
||||
}
|
||||
|
||||
res=(*pSetRenderState)(pd3dd, State, Value);
|
||||
if(res) OutTraceE("SetRenderState: res=%x(%s)\n", res, ExplainDDError(res));
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetRenderState(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
|
122
dll/hd3d7.cpp
122
dll/hd3d7.cpp
@ -77,11 +77,14 @@ AddViewport3_Type pAddViewport3 = NULL;
|
||||
Scene3_Type pBeginScene1 = NULL;
|
||||
Scene3_Type pBeginScene2 = NULL;
|
||||
Scene3_Type pBeginScene3 = NULL;
|
||||
Scene3_Type pBeginScene7 = NULL;
|
||||
Scene3_Type pEndScene1 = NULL;
|
||||
Scene3_Type pEndScene2 = NULL;
|
||||
Scene3_Type pEndScene3 = NULL;
|
||||
Scene3_Type pEndScene7 = NULL;
|
||||
SetRenderState3_Type pSetRenderState2 = NULL;
|
||||
SetRenderState3_Type pSetRenderState3 = NULL;
|
||||
SetRenderState3_Type pSetRenderState7 = NULL;
|
||||
GetViewport7_Type pGetViewport7 = NULL;
|
||||
SetViewport7_Type pSetViewport7 = NULL;
|
||||
SetLightState_Type pSetLightState3 = NULL;
|
||||
@ -148,14 +151,17 @@ HRESULT WINAPI extQueryInterfaceD3(void *, REFIID, LPVOID *);
|
||||
HRESULT WINAPI extD3DInitialize(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC);
|
||||
HRESULT WINAPI extD3DGetCaps(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC);
|
||||
|
||||
HRESULT WINAPI extSetRenderState2(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extBeginScene1(void *);
|
||||
HRESULT WINAPI extEndScene1(void *);
|
||||
HRESULT WINAPI extBeginScene2(void *);
|
||||
HRESULT WINAPI extEndScene2(void *);
|
||||
HRESULT WINAPI extSetRenderState3(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extBeginScene3(void *);
|
||||
HRESULT WINAPI extEndScene3(void *);
|
||||
HRESULT WINAPI extBeginScene7(void *);
|
||||
HRESULT WINAPI extEndScene7(void *);
|
||||
HRESULT WINAPI extSetRenderState2(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extSetRenderState3(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extSetRenderState7(void *, D3DRENDERSTATETYPE, DWORD);
|
||||
HRESULT WINAPI extGetCaps3(void *, LPD3DDEVICEDESC, LPD3DDEVICEDESC);
|
||||
HRESULT WINAPI extSetLightState3(void *d3dd, D3DLIGHTSTATETYPE d3dls, DWORD t);
|
||||
HRESULT WINAPI extSetViewport3(void *, LPD3DVIEWPORT);
|
||||
@ -269,7 +275,7 @@ void HookDirect3DSession(LPDIRECTDRAW *lplpdd, int d3dversion)
|
||||
case 7:
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 0), extQueryInterfaceD3, (void **)&pQueryInterfaceD3, "QueryInterface(D3S)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 12), extEnumDevices7, (void **)&pEnumDevices7, "EnumDevices(7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 32), extCreateDevice7, (void **)&pCreateDevice7, "CreateDevice(D3D7)");
|
||||
SetHook((void *)(**(DWORD **)lplpdd + 16), extCreateDevice7, (void **)&pCreateDevice7, "CreateDevice(D3D7)");
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -302,6 +308,7 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion)
|
||||
if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME);
|
||||
if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE);
|
||||
if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS);
|
||||
//if(1) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_LESSEQUAL);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
@ -317,11 +324,21 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion)
|
||||
if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME);
|
||||
if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE);
|
||||
if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS);
|
||||
//if(1) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_LESSEQUAL);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
SetHook((void *)(**(DWORD **)lpd3ddev + 20), extBeginScene7, (void **)&pBeginScene7, "BeginScene(7)");
|
||||
SetHook((void *)(**(DWORD **)lpd3ddev + 24), extEndScene7, (void **)&pEndScene7, "EndScene(7)");
|
||||
SetHook((void *)(**(DWORD **)lpd3ddev + 52), extSetViewport7, (void **)&pSetViewport7, "SetViewport(7)");
|
||||
SetHook((void *)(**(DWORD **)lpd3ddev + 60), extGetViewport7, (void **)&pGetViewport7, "GetViewport(7)");
|
||||
SetHook((void *)(**(DWORD **)lpd3ddev + 80), extSetRenderState7, (void **)&pSetRenderState7, "SetRenderState(7)");
|
||||
if(pSetRenderState7){
|
||||
if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState7)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME);
|
||||
if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState7)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE);
|
||||
if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState7)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS);
|
||||
//if(1) (*pSetRenderState7)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_LESSEQUAL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -773,67 +790,42 @@ HRESULT WINAPI extD3DGetCaps(void *d3dd, LPD3DDEVICEDESC lpd3dd ,LPD3DDEVICEDESC
|
||||
return res;
|
||||
}
|
||||
|
||||
char *ExplainRenderstateValue(DWORD Value)
|
||||
HRESULT WINAPI extSetRenderState(SetRenderState3_Type pSetRenderState, int version, void *d3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{
|
||||
char *p;
|
||||
switch(Value){
|
||||
case D3DCMP_NEVER : p="D3DCMP_NEVER"; break;
|
||||
case D3DCMP_LESS : p="D3DCMP_LESS"; break;
|
||||
case D3DCMP_EQUAL : p="D3DCMP_EQUAL"; break;
|
||||
case D3DCMP_LESSEQUAL : p="D3DCMP_LESSEQUAL"; break;
|
||||
case D3DCMP_GREATER : p="D3DCMP_GREATER"; break;
|
||||
case D3DCMP_NOTEQUAL : p="D3DCMP_NOTEQUAL"; break;
|
||||
case D3DCMP_GREATEREQUAL : p="D3DCMP_GREATEREQUAL"; break;
|
||||
case D3DCMP_ALWAYS : p="D3DCMP_ALWAYS"; break;
|
||||
default : p="???"; break;
|
||||
HRESULT res;
|
||||
OutTraceD3D("SetRenderState(%d): d3dd=%x State=%x(%s) Value=%x\n", version, d3dd, State, ExplainD3DRenderState(State), Value);
|
||||
|
||||
if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) {
|
||||
OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(Value));
|
||||
Value = D3DCMP_ALWAYS;
|
||||
}
|
||||
return p;
|
||||
if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){
|
||||
OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=%x->D3DFILL_WIREFRAME\n", Value);
|
||||
Value = D3DFILL_WIREFRAME;
|
||||
}
|
||||
if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRENDERSTATE_FOGENABLE)){
|
||||
OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=%x->FALSE\n", Value);
|
||||
Value = FALSE;
|
||||
}
|
||||
|
||||
res=(*pSetRenderState)(d3dd, State, Value);
|
||||
if(res) OutTraceE("SetRenderState: res=%x(%s)\n", res, ExplainDDError(res));
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extSetRenderState2(void *d3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("SetRenderState(2): d3dd=%x State=%x(%s) Value=%x\n", d3dd, State, ExplainD3DRenderState(State), Value);
|
||||
if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) {
|
||||
DWORD OldValue;
|
||||
OldValue = Value;
|
||||
Value = D3DCMP_ALWAYS;
|
||||
OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(OldValue));
|
||||
}
|
||||
if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){
|
||||
Value = D3DFILL_WIREFRAME;
|
||||
OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=D3DFILL_WIREFRAME\n");
|
||||
}
|
||||
if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRENDERSTATE_FOGENABLE)){
|
||||
OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=FALSE\n");
|
||||
Value = FALSE;
|
||||
}
|
||||
res=(*pSetRenderState2)(d3dd, State, Value);
|
||||
if(res) OutTraceE("SetRenderState(2): res=%x(%s)\n", res, ExplainDDError(res));
|
||||
return res;
|
||||
return extSetRenderState(pSetRenderState2, 2, d3dd, State, Value);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extSetRenderState3(void *d3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("SetRenderState(3): d3dd=%x State=%x(%s) Value=%x\n", d3dd, State, ExplainD3DRenderState(State), Value);
|
||||
if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) {
|
||||
DWORD OldValue;
|
||||
OldValue = Value;
|
||||
Value = D3DCMP_ALWAYS;
|
||||
OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(OldValue));
|
||||
}
|
||||
if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){
|
||||
Value = D3DFILL_WIREFRAME;
|
||||
OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=D3DFILL_WIREFRAME\n");
|
||||
}
|
||||
if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRENDERSTATE_FOGENABLE)){
|
||||
OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=FALSE\n");
|
||||
Value = FALSE;
|
||||
}
|
||||
res=(*pSetRenderState3)(d3dd, State, Value);
|
||||
if(res) OutTraceE("SetRenderState(3): res=%x(%s)\n", res, ExplainDDError(res));
|
||||
return res;
|
||||
return extSetRenderState(pSetRenderState3, 3, d3dd, State, Value);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extSetRenderState7(void *d3dd, D3DRENDERSTATETYPE State, DWORD Value)
|
||||
{
|
||||
return extSetRenderState(pSetRenderState7, 7, d3dd, State, Value);
|
||||
}
|
||||
|
||||
HRESULT WINAPI extBeginScene1(void *d3dd)
|
||||
@ -898,6 +890,18 @@ HRESULT WINAPI extBeginScene3(void *d3dd)
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extBeginScene7(void *d3dd)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("BeginScene(7): d3dd=%x\n", d3dd);
|
||||
|
||||
// there is no Clear method for Viewport object in D3D7 !!!
|
||||
|
||||
res=(*pBeginScene7)(d3dd);
|
||||
if(res) OutTraceE("BeginScene(7): res=%x(%s)\n", res, ExplainDDError(res));
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extEndScene1(void *d3dd)
|
||||
{
|
||||
HRESULT res;
|
||||
@ -928,6 +932,16 @@ HRESULT WINAPI extEndScene3(void *d3dd)
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extEndScene7(void *d3dd)
|
||||
{
|
||||
HRESULT res;
|
||||
OutTraceD3D("EndScene(7): d3dd=%x\n", d3dd);
|
||||
res=(*pEndScene7)(d3dd);
|
||||
//dxw.ShowOverlay();
|
||||
if(res) OutTraceE("EndScene(7): res=%x(%s)\n", res, ExplainDDError(res));
|
||||
return res;
|
||||
}
|
||||
|
||||
HRESULT WINAPI extGetCaps3(void *d3dd, LPD3DDEVICEDESC hd, LPD3DDEVICEDESC sd)
|
||||
{
|
||||
HRESULT res;
|
||||
|
37
todo.txt
Normal file
37
todo.txt
Normal file
@ -0,0 +1,37 @@
|
||||
int WINAPI D3DPERF_BeginEvent(D3DCOLOR col, LPCWSTR wszName)
|
||||
{
|
||||
if (!gl_hOriginalDll) LoadOriginalDll(); // looking for the "right d3d9.dll"
|
||||
|
||||
typedef int (WINAPI* D3DPERF_BE)(D3DCOLOR,LPCWSTR);
|
||||
D3DPERF_BE D3DPERF_BeginEvent_fn = (D3DPERF_BE) GetProcAddress( gl_hOriginalDll, "D3DPERF_BeginEvent");
|
||||
|
||||
return D3DPERF_BeginEvent_fn(col, wszName);
|
||||
}
|
||||
|
||||
int WINAPI D3DPERF_EndEvent()
|
||||
{
|
||||
if (!gl_hOriginalDll) LoadOriginalDll(); // looking for the "right d3d9.dll"
|
||||
|
||||
typedef int (WINAPI* D3DPERF_EE)(void);
|
||||
D3DPERF_EE D3DPERF_EndEvent_fn = (D3DPERF_EE) GetProcAddress( gl_hOriginalDll, "D3DPERF_EndEvent");
|
||||
|
||||
return D3DPERF_EndEvent_fn();
|
||||
}
|
||||
|
||||
void WINAPI D3DPERF_SetMarker(D3DCOLOR col, LPCWSTR wszName)
|
||||
{
|
||||
if (!gl_hOriginalDll) LoadOriginalDll(); // looking for the "right d3d9.dll"
|
||||
|
||||
typedef void (WINAPI* D3DPERF_SM)(D3DCOLOR,LPCWSTR);
|
||||
D3DPERF_SM D3DPERF_SetMarker_fn = (D3DPERF_SM) GetProcAddress( gl_hOriginalDll, "D3DPERF_SetMarker");
|
||||
|
||||
D3DPERF_SetMarker_fn(col, wszName);
|
||||
}
|
||||
|
||||
LIBRARY "d3d9"
|
||||
|
||||
EXPORTS
|
||||
Direct3DCreate9 @1
|
||||
D3DPERF_BeginEvent @2
|
||||
D3DPERF_EndEvent @3
|
||||
D3DPERF_SetMarker @4
|
Loading…
x
Reference in New Issue
Block a user