1
0
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:
gho tik 2014-11-03 11:38:55 -05:00 committed by Refael ACkermann
parent 0197772dfd
commit 0075eb9b13
13 changed files with 394 additions and 75 deletions

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c6bba6804bdeb0de0f1ff7e02150e77f737c1f1bcbab40e6b192d48a7ab00451
size 462848
oid sha256:d99c6a80bd9c8ad4d82a995f662236e7a452ad2317a55eda538c7d2ea4ed3bb6
size 463872

View File

@ -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

View File

@ -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.

View File

@ -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);

View File

@ -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;
}

View File

@ -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);

Binary file not shown.

View File

@ -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.

View File

@ -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)

View File

@ -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
View 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